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