X7ROOT File Manager
Current Path:
/usr/share/vim/vim80/indent
usr
/
share
/
vim
/
vim80
/
indent
/
ðŸ“
..
📄
README.txt
(1.6 KB)
📄
aap.vim
(265 B)
📄
ada.vim
(10.97 KB)
📄
ant.vim
(290 B)
📄
automake.vim
(243 B)
📄
awk.vim
(7.59 KB)
📄
bib.vim
(346 B)
📄
bst.vim
(1.89 KB)
📄
bzl.vim
(2.43 KB)
📄
c.vim
(325 B)
📄
cdl.vim
(4.15 KB)
📄
ch.vim
(470 B)
📄
chaiscript.vim
(1.11 KB)
📄
changelog.vim
(264 B)
📄
clojure.vim
(10.2 KB)
📄
cmake.vim
(2.62 KB)
📄
cobol.vim
(8.11 KB)
📄
config.vim
(2.13 KB)
📄
context.vim
(752 B)
📄
cpp.vim
(329 B)
📄
cs.vim
(327 B)
📄
css.vim
(1.75 KB)
📄
cucumber.vim
(2.62 KB)
📄
cuda.vim
(305 B)
📄
d.vim
(510 B)
📄
dictconf.vim
(337 B)
📄
dictdconf.vim
(338 B)
📄
docbk.vim
(336 B)
📄
dtd.vim
(11.59 KB)
📄
dtrace.vim
(451 B)
📄
dylan.vim
(2.64 KB)
📄
eiffel.vim
(3.24 KB)
📄
erlang.vim
(45.29 KB)
📄
eruby.vim
(2.74 KB)
📄
eterm.vim
(668 B)
📄
falcon.vim
(13.72 KB)
📄
fortran.vim
(7.27 KB)
📄
framescript.vim
(816 B)
📄
gitconfig.vim
(841 B)
📄
gitolite.vim
(1.25 KB)
📄
go.vim
(1.63 KB)
📄
haml.vim
(2.16 KB)
📄
hamster.vim
(1.39 KB)
📄
hog.vim
(1.85 KB)
📄
html.vim
(32.47 KB)
📄
htmldjango.vim
(273 B)
📄
idlang.vim
(1.58 KB)
📄
ishd.vim
(1.83 KB)
📄
j.vim
(1.77 KB)
📄
java.vim
(4.19 KB)
📄
javascript.vim
(15 KB)
📄
json.vim
(4.32 KB)
📄
jsp.vim
(462 B)
📄
ld.vim
(1.75 KB)
📄
less.vim
(243 B)
📄
lifelines.vim
(637 B)
📄
liquid.vim
(1.85 KB)
📄
lisp.vim
(353 B)
📄
logtalk.vim
(1.7 KB)
📄
lua.vim
(1.88 KB)
📄
mail.vim
(308 B)
📄
make.vim
(3.41 KB)
📄
matlab.vim
(1.92 KB)
📄
mf.vim
(156 B)
📄
mma.vim
(2.18 KB)
📄
mp.vim
(11.06 KB)
📄
nsis.vim
(3.18 KB)
📄
objc.vim
(1.61 KB)
📄
ocaml.vim
(8.94 KB)
📄
occam.vim
(4.53 KB)
📄
pascal.vim
(5.52 KB)
📄
perl.vim
(5.76 KB)
📄
perl6.vim
(3.46 KB)
📄
php.vim
(21.91 KB)
📄
postscr.vim
(1.61 KB)
📄
pov.vim
(2.6 KB)
📄
prolog.vim
(1.46 KB)
📄
pyrex.vim
(326 B)
📄
python.vim
(5.61 KB)
📄
r.vim
(13.58 KB)
📄
readline.vim
(711 B)
📄
rhelp.vim
(2.77 KB)
📄
rmd.vim
(1.17 KB)
📄
rnoweb.vim
(1.06 KB)
📄
rpl.vim
(1.82 KB)
📄
rrst.vim
(1.17 KB)
📄
rst.vim
(1.37 KB)
📄
ruby.vim
(22.43 KB)
📄
rust.vim
(6.35 KB)
📄
sas.vim
(5.01 KB)
📄
sass.vim
(950 B)
📄
scala.vim
(18.97 KB)
📄
scheme.vim
(372 B)
📄
scss.vim
(191 B)
📄
sdl.vim
(2.73 KB)
📄
sh.vim
(5.58 KB)
📄
sml.vim
(6.33 KB)
📄
sql.vim
(1.18 KB)
📄
sqlanywhere.vim
(12.86 KB)
📄
systemd.vim
(205 B)
📄
systemverilog.vim
(8.38 KB)
📄
tcl.vim
(1.59 KB)
📄
tcsh.vim
(1.24 KB)
📄
teraterm.vim
(1.33 KB)
📄
tex.vim
(13.18 KB)
📄
tf.vim
(1.51 KB)
📄
tilde.vim
(1012 B)
📄
treetop.vim
(707 B)
📄
vb.vim
(2.04 KB)
📄
verilog.vim
(7.97 KB)
📄
vhdl.vim
(14.32 KB)
📄
vim.vim
(2.92 KB)
📄
vroom.vim
(379 B)
📄
xf86conf.vim
(709 B)
📄
xhtml.vim
(269 B)
📄
xinetd.vim
(1.2 KB)
📄
xml.vim
(2.78 KB)
📄
xsd.vim
(253 B)
📄
xslt.vim
(297 B)
📄
yacc.vim
(781 B)
📄
yaml.vim
(5.34 KB)
📄
zimbu.vim
(3.84 KB)
📄
zsh.vim
(411 B)
Editing: rust.vim
" Vim indent file " Language: Rust " Author: Chris Morgan <me@chrismorgan.info> " Last Change: 2017 Jun 13 " 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,(0,Ws,J1,j1 setlocal cinkeys=0{,0},!^F,o,O,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 " 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] setlocal indentexpr=GetRustIndent(v:lnum) " Only define the function once. if exists("*GetRustIndent") finish endif let s:save_cpo = &cpo set cpo&vim " 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 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 " Handle where clauses nicely: subsequent values should line up nicely. if prevline[len(prevline) - 1] == "," \ && prevline =~# '^\s*where\s' return indent(prevlinenum) + 6 endif if prevline[len(prevline) - 1] == "," \ && 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 let &cpo = s:save_cpo unlet s:save_cpo
Upload File
Create Folder