summaryrefslogtreecommitdiffstats
path: root/indent/tf.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-10-06 18:54:19 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-10-06 18:54:19 +0200
commitbc9757916ed09763d96283ee62dbed58bd713a11 (patch)
tree07fbb58e9a4f4cbf5206d89f61e4d570e64d2c1a /indent/tf.vim
parentc6fa4d2bf5eb5301f4d3f123031cf34839a5508d (diff)
downloadvim-polyglot-bc9757916ed09763d96283ee62dbed58bd713a11.tar.gz
vim-polyglot-bc9757916ed09763d96283ee62dbed58bd713a11.zip
Add all vim filetypes
Diffstat (limited to 'indent/tf.vim')
-rw-r--r--indent/tf.vim76
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