1" LLVM coding guidelines conformance for VIM 2" 3" Maintainer: The LLVM Team, http://llvm.org 4" WARNING: Read before you source in all these commands and macros! Some 5" of them may change VIM behavior that you depend on. 6" 7" You can run VIM with these settings without changing your current setup with: 8" $ vim -u /path/to/llvm/utils/vim/vimrc 9 10" It's VIM, not VI 11set nocompatible 12 13" A tab produces a 2-space indentation 14set softtabstop=2 15set shiftwidth=2 16set expandtab 17 18" Highlight trailing whitespace and lines longer than 80 columns. 19highlight LongLine ctermbg=DarkYellow guibg=DarkYellow 20highlight WhitespaceEOL ctermbg=DarkYellow guibg=DarkYellow 21if v:version >= 702 22 " Lines longer than 80 columns. 23 au BufWinEnter * let w:m0=matchadd('LongLine', '\%>80v.\+', -1) 24 25 " Whitespace at the end of a line. This little dance suppresses 26 " of whitespace that has just been typed. 27 au BufWinEnter * let w:m1=matchadd('WhitespaceEOL', '\s\+$', -1) 28 au InsertEnter * call matchdelete(w:m1) 29 au InsertEnter * let w:m2=matchadd('WhitespaceEOL', '\s\+\%#\@<!$', -1) 30 au InsertLeave * call matchdelete(w:m2) 31 au InsertLeave * let w:m1=matchadd('WhitespaceEOL', '\s\+$', -1) 32else 33 au BufRead,BufNewFile * syntax match LongLine /\%>80v.\+/ 34 au InsertEnter * syntax match WhitespaceEOL /\s\+\%#\@<!$/ 35 au InsertLeave * syntax match WhitespaceEOL /\s\+$/ 36endif 37 38" Enable filetype detection 39filetype on 40 41" Optional 42" C/C++ programming helpers 43augroup csrc 44 au! 45 autocmd FileType * set nocindent smartindent 46 autocmd FileType c,cpp set cindent 47augroup END 48" Set a few indentation parameters. See the VIM help for cinoptions-values for 49" details. These aren't absolute rules; they're just an approximation of 50" common style in LLVM source. 51set cinoptions=:0,g0,(0,Ws,l1 52" Add and delete spaces in increments of `shiftwidth' for tabs 53set smarttab 54 55" Highlight syntax in programming languages 56syntax on 57 58" LLVM Makefiles can have names such as Makefile.rules or TEST.nightly.Makefile, 59" so it's important to categorize them as such. 60augroup filetype 61 au! BufRead,BufNewFile *Makefile* set filetype=make 62augroup END 63 64" In Makefiles, don't expand tabs to spaces, since we need the actual tabs 65autocmd FileType make set noexpandtab 66 67" Useful macros for cleaning up code to conform to LLVM coding guidelines 68 69" Delete trailing whitespace and tabs at the end of each line 70command! DeleteTrailingWs :%s/\s\+$// 71 72" Convert all tab characters to two spaces 73command! Untab :%s/\t/ /g 74 75" Enable syntax highlighting for LLVM files. To use, copy 76" utils/vim/llvm.vim to ~/.vim/syntax . 77augroup filetype 78 au! BufRead,BufNewFile *.ll set filetype=llvm 79augroup END 80 81" Enable syntax highlighting for tablegen files. To use, copy 82" utils/vim/tablegen.vim to ~/.vim/syntax . 83augroup filetype 84 au! BufRead,BufNewFile *.td set filetype=tablegen 85augroup END 86 87" Additional vim features to optionally uncomment. 88"set showcmd 89"set showmatch 90"set showmode 91"set incsearch 92"set ruler 93