summaryrefslogtreecommitdiffstats
path: root/ftplugin
diff options
context:
space:
mode:
Diffstat (limited to 'ftplugin')
-rw-r--r--ftplugin/kotlin.vim2
-rw-r--r--ftplugin/nix.vim13
-rw-r--r--ftplugin/plantuml.vim19
-rw-r--r--ftplugin/terraform.vim195
4 files changed, 162 insertions, 67 deletions
diff --git a/ftplugin/kotlin.vim b/ftplugin/kotlin.vim
index 417f0824..519a153a 100644
--- a/ftplugin/kotlin.vim
+++ b/ftplugin/kotlin.vim
@@ -2,7 +2,7 @@ if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'kotlin') != -1
finish
endif
-if exists("b:did_ftplugin") | finish | endif
+if exists('b:did_ftplugin') | finish | endif
let b:did_ftplugin = 1
setlocal comments=://
diff --git a/ftplugin/nix.vim b/ftplugin/nix.vim
index 900ee683..c80b825a 100644
--- a/ftplugin/nix.vim
+++ b/ftplugin/nix.vim
@@ -12,11 +12,14 @@ if (exists("b:did_ftplugin"))
endif
let b:did_ftplugin = 1
-
setlocal
- \ comments=:#
- \ commentstring=#\ %s
+ \ comments=:#
+ \ commentstring=#\ %s
+ \ iskeyword+=-
+
+if get(g:, 'nix_recommended_style', 1)
+ setlocal
\ shiftwidth=2
\ softtabstop=2
- \ expandtab
- \ iskeyword+=-
+ \ expandtab
+endif
diff --git a/ftplugin/plantuml.vim b/ftplugin/plantuml.vim
index 9fe82d5e..535fd0b9 100644
--- a/ftplugin/plantuml.vim
+++ b/ftplugin/plantuml.vim
@@ -2,12 +2,18 @@ if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'plantuml') != -1
finish
endif
+scriptencoding utf-8
+" Vim filetype plugin file
+" Language: PlantUML
+" Maintainer: Anders Thøgersen <first name at bladre dot dk>
+" License: VIM LICENSE
+
if exists('b:loaded_plantuml_plugin')
finish
endif
let b:loaded_plantuml_plugin = 1
-let s:cpo_save = &cpo
-set cpo&vim
+let s:cpo_save = &cpoptions
+set cpoptions&vim
if !exists('g:plantuml_executable_script')
let g:plantuml_executable_script='plantuml'
@@ -21,10 +27,13 @@ if exists('loaded_matchit')
\ ',\<rnote\>:\<endrnote\>' .
\ ',\<hnote\>:\<endhnote\>' .
\ ',\<title\>:\<endtitle\>' .
- \ ',\<\while\>:\<endwhile\>'
+ \ ',\<\while\>:\<endwhile\>' .
+ \ ',@startuml:@enduml'
endif
-let &l:makeprg=g:plantuml_executable_script . ' ' . fnameescape(expand('%'))
+if get(g:, 'plantuml_set_makeprg', 1)
+ let &l:makeprg=g:plantuml_executable_script . ' %'
+endif
setlocal comments=s1:/',mb:',ex:'/,:' commentstring=/'%s'/ formatoptions-=t formatoptions+=croql
@@ -33,5 +42,5 @@ let b:endwise_words = 'loop,group,alt,note,legend'
let b:endwise_pattern = '^\s*\zs\<\(loop\|group\|alt\|note\ze[^:]*$\|legend\)\>.*$'
let b:endwise_syngroups = 'plantumlKeyword'
-let &cpo = s:cpo_save
+let &cpoptions = s:cpo_save
unlet s:cpo_save
diff --git a/ftplugin/terraform.vim b/ftplugin/terraform.vim
index 0ece8bf6..fd4c2be0 100644
--- a/ftplugin/terraform.vim
+++ b/ftplugin/terraform.vim
@@ -5,71 +5,154 @@ endif
" terraform.vim - basic vim/terraform integration
" Maintainer: HashiVim <https://github.com/hashivim>
-set formatoptions-=t
-
-if exists("g:loaded_terraform") || v:version < 700 || &cp || !executable('terraform')
+if exists('b:did_ftplugin') || v:version < 700 || &compatible
finish
endif
-let g:loaded_terraform = 1
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpoptions
+
+setlocal formatoptions-=t
+let b:undo_ftplugin = 'setlocal formatoptions<'
+
+" Include hyphens as keyword characters so that a keyword appearing as part of
+" a longer name doesn't get partially highlighted.
+setlocal iskeyword+=-
+let b:undo_ftplugin .= ' iskeyword<'
+
+set cpoptions&vim
+
+if !exists('g:terraform_align')
+ let g:terraform_align = 0
+endif
+
+if !exists('g:terraform_remap_spacebar')
+ let g:terraform_remap_spacebar = 0
+endif
+
+if !exists('g:terraform_fold_sections')
+ let g:terraform_fold_sections = 0
+endif
+
+if g:terraform_align && exists(':Tabularize')
+ inoremap <buffer> <silent> = =<Esc>:call <SID>terraformalign()<CR>a
+ function! s:terraformalign()
+ let p = '^.*=[^>]*$'
+ if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
+ let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g'))
+ let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*'))
+ Tabularize/=/l1
+ normal! 0
+ call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
+ endif
+ endfunction
+endif
+
+if g:terraform_fold_sections
+ function! TerraformFolds()
+ let thisline = getline(v:lnum)
+ if match(thisline, '^resource') >= 0
+ return '>1'
+ elseif match(thisline, '^provider') >= 0
+ return '>1'
+ elseif match(thisline, '^module') >= 0
+ return '>1'
+ elseif match(thisline, '^variable') >= 0
+ return '>1'
+ elseif match(thisline, '^output') >= 0
+ return '>1'
+ elseif match(thisline, '^data') >= 0
+ return '>1'
+ elseif match(thisline, '^terraform') >= 0
+ return '>1'
+ elseif match(thisline, '^locals') >= 0
+ return '>1'
+ else
+ return '='
+ endif
+ endfunction
+ setlocal foldmethod=expr
+ setlocal foldexpr=TerraformFolds()
+ setlocal foldlevel=1
+ let b:undo_ftplugin .= ' foldmethod< foldexpr< foldlevel<'
+
+ function! TerraformFoldText()
+ let foldsize = (v:foldend-v:foldstart)
+ return getline(v:foldstart).' ('.foldsize.' lines)'
+ endfunction
+ setlocal foldtext=TerraformFoldText()
+ let b:undo_ftplugin .= ' foldtext<'
+endif
+
+" Re-map the space bar to fold and unfold
+if get(g:, 'terraform_remap_spacebar', 1)
+ "inoremap <space> <C-O>za
+ nnoremap <space> za
+ onoremap <space> <C-C>za
+ vnoremap <space> zf
+endif
-if !exists("g:terraform_fmt_on_save") || !filereadable(expand("%:p"))
+" Set the commentstring
+if exists('g:terraform_commentstring')
+ let &l:commentstring=g:terraform_commentstring
+else
+ setlocal commentstring=#%s
+endif
+let b:undo_ftplugin .= ' commentstring<'
+
+if !exists('g:terraform_fmt_on_save')
let g:terraform_fmt_on_save = 0
endif
function! s:commands(A, L, P)
- return join([
- \ "apply",
- \ "console",
- \ "destroy",
- \ "env",
- \ "fmt",
- \ "get",
- \ "graph",
- \ "import",
- \ "init",
- \ "output",
- \ "plan",
- \ "providers",
- \ "push",
- \ "refresh",
- \ "show",
- \ "taint",
- \ "untaint",
- \ "validate",
- \ "version",
- \ "workspace",
- \ "debug",
- \ "force-unlock",
- \ "state"
- \ ], "\n")
+ return [
+ \ 'apply',
+ \ 'console',
+ \ 'destroy',
+ \ 'env',
+ \ 'fmt',
+ \ 'get',
+ \ 'graph',
+ \ 'import',
+ \ 'init',
+ \ 'output',
+ \ 'plan',
+ \ 'providers',
+ \ 'push',
+ \ 'refresh',
+ \ 'show',
+ \ 'taint',
+ \ 'untaint',
+ \ 'validate',
+ \ 'version',
+ \ 'workspace',
+ \ '0.12checklist',
+ \ 'debug',
+ \ 'force-unlock',
+ \ 'state'
+ \ ]
endfunction
-" Adapted from vim-hclfmt:
-" https://github.com/fatih/vim-hclfmt/blob/master/autoload/fmt.vim
-function! terraform#fmt()
- let l:curw = winsaveview()
- let l:tmpfile = tempname() . ".tf"
- call writefile(getline(1, "$"), l:tmpfile)
- let output = system("terraform fmt -write " . l:tmpfile)
- if v:shell_error == 0
- try | silent undojoin | catch | endtry
- call rename(l:tmpfile, resolve(expand("%")))
- silent edit!
- let &syntax = &syntax
- else
- echo output
- call delete(l:tmpfile)
- endif
- call winrestview(l:curw)
-endfunction
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
-augroup terraform
- autocmd!
- autocmd BufEnter *
- \ command! -nargs=+ -complete=custom,s:commands Terraform execute '!terraform '.<q-args>. ' -no-color'
- autocmd BufEnter * command! -nargs=0 TerraformFmt call terraform#fmt()
- if get(g:, "terraform_fmt_on_save", 1)
+if !executable('terraform')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+
+command! -nargs=+ -complete=customlist,s:commands -buffer Terraform execute '!terraform '.<q-args>. ' -no-color'
+command! -nargs=0 -buffer TerraformFmt call terraform#fmt()
+let b:undo_ftplugin .= '|delcommand Terraform|delcommand TerraformFmt'
+
+if get(g:, 'terraform_fmt_on_save', 1)
+ augroup terraform
+ autocmd!
autocmd BufWritePre *.tf call terraform#fmt()
autocmd BufWritePre *.tfvars call terraform#fmt()
- endif
-augroup END
+ augroup END
+endif
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save