diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-10-06 18:54:19 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-10-06 18:54:19 +0200 |
commit | bc9757916ed09763d96283ee62dbed58bd713a11 (patch) | |
tree | 07fbb58e9a4f4cbf5206d89f61e4d570e64d2c1a /indent/tf.vim | |
parent | c6fa4d2bf5eb5301f4d3f123031cf34839a5508d (diff) | |
download | vim-polyglot-bc9757916ed09763d96283ee62dbed58bd713a11.tar.gz vim-polyglot-bc9757916ed09763d96283ee62dbed58bd713a11.zip |
Add all vim filetypes
Diffstat (limited to 'indent/tf.vim')
-rw-r--r-- | indent/tf.vim | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/indent/tf.vim b/indent/tf.vim new file mode 100644 index 00000000..ba22883c --- /dev/null +++ b/indent/tf.vim @@ -0,0 +1,76 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tf') == -1 + +" Vim indent file +" Language: tf (TinyFugue) +" Maintainer: Christian J. Robinson <heptite@gmail.com> +" URL: http://www.vim.org/scripts/script.php?script_id=174 +" Last Change: 2017 Feb 25 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetTFIndent() +setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=: +setlocal indentkeys+==/endif,=/then,=/else,=/done,0; + +" Only define the function once: +if exists("*GetTFIndent") + finish +endif + +function GetTFIndent() + " Find a non-blank line above the current line: + let lnum = prevnonblank(v:lnum - 1) + + " No indent for the start of the file: + if lnum == 0 + return 0 + endif + + let ind = indent(lnum) + let line = getline(lnum) + + " No indentation if the previous line didn't end with "\": + " (Could be annoying, but it lets you know if you made a mistake.) + if line !~ '\\$' + return 0 + endif + + if line =~ '\(/def.*\\\|/for.*\(%;\s*\)\@\<!\\\)$' + let ind = ind + shiftwidth() + elseif line =~ '\(/if\|/else\|/then\)' + if line !~ '/endif' + let ind = ind + shiftwidth() + endif + elseif line =~ '/while' + if line !~ '/done' + let ind = ind + shiftwidth() + endif + endif + + let line = getline(v:lnum) + + if line =~ '\(/else\|/endif\|/then\)' + if line !~ '/if' + let ind = ind - shiftwidth() + endif + elseif line =~ '/done' + if line !~ '/while' + let ind = ind - shiftwidth() + endif + endif + + " Comments at the beginning of a line: + if line =~ '^\s*;' + let ind = 0 + endif + + + return ind + +endfunction + +endif |