summaryrefslogtreecommitdiffstats
path: root/ftplugin
diff options
context:
space:
mode:
Diffstat (limited to 'ftplugin')
-rw-r--r--ftplugin/fish.vim43
-rw-r--r--ftplugin/git.vim45
-rw-r--r--ftplugin/gitcommit.vim68
-rw-r--r--ftplugin/gitconfig.vim19
-rw-r--r--ftplugin/gitrebase.vim49
-rw-r--r--ftplugin/gitsendemail.vim10
-rw-r--r--ftplugin/julia.vim99
7 files changed, 99 insertions, 234 deletions
diff --git a/ftplugin/fish.vim b/ftplugin/fish.vim
deleted file mode 100644
index c6c1f6d8..00000000
--- a/ftplugin/fish.vim
+++ /dev/null
@@ -1,43 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
-
-setlocal comments=:#
-setlocal commentstring=#%s
-setlocal define=\\v^\\s*function>
-setlocal foldexpr=fish#Fold()
-setlocal formatoptions+=ron1
-setlocal formatoptions-=t
-setlocal include=\\v^\\s*\\.>
-setlocal iskeyword=@,48-57,-,_,.,/
-setlocal suffixesadd^=.fish
-
-" Use the 'j' format option when available.
-if v:version ># 703 || v:version ==# 703 && has('patch541')
- setlocal formatoptions+=j
-endif
-
-if executable('fish_indent')
- setlocal formatexpr=fish#Format()
-endif
-
-if executable('fish')
- setlocal omnifunc=fish#Complete
- for s:path in split(system("fish -c 'echo $fish_function_path'"))
- execute 'setlocal path+='.s:path
- endfor
-else
- setlocal omnifunc=syntaxcomplete#Complete
-endif
-
-" Use the 'man' wrapper function in fish to include fish's man pages.
-" Have to use a script for this; 'fish -c man' would make the the man page an
-" argument to fish instead of man.
-execute 'setlocal keywordprg=fish\ '.fnameescape(expand('<sfile>:p:h:h').'/bin/man.fish')
-
-let b:match_words =
- \ escape('<%(begin|function|if|switch|while|for)>:<end>', '<>%|)')
-
-let b:endwise_addition = 'end'
-let b:endwise_words = 'begin,function,if,switch,while,for'
-let b:endwise_syngroups = 'fishKeyword,fishConditional,fishRepeat'
-
-endif
diff --git a/ftplugin/git.vim b/ftplugin/git.vim
deleted file mode 100644
index 38b9493b..00000000
--- a/ftplugin/git.vim
+++ /dev/null
@@ -1,45 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
-
-" Vim filetype plugin
-" Language: generic git output
-" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2013 May 30
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
- finish
-endif
-let b:did_ftplugin = 1
-
-if !exists('b:git_dir')
- if expand('%:p') =~# '[\/]\.git[\/]modules[\/]'
- " Stay out of the way
- elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
- let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
- elseif expand('%:p') =~# '\.git\>'
- let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
- elseif $GIT_DIR != ''
- let b:git_dir = $GIT_DIR
- endif
- if (has('win32') || has('win64')) && exists('b:git_dir')
- let b:git_dir = substitute(b:git_dir,'\\','/','g')
- endif
-endif
-
-if exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''
- if b:git_dir =~# '/\.git$' " Not a bare repository
- let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path
- endif
- let &l:path = escape(b:git_dir,'\, ').','.&l:path
- let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
-else
- setlocal keywordprg=git\ show
-endif
-if has('gui_running')
- let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','')
-endif
-
-setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
-let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
-
-endif
diff --git a/ftplugin/gitcommit.vim b/ftplugin/gitcommit.vim
deleted file mode 100644
index dc6a581a..00000000
--- a/ftplugin/gitcommit.vim
+++ /dev/null
@@ -1,68 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
-
-" Vim filetype plugin
-" Language: git commit file
-" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2013 May 30
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
- finish
-endif
-
-runtime! ftplugin/git.vim
-let b:did_ftplugin = 1
-
-setlocal comments=:# commentstring=#\ %s
-setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
-setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q
-let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms<'
-
-if exists("g:no_gitcommit_commands") || v:version < 700
- finish
-endif
-
-if !exists("b:git_dir")
- let b:git_dir = expand("%:p:h")
-endif
-
-command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
-
-let b:undo_ftplugin = b:undo_ftplugin . "|delc DiffGitCached"
-
-function! s:diffcomplete(A,L,P)
- let args = ""
- if a:P <= match(a:L." -- "," -- ")+3
- let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
- end
- if exists("b:git_dir") && a:A !~ '^-'
- let tree = fnamemodify(b:git_dir,':h')
- if strpart(getcwd(),0,strlen(tree)) == tree
- let args = args."\n".system("git diff --cached --name-only")
- endif
- endif
- return args
-endfunction
-
-function! s:gitdiffcached(bang,gitdir,...)
- let tree = fnamemodify(a:gitdir,':h')
- let name = tempname()
- let git = "git"
- if strpart(getcwd(),0,strlen(tree)) != tree
- let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
- endif
- if a:0
- let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
- else
- let extra = "-p --stat=".&columns
- endif
- call system(git." diff --cached --no-color --no-ext-diff ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
- exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
- wincmd P
- let b:git_dir = a:gitdir
- command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
- nnoremap <buffer> <silent> q :q<CR>
- setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
-endfunction
-
-endif
diff --git a/ftplugin/gitconfig.vim b/ftplugin/gitconfig.vim
deleted file mode 100644
index 23282522..00000000
--- a/ftplugin/gitconfig.vim
+++ /dev/null
@@ -1,19 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
-
-" Vim filetype plugin
-" Language: git config file
-" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2009 Dec 24
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
- finish
-endif
-let b:did_ftplugin = 1
-
-setlocal formatoptions-=t formatoptions+=croql
-setlocal comments=:#,:; commentstring=;\ %s
-
-let b:undo_ftplugin = "setl fo< com< cms<"
-
-endif
diff --git a/ftplugin/gitrebase.vim b/ftplugin/gitrebase.vim
deleted file mode 100644
index 032aba31..00000000
--- a/ftplugin/gitrebase.vim
+++ /dev/null
@@ -1,49 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
-
-" Vim filetype plugin
-" Language: git rebase --interactive
-" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2010 May 21
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
- finish
-endif
-
-runtime! ftplugin/git.vim
-let b:did_ftplugin = 1
-
-setlocal comments=:# commentstring=#\ %s formatoptions-=t
-setlocal nomodeline
-if !exists("b:undo_ftplugin")
- let b:undo_ftplugin = ""
-endif
-let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
-
-function! s:choose(word)
- s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
-endfunction
-
-function! s:cycle()
- call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick'))
-endfunction
-
-command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick')
-command! -buffer -bar -range Squash :<line1>,<line2>call s:choose('squash')
-command! -buffer -bar -range Edit :<line1>,<line2>call s:choose('edit')
-command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword')
-command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup')
-command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop')
-command! -buffer -bar Cycle :call s:cycle()
-" The above are more useful when they are mapped; for example:
-"nnoremap <buffer> <silent> S :Cycle<CR>
-
-if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
- finish
-endif
-
-nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
-
-let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K"
-
-endif
diff --git a/ftplugin/gitsendemail.vim b/ftplugin/gitsendemail.vim
deleted file mode 100644
index 69e0360e..00000000
--- a/ftplugin/gitsendemail.vim
+++ /dev/null
@@ -1,10 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
-
-" Vim filetype plugin
-" Language: git send-email message
-" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2009 Dec 24
-
-runtime! ftplugin/mail.vim
-
-endif
diff --git a/ftplugin/julia.vim b/ftplugin/julia.vim
new file mode 100644
index 00000000..2d1bcb49
--- /dev/null
+++ b/ftplugin/julia.vim
@@ -0,0 +1,99 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
+
+" Vim filetype plugin file
+" Language: Julia
+" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
+" Last Change: 2014 may 29
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:save_cpo = &cpo
+set cpo-=C
+
+setlocal include=^\\s*\\%(reload\\\|include\\)\\>
+setlocal suffixesadd=.jl
+setlocal comments=:#
+setlocal commentstring=#=%s=#
+setlocal cinoptions+=#1
+setlocal define=^\\s*macro\\>
+
+let b:julia_vim_loaded = 1
+
+let b:undo_ftplugin = "setlocal include< suffixesadd< comments< commentstring<"
+ \ . " define< shiftwidth< expandtab< indentexpr< indentkeys< cinoptions< omnifunc<"
+ \ . " | unlet! b:julia_vim_loaded"
+
+" MatchIt plugin support
+if exists("loaded_matchit")
+ let b:match_ignorecase = 0
+
+ " note: begin_keywords must contain all blocks in order
+ " for nested-structures-skipping to work properly
+ let b:julia_begin_keywords = '\%(\%(\.\s*\)\@<!\|\%(@\s*.\s*\)\@<=\)\<\%(\%(staged\)\?function\|macro\|begin\|mutable\s\+struct\|\%(mutable\s\+\)\@<!struct\|\%(abstract\|primitive\)\s\+type\|\%(\(abstract\|primitive\)\s\+\)\@<!type\|immutable\|let\|do\|\%(bare\)\?module\|quote\|if\|for\|while\|try\)\>'
+ let s:macro_regex = '@\%(#\@!\S\)\+\s\+'
+ let s:nomacro = '\%(' . s:macro_regex . '\)\@<!'
+ let s:yesmacro = s:nomacro . '\%('. s:macro_regex . '\)\+'
+ let b:julia_begin_keywordsm = '\%(' . s:yesmacro . b:julia_begin_keywords . '\)\|'
+ \ . '\%(' . s:nomacro . b:julia_begin_keywords . '\)'
+ let b:julia_end_keywords = '\<end\>'
+
+ " note: this function relies heavily on the syntax file
+ function! JuliaGetMatchWords()
+ let [l,c] = [line('.'),col('.')]
+ let attr = synIDattr(synID(l, c, 1),"name")
+ let c1 = c
+ while attr == 'juliaMacro'
+ normal! W
+ if line('.') > l || col('.') == c1
+ call cursor(l, c)
+ return ''
+ endif
+ let attr = synIDattr(synID(l, col('.'), 1),"name")
+ let c1 = col('.')
+ endwhile
+ call cursor(l, c)
+ if attr == 'juliaConditional'
+ return b:julia_begin_keywordsm . ':\<\%(elseif\|else\)\>:' . b:julia_end_keywords
+ elseif attr =~ '\<\%(juliaRepeat\|juliaRepKeyword\)\>'
+ return b:julia_begin_keywordsm . ':\<\%(break\|continue\)\>:' . b:julia_end_keywords
+ elseif attr == 'juliaBlKeyword'
+ return b:julia_begin_keywordsm . ':' . b:julia_end_keywords
+ elseif attr == 'juliaException'
+ return b:julia_begin_keywordsm . ':\<\%(catch\|finally\)\>:' . b:julia_end_keywords
+ endif
+ return '\<\>:\<\>'
+ endfunction
+
+ let b:match_words = 'JuliaGetMatchWords()'
+
+ " we need to skip everything within comments, strings and
+ " the 'end' keyword when it is used as a range rather than as
+ " the end of a block
+ let b:match_skip = 'synIDattr(synID(line("."),col("."),1),"name") =~ '
+ \ . '"\\<julia\\%(Comprehension\\%(For\\|If\\)\\|RangeEnd\\|SymbolS\\?\\|Comment[LM]\\|\\%([bv]\\|ip\\|MIME\\|Shell\\|Doc\\)\\?String\\|RegEx\\)\\>"'
+
+ let b:undo_ftplugin = b:undo_ftplugin
+ \ . " | unlet! b:match_words b:match_skip b:match_ignorecase"
+ \ . " | unlet! b:julia_begin_keywords b:julia_end_keywords"
+ \ . " | delfunction JuliaGetMatchWords"
+ \ . " | call julia_blocks#remove_mappings()"
+
+ if get(g:, "julia_blocks", 1)
+ call julia_blocks#init_mappings()
+ let b:undo_ftplugin .= " | call julia_blocks#remove_mappings()"
+ endif
+
+endif
+
+if has("gui_win32")
+ let b:browsefilter = "Julia Source Files (*.jl)\t*.jl\n"
+ let b:undo_ftplugin = b:undo_ftplugin . " | unlet! b:browsefilter"
+endif
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+endif