-
Notifications
You must be signed in to change notification settings - Fork 95
/
linuxsty.vim
93 lines (77 loc) · 2.75 KB
/
linuxsty.vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
" Vim plugin to fit the Linux kernel coding style and help kernel development
" Maintainer: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
" License: Distributed under the same terms as Vim itself.
"
" This script is inspired from an article written by Bart:
" http://www.jukie.net/bart/blog/vim-and-linux-coding-style
" and various user comments.
"
" For those who want to apply these options conditionally, you can define an
" array of patterns in your vimrc and these options will be applied only if
" the buffer's path matches one of the pattern. In the following example,
" options will be applied only if "/linux/" or "/kernel" is in buffer's path.
"
" let g:linuxsty_patterns = [ "/linux/", "/kernel/" ]
if exists("g:loaded_linuxsty")
finish
endif
let g:loaded_linuxsty = 1
set wildignore+=*.ko,*.mod.c,*.order,modules.builtin
augroup linuxsty
autocmd!
autocmd FileType c,cpp call s:LinuxConfigure()
autocmd FileType diff setlocal ts=8
autocmd FileType rst setlocal ts=8 sw=8 sts=8 noet
autocmd FileType kconfig setlocal ts=8 sw=8 sts=8 noet
autocmd FileType dts setlocal ts=8 sw=8 sts=8 noet
augroup END
function s:LinuxConfigure()
let apply_style = 0
if exists("g:linuxsty_patterns")
let path = expand('%:p')
for p in g:linuxsty_patterns
if path =~ p
let apply_style = 1
break
endif
endfor
else
let apply_style = 1
endif
if apply_style
call s:LinuxCodingStyle()
endif
endfunction
command! LinuxCodingStyle call s:LinuxCodingStyle()
function! s:LinuxCodingStyle()
call s:LinuxFormatting()
call s:LinuxKeywords()
call s:LinuxHighlighting()
endfunction
function s:LinuxFormatting()
setlocal tabstop=8
setlocal shiftwidth=8
setlocal softtabstop=8
setlocal textwidth=80
setlocal noexpandtab
setlocal cindent
setlocal cinoptions=:0,l1,t0,g0,(0
endfunction
function s:LinuxKeywords()
syn keyword cStatement fallthrough
syn keyword cOperator likely unlikely
syn keyword cType u8 u16 u32 u64 s8 s16 s32 s64
syn keyword cType __u8 __u16 __u32 __u64 __s8 __s16 __s32 __s64
endfunction
function s:LinuxHighlighting()
highlight default link LinuxError ErrorMsg
syn match LinuxError / \+\ze\t/ " spaces before tab
syn match LinuxError /\%>80v[^()\{\}\[\]<>]\+/ " virtual column 81 and more
" Highlight trailing whitespace, unless we're in insert mode and the
" cursor's placed right after the whitespace. This prevents us from having
" to put up with whitespace being highlighted in the middle of typing
" something
autocmd InsertEnter * match LinuxError /\s\+\%#\@<!$/
autocmd InsertLeave * match LinuxError /\s\+$/
endfunction
" vim: ts=4 et sw=4