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: sas.vim
" Vim indent file " Language: SAS " Maintainer: Zhen-Huan Hu <wildkeny@gmail.com> " Version: 3.0.1 " Last Change: Mar 13, 2017 if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetSASIndent() setlocal indentkeys+=;,=~data,=~proc,=~macro if exists("*GetSASIndent") finish endif let s:cpo_save = &cpo set cpo&vim " Regex that captures the start of a data/proc section let s:section_str = '\v%(^|;)\s*%(data|proc)>' " Regex that captures the end of a run-processing section let s:section_run = '\v%(^|;)\s*run\s*;' " Regex that captures the end of a data/proc section let s:section_end = '\v%(^|;)\s*%(quit|enddata)\s*;' " Regex that captures the start of a control block (anything inside a section) let s:block_str = '\v<%(do>%([^;]+<%(to|over)>[^;]+)=|%(define|layout|method|select)>[^;]+|begingraph)\s*;' " Regex that captures the end of a control block (anything inside a section) let s:block_end = '\v<%(end|endlayout|endgraph)\s*;' " Regex that captures the start of a macro let s:macro_str = '\v%(^|;)\s*\%macro>' " Regex that captures the end of a macro let s:macro_end = '\v%(^|;)\s*\%mend\s*;' " Regex that defines the end of the program let s:program_end = '\v%(^|;)\s*endsas\s*;' " List of procs supporting run-processing let s:run_processing_procs = [ \ 'catalog', 'chart', 'datasets', 'document', 'ds2', 'plot', 'sql', \ 'gareabar', 'gbarline', 'gchart', 'gkpi', 'gmap', 'gplot', 'gradar', 'greplay', 'gslide', 'gtile', \ 'anova', 'arima', 'catmod', 'factex', 'glm', 'model', 'optex', 'plan', 'reg', \ 'iml', \ ] " Find the line number of previous keyword defined by the regex function! s:PrevMatch(lnum, regex) let prev_lnum = prevnonblank(a:lnum - 1) while prev_lnum > 0 let prev_line = getline(prev_lnum) if prev_line =~ a:regex break else let prev_lnum = prevnonblank(prev_lnum - 1) endif endwhile return prev_lnum endfunction " Main function function! GetSASIndent() let prev_lnum = prevnonblank(v:lnum - 1) if prev_lnum ==# 0 " Leave the indentation of the first line unchanged return indent(1) else let prev_line = getline(prev_lnum) " Previous non-blank line contains the start of a macro/section/block " while not the end of a macro/section/block (at the same line) if (prev_line =~ s:section_str && prev_line !~ s:section_run && prev_line !~ s:section_end) || \ (prev_line =~ s:block_str && prev_line !~ s:block_end) || \ (prev_line =~ s:macro_str && prev_line !~ s:macro_end) let ind = indent(prev_lnum) + &sts elseif prev_line =~ s:section_run && prev_line !~ s:section_end let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) " Check if the section supports run-processing if prev_section_end_lnum < prev_section_str_lnum && \ getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' let ind = indent(prev_lnum) + &sts else let ind = indent(prev_lnum) endif else let ind = indent(prev_lnum) endif endif " Re-adjustments based on the inputs of the current line let curr_line = getline(v:lnum) if curr_line =~ s:program_end " End of the program " Same indentation as the first non-blank line return indent(nextnonblank(1)) elseif curr_line =~ s:macro_end " Current line is the end of a macro " Match the indentation of the start of the macro return indent(s:PrevMatch(v:lnum, s:macro_str)) elseif curr_line =~ s:block_end && curr_line !~ s:block_str " Re-adjust if current line is the end of a block " while not the beginning of a block (at the same line) " Returning the indent of previous block start directly " would not work due to nesting let ind = ind - &sts elseif curr_line =~ s:section_str || curr_line =~ s:section_run || curr_line =~ s:section_end " Re-adjust if current line is the start/end of a section " since the end of a section could be inexplicit let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) " Check if the previous section supports run-processing if getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) else let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:section_run), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) endif if prev_section_end_lnum < prev_section_str_lnum let ind = ind - &sts endif endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save
Upload File
Create Folder