" LLVM coding guidelines conformance for VIM
-" Maintainer: LLVM Team, http://llvm.cs.uiuc.edu
-" Updated: 2005-04-24
+"
+" Maintainer: The LLVM Team, http://llvm.org
" WARNING: Read before you source in all these commands and macros! Some
" of them may change VIM behavior that you depend on.
+"
+" You can run VIM with these settings without changing your current setup with:
+" $ vim -u /path/to/llvm/utils/vim/vimrc
+
+" It's VIM, not VI
+set nocompatible
" Wrap text at 80 cols
set textwidth=80
" A tab produces a 2-space indentation
-set tabstop=2
+set softtabstop=2
set shiftwidth=2
set expandtab
+" Highlight trailing whitespace
+highlight WhitespaceEOL ctermbg=DarkYellow guibg=DarkYellow
+match WhitespaceEOL /\s\+$/
+
+" Enable filetype detection
+filetype on
+
" Optional
" C/C++ programming helpers
-set autoindent
-set smartindent
+augroup csrc
+ au!
+ autocmd FileType * set nocindent smartindent
+ autocmd FileType c,cpp set cindent
+augroup END
+" Set a few indentation parameters. See the VIM help for cinoptions-values for
+" details. These aren't absolute rules; they're just an approximation of
+" common style in LLVM source.
+set cinoptions=:0,g0,(0,Ws
" Add and delete spaces in increments of `shiftwidth' for tabs
set smarttab
-" Enable filetype detection
-filetype on
+" Highlight syntax in programming languages
+syntax on
" LLVM Makefiles can have names such as Makefile.rules or TEST.nightly.Makefile,
" so it's important to categorize them as such.
augroup filetype
- au! BufRead,BufNewFile *Makefile* set filetype=make
+ au! BufRead,BufNewFile *Makefile* set filetype=make
augroup END
" In Makefiles, don't expand tabs to spaces, since we need the actual tabs
" Useful macros for cleaning up code to conform to LLVM coding guidelines
" Delete trailing whitespace and tabs at the end of each line
-map :dtws :%s/[\ \t]\+$//
+command! DeleteTrailingWs :%s/\s\+$//
" Convert all tab characters to two spaces
-map :untab :%s/\t/ /g
+command! Untab :%s/\t/ /g
+
+" Enable syntax highlighting for LLVM files. To use, copy
+" utils/vim/llvm.vim to ~/.vim/syntax .
+augroup filetype
+ au! BufRead,BufNewFile *.ll set filetype=llvm
+augroup END
+
+" Enable syntax highlighting for tablegen files. To use, copy
+" utils/vim/tablegen.vim to ~/.vim/syntax .
+augroup filetype
+ au! BufRead,BufNewFile *.td set filetype=tablegen
+augroup END