summaryrefslogtreecommitdiffstats
path: root/runtime/indent/sshconfig.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-05-26 21:20:45 +0200
committerBram Moolenaar <Bram@vim.org>2020-05-26 21:20:45 +0200
commit388a5d4f20b4b64341d1604aa238cab85827b892 (patch)
tree9b6f90c08120369741136623a70307bb6da1b6a8 /runtime/indent/sshconfig.vim
parentfcb0b61d15f66f0e9116a6bc56d9d8105bb913cf (diff)
Update runtime files
Diffstat (limited to 'runtime/indent/sshconfig.vim')
-rw-r--r--runtime/indent/sshconfig.vim34
1 files changed, 34 insertions, 0 deletions
diff --git a/runtime/indent/sshconfig.vim b/runtime/indent/sshconfig.vim
new file mode 100644
index 0000000000..b456a9e3aa
--- /dev/null
+++ b/runtime/indent/sshconfig.vim
@@ -0,0 +1,34 @@
+" Vim indent file
+" Language: ssh config file
+" Maintainer: JasonKim <git@jasonk.me>
+" Last Change: 2020 May 16
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal indentexpr=GetSshconfigIndent(v:lnum)
+setlocal indentkeys=o,O,*<Return>,0=~host\ ,0=~match\ ,0#,!^F
+
+let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys<"
+
+if exists("*GetSshconfigIndent")
+ finish
+endif
+
+function GetSshconfigIndent(lnum)
+ let sw = shiftwidth()
+ let prev_lnum = prevnonblank(a:lnum - 1)
+ let curr_lnum = a:lnum
+ let prev_line = getline(prev_lnum)
+ let curr_line = getline(curr_lnum)
+ if curr_line =~? '^\s*\(host\|match\)\s'
+ return 0
+ elseif prev_line =~? '^\s*\(host\|match\)\s'
+ return sw
+ else
+ return indent(prev_lnum)
+ endif
+endfunction