[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.118.4.64: ~ $
" Vim indent file
" Language:    Pascal
" Maintainer:  Neil Carter <n.carter@swansea.ac.uk>
" Created:     2004 Jul 13
" Last Change: 2011 Apr 01
"
" This is version 2.0, a complete rewrite.
"
" For further documentation, see http://psy.swansea.ac.uk/staff/carter/vim/


if exists("b:did_indent")
	finish
endif
let b:did_indent = 1

setlocal indentexpr=GetPascalIndent(v:lnum)
setlocal indentkeys&
setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for
setlocal indentkeys+==program,==function,==procedure,==object,==private
setlocal indentkeys+==record,==if,==else,==case

if exists("*GetPascalIndent")
	finish
endif


function! s:GetPrevNonCommentLineNum( line_num )

	" Skip lines starting with a comment
	let SKIP_LINES = '^\s*\(\((\*\)\|\(\*\ \)\|\(\*)\)\|{\|}\)'

	let nline = a:line_num
	while nline > 0
		let nline = prevnonblank(nline-1)
		if getline(nline) !~? SKIP_LINES
			break
		endif
	endwhile

	return nline
endfunction


function! s:PurifyCode( line_num )
	" Strip any trailing comments and whitespace
	let pureline = 'TODO'
	return pureline
endfunction


function! GetPascalIndent( line_num )

	" Line 0 always goes at column 0
	if a:line_num == 0
		return 0
	endif

	let this_codeline = getline( a:line_num )


	" SAME INDENT

	" Middle of a three-part comment
	if this_codeline =~ '^\s*\*'
		return indent( a:line_num - 1)
	endif


	" COLUMN 1 ALWAYS

	" Last line of the program
	if this_codeline =~ '^\s*end\.'
		return 0
	endif

	" Compiler directives, allowing "(*" and "{"
	"if this_codeline =~ '^\s*\({\|(\*\)$\(IFDEF\|IFNDEF\|ELSE\|ENDIF\)'
	if this_codeline =~ '^\s*\({\|(\*\)\$'
		return 0
	endif

	" section headers
	if this_codeline =~ '^\s*\(program\|procedure\|function\|type\)\>'
		return 0
	endif

	" Subroutine separators, lines ending with "const" or "var"
	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\(const\|var\)\)$'
		return 0
	endif


	" OTHERWISE, WE NEED TO LOOK FURTHER BACK...

	let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num )
	let prev_codeline = getline( prev_codeline_num )
	let indnt = indent( prev_codeline_num )


	" INCREASE INDENT

	" If the PREVIOUS LINE ended in these items, always indent
	if prev_codeline =~ '\<\(type\|const\|var\)$'
		return indnt + &shiftwidth
	endif

	if prev_codeline =~ '\<repeat$'
		if this_codeline !~ '^\s*until\>'
			return indnt + &shiftwidth
		else
			return indnt
		endif
	endif

	if prev_codeline =~ '\<\(begin\|record\)$'
		if this_codeline !~ '^\s*end\>'
			return indnt + &shiftwidth
		else
			return indnt
		endif
	endif

	" If the PREVIOUS LINE ended with these items, indent if not
	" followed by "begin"
	if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
		if this_codeline !~ '^\s*begin\>'
			return indnt + &shiftwidth
		else
			" If it does start with "begin" then keep the same indent
			"return indnt + &shiftwidth
			return indnt
		endif
	endif

	" Inside a parameter list (i.e. a "(" without a ")"). ???? Considers
	" only the line before the current one. TODO: Get it working for
	" parameter lists longer than two lines.
	if prev_codeline =~ '([^)]\+$'
		return indnt + &shiftwidth
	endif


	" DECREASE INDENT

	" Lines starting with "else", but not following line ending with
	" "end".
	if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
		return indnt - &shiftwidth
	endif

	" Lines after a single-statement branch/loop.
	" Two lines before ended in "then", "else", or "do"
	" Previous line didn't end in "begin"
	let prev2_codeline_num = s:GetPrevNonCommentLineNum( prev_codeline_num )
	let prev2_codeline = getline( prev2_codeline_num )
	if prev2_codeline =~ '\<\(then\|else\|do\)$' && prev_codeline !~ '\<begin$'
		" If the next code line after a single statement branch/loop
		" starts with "end", "except" or "finally", we need an
		" additional unindentation.
		if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
			" Note that we don't return from here.
			return indnt - &shiftwidth - &shiftwidth
		endif
		return indnt - &shiftwidth
	endif

	" Lines starting with "until" or "end". This rule must be overridden
	" by the one for "end" after a single-statement branch/loop. In
	" other words that rule should come before this one.
	if this_codeline =~ '^\s*\(end\|until\)\>'
		return indnt - &shiftwidth
	endif


	" MISCELLANEOUS THINGS TO CATCH

	" Most "begin"s will have been handled by now. Any remaining
	" "begin"s on their own line should go in column 1.
	if this_codeline =~ '^\s*begin$'
		return 0
	endif


" ____________________________________________________________________
" Object/Borland Pascal/Delphi Extensions
"
" Note that extended-pascal is handled here, unless it is simpler to
" handle them in the standard-pascal section above.


	" COLUMN 1 ALWAYS

	" section headers at start of line.
	if this_codeline =~ '^\s*\(interface\|implementation\|uses\|unit\)\>'
		return 0
	endif


	" INDENT ONCE

	" If the PREVIOUS LINE ended in these items, always indent.
	if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
		return indnt + &shiftwidth
	endif

	" ???? Indent "procedure" and "functions" if they appear within an
	" class/object definition. But that means overriding standard-pascal
	" rule where these words always go in column 1.


	" UNINDENT ONCE

	if this_codeline =~ '^\s*\(except\|finally\)$'
		return indnt - &shiftwidth
	endif

	if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
		return indnt - &shiftwidth
	endif


" ____________________________________________________________________

	" If nothing changed, return same indent.
	return indnt
endfunction


Filemanager

Name Type Size Permission Actions
README.txt File 1.6 KB 0644
aap.vim File 265 B 0644
ada.vim File 10.89 KB 0644
ant.vim File 290 B 0644
automake.vim File 231 B 0644
awk.vim File 7.57 KB 0644
bib.vim File 346 B 0644
bst.vim File 1.87 KB 0644
c.vim File 325 B 0644
cdl.vim File 4.07 KB 0644
ch.vim File 470 B 0644
chaiscript.vim File 1.11 KB 0644
changelog.vim File 264 B 0644
clojure.vim File 11.85 KB 0644
cmake.vim File 2.69 KB 0644
cobol.vim File 8 KB 0644
config.vim File 2.12 KB 0644
cpp.vim File 329 B 0644
cs.vim File 327 B 0644
css.vim File 1.68 KB 0644
cucumber.vim File 2.56 KB 0644
cuda.vim File 305 B 0644
d.vim File 510 B 0644
dictconf.vim File 325 B 0644
dictdconf.vim File 326 B 0644
docbk.vim File 324 B 0644
dtd.vim File 11.39 KB 0644
dtrace.vim File 451 B 0644
dylan.vim File 2.6 KB 0644
eiffel.vim File 3.13 KB 0644
erlang.vim File 45.15 KB 0644
eruby.vim File 2.11 KB 0644
eterm.vim File 638 B 0644
falcon.vim File 13.65 KB 0644
fortran.vim File 6.41 KB 0644
framescript.vim File 786 B 0644
gitconfig.vim File 817 B 0644
gitolite.vim File 996 B 0644
haml.vim File 2.14 KB 0644
hamster.vim File 1.37 KB 0644
html.vim File 14.46 KB 0644
htmldjango.vim File 273 B 0644
idlang.vim File 1.53 KB 0644
ishd.vim File 1.8 KB 0644
java.vim File 4.02 KB 0644
javascript.vim File 336 B 0644
jsp.vim File 462 B 0644
ld.vim File 1.71 KB 0644
lifelines.vim File 637 B 0644
liquid.vim File 1.83 KB 0644
lisp.vim File 353 B 0644
logtalk.vim File 1.65 KB 0644
lua.vim File 1.87 KB 0644
mail.vim File 308 B 0644
make.vim File 3.35 KB 0644
matlab.vim File 1.88 KB 0644
mma.vim File 2.17 KB 0644
mp.vim File 6.37 KB 0644
objc.vim File 1.61 KB 0644
ocaml.vim File 8.9 KB 0644
occam.vim File 4.53 KB 0644
pascal.vim File 5.52 KB 0644
perl.vim File 5.67 KB 0644
perl6.vim File 3.42 KB 0644
php.vim File 18.97 KB 0644
postscr.vim File 1.58 KB 0644
pov.vim File 2.58 KB 0644
prolog.vim File 1.42 KB 0644
pyrex.vim File 326 B 0644
python.vim File 5.61 KB 0644
r.vim File 14.44 KB 0644
readline.vim File 681 B 0644
rpl.vim File 1.79 KB 0644
rst.vim File 1.35 KB 0644
ruby.vim File 17.13 KB 0644
sass.vim File 1018 B 0644
scheme.vim File 241 B 0644
scss.vim File 191 B 0644
sdl.vim File 2.7 KB 0644
sh.vim File 3.95 KB 0644
sml.vim File 6.27 KB 0644
sql.vim File 1.18 KB 0644
sqlanywhere.vim File 12.77 KB 0644
tcl.vim File 1.56 KB 0644
tcsh.vim File 1.21 KB 0644
tex.vim File 9.47 KB 0644
tf.vim File 1.46 KB 0644
tilde.vim File 994 B 0644
treetop.vim File 677 B 0644
vb.vim File 2 KB 0644
verilog.vim File 7.44 KB 0644
vhdl.vim File 13.48 KB 0644
vim.vim File 2.76 KB 0644
xf86conf.vim File 679 B 0644
xhtml.vim File 269 B 0644
xinetd.vim File 1.17 KB 0644
xml.vim File 2.77 KB 0644
xsd.vim File 253 B 0644
xslt.vim File 297 B 0644
yacc.vim File 769 B 0644
yaml.vim File 4.02 KB 0644
zimbu.vim File 3.8 KB 0644
zsh.vim File 231 B 0644