summaryrefslogtreecommitdiffstats
path: root/ftplugin/erlang.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2017-09-27 20:43:42 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2017-09-27 20:43:42 +0200
commit5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1 (patch)
tree965ae5128797f3d42d78d02692e62d24a4596e19 /ftplugin/erlang.vim
parent8148255ef1c416f414c3a78405eff08fe149d16e (diff)
downloadvim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz
vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip
Add syntax files from upstream vim repository
Diffstat (limited to 'ftplugin/erlang.vim')
-rw-r--r--ftplugin/erlang.vim91
1 files changed, 91 insertions, 0 deletions
diff --git a/ftplugin/erlang.vim b/ftplugin/erlang.vim
new file mode 100644
index 00000000..ddf27709
--- /dev/null
+++ b/ftplugin/erlang.vim
@@ -0,0 +1,91 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
+
+" Vim ftplugin file
+" Language: Erlang
+" Author: Oscar Hellström <oscar@oscarh.net>
+" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+" Eduardo Lopez (http://github.com/tapichu)
+" License: Vim license
+" Version: 2012/01/25
+
+if exists('b:did_ftplugin')
+ finish
+else
+ let b:did_ftplugin = 1
+endif
+
+if exists('s:did_function_definitions')
+ call s:SetErlangOptions()
+ finish
+else
+ let s:did_function_definitions = 1
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists('g:erlang_keywordprg')
+ let g:erlang_keywordprg = 'erl -man'
+endif
+
+if !exists('g:erlang_folding')
+ let g:erlang_folding = 0
+endif
+
+let s:erlang_fun_begin = '^\a\w*(.*$'
+let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
+
+function s:SetErlangOptions()
+ if g:erlang_folding
+ setlocal foldmethod=expr
+ setlocal foldexpr=GetErlangFold(v:lnum)
+ setlocal foldtext=ErlangFoldText()
+ endif
+
+ setlocal comments=:%%%,:%%,:%
+ setlocal commentstring=%%s
+
+ setlocal formatoptions+=ro
+ let &l:keywordprg = g:erlang_keywordprg
+endfunction
+
+function GetErlangFold(lnum)
+ let lnum = a:lnum
+ let line = getline(lnum)
+
+ if line =~ s:erlang_fun_end
+ return '<1'
+ endif
+
+ if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
+ return '1'
+ endif
+
+ if line =~ s:erlang_fun_begin
+ return '>1'
+ endif
+
+ return '='
+endfunction
+
+function ErlangFoldText()
+ let line = getline(v:foldstart)
+ let foldlen = v:foldend - v:foldstart + 1
+ let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
+ if foldlen < 10
+ let lines = ' ' . lines
+ endif
+ let retval = '+' . v:folddashes . lines
+
+ return retval
+endfunction
+
+call s:SetErlangOptions()
+
+let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<"
+ \ . " comments< commentstring< formatoptions<"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+endif