summaryrefslogtreecommitdiffstats
path: root/indent/pascal.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2017-09-28 22:18:09 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2017-09-28 22:18:09 +0200
commit27903c5b8656c796564ef073c1ebe77a2f0154e1 (patch)
tree2b0a3a14494d7976fb79a7517706e25d2a95d080 /indent/pascal.vim
parentd5e38fa97bc50a93a66473d6cd7072fbcbadda57 (diff)
downloadvim-polyglot-27903c5b8656c796564ef073c1ebe77a2f0154e1.tar.gz
vim-polyglot-27903c5b8656c796564ef073c1ebe77a2f0154e1.zip
Revert inlining basic language packv3.0.0
Diffstat (limited to 'indent/pascal.vim')
-rw-r--r--indent/pascal.vim232
1 files changed, 0 insertions, 232 deletions
diff --git a/indent/pascal.vim b/indent/pascal.vim
deleted file mode 100644
index b20fb56d..00000000
--- a/indent/pascal.vim
+++ /dev/null
@@ -1,232 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
-
-" Vim indent file
-" Language: Pascal
-" Maintainer: Neil Carter <n.carter@swansea.ac.uk>
-" Created: 2004 Jul 13
-" Last Change: 2017 Jun 13
-"
-" 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 - 2 * 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
-
-
-endif