/
usr
/
share
/
vim
/
vim91
/
indent
/
/usr/share/vim/vim91/indent
mkdir
upload
Name
Size
Mode
Actions
aap.vim
331
0644
edit
dl
rm
ada.vim
11324
0644
edit
dl
rm
ant.vim
290
0644
edit
dl
rm
automake.vim
243
0644
edit
dl
rm
awk.vim
7863
0644
edit
dl
rm
bash.vim
390
0644
edit
dl
rm
basic.vim
250
0644
edit
dl
rm
bib.vim
346
0644
edit
dl
rm
bitbake.vim
583
0644
edit
dl
rm
bst.vim
1907
0644
edit
dl
rm
bzl.vim
2925
0644
edit
dl
rm
c.vim
391
0644
edit
dl
rm
cdl.vim
4366
0644
edit
dl
rm
ch.vim
556
0644
edit
dl
rm
chaiscript.vim
1204
0644
edit
dl
rm
changelog.vim
264
0644
edit
dl
rm
chatito.vim
731
0644
edit
dl
rm
clojure.vim
11557
0644
edit
dl
rm
cmake.vim
3049
0644
edit
dl
rm
cobol.vim
8832
0644
edit
dl
rm
config.vim
2222
0644
edit
dl
rm
context.vim
1714
0644
edit
dl
rm
cpp.vim
395
0644
edit
dl
rm
cs.vim
1928
0644
edit
dl
rm
css.vim
1813
0644
edit
dl
rm
cucumber.vim
2809
0644
edit
dl
rm
cuda.vim
371
0644
edit
dl
rm
d.vim
605
0644
edit
dl
rm
dictconf.vim
411
0644
edit
dl
rm
dictdconf.vim
414
0644
edit
dl
rm
docbk.vim
336
0644
edit
dl
rm
dosbatch.vim
1382
0644
edit
dl
rm
dtd.vim
12072
0644
edit
dl
rm
dtrace.vim
451
0644
edit
dl
rm
dts.vim
1735
0644
edit
dl
rm
dune.vim
430
0644
edit
dl
rm
dylan.vim
2811
0644
edit
dl
rm
eiffel.vim
3317
0644
edit
dl
rm
elm.vim
3277
0644
edit
dl
rm
erlang.vim
51955
0644
edit
dl
rm
eruby.vim
3016
0644
edit
dl
rm
eterm.vim
743
0644
edit
dl
rm
expect.vim
207
0644
edit
dl
rm
falcon.vim
14171
0644
edit
dl
rm
fennel.vim
273
0644
edit
dl
rm
fish.vim
2719
0644
edit
dl
rm
fortran.vim
7906
0644
edit
dl
rm
framescript.vim
891
0644
edit
dl
rm
freebasic.vim
237
0644
edit
dl
rm
gdscript.vim
4359
0644
edit
dl
rm
gitconfig.vim
841
0644
edit
dl
rm
gitolite.vim
1321
0644
edit
dl
rm
go.vim
1767
0644
edit
dl
rm
gyp.vim
169
0644
edit
dl
rm
haml.vim
2247
0644
edit
dl
rm
hamster.vim
1692
0644
edit
dl
rm
hare.vim
4490
0644
edit
dl
rm
hog.vim
1892
0644
edit
dl
rm
html.vim
33914
0644
edit
dl
rm
htmldjango.vim
273
0644
edit
dl
rm
idlang.vim
1723
0644
edit
dl
rm
ishd.vim
1877
0644
edit
dl
rm
j.vim
1812
0644
edit
dl
rm
java.vim
4287
0644
edit
dl
rm
javascript.vim
15493
0644
edit
dl
rm
javascriptreact.vim
109
0644
edit
dl
rm
json.vim
4644
0644
edit
dl
rm
jsonc.vim
4857
0644
edit
dl
rm
jsp.vim
462
0644
edit
dl
rm
julia.vim
15660
0644
edit
dl
rm
kotlin.vim
1566
0644
edit
dl
rm
krl.vim
4356
0644
edit
dl
rm
ld.vim
1867
0644
edit
dl
rm
less.vim
243
0644
edit
dl
rm
lifelines.vim
638
0644
edit
dl
rm
liquid.vim
2077
0644
edit
dl
rm
lisp.vim
349
0644
edit
dl
rm
livebook.vim
206
0644
edit
dl
rm
logtalk.vim
1959
0644
edit
dl
rm
lua.vim
2269
0644
edit
dl
rm
luau.vim
252
0644
edit
dl
rm
mail.vim
385
0644
edit
dl
rm
make.vim
3565
0644
edit
dl
rm
matlab.vim
4923
0644
edit
dl
rm
meson.vim
5319
0644
edit
dl
rm
mf.vim
164
0644
edit
dl
rm
mma.vim
2367
0644
edit
dl
rm
mp.vim
9954
0644
edit
dl
rm
nginx.vim
1737
0644
edit
dl
rm
nsis.vim
3306
0644
edit
dl
rm
objc.vim
1688
0644
edit
dl
rm
obse.vim
1437
0644
edit
dl
rm
ocaml.vim
9305
0644
edit
dl
rm
occam.vim
4738
0644
edit
dl
rm
pascal.vim
5793
0644
edit
dl
rm
perl.vim
6051
0644
edit
dl
rm
php.vim
26383
0644
edit
dl
rm
postscr.vim
1679
0644
edit
dl
rm
pov.vim
2770
0644
edit
dl
rm
prolog.vim
1954
0644
edit
dl
rm
ps1.vim
410
0644
edit
dl
rm
pyrex.vim
326
0644
edit
dl
rm
python.vim
886
0644
edit
dl
rm
qb64.vim
232
0644
edit
dl
rm
qml.vim
1303
0644
edit
dl
rm
quarto.vim
23
0644
edit
dl
rm
r.vim
14299
0644
edit
dl
rm
racket.vim
2940
0644
edit
dl
rm
raku.vim
3530
0644
edit
dl
rm
raml.vim
285
0644
edit
dl
rm
rapid.vim
8166
0644
edit
dl
rm
readline.vim
786
0644
edit
dl
rm
rhelp.vim
2899
0644
edit
dl
rm
rmd.vim
2306
0644
edit
dl
rm
rnoweb.vim
1126
0644
edit
dl
rm
rpl.vim
1863
0644
edit
dl
rm
rrst.vim
1222
0644
edit
dl
rm
rst.vim
1949
0644
edit
dl
rm
ruby.vim
31059
0644
edit
dl
rm
rust.vim
10502
0644
edit
dl
rm
sas.vim
5309
0644
edit
dl
rm
sass.vim
926
0644
edit
dl
rm
scala.vim
19765
0644
edit
dl
rm
scheme.vim
372
0644
edit
dl
rm
scss.vim
191
0644
edit
dl
rm
sdl.vim
2829
0644
edit
dl
rm
sh.vim
9257
0644
edit
dl
rm
sml.vim
6573
0644
edit
dl
rm
solidity.vim
12913
0644
edit
dl
rm
sql.vim
1204
0644
edit
dl
rm
sqlanywhere.vim
13269
0644
edit
dl
rm
sshconfig.vim
796
0644
edit
dl
rm
systemverilog.vim
10804
0644
edit
dl
rm
tcl.vim
2542
0644
edit
dl
rm
tcsh.vim
1381
0644
edit
dl
rm
teraterm.vim
1413
0644
edit
dl
rm
tex.vim
13848
0644
edit
dl
rm
tf.vim
1604
0644
edit
dl
rm
tilde.vim
1136
0644
edit
dl
rm
treetop.vim
785
0644
edit
dl
rm
typescript.vim
14618
0644
edit
dl
rm
typescriptreact.vim
109
0644
edit
dl
rm
vb.vim
4801
0644
edit
dl
rm
verilog.vim
8269
0644
edit
dl
rm
vhdl.vim
14778
0644
edit
dl
rm
vim.vim
675
0644
edit
dl
rm
vroom.vim
379
0644
edit
dl
rm
vue.vim
385
0644
edit
dl
rm
wat.vim
458
0644
edit
dl
rm
xf86conf.vim
786
0644
edit
dl
rm
xhtml.vim
325
0644
edit
dl
rm
xinetd.vim
1308
0644
edit
dl
rm
xml.vim
7784
0644
edit
dl
rm
xsd.vim
253
0644
edit
dl
rm
xslt.vim
297
0644
edit
dl
rm
yacc.vim
858
0644
edit
dl
rm
yaml.vim
5577
0644
edit
dl
rm
zig.vim
2137
0644
edit
dl
rm
zimbu.vim
4013
0644
edit
dl
rm
zsh.vim
411
0644
edit
dl
rm
Edit:
/usr/share/vim/vim91/indent/rust.vim
(10502B)
" Vim indent file " Language: Rust " Author: Chris Morgan <me@chrismorgan.info> " Last Change: 2023-09-11 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal cindent setlocal cinoptions=L0,(s,Ws,J1,j1,m1 setlocal cinkeys=0{,0},!^F,o,O,0[,0],0(,0) " Don't think cinwords will actually do anything at all... never mind setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern,macro " Some preliminary settings setlocal nolisp " Make sure lisp indenting doesn't supersede us setlocal autoindent " indentexpr isn't much help otherwise " Also do indentkeys, otherwise # gets shoved to column 0 :-/ setlocal indentkeys=0{,0},!^F,o,O,0[,0],0(,0) setlocal indentexpr=GetRustIndent(v:lnum) let b:undo_indent = "setlocal cindent< cinoptions< cinkeys< cinwords< lisp< autoindent< indentkeys< indentexpr<" " Only define the function once. if exists("*GetRustIndent") finish endif " vint: -ProhibitAbbreviationOption let s:save_cpo = &cpo set cpo&vim " vint: +ProhibitAbbreviationOption " Come here when loading the script the first time. function! s:get_line_trimmed(lnum) " Get the line and remove a trailing comment. " Use syntax highlighting attributes when possible. " NOTE: this is not accurate; /* */ or a line continuation could trick it let line = getline(a:lnum) let line_len = strlen(line) if has('syntax_items') " If the last character in the line is a comment, do a binary search for " the start of the comment. synID() is slow, a linear search would take " too long on a long line. if synIDattr(synID(a:lnum, line_len, 1), "name") =~? 'Comment\|Todo' let min = 1 let max = line_len while min < max let col = (min + max) / 2 if synIDattr(synID(a:lnum, col, 1), "name") =~? 'Comment\|Todo' let max = col else let min = col + 1 endif endwhile let line = strpart(line, 0, min - 1) endif return substitute(line, "\s*$", "", "") else " Sorry, this is not complete, nor fully correct (e.g. string "//"). " Such is life. return substitute(line, "\s*//.*$", "", "") endif endfunction function! s:is_string_comment(lnum, col) if has('syntax_items') for id in synstack(a:lnum, a:col) let synname = synIDattr(id, "name") if synname ==# "rustString" || synname =~# "^rustComment" return 1 endif endfor else " without syntax, let's not even try return 0 endif endfunction if exists('*shiftwidth') function! s:shiftwidth() return shiftwidth() endfunc else function! s:shiftwidth() return &shiftwidth endfunc endif function GetRustIndent(lnum) " Starting assumption: cindent (called at the end) will do it right " normally. We just want to fix up a few cases. let line = getline(a:lnum) if has('syntax_items') let synname = synIDattr(synID(a:lnum, 1, 1), "name") if synname ==# "rustString" " If the start of the line is in a string, don't change the indent return -1 elseif synname =~? '\(Comment\|Todo\)' \ && line !~# '^\s*/\*' " not /* opening line if synname =~? "CommentML" " multi-line if line !~# '^\s*\*' && getline(a:lnum - 1) =~# '^\s*/\*' " This is (hopefully) the line after a /*, and it has no " leader, so the correct indentation is that of the " previous line. return GetRustIndent(a:lnum - 1) endif endif " If it's in a comment, let cindent take care of it now. This is " for cases like "/*" where the next line should start " * ", not " "* " as the code below would otherwise cause for module scope " Fun fact: " /*\n*\n*/" takes two calls to get right! return cindent(a:lnum) endif endif " cindent gets second and subsequent match patterns/struct members wrong, " as it treats the comma as indicating an unfinished statement:: " " match a { " b => c, " d => e, " f => g, " }; " Search backwards for the previous non-empty line. let prevlinenum = prevnonblank(a:lnum - 1) let prevline = s:get_line_trimmed(prevlinenum) while prevlinenum > 1 && prevline !~# '[^[:blank:]]' let prevlinenum = prevnonblank(prevlinenum - 1) let prevline = s:get_line_trimmed(prevlinenum) endwhile " A standalone '{', '}', or 'where' let l:standalone_open = line =~# '\V\^\s\*{\s\*\$' let l:standalone_close = line =~# '\V\^\s\*}\s\*\$' let l:standalone_where = line =~# '\V\^\s\*where\s\*\$' if l:standalone_open || l:standalone_close || l:standalone_where " ToDo: we can search for more items than 'fn' and 'if'. let [l:found_line, l:col, l:submatch] = \ searchpos('\<\(fn\)\|\(if\)\>', 'bnWp') if l:found_line !=# 0 " Now we count the number of '{' and '}' in between the match " locations and the current line (there is probably a better " way to compute this). let l:i = l:found_line let l:search_line = strpart(getline(l:i), l:col - 1) let l:opens = 0 let l:closes = 0 while l:i < a:lnum let l:search_line2 = substitute(l:search_line, '\V{', '', 'g') let l:opens += strlen(l:search_line) - strlen(l:search_line2) let l:search_line3 = substitute(l:search_line2, '\V}', '', 'g') let l:closes += strlen(l:search_line2) - strlen(l:search_line3) let l:i += 1 let l:search_line = getline(l:i) endwhile if l:standalone_open || l:standalone_where if l:opens ==# l:closes return indent(l:found_line) endif else " Expect to find just one more close than an open if l:opens ==# l:closes + 1 return indent(l:found_line) endif endif endif endif " A standalone 'where' adds a shift. let l:standalone_prevline_where = prevline =~# '\V\^\s\*where\s\*\$' if l:standalone_prevline_where return indent(prevlinenum) + 4 endif " Handle where clauses nicely: subsequent values should line up nicely. if prevline[len(prevline) - 1] ==# "," \ && prevline =~# '^\s*where\s' return indent(prevlinenum) + 6 endif let l:last_prevline_character = prevline[len(prevline) - 1] " A line that ends with '.<expr>;' is probably an end of a long list " of method operations. if prevline =~# '\V\^\s\*.' && l:last_prevline_character ==# ';' call cursor(a:lnum - 1, 1) let l:scope_start = searchpair('{\|(', '', '}\|)', 'nbW', \ 's:is_string_comment(line("."), col("."))') if l:scope_start != 0 && l:scope_start < a:lnum return indent(l:scope_start) + 4 endif endif if l:last_prevline_character ==# "," \ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{})]' \ && prevline !~# '^\s*fn\s' \ && prevline !~# '([^()]\+,$' \ && s:get_line_trimmed(a:lnum) !~# '^\s*\S\+\s*=>' " Oh ho! The previous line ended in a comma! I bet cindent will try to " take this too far... For now, let's normally use the previous line's " indent. " One case where this doesn't work out is where *this* line contains " square or curly brackets; then we normally *do* want to be indenting " further. " " Another case where we don't want to is one like a function " definition with arguments spread over multiple lines: " " fn foo(baz: Baz, " baz: Baz) // <-- cindent gets this right by itself " " Another case is similar to the previous, except calling a function " instead of defining it, or any conditional expression that leaves " an open paren: " " foo(baz, " baz); " " if baz && (foo || " bar) { " " Another case is when the current line is a new match arm. " " There are probably other cases where we don't want to do this as " well. Add them as needed. return indent(prevlinenum) endif if !has("patch-7.4.355") " cindent before 7.4.355 doesn't do the module scope well at all; e.g.:: " " static FOO : &'static [bool] = [ " true, " false, " false, " true, " ]; " " uh oh, next statement is indented further! " Note that this does *not* apply the line continuation pattern properly; " that's too hard to do correctly for my liking at present, so I'll just " start with these two main cases (square brackets and not returning to " column zero) call cursor(a:lnum, 1) if searchpair('{\|(', '', '}\|)', 'nbW', \ 's:is_string_comment(line("."), col("."))') == 0 if searchpair('\[', '', '\]', 'nbW', \ 's:is_string_comment(line("."), col("."))') == 0 " Global scope, should be zero return 0 else " At the module scope, inside square brackets only "if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum if line =~# "^\\s*]" " It's the closing line, dedent it return 0 else return &shiftwidth endif endif endif endif " Fall back on cindent, which does it mostly right return cindent(a:lnum) endfunction " vint: -ProhibitAbbreviationOption let &cpo = s:save_cpo unlet s:save_cpo " vint: +ProhibitAbbreviationOption " vim: set et sw=4 sts=4 ts=8:
Save
cmd:
run