blob: 1385407adcc13132ee8324239eb48203e1e10b28 [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001" LLVM coding guidelines conformance for VIM
Misha Brukmanb701a472009-01-02 16:26:14 +00002"
3" Maintainer: The LLVM Team, http://llvm.org
Dan Gohmanf17a25c2007-07-18 16:29:46 +00004" WARNING: Read before you source in all these commands and macros! Some
5" of them may change VIM behavior that you depend on.
Misha Brukmanb701a472009-01-02 16:26:14 +00006"
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
Dan Gohmanf17a25c2007-07-18 16:29:46 +000012
Dan Gohmanf17a25c2007-07-18 16:29:46 +000013" A tab produces a 2-space indentation
Dan Gohmancdf33642009-01-04 00:05:43 +000014set softtabstop=2
Dan Gohmanf17a25c2007-07-18 16:29:46 +000015set shiftwidth=2
16set expandtab
17
Dan Gohmanc04904b2010-02-26 21:24:46 +000018" Highlight trailing whitespace and lines longer than 80 columns.
19highlight LongLine ctermbg=DarkYellow guibg=DarkYellow
Misha Brukmanb701a472009-01-02 16:26:14 +000020highlight WhitespaceEOL ctermbg=DarkYellow guibg=DarkYellow
Dan Gohmanc04904b2010-02-26 21:24:46 +000021if 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
Misha Brukmanb701a472009-01-02 16:26:14 +000037
Dan Gohmanbe8c7192009-01-21 21:30:25 +000038" Enable filetype detection
39filetype on
40
Dan Gohmanf17a25c2007-07-18 16:29:46 +000041" Optional
42" C/C++ programming helpers
Dan Gohmanbe8c7192009-01-21 21:30:25 +000043augroup csrc
44 au!
45 autocmd FileType * set nocindent smartindent
46 autocmd FileType c,cpp set cindent
47augroup END
Dan Gohman07aba402009-01-04 18:59:55 +000048" 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.
Dan Gohman40647222010-01-09 17:15:21 +000051set cinoptions=:0,g0,(0,Ws,l1
Dan Gohmanf17a25c2007-07-18 16:29:46 +000052" Add and delete spaces in increments of `shiftwidth' for tabs
53set smarttab
54
Misha Brukmanb701a472009-01-02 16:26:14 +000055" Highlight syntax in programming languages
56syntax on
57
Dan Gohmanf17a25c2007-07-18 16:29:46 +000058" 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
Misha Brukmanb701a472009-01-02 16:26:14 +000061 au! BufRead,BufNewFile *Makefile* set filetype=make
Dan Gohmanf17a25c2007-07-18 16:29:46 +000062augroup 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
Misha Brukman417b3112009-01-08 02:17:30 +000070command! DeleteTrailingWs :%s/\s\+$//
Dan Gohmanf17a25c2007-07-18 16:29:46 +000071
72" Convert all tab characters to two spaces
Misha Brukmanb701a472009-01-02 16:26:14 +000073command! Untab :%s/\t/ /g
Dan Gohman8e66ba42009-01-21 21:47:51 +000074
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
Dan Gohmanc04904b2010-02-26 21:24:46 +000086
87" Additional vim features to optionally uncomment.
88"set showcmd
89"set showmatch
90"set showmode
91"set incsearch
92"set ruler