diff --git a/.gitignore b/.gitignore index 94498a3..f15e6a8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ configstore hub vim/vim.symlink/.netrwhist +vim/vim.symlink/bundle diff --git a/script/bootstrap.sh b/script/bootstrap.sh index 7a2ab28..f0b57e8 100755 --- a/script/bootstrap.sh +++ b/script/bootstrap.sh @@ -114,6 +114,28 @@ install_dotfiles () { done } +install_vim_plugins () { + info "installing vim plugins" + + local PLUGINS=("thoughtbot/pick.vim" "tomtom/tlib_vim" "mxw/vim-jsx" "wting/rust.vim" "marcweber/vim-addon-mw-utils" "scrooloose/syntastic" "mustache/vim-mustache-handlebars" "pangloss/vim-javascript") + local BASE_DIR="$DOTFILES_ROOT/vim/vim.symlink/bundle" + local GIT_HOST="git@github.com" + + rm -fr "$BASE_DIR" + success "remove existing plugins" + + mkdir -p "$BASE_DIR" + + for i in "${PLUGINS[@]}" + do + info "installing $i" + local BASE_NAME="$(basename $i)" + git clone "$GIT_HOST:$i" "$BASE_DIR/$BASE_NAME" &> /dev/null + success "installed $i" + done +} + install_dotfiles +install_vim_plugins echo ' All installed!' diff --git a/vim/vim.symlink/bundle/pick.vim b/vim/vim.symlink/bundle/pick.vim deleted file mode 160000 index 7acb3bc..0000000 --- a/vim/vim.symlink/bundle/pick.vim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7acb3bce8433d88f05b75ed4b4e1c7af5377ebf4 diff --git a/vim/vim.symlink/bundle/rust.vim/.gitignore b/vim/vim.symlink/bundle/rust.vim/.gitignore deleted file mode 100644 index 0a56e3f..0000000 --- a/vim/vim.symlink/bundle/rust.vim/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/doc/tags diff --git a/vim/vim.symlink/bundle/rust.vim/README.md b/vim/vim.symlink/bundle/rust.vim/README.md deleted file mode 100644 index 481db9f..0000000 --- a/vim/vim.symlink/bundle/rust.vim/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# rust.vim - -## Description - -This is a vim plugin provides [Rust][r] file detection and syntax highlighting. - -It is synchronized daily to the vim support code in [rust-lang/rust][rr]'s -master branch via cronjob. - -## Installation - -### Using [Vundle][v] - -1. Add `Plugin 'wting/rust.vim'` to `~/.vimrc` -2. `vim +PluginInstall +qall` - -*Note:* Vundle will not automatically detect Rust files properly if `filetype -on` is executed before Vundle. Please check the [quickstart][vqs] for more -details. - -### Using [Pathogen][p] - -1. `cd ~/.vim/bundle` -2. `git clone https://github.com/wting/rust.vim.git` - -[rr]: https://github.com/rust-lang/rust -[p]: https://github.com/tpope/vim-pathogen -[r]: https://en.wikipedia.org/wiki/Rust_language -[v]: https://github.com/gmarik/vundle -[vqs]: https://github.com/gmarik/vundle#quick-start diff --git a/vim/vim.symlink/bundle/rust.vim/after/syntax/rust.vim b/vim/vim.symlink/bundle/rust.vim/after/syntax/rust.vim deleted file mode 100644 index 735c1e1..0000000 --- a/vim/vim.symlink/bundle/rust.vim/after/syntax/rust.vim +++ /dev/null @@ -1,31 +0,0 @@ -if !exists('g:rust_conceal') || !has('conceal') || &enc != 'utf-8' - finish -endif - -" For those who don't want to see `::`... -if exists('g:rust_conceal_mod_path') - syn match rustNiceOperator "::" conceal cchar=ㆍ -endif - -syn match rustRightArrowHead contained ">" conceal cchar=  -syn match rustRightArrowTail contained "-" conceal cchar=⟶ -syn match rustNiceOperator "->" contains=rustRightArrowHead,rustRightArrowTail - -syn match rustFatRightArrowHead contained ">" conceal cchar=  -syn match rustFatRightArrowTail contained "=" conceal cchar=⟹ -syn match rustNiceOperator "=>" contains=rustFatRightArrowHead,rustFatRightArrowTail - -syn match rustNiceOperator /\<\@!_\(_*\>\)\@=/ conceal cchar=′ - -" For those who don't want to see `pub`... -if exists('g:rust_conceal_pub') - syn match rustPublicSigil contained "pu" conceal cchar=* - syn match rustPublicRest contained "b" conceal cchar=  - syn match rustNiceOperator "pub " contains=rustPublicSigil,rustPublicRest -endif - -hi link rustNiceOperator Operator - -if !exists('g:rust_conceal_mod_path') - hi! link Conceal Operator -endif diff --git a/vim/vim.symlink/bundle/rust.vim/autoload/rust.vim b/vim/vim.symlink/bundle/rust.vim/autoload/rust.vim deleted file mode 100644 index fe8e743..0000000 --- a/vim/vim.symlink/bundle/rust.vim/autoload/rust.vim +++ /dev/null @@ -1,225 +0,0 @@ -" Author: Kevin Ballard -" Description: Helper functions for Rust commands/mappings -" Last Modified: May 27, 2014 - -" Jump {{{1 - -function! rust#Jump(mode, function) range - let cnt = v:count1 - normal! m' - if a:mode ==# 'v' - norm! gv - endif - let foldenable = &foldenable - set nofoldenable - while cnt > 0 - execute "call Jump_" . a:function . "()" - let cnt = cnt - 1 - endwhile - let &foldenable = foldenable -endfunction - -function! s:Jump_Back() - call search('{', 'b') - keepjumps normal! w99[{ -endfunction - -function! s:Jump_Forward() - normal! j0 - call search('{', 'b') - keepjumps normal! w99[{% - call search('{') -endfunction - -" Run {{{1 - -function! rust#Run(bang, args) - if a:bang - let idx = index(a:args, '--') - if idx != -1 - let rustc_args = idx == 0 ? [] : a:args[:idx-1] - let args = a:args[idx+1:] - else - let rustc_args = a:args - let args = [] - endif - else - let rustc_args = [] - let args = a:args - endif - - let b:rust_last_rustc_args = rustc_args - let b:rust_last_args = args - - call s:WithPath(function("s:Run"), rustc_args, args) -endfunction - -function! s:Run(path, rustc_args, args) - try - let exepath = tempname() - if has('win32') - let exepath .= '.exe' - endif - - let rustc_args = [a:path, '-o', exepath] + a:rustc_args - - let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" - - let output = system(shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)'))) - if output != '' - echohl WarningMsg - echo output - echohl None - endif - if !v:shell_error - exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)')) - endif - finally - if exists("exepath") - silent! call delete(exepath) - endif - endtry -endfunction - -" Expand {{{1 - -function! rust#Expand(bang, args) - if a:bang && !empty(a:args) - let pretty = a:args[0] - let args = a:args[1:] - else - let pretty = "expanded" - let args = a:args - endif - call s:WithPath(function("s:Expand"), pretty, args) -endfunction - -function! s:Expand(path, pretty, args) - try - let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" - - let args = [a:path, '--pretty', a:pretty] + a:args - let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)"))) - if v:shell_error - echohl WarningMsg - echo output - echohl None - else - new - silent put =output - 1 - d - setl filetype=rust - setl buftype=nofile - setl bufhidden=hide - setl noswapfile - endif - endtry -endfunction - -function! rust#CompleteExpand(lead, line, pos) - if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$' - " first argument and it has a ! - let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph="] - if !empty(a:lead) - call filter(list, "v:val[:len(a:lead)-1] == a:lead") - endif - return list - endif - - return glob(escape(a:lead, "*?[") . '*', 0, 1) -endfunction - -" Emit {{{1 - -function! rust#Emit(type, args) - call s:WithPath(function("s:Emit"), a:type, a:args) -endfunction - -function! s:Emit(path, type, args) - try - let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" - - let args = [a:path, '--emit', a:type, '-o', '-'] + a:args - let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)"))) - if v:shell_error - echohl WarningMsg - echo output - echohl None - else - new - silent put =output - 1 - d - if a:type == "ir" - setl filetype=llvm - elseif a:type == "asm" - setl filetype=asm - endif - setl buftype=nofile - setl bufhidden=hide - setl noswapfile - endif - endtry -endfunction - -" Utility functions {{{1 - -function! s:WithPath(func, ...) - try - let save_write = &write - set write - let path = expand('%') - let pathisempty = empty(path) - if pathisempty || !save_write - " use a temporary file named 'unnamed.rs' inside a temporary - " directory. This produces better error messages - let tmpdir = tempname() - call mkdir(tmpdir) - - let save_cwd = getcwd() - silent exe 'lcd' fnameescape(tmpdir) - - let path = 'unnamed.rs' - - let save_mod = &mod - set nomod - - silent exe 'keepalt write! ' . fnameescape(path) - if pathisempty - silent keepalt 0file - endif - else - update - endif - - call call(a:func, [path] + a:000) - finally - if exists("save_mod") | let &mod = save_mod | endif - if exists("save_write") | let &write = save_write | endif - if exists("save_cwd") | silent exe 'lcd' fnameescape(save_cwd) | endif - if exists("tmpdir") | silent call s:RmDir(tmpdir) | endif - endtry -endfunction - -function! rust#AppendCmdLine(text) - call setcmdpos(getcmdpos()) - let cmd = getcmdline() . a:text - return cmd -endfunction - -function! s:RmDir(path) - " sanity check; make sure it's not empty, /, or $HOME - if empty(a:path) - echoerr 'Attempted to delete empty path' - return 0 - elseif a:path == '/' || a:path == $HOME - echoerr 'Attempted to delete protected path: ' . a:path - return 0 - endif - silent exe "!rm -rf " . shellescape(a:path) -endfunction - -" }}}1 - -" vim: set noet sw=4 ts=4: diff --git a/vim/vim.symlink/bundle/rust.vim/compiler/cargo.vim b/vim/vim.symlink/bundle/rust.vim/compiler/cargo.vim deleted file mode 100644 index ed487a3..0000000 --- a/vim/vim.symlink/bundle/rust.vim/compiler/cargo.vim +++ /dev/null @@ -1,65 +0,0 @@ -" Vim compiler file -" Compiler: Cargo Compiler -" Maintainer: Damien Radtke -" Latest Revision: 2014 Sep 24 - -if exists('current_compiler') - finish -endif -runtime compiler/rustc.vim -let current_compiler = "cargo" - -if exists(':CompilerSet') != 2 - command -nargs=* CompilerSet setlocal -endif - -if exists('g:cargo_makeprg_params') - execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*' -else - CompilerSet makeprg=cargo\ $* -endif - -" Allow a configurable global Cargo.toml name. This makes it easy to -" support variations like 'cargo.toml'. -let s:cargo_manifest_name = get(g:, 'cargo_manifest_name', 'Cargo.toml') - -function! s:is_absolute(path) - return a:path[0] == '/' || a:path =~ '[A-Z]\+:' -endfunction - -let s:local_manifest = findfile(s:cargo_manifest_name, '.;') -if s:local_manifest != '' - let s:local_manifest = fnamemodify(s:local_manifest, ':p:h').'/' - augroup cargo - au! - au QuickfixCmdPost make call s:FixPaths() - augroup END - - " FixPaths() is run after Cargo, and is used to change the file paths - " to be relative to the current directory instead of Cargo.toml. - function! s:FixPaths() - let qflist = getqflist() - let manifest = s:local_manifest - for qf in qflist - if !qf.valid - let m = matchlist(qf.text, '(file://\(.*\))$') - if !empty(m) - let manifest = m[1].'/' - " Manually strip another slash if needed; usually just an - " issue on Windows. - if manifest =~ '^/[A-Z]\+:/' - let manifest = manifest[1:] - endif - endif - continue - endif - let filename = bufname(qf.bufnr) - if s:is_absolute(filename) - continue - endif - let qf.filename = simplify(manifest.filename) - call remove(qf, 'bufnr') - endfor - call setqflist(qflist, 'r') - endfunction -endif diff --git a/vim/vim.symlink/bundle/rust.vim/compiler/rustc.vim b/vim/vim.symlink/bundle/rust.vim/compiler/rustc.vim deleted file mode 100644 index f9b854e..0000000 --- a/vim/vim.symlink/bundle/rust.vim/compiler/rustc.vim +++ /dev/null @@ -1,33 +0,0 @@ -" Vim compiler file -" Compiler: Rust Compiler -" Maintainer: Chris Morgan -" Latest Revision: 2013 Jul 12 - -if exists("current_compiler") - finish -endif -let current_compiler = "rustc" - -let s:cpo_save = &cpo -set cpo&vim - -if exists(":CompilerSet") != 2 - command -nargs=* CompilerSet setlocal -endif - -if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent == 1 - CompilerSet makeprg=rustc -else - CompilerSet makeprg=rustc\ \% -endif - -CompilerSet errorformat= - \%f:%l:%c:\ %t%*[^:]:\ %m, - \%f:%l:%c:\ %*\\d:%*\\d\ %t%*[^:]:\ %m, - \%-G%f:%l\ %s, - \%-G%*[\ ]^, - \%-G%*[\ ]^%*[~], - \%-G%*[\ ]... - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/vim/vim.symlink/bundle/rust.vim/doc/rust.txt b/vim/vim.symlink/bundle/rust.vim/doc/rust.txt deleted file mode 100644 index e117b0c..0000000 --- a/vim/vim.symlink/bundle/rust.vim/doc/rust.txt +++ /dev/null @@ -1,178 +0,0 @@ -*rust.txt* Filetype plugin for Rust - -============================================================================== -CONTENTS *rust* *ft-rust* - -1. Introduction |rust-intro| -2. Settings |rust-settings| -3. Commands |rust-commands| -4. Mappings |rust-mappings| - -============================================================================== -INTRODUCTION *rust-intro* - -This plugin provides syntax and supporting functionality for the Rust -filetype. - -============================================================================== -SETTINGS *rust-settings* - -This plugin has a few variables you can define in your vimrc that change the -behavior of the plugin. - - *g:rustc_path* -g:rustc_path~ - Set this option to the path to rustc for use in the |:RustRun| and - |:RustExpand| commands. If unset, "rustc" will be located in $PATH: > - let g:rustc_path = $HOME."/bin/rustc" -< - - *g:rustc_makeprg_no_percent* -g:rustc_makeprg_no_percent~ - Set this option to 1 to have 'makeprg' default to "rustc" instead of - "rustc %": > - let g:rustc_makeprg_no_percent = 1 -< - - *g:rust_conceal* -g:rust_conceal~ - Set this option to turn on the basic |conceal| support: > - let g:rust_conceal = 1 -< - - *g:rust_conceal_mod_path* -g:rust_conceal_mod_path~ - Set this option to turn on |conceal| for the path connecting token - "::": > - let g:rust_conceal_mod_path = 1 -< - - *g:rust_conceal_pub* -g:rust_conceal_pub~ - Set this option to turn on |conceal| for the "pub" token: > - let g:rust_conceal_pub = 1 -< - - *g:rust_recommended_style* -g:rust_recommended_style~ - Set this option to enable vim indentation and textwidth settings to - conform to style conventions of the rust standard library (i.e. use 4 - spaces for indents and sets 'textwidth' to 99). This option is enabled - by default. To disable it: > - let g:rust_recommended_style = 0 -< - - *g:rust_fold* -g:rust_fold~ - Set this option to turn on |folding|: > - let g:rust_fold = 1 -< - Value Effect ~ - 0 No folding - 1 Braced blocks are folded. All folds are open by - default. - 2 Braced blocks are folded. 'foldlevel' is left at the - global value (all folds are closed by default). - - *g:rust_bang_comment_leader* -g:rust_bang_comment_leader~ - Set this option to 1 to preserve the leader on multi-line doc comments - using the /*! syntax: > - let g:rust_bang_comment_leader = 1 -< - - *g:ftplugin_rust_source_path* -g:ftplugin_rust_source_path~ - Set this option to a path that should be prepended to 'path' for Rust - source files: > - let g:ftplugin_rust_source_path = $HOME.'/dev/rust' -< - - *g:cargo_manifest_name* -g:cargo_manifest_name~ - Set this option to the name of the manifest file for your projects. If - not specified it defaults to 'Cargo.toml' : > - let g:cargo_manifest_name = 'Cargo.toml' -< - -============================================================================== -COMMANDS *rust-commands* - -:RustRun [args] *:RustRun* -:RustRun! [rustc-args] [--] [args] - Compiles and runs the current file. If it has unsaved changes, - it will be saved first using |:update|. If the current file is - an unnamed buffer, it will be written to a temporary file - first. The compiled binary is always placed in a temporary - directory, but is run from the current directory. - - The arguments given to |:RustRun| will be passed to the - compiled binary. - - If ! is specified, the arguments are passed to rustc instead. - A "--" argument will separate the rustc arguments from the - arguments passed to the binary. - - If |g:rustc_path| is defined, it is used as the path to rustc. - Otherwise it is assumed rustc can be found in $PATH. - -:RustExpand [args] *:RustExpand* -:RustExpand! [TYPE] [args] - Expands the current file using --pretty and displays the - results in a new split. If the current file has unsaved - changes, it will be saved first using |:update|. If the - current file is an unnamed buffer, it will be written to a - temporary file first. - - The arguments given to |:RustExpand| will be passed to rustc. - This is largely intended for specifying various --cfg - configurations. - - If ! is specified, the first argument is the expansion type to - pass to rustc --pretty. Otherwise it will default to - "expanded". - - If |g:rustc_path| is defined, it is used as the path to rustc. - Otherwise it is assumed rustc can be found in $PATH. - -:RustEmitIr [args] *:RustEmitIr* - Compiles the current file to LLVM IR and displays the results - in a new split. If the current file has unsaved changes, it - will be saved first using |:update|. If the current file is an - unnamed buffer, it will be written to a temporary file first. - - The arguments given to |:RustEmitIr| will be passed to rustc. - - If |g:rustc_path| is defined, it is used as the path to rustc. - Otherwise it is assumed rustc can be found in $PATH. - -:RustEmitAsm [args] *:RustEmitAsm* - Compiles the current file to assembly and displays the results - in a new split. If the current file has unsaved changes, it - will be saved first using |:update|. If the current file is an - unnamed buffer, it will be written to a temporary file first. - - The arguments given to |:RustEmitAsm| will be passed to rustc. - - If |g:rustc_path| is defined, it is used as the path to rustc. - Otherwise it is assumed rustc can be found in $PATH. - -============================================================================== -MAPPINGS *rust-mappings* - -This plugin defines mappings for |[[| and |]]| to support hanging indents. - -It also has a few other mappings: - - *rust_* - Executes |:RustRun| with no arguments. - Note: This binding is only available in MacVim. - - *rust_* - Populates the command line with |:RustRun|! using the - arguments given to the last invocation, but does not - execute it. - Note: This binding is only available in MacVim. - -============================================================================== - vim:tw=78:sw=4:noet:ts=8:ft=help:norl: diff --git a/vim/vim.symlink/bundle/rust.vim/ftdetect/rust.vim b/vim/vim.symlink/bundle/rust.vim/ftdetect/rust.vim deleted file mode 100644 index bf685d4..0000000 --- a/vim/vim.symlink/bundle/rust.vim/ftdetect/rust.vim +++ /dev/null @@ -1 +0,0 @@ -au BufRead,BufNewFile *.rs set filetype=rust diff --git a/vim/vim.symlink/bundle/rust.vim/ftplugin/rust.vim b/vim/vim.symlink/bundle/rust.vim/ftplugin/rust.vim deleted file mode 100644 index 5d55699..0000000 --- a/vim/vim.symlink/bundle/rust.vim/ftplugin/rust.vim +++ /dev/null @@ -1,150 +0,0 @@ -" Language: Rust -" Description: Vim syntax file for Rust -" Maintainer: Chris Morgan -" Maintainer: Kevin Ballard -" Last Change: Jul 07, 2014 - -if exists("b:did_ftplugin") - finish -endif -let b:did_ftplugin = 1 - -let s:save_cpo = &cpo -set cpo&vim - -" Variables {{{1 - -" The rust source code at present seems to typically omit a leader on /*! -" comments, so we'll use that as our default, but make it easy to switch. -" This does not affect indentation at all (I tested it with and without -" leader), merely whether a leader is inserted by default or not. -if exists("g:rust_bang_comment_leader") && g:rust_bang_comment_leader == 1 - " Why is the `,s0:/*,mb:\ ,ex:*/` there, you ask? I don't understand why, - " but without it, */ gets indented one space even if there were no - " leaders. I'm fairly sure that's a Vim bug. - setlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\ ,ex:*/,:///,://!,:// -else - setlocal comments=s0:/*!,m:\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,:// -endif -setlocal commentstring=//%s -setlocal formatoptions-=t formatoptions+=croqnl -" j was only added in 7.3.541, so stop complaints about its nonexistence -silent! setlocal formatoptions+=j - -" smartindent will be overridden by indentexpr if filetype indent is on, but -" otherwise it's better than nothing. -setlocal smartindent nocindent - -if !exists("g:rust_recommended_style") || g:rust_recommended_style == 1 - setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab - setlocal textwidth=99 -endif - -" This includeexpr isn't perfect, but it's a good start -setlocal includeexpr=substitute(v:fname,'::','/','g') - -" NOT adding .rc as it's being phased out (0.7) -setlocal suffixesadd=.rs - -if exists("g:ftplugin_rust_source_path") - let &l:path=g:ftplugin_rust_source_path . ',' . &l:path -endif - -if exists("g:loaded_delimitMate") - if exists("b:delimitMate_excluded_regions") - let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions - endif - let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate' -endif - -if has("folding") && exists('g:rust_fold') && g:rust_fold != 0 - let b:rust_set_foldmethod=1 - setlocal foldmethod=syntax - if g:rust_fold == 2 - setlocal foldlevel< - else - setlocal foldlevel=99 - endif -endif - -if has('conceal') && exists('g:rust_conceal') - let b:rust_set_conceallevel=1 - setlocal conceallevel=2 -endif - -" Motion Commands {{{1 - -" Bind motion commands to support hanging indents -nnoremap [[ :call rust#Jump('n', 'Back') -nnoremap ]] :call rust#Jump('n', 'Forward') -xnoremap [[ :call rust#Jump('v', 'Back') -xnoremap ]] :call rust#Jump('v', 'Forward') -onoremap [[ :call rust#Jump('o', 'Back') -onoremap ]] :call rust#Jump('o', 'Forward') - -" Commands {{{1 - -" See |:RustRun| for docs -command! -nargs=* -complete=file -bang -bar -buffer RustRun call rust#Run(0, []) - -" See |:RustExpand| for docs -command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -bar -buffer RustExpand call rust#Expand(0, []) - -" See |:RustEmitIr| for docs -command! -nargs=* -bar -buffer RustEmitIr call rust#Emit("ir", []) - -" See |:RustEmitAsm| for docs -command! -nargs=* -bar -buffer RustEmitAsm call rust#Emit("asm", []) - -" Mappings {{{1 - -" Bind ⌘R in MacVim to :RustRun -nnoremap :RustRun -" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args -nnoremap :RustRun! =join(b:rust_last_rustc_args)erust#AppendCmdLine(' -- ' . join(b:rust_last_args)) - -if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args") - let b:rust_last_rustc_args = [] - let b:rust_last_args = [] -endif - -" Cleanup {{{1 - -let b:undo_ftplugin = " - \ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< - \|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth< - \|if exists('b:rust_original_delimitMate_excluded_regions') - \|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions - \|unlet b:rust_original_delimitMate_excluded_regions - \|else - \|unlet! b:delimitMate_excluded_regions - \|endif - \|if exists('b:rust_set_foldmethod') - \|setlocal foldmethod< foldlevel< - \|unlet b:rust_set_foldmethod - \|endif - \|if exists('b:rust_set_conceallevel') - \|setlocal conceallevel< - \|unlet b:rust_set_conceallevel - \|endif - \|unlet! b:rust_last_rustc_args b:rust_last_args - \|delcommand RustRun - \|delcommand RustExpand - \|delcommand RustEmitIr - \|delcommand RustEmitAsm - \|nunmap - \|nunmap - \|nunmap [[ - \|nunmap ]] - \|xunmap [[ - \|xunmap ]] - \|ounmap [[ - \|ounmap ]] - \" - -" }}}1 - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set noet sw=4 ts=4: diff --git a/vim/vim.symlink/bundle/rust.vim/indent/rust.vim b/vim/vim.symlink/bundle/rust.vim/indent/rust.vim deleted file mode 100644 index 300d7da..0000000 --- a/vim/vim.symlink/bundle/rust.vim/indent/rust.vim +++ /dev/null @@ -1,196 +0,0 @@ -" Vim indent file -" Language: Rust -" Author: Chris Morgan -" Last Change: 2014 Sep 13 - -" Only load this indent file when no other was loaded. -if exists("b:did_indent") - finish -endif -let b:did_indent = 1 - -setlocal cindent -setlocal cinoptions=L0,(0,Ws,J1,j1 -setlocal cinkeys=0{,0},!^F,o,O,0[,0] -" Don't think cinwords will actually do anything at all... never mind -setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern - -" Some preliminary settings -setlocal nolisp " Make sure lisp indenting doesn't supersede us -setlocal autoindent " indentexpr isn't much help otherwise -" Also do indentkeys, otherwise # gets shoved to column 0 :-/ -setlocal indentkeys=0{,0},!^F,o,O,0[,0] - -setlocal indentexpr=GetRustIndent(v:lnum) - -" Only define the function once. -if exists("*GetRustIndent") - finish -endif - -" Come here when loading the script the first time. - -function! s:get_line_trimmed(lnum) - " Get the line and remove a trailing comment. - " Use syntax highlighting attributes when possible. - " NOTE: this is not accurate; /* */ or a line continuation could trick it - let line = getline(a:lnum) - let line_len = strlen(line) - if has('syntax_items') - " If the last character in the line is a comment, do a binary search for - " the start of the comment. synID() is slow, a linear search would take - " too long on a long line. - if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo' - let min = 1 - let max = line_len - while min < max - let col = (min + max) / 2 - if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo' - let max = col - else - let min = col + 1 - endif - endwhile - let line = strpart(line, 0, min - 1) - endif - return substitute(line, "\s*$", "", "") - else - " Sorry, this is not complete, nor fully correct (e.g. string "//"). - " Such is life. - return substitute(line, "\s*//.*$", "", "") - endif -endfunction - -function! s:is_string_comment(lnum, col) - if has('syntax_items') - for id in synstack(a:lnum, a:col) - let synname = synIDattr(id, "name") - if synname == "rustString" || synname =~ "^rustComment" - return 1 - endif - endfor - else - " without syntax, let's not even try - return 0 - endif -endfunction - -function GetRustIndent(lnum) - - " Starting assumption: cindent (called at the end) will do it right - " normally. We just want to fix up a few cases. - - let line = getline(a:lnum) - - if has('syntax_items') - let synname = synIDattr(synID(a:lnum, 1, 1), "name") - if synname == "rustString" - " If the start of the line is in a string, don't change the indent - return -1 - elseif synname =~ '\(Comment\|Todo\)' - \ && line !~ '^\s*/\*' " not /* opening line - if synname =~ "CommentML" " multi-line - if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*' - " This is (hopefully) the line after a /*, and it has no - " leader, so the correct indentation is that of the - " previous line. - return GetRustIndent(a:lnum - 1) - endif - endif - " If it's in a comment, let cindent take care of it now. This is - " for cases like "/*" where the next line should start " * ", not - " "* " as the code below would otherwise cause for module scope - " Fun fact: " /*\n*\n*/" takes two calls to get right! - return cindent(a:lnum) - endif - endif - - " cindent gets second and subsequent match patterns/struct members wrong, - " as it treats the comma as indicating an unfinished statement:: - " - " match a { - " b => c, - " d => e, - " f => g, - " }; - - " Search backwards for the previous non-empty line. - let prevlinenum = prevnonblank(a:lnum - 1) - let prevline = s:get_line_trimmed(prevlinenum) - while prevlinenum > 1 && prevline !~ '[^[:blank:]]' - let prevlinenum = prevnonblank(prevlinenum - 1) - let prevline = s:get_line_trimmed(prevlinenum) - endwhile - if prevline[len(prevline) - 1] == "," - \ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]' - \ && prevline !~ '^\s*fn\s' - \ && prevline !~ '([^()]\+,$' - " Oh ho! The previous line ended in a comma! I bet cindent will try to - " take this too far... For now, let's normally use the previous line's - " indent. - - " One case where this doesn't work out is where *this* line contains - " square or curly brackets; then we normally *do* want to be indenting - " further. - " - " Another case where we don't want to is one like a function - " definition with arguments spread over multiple lines: - " - " fn foo(baz: Baz, - " baz: Baz) // <-- cindent gets this right by itself - " - " Another case is similar to the previous, except calling a function - " instead of defining it, or any conditional expression that leaves - " an open paren: - " - " foo(baz, - " baz); - " - " if baz && (foo || - " bar) { - " - " There are probably other cases where we don't want to do this as - " well. Add them as needed. - return indent(prevlinenum) - endif - - if !has("patch-7.4.355") - " cindent before 7.4.355 doesn't do the module scope well at all; e.g.:: - " - " static FOO : &'static [bool] = [ - " true, - " false, - " false, - " true, - " ]; - " - " uh oh, next statement is indented further! - - " Note that this does *not* apply the line continuation pattern properly; - " that's too hard to do correctly for my liking at present, so I'll just - " start with these two main cases (square brackets and not returning to - " column zero) - - call cursor(a:lnum, 1) - if searchpair('{\|(', '', '}\|)', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - if searchpair('\[', '', '\]', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - " Global scope, should be zero - return 0 - else - " At the module scope, inside square brackets only - "if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum - if line =~ "^\\s*]" - " It's the closing line, dedent it - return 0 - else - return &shiftwidth - endif - endif - endif - endif - - " Fall back on cindent, which does it mostly right - return cindent(a:lnum) -endfunction diff --git a/vim/vim.symlink/bundle/rust.vim/plugin/rust.vim b/vim/vim.symlink/bundle/rust.vim/plugin/rust.vim deleted file mode 100644 index 4ec4f33..0000000 --- a/vim/vim.symlink/bundle/rust.vim/plugin/rust.vim +++ /dev/null @@ -1,22 +0,0 @@ -" Vim syntastic plugin helper -" Language: Rust -" Maintainer: Andrew Gallant - -if exists("g:loaded_syntastic_rust_filetype") - finish -endif -let g:loaded_syntastic_rust_filetype = 1 -let s:save_cpo = &cpo -set cpo&vim - -" This is to let Syntastic know about the Rust filetype. -" It enables tab completion for the 'SyntasticInfo' command. -" (This does not actually register the syntax checker.) -if exists('g:syntastic_extra_filetypes') - call add(g:syntastic_extra_filetypes, 'rust') -else - let g:syntastic_extra_filetypes = ['rust'] -endif - -let &cpo = s:save_cpo -unlet s:save_cpo diff --git a/vim/vim.symlink/bundle/rust.vim/syntax/rust.vim b/vim/vim.symlink/bundle/rust.vim/syntax/rust.vim deleted file mode 100644 index 678cb3e..0000000 --- a/vim/vim.symlink/bundle/rust.vim/syntax/rust.vim +++ /dev/null @@ -1,264 +0,0 @@ -" Vim syntax file -" Language: Rust -" Maintainer: Patrick Walton -" Maintainer: Ben Blum -" Maintainer: Chris Morgan -" Last Change: January 5, 2015 - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Syntax definitions {{{1 -" Basic keywords {{{2 -syn keyword rustConditional match if else -syn keyword rustOperator as - -syn match rustAssert "\(); - -" This is merely a convention; note also the use of [A-Z], restricting it to -" latin identifiers rather than the full Unicode uppercase. I have not used -" [:upper:] as it depends upon 'noignorecase' -"syn match rustCapsIdent display "[A-Z]\w\(\w\)*" - -syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?" -" This one isn't *quite* right, as we could have binary-& with a reference -syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1 -syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1 -" This isn't actually correct; a closure with no arguments can be `|| { }`. -" Last, because the & in && isn't a sigil -syn match rustOperator display "&&\|||" - -syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic -syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic - -syn match rustEscapeError display contained /\\./ -syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ -syn match rustEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{8}\)/ -syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/ -syn match rustStringContinuation display contained /\\\n\s*/ -syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation -syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell -syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell - -syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive -syn region rustDerive start="derive(" end=")" contained contains=rustTrait - -" Number literals -syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(8\|16\|32\|64\)\=\)\=" -syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\=" -syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\=" -syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\=" - -" Special case for numbers of the form "1." which are float literals, unless followed by -" an identifier, which makes them integer literals with a method call or field access, -" or by another ".", which makes them integer literals followed by the ".." token. -" (This must go first so the others take precedence.) -syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!" -" To mark a number as a normal float, it must have at least one of the three things integral values don't have: -" a decimal point and more numbers; an exponent; and a type suffix. -syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" -syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" -syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" - -" For the benefit of delimitMate -syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime -syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate -syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime - -"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting -syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" -syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/ -" The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII). -syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ -syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode -syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid - -syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell -syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell -syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell -syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell -syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent -syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent -" FIXME: this is a really ugly and not fully correct implementation. Most -" importantly, a case like ``/* */*`` should have the final ``*`` not being in -" a comment, but in practice at present it leaves comments open two levels -" deep. But as long as you stay away from that particular case, I *believe* -" the highlighting is correct. Due to the way Vim's syntax engine works -" (greedy for start matches, unlike Rust's tokeniser which is searching for -" the earliest-starting match, start or end), I believe this cannot be solved. -" Oh you who would fix it, don't bother with things like duplicating the Block -" rules and putting ``\*\@ -" -" See for details on how to add an external Syntastic checker: -" https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide#external - -if exists("g:loaded_syntastic_rust_rustc_checker") - finish -endif -let g:loaded_syntastic_rust_rustc_checker = 1 - -let s:save_cpo = &cpo -set cpo&vim - -function! SyntaxCheckers_rust_rustc_GetLocList() dict - let makeprg = self.makeprgBuild({ 'args': '--parse-only' }) - - let errorformat = - \ '%E%f:%l:%c: %\d%#:%\d%# %.%\{-}error:%.%\{-} %m,' . - \ '%W%f:%l:%c: %\d%#:%\d%# %.%\{-}warning:%.%\{-} %m,' . - \ '%C%f:%l %m,' . - \ '%-Z%.%#' - - return SyntasticMake({ - \ 'makeprg': makeprg, - \ 'errorformat': errorformat }) -endfunction - -call g:SyntasticRegistry.CreateAndRegisterChecker({ - \ 'filetype': 'rust', - \ 'name': 'rustc'}) - -let &cpo = s:save_cpo -unlet s:save_cpo diff --git a/vim/vim.symlink/bundle/syntastic/.gitignore b/vim/vim.symlink/bundle/syntastic/.gitignore deleted file mode 100644 index cc07c93..0000000 --- a/vim/vim.symlink/bundle/syntastic/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*~ -*.swp -tags -.DS_Store diff --git a/vim/vim.symlink/bundle/syntastic/CONTRIBUTING.md b/vim/vim.symlink/bundle/syntastic/CONTRIBUTING.md deleted file mode 100644 index 378b53b..0000000 --- a/vim/vim.symlink/bundle/syntastic/CONTRIBUTING.md +++ /dev/null @@ -1,105 +0,0 @@ -# CONTRIBUTING -- - - -1\. [Bug reports / GitHub issues](#bugreps) -2\. [Submitting a patch](#patches) -3\. [General style notes](#generalstyle) -4\. [Syntax checker notes](#checkerstyle) -- - - - - - -## 1. Bug reports / GitHub issues - -Please note that the preferred channel for posting bug reports is the -[issue tracker at GitHub][0]. Reports posted elsewhere are less likely -to be seen by the core team. - -When reporting a bug make sure you search the existing GitHub issues -for the same/similar issues. If you find one, feel free to add a `+1` -comment with any additional information that may help us solve the -issue. - -When creating a new issue be sure to state the following: - -* steps to reproduce the bug; -* the version of Vim you are using (run `:ver` to find out); -* the version of syntastic you are using (see `:SyntasticInfo`). - -For syntax checker bugs also state the version of the checker executable -that you are using. Adding debugging information is typically useful -too: - -* open a file handled by your checker; -* set `g:syntastic_debug` to 1 or 3; -* run the checker; -* copy the output of `:mes`. - - - -## 2. Submitting a patch - -Before you consider adding features to syntastic, _please_ spend a few -minutes (re-)reading the latest version of the [manual][1]. Syntastic -is changing rapidly at times, and it's quite possible that some of the -features you want to add exist already. - -To submit a patch: - -* fork the [repo][2] on GitHub; -* make a [topic branch][3] and start hacking; -* submit a pull request based off your topic branch. - -Small, focused patches are preferred. - -Large changes to the code should be discussed with the core team first. -Create an issue and explain your plan and see what we say. - -Also make sure to update the manual whenever applicable. Nobody can use -features that aren't documented. - - - -## 3. General style notes - -Follow the coding conventions/styles used in the syntastic core: - -* use 4 space indents; -* don't use abbreviated keywords - e.g. use `endfunction`, not `endfun` -(there's always room for more fun!); -* don't use `l:` prefixes for variables unless actually required (i.e. -almost never); -* code for maintainability; we would rather a function be a couple of -lines longer and have (for example) some [explaining variables][4] to -aid readability. - - - -## 4. Syntax checker notes - -Make sure to read the [guide][5] if you plan to add new syntax checkers. - -Use the existing checkers as templates, rather than writing everything -from scratch. - -The preferred style for error format strings is one "clause" per line. -E.g. (from the `coffee` checker): - -```vim -let errorformat = - \ '%E%f:%l:%c: %trror: %m,' . - \ 'Syntax%trror: In %f\, %m on line %l,' . - \ '%EError: In %f\, Parse error on line %l: %m,' . - \ '%EError: In %f\, %m on line %l,' . - \ '%W%f(%l): lint warning: %m,' . - \ '%W%f(%l): warning: %m,' . - \ '%E%f(%l): SyntaxError: %m,' . - \ '%-Z%p^,' . - \ '%-G%.%#' -``` - -[0]: https://github.com/scrooloose/syntastic/issues -[1]: https://github.com/scrooloose/syntastic/blob/master/doc/syntastic.txt -[2]: https://github.com/scrooloose/syntastic -[3]: https://github.com/dchelimsky/rspec/wiki/Topic-Branches#using-topic-branches-when-contributing-patches -[4]: http://www.refactoring.com/catalog/extractVariable.html -[5]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide diff --git a/vim/vim.symlink/bundle/syntastic/LICENCE b/vim/vim.symlink/bundle/syntastic/LICENCE deleted file mode 100644 index 8b1a9d8..0000000 --- a/vim/vim.symlink/bundle/syntastic/LICENCE +++ /dev/null @@ -1,13 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - -Copyright (C) 2004 Sam Hocevar - -Everyone is permitted to copy and distribute verbatim or modified -copies of this license document, and changing it is allowed as long -as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/vim/vim.symlink/bundle/syntastic/README.markdown b/vim/vim.symlink/bundle/syntastic/README.markdown deleted file mode 100644 index de414e1..0000000 --- a/vim/vim.symlink/bundle/syntastic/README.markdown +++ /dev/null @@ -1,381 +0,0 @@ - , - / \,,_ .'| - ,{{| /}}}}/_.' _____________________________________________ - }}}}` '{{' '. / \ - {{{{{ _ ;, \ / Ladies and Gentlemen, \ - ,}}}}}} /o`\ ` ;) | | - {{{{{{ / ( | this is ... | - }}}}}} | \ | | - {{{{{{{{ \ \ | | - }}}}}}}}} '.__ _ | | _____ __ __ _ | - {{{{{{{{ /`._ (_\ / | / ___/__ ______ / /_____ ______/ /_(_)____ | - }}}}}}' | //___/ --=: \__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ | - jgs `{{{{` | '--' | ___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ | - }}}` | /____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ | - | /____/ | - | / - \_____________________________________________/ - - -- - - -1\. [Introduction](#introduction) -2\. [Installation](#installation) -3\. [FAQ](#faq) -4\. [Other resources](#otherresources) -- - - - - - -## 1\. Introduction - -Syntastic is a syntax checking plugin for [Vim][13] that runs files through -external syntax checkers and displays any resulting errors to the user. This -can be done on demand, or automatically as files are saved. If syntax errors -are detected, the user is notified and is happy because they didn't have to -compile their code or execute their script to find them. - -At the time of this writing, syntax checking plugins exist for ActionScript, -Ada, AppleScript, AsciiDoc, ASM, BEMHTML, Bro, Bourne shell, C, C++, C#, Cabal, -Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart, DocBook, Dust, -Elixir, Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml, Haskell, -Haxe, Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex, Limbo, -LISP, LLVM intermediate language, Lua, Markdown, MATLAB, NASM, Objective-C, -Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Portable Object, OS X and -iOS property lists, Puppet, Python, R, Racket, Relax NG, reStructuredText, RPM -spec, Ruby, SASS/SCSS, Scala, Slim, Tcl, TeX, Texinfo, Twig, TypeScript, Vala, -Verilog, VHDL, VimL, xHtml, XML, XSLT, YACC, YAML, z80, Zope page templates, -and zsh. See the [wiki][3] for details about the corresponding supported -checkers. - -Below is a screenshot showing the methods that Syntastic uses to display syntax -errors. Note that, in practise, you will only have a subset of these methods -enabled. - -![Screenshot 1][0] - -1. Errors are loaded into the location list for the corresponding window. -2. When the cursor is on a line containing an error, the error message is echoed in the command window. -3. Signs are placed beside lines with errors - note that warnings are displayed in a different color. -4. There is a configurable statusline flag you can include in your statusline config. -5. Hover the mouse over a line containing an error and the error message is displayed as a balloon. -6. (not shown) Highlighting errors with syntax highlighting. Erroneous parts of lines can be highlighted. - - - -## 2\. Installation - - - -### 2.1\. Requirements - -Syntastic itself has rather relaxed requirements: it doesn't have any external -dependencies, and it needs a version of [Vim][13] compiled with a few common -features: `autocmd`, `eval`, `file_in_path`, `modify_fname`, `quickfix`, -`reltime`, and `user_commands`. Not all possible combinations of features that -include the ones above make equal sense on all operating systems, but Vim -version 7 or later with the "normal", "big", or "huge" feature sets should be -fine. - -Syntastic should work with any modern plugin managers for Vim, such as -[NeoBundle][14], [Pathogen][1], [Vim-Addon-Manager][15], [Vim-Plug][16], or -[Vundle][17]. Instructions for installing syntastic with [Pathogen][1] are -included below for completeness. - -Last but not least: syntastic doesn't know how to do any syntax checks by -itself. In order to get meaningful results you need to install external -checkers corresponding to the types of files you use. Please consult the -[wiki][3] for a list of supported checkers. - - - -### 2.2\. Installing syntastic with Pathogen - -If you already have [Pathogen][1] working then skip [Step 1](#step1) and go to -[Step 2](#step2). - - - -#### 2.2.1\. Step 1: Install pathogen.vim - -First I'll show you how to install Tim Pope's [Pathogen][1] so that it's easy to -install syntastic. Do this in your terminal so that you get the `pathogen.vim` -file and the directories it needs: -```sh -mkdir -p ~/.vim/autoload ~/.vim/bundle && \ -curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim -``` -Next you *need* to add this to your `~/.vimrc`: -```vim -execute pathogen#infect() -``` - - - -#### 2.2.2\. Step 2: Install syntastic as a Pathogen bundle - -You now have pathogen installed and can put syntastic into `~/.vim/bundle` like -this: -```sh -cd ~/.vim/bundle && \ -git clone https://github.com/scrooloose/syntastic.git -``` -Quit vim and start it back up to reload it, then type: -```vim -:Helptags -``` -If you get an error when you do this, then you probably didn't install -[Pathogen][1] right. Go back to [Step 1](#step1) and make sure you did the -following: - -1. Created both the `~/.vim/autoload` and `~/.vim/bundle` directories. -2. Added the `call pathogen#infect()` line to your `~/.vimrc` file -3. Did the `git clone` of syntastic inside `~/.vim/bundle` -4. Have permissions to access all of these directories. - - - - -## 3\. FAQ - - - -__Q. I installed syntastic but it isn't reporting any errors...__ - -A. The most likely reason is that none of the syntax checkers that it requires -is installed. For example: by default, python requires either `flake8` or -`pylint` to be installed and in your `$PATH`. To see which executables are -supported, look at the [wiki][3]. Note that aliases do not work; the actual -executables must be available in your `$PATH`. Symbolic links are okay though. -You can see syntastic's idea of available checkers by running `:SyntasticInfo`. - -Another reason it could fail is that either the command line options or the -error output for a syntax checker may have changed. In this case, make sure you -have the latest version of the syntax checker installed. If it still fails then -create an issue - or better yet, create a pull request. - - - -__Q. The `python` checker complains about syntactically valid Python 3 constructs...__ - -A. Configure the `python` checker to call a Python 3 interpreter rather than -Python 2, e.g: -```vim -let g:syntastic_python_python_exec = '/path/to/python3' -``` - - - -__Q. Are there any local checkers for HTML5 that I can use with syntastic?__ - -[HTML Tidy][18] has a fork named [HTML Tidy for HTML5][19]. It's a drop -in replacement, and syntastic can use it without changes. Just install it -somewhere and point `g:syntastic_html_tidy_exec` to its executable. - -Alternatively, you can install [validator][20] from [sources][21] and -[configure][22] syntastic to use it. The installation might seem a little -scary (for one, the final directory takes more than 600+ MB on disk), but in -our experience the process is, in fact, painless. - - - -__Q. The `perl` checker has stopped working...__ - -A. The `perl` checker runs `perl -c` against your file, which in turn -__executes__ any `BEGIN`, `UNITCHECK`, and `CHECK` blocks, and any `use` -statements in your file (cf. [perlrun][10]). This is probably fine if you -wrote the file yourself, but it's a security problem if you're checking third -party files. Since there is currently no way to disable this behaviour while -still producing useful results, the checker is now disabled by default. To -(re-)enable it, make sure the `g:syntastic_perl_checkers` list includes `perl`, -and set `g:syntastic_enable_perl_checker` to 1 in your vimrc: -```vim -let g:syntastic_enable_perl_checker = 1 -``` - - - -__Q. What happened to the `rustc` checker?__ - -A. It has been included in the [Rust compiler package][12]. If you have -a recent version of the Rust compiler, the checker should be picked up -automatically by syntastic. - - - -__Q. I run a checker and the location list is not updated...__ -__Q. I run`:lopen` or `:lwindow` and the error window is empty...__ - -A. By default the location list is changed only when you run the `:Errors` -command, in order to minimise conflicts with other plugins. If you want the -location list to always be updated when you run the checkers, add this line to -your vimrc: -```vim -let g:syntastic_always_populate_loc_list = 1 -``` - - - -__Q. How can I pass additional arguments to a checker?__ - -A. Almost all syntax checkers use the `makeprgBuild()` function. Those checkers -that do can be configured using global variables. The general form of the -global `args` variables is `syntastic___args`. - -So, If you wanted to pass "--my --args --here" to the ruby mri checker you -would add this line to your vimrc: -```vim -let g:syntastic_ruby_mri_args = "--my --args --here" -``` - -See `:help syntastic-checker-options` for more information. - - - -__Q. Syntastic supports several checkers for my filetype - how do I tell it -which one(s) to use?__ - -A. Stick a line like this in your vimrc: -```vim -let g:syntastic__checkers = [''] -``` - -To see the list of supported checkers for your filetype look at the -[wiki][3]. - -e.g. Python has the following checkers, among others: `flake8`, `pyflakes`, -`pylint` and a native `python` checker. - -To tell syntastic to use `pylint`, you would use this setting: -```vim -let g:syntastic_python_checkers = ['pylint'] -``` - -Checkers can be chained together like this: -```vim -let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd'] -``` - -This is telling syntastic to run the `php` checker first, and if no errors are -found, run `phpcs`, and then `phpmd`. - -You can also run checkers explicitly by calling `:SyntasticCheck `. - -e.g. to run `phpcs` and `phpmd`: -```vim -:SyntasticCheck phpcs phpmd -``` - -This works for any checkers available for the current filetype, even if they -aren't listed in `g:syntastic__checkers`. You can't run checkers for -"foreign" filetypes though (e.g. you can't run, say, a Python checker if the -filetype of the current file is `php`). - - - -__Q. What is the difference between syntax checkers and style checkers?__ - -A. The errors and warnings they produce are highlighted differently and can -be filtered by different rules, but otherwise the distinction is pretty much -arbitrary. There is an ongoing effort to keep things consistent, so you can -_generally_ expect messages produced by syntax checkers to be _mostly_ related -to syntax, and messages produced by style checkers to be _mostly_ about style. -But there can be no formal guarantee that, say, a style checker that runs into -a syntax error wouldn't die with a fatal message, nor that a syntax checker -wouldn't give you warnings against using some constructs as being bad practice. -There is also no guarantee that messages marked as "style" are less severe than -the ones marked as "syntax" (whatever that might mean). And there are even a -few Frankenstein checkers (for example `flake8` and `pylama`) that, by their -nature, produce both kinds of messages. Syntastic is not smart enough to be -able to sort out these things by itself. - -In fact it's more useful to look at this from the perspective of filtering -unwanted messages, rather than as an indicator of severity levels. The -distinction between syntax and style is orthogonal to the distinction between -errors and warnings, and thus you can turn off messages based on level, on -type, or both. - -e.g. To disable all style messages: -```vim -let g:syntastic_quiet_messages = { "type": "style" } -``` -See `:help syntastic_quiet_messages` for details. - - - -__Q. I have enabled multiple checkers for the current filetype. How can I -display all of the errors from all of the checkers together?__ - -A. Set `g:syntastic_aggregate_errors` to 1 in your vimrc: -```vim -let g:syntastic_aggregate_errors = 1 -``` - -See `:help syntastic-aggregating-errors` for more details. - - - -__Q. How can I jump between the different errors without using the location -list at the bottom of the window?__ - -A. Vim provides several built-in commands for this. See `:help :lnext` and -`:help :lprev`. - -If you use these commands a lot then you may want to add shortcut mappings to -your vimrc, or install something like [unimpaired][2], which provides such -mappings (among other things). - - - -__Q. The error window is closed automatically when I :quit the current buffer -but not when I :bdelete it?__ - -A. There is no safe way to handle that situation automatically, but you can -work around it: - -```vim -nnoremap :lclose:bdelete -cabbrev bd lclose\|bdelete -``` - - - -## 4\. Other resources - -The preferred place for posting suggestions, reporting bugs, and general -discussions related to syntastic is the [issue tracker at GitHub][4]. -A guide for writing syntax checkers can be found in the [wiki][11]. -There are also a dedicated [google group][5], and a -[syntastic tag at StackOverflow][6]. - -Syntastic aims to provide a common interface to syntax checkers for as many -languages as possible. For particular languages, there are, of course, other -plugins that provide more functionality than syntastic. You might want to take -a look at [jedi-vim][7], [python-mode][8], or [YouCompleteMe][9]. - -[0]: https://github.com/scrooloose/syntastic/raw/master/_assets/screenshot_1.png -[1]: https://github.com/tpope/vim-pathogen -[2]: https://github.com/tpope/vim-unimpaired -[3]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers -[4]: https://github.com/scrooloose/syntastic/issues -[5]: https://groups.google.com/group/vim-syntastic -[6]: http://stackoverflow.com/questions/tagged/syntastic -[7]: https://github.com/davidhalter/jedi-vim -[8]: https://github.com/klen/python-mode -[9]: http://valloric.github.io/YouCompleteMe/ -[10]: http://perldoc.perl.org/perlrun.html#*-c* -[11]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide -[12]: https://github.com/rust-lang/rust/ -[13]: http://www.vim.org/ -[14]: https://github.com/Shougo/neobundle.vim -[15]: https://github.com/MarcWeber/vim-addon-manager -[16]: https://github.com/junegunn/vim-plug/ -[17]: https://github.com/gmarik/Vundle.vim -[18]: http://tidy.sourceforge.net/ -[19]: http://w3c.github.io/tidy-html5/ -[20]: http://about.validator.nu/ -[21]: http://about.validator.nu/#src -[22]: https://github.com/scrooloose/syntastic/wiki/HTML%3A---validator - - diff --git a/vim/vim.symlink/bundle/syntastic/_assets/screenshot_1.png b/vim/vim.symlink/bundle/syntastic/_assets/screenshot_1.png deleted file mode 100644 index c1b69f4..0000000 Binary files a/vim/vim.symlink/bundle/syntastic/_assets/screenshot_1.png and /dev/null differ diff --git a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/c.vim b/vim/vim.symlink/bundle/syntastic/autoload/syntastic/c.vim deleted file mode 100644 index d19aebc..0000000 --- a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/c.vim +++ /dev/null @@ -1,336 +0,0 @@ -if exists("g:loaded_syntastic_c_autoload") || !exists("g:loaded_syntastic_plugin") - finish -endif -let g:loaded_syntastic_c_autoload = 1 - -let s:save_cpo = &cpo -set cpo&vim - -" Public functions {{{1 - -" convenience function to determine the 'null device' parameter -" based on the current operating system -function! syntastic#c#NullOutput() " {{{2 - let known_os = has('unix') || has('mac') || syntastic#util#isRunningWindows() - return known_os ? '-o ' . syntastic#util#DevNull() : '' -endfunction " }}}2 - -" read additional compiler flags from the given configuration file -" the file format and its parsing mechanism is inspired by clang_complete -function! syntastic#c#ReadConfig(file) " {{{2 - " search in the current file's directory upwards - let config = findfile(a:file, '.;') - if config == '' || !filereadable(config) - return '' - endif - - " convert filename into absolute path - let filepath = fnamemodify(config, ':p:h') - - " try to read config file - try - let lines = readfile(config) - catch /\m^Vim\%((\a\+)\)\=:E48[45]/ - return '' - endtry - - " filter out empty lines and comments - call filter(lines, 'v:val !~ ''\v^(\s*#|$)''') - - " remove leading and trailing spaces - call map(lines, 'substitute(v:val, ''\m^\s\+'', "", "")') - call map(lines, 'substitute(v:val, ''\m\s\+$'', "", "")') - - let parameters = [] - for line in lines - let matches = matchstr(line, '\m\C^\s*-I\s*\zs.\+') - if matches != '' - " this one looks like an absolute path - if match(matches, '\m^\%(/\|\a:\)') != -1 - call add(parameters, '-I' . matches) - else - call add(parameters, '-I' . filepath . syntastic#util#Slash() . matches) - endif - else - call add(parameters, line) - endif - endfor - - return join(map(parameters, 'syntastic#util#shescape(v:val)')) -endfunction " }}}2 - -" GetLocList() for C-like compilers -function! syntastic#c#GetLocList(filetype, subchecker, options) " {{{2 - try - let flags = s:_get_cflags(a:filetype, a:subchecker, a:options) - catch /\m\C^Syntastic: skip checks$/ - return [] - endtry - - let makeprg = syntastic#util#shexpand(g:syntastic_{a:filetype}_compiler) . - \ ' ' . flags . ' ' . syntastic#util#shexpand('%') - - let errorformat = s:_get_checker_var('g', a:filetype, a:subchecker, 'errorformat', a:options['errorformat']) - - let postprocess = s:_get_checker_var('g', a:filetype, a:subchecker, 'remove_include_errors', 0) ? - \ ['filterForeignErrors'] : [] - - " process makeprg - return SyntasticMake({ - \ 'makeprg': makeprg, - \ 'errorformat': errorformat, - \ 'postprocess': postprocess }) -endfunction " }}}2 - -" }}}1 - -" Private functions {{{1 - -" initialize c/cpp syntax checker handlers -function! s:_init() " {{{2 - let s:handlers = [] - let s:cflags = {} - - call s:_registerHandler('\m\', 's:_checkPhp', []) - call s:_registerHandler('\m\', 's:_checkPython', []) - call s:_registerHandler('\m\" - echohl ErrorMsg - echomsg "syntastic: error: " . a:msg - echohl None -endfunction " }}}2 - -function! syntastic#log#oneTimeWarn(msg) " {{{2 - if index(s:one_time_notices_issued, a:msg) >= 0 - return - endif - - call add(s:one_time_notices_issued, a:msg) - call syntastic#log#warn(a:msg) -endfunction " }}}2 - -" @vimlint(EVL102, 1, l:OLD_VAR) -function! syntastic#log#deprecationWarn(old, new, ...) " {{{2 - if exists('g:syntastic_' . a:old) && !exists('g:syntastic_' . a:new) - let msg = 'variable g:syntastic_' . a:old . ' is deprecated, please use ' - - if a:0 - let OLD_VAR = g:syntastic_{a:old} - try - let NEW_VAR = eval(a:1) - let msg .= 'in its stead: let g:syntastic_' . a:new . ' = ' . string(NEW_VAR) - let g:syntastic_{a:new} = NEW_VAR - catch - let msg .= 'g:syntastic_' . a:new . ' instead' - endtry - else - let msg .= 'g:syntastic_' . a:new . ' instead' - let g:syntastic_{a:new} = g:syntastic_{a:old} - endif - - call syntastic#log#oneTimeWarn(msg) - endif -endfunction " }}}2 -" @vimlint(EVL102, 0, l:OLD_VAR) - -function! syntastic#log#debug(level, msg, ...) " {{{2 - if !s:_isDebugEnabled(a:level) - return - endif - - let leader = s:_log_timestamp() - call s:_logRedirect(1) - - if a:0 > 0 - " filter out dictionary functions - echomsg leader . a:msg . ' ' . - \ strtrans(string(type(a:1) == type({}) || type(a:1) == type([]) ? - \ filter(copy(a:1), 'type(v:val) != type(function("tr"))') : a:1)) - else - echomsg leader . a:msg - endif - - call s:_logRedirect(0) -endfunction " }}}2 - -function! syntastic#log#debugShowOptions(level, names) " {{{2 - if !s:_isDebugEnabled(a:level) - return - endif - - let leader = s:_log_timestamp() - call s:_logRedirect(1) - - let vlist = copy(type(a:names) == type("") ? [a:names] : a:names) - if !empty(vlist) - call map(vlist, "'&' . v:val . ' = ' . strtrans(string(eval('&' . v:val)))") - echomsg leader . join(vlist, ', ') - endif - call s:_logRedirect(0) -endfunction " }}}2 - -function! syntastic#log#debugShowVariables(level, names) " {{{2 - if !s:_isDebugEnabled(a:level) - return - endif - - let leader = s:_log_timestamp() - call s:_logRedirect(1) - - let vlist = type(a:names) == type("") ? [a:names] : a:names - for name in vlist - let msg = s:_format_variable(name) - if msg != '' - echomsg leader . msg - endif - endfor - - call s:_logRedirect(0) -endfunction " }}}2 - -function! syntastic#log#debugDump(level) " {{{2 - if !s:_isDebugEnabled(a:level) - return - endif - - call syntastic#log#debugShowVariables( a:level, sort(keys(g:_SYNTASTIC_DEFAULTS)) ) -endfunction " }}}2 - -" }}}1 - -" Private functions {{{1 - -function! s:_isDebugEnabled_smart(level) " {{{2 - return and(g:syntastic_debug, a:level) -endfunction " }}}2 - -function! s:_isDebugEnabled_dumb(level) " {{{2 - " poor man's bit test for bit N, assuming a:level == 2**N - return (g:syntastic_debug / a:level) % 2 -endfunction " }}}2 - -let s:_isDebugEnabled = function(exists('*and') ? 's:_isDebugEnabled_smart' : 's:_isDebugEnabled_dumb') -lockvar s:_isDebugEnabled - -function! s:_logRedirect(on) " {{{2 - if exists("g:syntastic_debug_file") - if a:on - try - execute 'redir >> ' . fnameescape(expand(g:syntastic_debug_file)) - catch /\m^Vim\%((\a\+)\)\=:/ - silent! redir END - unlet g:syntastic_debug_file - endtry - else - silent! redir END - endif - endif -endfunction " }}}2 - -" }}}1 - -" Utilities {{{1 - -function! s:_log_timestamp() " {{{2 - return 'syntastic: ' . split(reltimestr(reltime(g:_SYNTASTIC_START)))[0] . ': ' -endfunction " }}}2 - -function! s:_format_variable(name) " {{{2 - let vals = [] - if exists('g:syntastic_' . a:name) - call add(vals, 'g:syntastic_' . a:name . ' = ' . strtrans(string(g:syntastic_{a:name}))) - endif - if exists('b:syntastic_' . a:name) - call add(vals, 'b:syntastic_' . a:name . ' = ' . strtrans(string(b:syntastic_{a:name}))) - endif - - return join(vals, ', ') -endfunction " }}}2 - -" }}}1 - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: diff --git a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/postprocess.vim b/vim/vim.symlink/bundle/syntastic/autoload/syntastic/postprocess.vim deleted file mode 100644 index 80fd7cf..0000000 --- a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/postprocess.vim +++ /dev/null @@ -1,73 +0,0 @@ -if exists("g:loaded_syntastic_postprocess_autoload") || !exists("g:loaded_syntastic_plugin") - finish -endif -let g:loaded_syntastic_postprocess_autoload = 1 - -let s:save_cpo = &cpo -set cpo&vim - -" Public functions {{{1 - -" merge consecutive blanks -function! syntastic#postprocess#compressWhitespace(errors) " {{{2 - for e in a:errors - let e['text'] = substitute(e['text'], "\001", '', 'g') - let e['text'] = substitute(e['text'], '\n', ' ', 'g') - let e['text'] = substitute(e['text'], '\m\s\{2,}', ' ', 'g') - let e['text'] = substitute(e['text'], '\m^\s\+', '', '') - let e['text'] = substitute(e['text'], '\m\s\+$', '', '') - endfor - - return a:errors -endfunction " }}}2 - -" remove spurious CR under Cygwin -function! syntastic#postprocess#cygwinRemoveCR(errors) " {{{2 - if has('win32unix') - for e in a:errors - let e['text'] = substitute(e['text'], '\r', '', 'g') - endfor - endif - - return a:errors -endfunction " }}}2 - -" decode XML entities -function! syntastic#postprocess#decodeXMLEntities(errors) " {{{2 - for e in a:errors - let e['text'] = syntastic#util#decodeXMLEntities(e['text']) - endfor - - return a:errors -endfunction " }}}2 - -" filter out errors referencing other files -function! syntastic#postprocess#filterForeignErrors(errors) " {{{2 - return filter(copy(a:errors), 'get(v:val, "bufnr") == ' . bufnr('')) -endfunction " }}}2 - -" make sure line numbers are not past end of buffers -" XXX: this loads all referenced buffers in memory -function! syntastic#postprocess#guards(errors) " {{{2 - let buffers = syntastic#util#unique(map(filter(copy(a:errors), 'v:val["valid"]'), 'str2nr(v:val["bufnr"])')) - - let guards = {} - for b in buffers - let guards[b] = len(getbufline(b, 1, '$')) - endfor - - for e in a:errors - if e['valid'] && e['lnum'] > guards[e['bufnr']] - let e['lnum'] = guards[e['bufnr']] - endif - endfor - - return a:errors -endfunction " }}}2 - -" }}}1 - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: diff --git a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/preprocess.vim b/vim/vim.symlink/bundle/syntastic/autoload/syntastic/preprocess.vim deleted file mode 100644 index 4ce15f1..0000000 --- a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/preprocess.vim +++ /dev/null @@ -1,198 +0,0 @@ -if exists("g:loaded_syntastic_preprocess_autoload") || !exists("g:loaded_syntastic_plugin") - finish -endif -let g:loaded_syntastic_preprocess_autoload = 1 - -let s:save_cpo = &cpo -set cpo&vim - -" Public functions {{{1 - -function! syntastic#preprocess#cabal(errors) " {{{2 - let out = [] - let star = 0 - for err in a:errors - if star - if err == '' - let star = 0 - else - let out[-1] .= ' ' . err - endif - else - call add(out, err) - if err =~ '\m^*\s' - let star = 1 - endif - endif - endfor - return out -endfunction " }}}2 - -function! syntastic#preprocess#checkstyle(errors) " {{{2 - let out = [] - let fname = expand('%') - for err in a:errors - if match(err, '\m') > -1 - let line = str2nr(matchstr(err, '\m\ \[[^]]+\])+\ze:'', "", "")') -endfunction " }}}2 - -function! syntastic#preprocess#killEmpty(errors) " {{{2 - return filter(copy(a:errors), 'v:val != ""') -endfunction " }}}2 - -function! syntastic#preprocess#perl(errors) " {{{2 - let out = [] - - for e in a:errors - let parts = matchlist(e, '\v^(.*)\sat\s(.*)\sline\s(\d+)(.*)$') - if !empty(parts) - call add(out, parts[2] . ':' . parts[3] . ':' . parts[1] . parts[4]) - endif - endfor - - return syntastic#util#unique(out) -endfunction " }}}2 - -" @vimlint(EVL102, 1, l:true) -" @vimlint(EVL102, 1, l:false) -" @vimlint(EVL102, 1, l:null) -function! syntastic#preprocess#prospector(errors) " {{{2 - " JSON artifacts - let true = 1 - let false = 0 - let null = '' - - " A hat tip to Marc Weber for this trick - " http://stackoverflow.com/questions/17751186/iterating-over-a-string-in-vimscript-or-parse-a-json-file/19105763#19105763 - try - let errs = eval(join(a:errors, '')) - catch - let errs = {} - endtry - - let out = [] - if type(errs) == type({}) && has_key(errs, 'messages') && type(errs['messages']) == type([]) - for e in errs['messages'] - if type(e) == type({}) - try - if e['source'] ==# 'pylint' - let e['location']['character'] += 1 - endif - - let msg = - \ e['location']['path'] . ':' . - \ e['location']['line'] . ':' . - \ e['location']['character'] . ': ' . - \ e['code'] . ' ' . - \ e['message'] . ' ' . - \ '[' . e['source'] . ']' - - call add(out, msg) - catch /\m^Vim\%((\a\+)\)\=:E716/ - call syntastic#log#warn('checker python/prospector: unknown error format') - let out = [] - break - endtry - else - call syntastic#log#warn('checker python/prospector: unknown error format') - let out = [] - break - endif - endfor - else - call syntastic#log#warn('checker python/prospector: unknown error format') - endif - - return out -endfunction " }}}2 -" @vimlint(EVL102, 0, l:true) -" @vimlint(EVL102, 0, l:false) -" @vimlint(EVL102, 0, l:null) - -function! syntastic#preprocess#rparse(errors) " {{{2 - let errlist = copy(a:errors) - - " remove uninteresting lines and handle continuations - let i = 0 - while i < len(errlist) - if i > 0 && errlist[i][:1] == ' ' && errlist[i] !~ '\m\s\+\^$' - let errlist[i-1] .= errlist[i][1:] - call remove(errlist, i) - elseif errlist[i] !~ '\m^\(Lint:\|Lint checking:\|Error in\) ' - call remove(errlist, i) - else - let i += 1 - endif - endwhile - - let out = [] - let fname = '' - for e in errlist - if match(e, '\m^Lint: ') == 0 - let parts = matchlist(e, '\m^Lint: \(.*\): found on lines \([0-9, ]\+\)\(+\(\d\+\) more\)\=') - if len(parts) >= 3 - for line in split(parts[2], '\m,\s*') - call add(out, 'E:' . fname . ':' . line . ': ' . parts[1]) - endfor - endif - if len(parts) >= 5 && parts[4] != '' - call add(out, 'E:' . fname . ':0: ' . parts[1] . ' - ' . parts[4] . ' messages not shown') - endif - elseif match(e, '\m^Lint checking: ') == 0 - let fname = matchstr(e, '\m^Lint checking: \zs.*') - elseif match(e, '\m^Error in ') == 0 - call add(out, substitute(e, '\m^Error in .\+ : .\+\ze:\d\+:\d\+: ', 'E:' . fname, '')) - endif - endfor - - return out -endfunction " }}}2 - -function! syntastic#preprocess#tslint(errors) " {{{2 - return map(copy(a:errors), 'substitute(v:val, ''\m^\(([^)]\+)\)\s\(.\+\)$'', ''\2 \1'', "")') -endfunction " }}}2 - -function! syntastic#preprocess#validator(errors) " {{{2 - let out = [] - for e in a:errors - let parts = matchlist(e, '\v^"([^"]+)"(.+)') - if len(parts) >= 3 - " URL decode, except leave alone any "+" - let parts[1] = substitute(parts[1], '\m%\(\x\x\)', '\=nr2char("0x".submatch(1))', 'g') - let parts[1] = substitute(parts[1], '\m\\"', '"', 'g') - let parts[1] = substitute(parts[1], '\m\\\\', '\\', 'g') - call add(out, '"' . parts[1] . '"' . parts[2]) - endif - endfor - return out -endfunction " }}}2 - -" }}}1 - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: diff --git a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/util.vim b/vim/vim.symlink/bundle/syntastic/autoload/syntastic/util.vim deleted file mode 100644 index 77bee73..0000000 --- a/vim/vim.symlink/bundle/syntastic/autoload/syntastic/util.vim +++ /dev/null @@ -1,360 +0,0 @@ -if exists('g:loaded_syntastic_util_autoload') || !exists("g:loaded_syntastic_plugin") - finish -endif -let g:loaded_syntastic_util_autoload = 1 - -let s:save_cpo = &cpo -set cpo&vim - -" Public functions {{{1 - -function! syntastic#util#isRunningWindows() " {{{2 - return has('win16') || has('win32') || has('win64') -endfunction " }}}2 - -function! syntastic#util#DevNull() " {{{2 - if syntastic#util#isRunningWindows() - return 'NUL' - endif - return '/dev/null' -endfunction " }}}2 - -" Get directory separator -function! syntastic#util#Slash() abort " {{{2 - return (!exists("+shellslash") || &shellslash) ? '/' : '\' -endfunction " }}}2 - -" Create a temporary directory -function! syntastic#util#tmpdir() " {{{2 - let tempdir = '' - - if (has('unix') || has('mac')) && executable('mktemp') - " TODO: option "-t" to mktemp(1) is not portable - let tmp = $TMPDIR != '' ? $TMPDIR : $TMP != '' ? $TMP : '/tmp' - let out = split(system('mktemp -q -d ' . tmp . '/vim-syntastic-' . getpid() . '-XXXXXXXX'), "\n") - if v:shell_error == 0 && len(out) == 1 - let tempdir = out[0] - endif - endif - - if tempdir == '' - if has('win32') || has('win64') - let tempdir = $TEMP . syntastic#util#Slash() . 'vim-syntastic-' . getpid() - elseif has('win32unix') - let tempdir = s:CygwinPath('/tmp/vim-syntastic-' . getpid()) - elseif $TMPDIR != '' - let tempdir = $TMPDIR . '/vim-syntastic-' . getpid() - else - let tempdir = '/tmp/vim-syntastic-' . getpid() - endif - - try - call mkdir(tempdir, 'p', 0700) - catch /\m^Vim\%((\a\+)\)\=:E739/ - call syntastic#log#error(v:exception) - let tempdir = '.' - endtry - endif - - return tempdir -endfunction " }}}2 - -" Recursively remove a directory -function! syntastic#util#rmrf(what) " {{{2 - if a:what == '.' - return - endif - - if getftype(a:what) ==# 'dir' - if !exists('s:rmrf') - let s:rmrf = - \ has('unix') || has('mac') ? 'rm -rf' : - \ has('win32') || has('win64') ? 'rmdir /S /Q' : - \ has('win16') || has('win95') || has('dos16') || has('dos32') ? 'deltree /Y' : '' - endif - - if s:rmrf != '' - silent! call system(s:rmrf . ' ' . syntastic#util#shescape(a:what)) - else - call s:_rmrf(a:what) - endif - else - silent! call delete(a:what) - endif -endfunction " }}}2 - -"search the first 5 lines of the file for a magic number and return a map -"containing the args and the executable -" -"e.g. -" -"#!/usr/bin/perl -f -bar -" -"returns -" -"{'exe': '/usr/bin/perl', 'args': ['-f', '-bar']} -function! syntastic#util#parseShebang() " {{{2 - for lnum in range(1, 5) - let line = getline(lnum) - if line =~ '^#!' - let line = substitute(line, '\v^#!\s*(\S+/env(\s+-\S+)*\s+)?', '', '') - let exe = matchstr(line, '\m^\S*\ze') - let args = split(matchstr(line, '\m^\S*\zs.*')) - return { 'exe': exe, 'args': args } - endif - endfor - - return { 'exe': '', 'args': [] } -endfunction " }}}2 - -" Get the value of a variable. Allow local variables to override global ones. -function! syntastic#util#var(name, ...) " {{{2 - return - \ exists('b:syntastic_' . a:name) ? b:syntastic_{a:name} : - \ exists('g:syntastic_' . a:name) ? g:syntastic_{a:name} : - \ a:0 > 0 ? a:1 : '' -endfunction " }}}2 - -" Parse a version string. Return an array of version components. -function! syntastic#util#parseVersion(version) " {{{2 - return map(split(matchstr( a:version, '\v^\D*\zs\d+(\.\d+)+\ze' ), '\m\.'), 'str2nr(v:val)') -endfunction " }}}2 - -" Run 'command' in a shell and parse output as a version string. -" Returns an array of version components. -function! syntastic#util#getVersion(command) " {{{2 - return syntastic#util#parseVersion(system(a:command)) -endfunction " }}}2 - -" Verify that the 'installed' version is at least the 'required' version. -" -" 'installed' and 'required' must be arrays. If they have different lengths, -" the "missing" elements will be assumed to be 0 for the purposes of checking. -" -" See http://semver.org for info about version numbers. -function! syntastic#util#versionIsAtLeast(installed, required) " {{{2 - return syntastic#util#compareLexi(a:installed, a:required) >= 0 -endfunction " }}}2 - -" Almost lexicographic comparison of two lists of integers. :) If lists -" have different lengths, the "missing" elements are assumed to be 0. -function! syntastic#util#compareLexi(a, b) " {{{2 - for idx in range(max([len(a:a), len(a:b)])) - let a_element = str2nr(get(a:a, idx, 0)) - let b_element = str2nr(get(a:b, idx, 0)) - if a_element != b_element - return a_element > b_element ? 1 : -1 - endif - endfor - " Everything matched, so it is at least the required version. - return 0 -endfunction " }}}2 - -" strwidth() was added in Vim 7.3; if it doesn't exist, we use strlen() -" and hope for the best :) -let s:_width = function(exists('*strwidth') ? 'strwidth' : 'strlen') -lockvar s:_width - -function! syntastic#util#screenWidth(str, tabstop) " {{{2 - let chunks = split(a:str, "\t", 1) - let width = s:_width(chunks[-1]) - for c in chunks[:-2] - let cwidth = s:_width(c) - let width += cwidth + a:tabstop - cwidth % a:tabstop - endfor - return width -endfunction " }}}2 - -"print as much of a:msg as possible without "Press Enter" prompt appearing -function! syntastic#util#wideMsg(msg) " {{{2 - let old_ruler = &ruler - let old_showcmd = &showcmd - - "This is here because it is possible for some error messages to - "begin with \n which will cause a "press enter" prompt. - let msg = substitute(a:msg, "\n", "", "g") - - "convert tabs to spaces so that the tabs count towards the window - "width as the proper amount of characters - let chunks = split(msg, "\t", 1) - let msg = join(map(chunks[:-2], 'v:val . repeat(" ", &tabstop - s:_width(v:val) % &tabstop)'), '') . chunks[-1] - let msg = strpart(msg, 0, &columns - 1) - - set noruler noshowcmd - call syntastic#util#redraw(0) - - echo msg - - let &ruler = old_ruler - let &showcmd = old_showcmd -endfunction " }}}2 - -" Check whether a buffer is loaded, listed, and not hidden -function! syntastic#util#bufIsActive(buffer) " {{{2 - " convert to number, or hell breaks loose - let buf = str2nr(a:buffer) - - if !bufloaded(buf) || !buflisted(buf) - return 0 - endif - - " get rid of hidden buffers - for tab in range(1, tabpagenr('$')) - if index(tabpagebuflist(tab), buf) >= 0 - return 1 - endif - endfor - - return 0 -endfunction " }}}2 - -" start in directory a:where and walk up the parent folders until it -" finds a file matching a:what; return path to that file -function! syntastic#util#findInParent(what, where) " {{{2 - let here = fnamemodify(a:where, ':p') - - let root = syntastic#util#Slash() - if syntastic#util#isRunningWindows() && here[1] == ':' - " The drive letter is an ever-green source of fun. That's because - " we don't care about running syntastic on Amiga these days. ;) - let root = fnamemodify(root, ':p') - let root = here[0] . root[1:] - endif - - let old = '' - while here != '' - let p = split(globpath(here, a:what), '\n') - - if !empty(p) - return fnamemodify(p[0], ':p') - elseif here ==? root || here ==? old - break - endif - - let old = here - - " we use ':h:h' rather than ':h' since ':p' adds a trailing '/' - " if 'here' is a directory - let here = fnamemodify(here, ':p:h:h') - endwhile - - return '' -endfunction " }}}2 - -" Returns unique elements in a list -function! syntastic#util#unique(list) " {{{2 - let seen = {} - let uniques = [] - for e in a:list - if !has_key(seen, e) - let seen[e] = 1 - call add(uniques, e) - endif - endfor - return uniques -endfunction " }}}2 - -" A less noisy shellescape() -function! syntastic#util#shescape(string) " {{{2 - return a:string =~ '\m^[A-Za-z0-9_/.-]\+$' ? a:string : shellescape(a:string) -endfunction " }}}2 - -" A less noisy shellescape(expand()) -function! syntastic#util#shexpand(string) " {{{2 - return syntastic#util#shescape(expand(a:string)) -endfunction " }}}2 - -" decode XML entities -function! syntastic#util#decodeXMLEntities(string) " {{{2 - let str = a:string - let str = substitute(str, '\m<', '<', 'g') - let str = substitute(str, '\m>', '>', 'g') - let str = substitute(str, '\m"', '"', 'g') - let str = substitute(str, '\m'', "'", 'g') - let str = substitute(str, '\m&', '\&', 'g') - return str -endfunction " }}}2 - -function! syntastic#util#redraw(full) " {{{2 - if a:full - redraw! - else - redraw - endif -endfunction " }}}2 - -function! syntastic#util#dictFilter(errors, filter) " {{{2 - let rules = s:_translateFilter(a:filter) - " call syntastic#log#debug(g:_SYNTASTIC_DEBUG_TRACE, "applying filter:", rules) - try - call filter(a:errors, rules) - catch /\m^Vim\%((\a\+)\)\=:E/ - let msg = matchstr(v:exception, '\m^Vim\%((\a\+)\)\=:\zs.*') - call syntastic#log#error('quiet_messages: ' . msg) - endtry -endfunction " }}}2 - -" Return a [high, low] list of integers, representing the time -" (hopefully high resolution) since program start -" TODO: This assumes reltime() returns a list of integers. -function! syntastic#util#stamp() " {{{2 - return reltime(g:_SYNTASTIC_START) -endfunction " }}}2 - -" }}}1 - -" Private functions {{{1 - -function! s:_translateFilter(filters) " {{{2 - let conditions = [] - for k in keys(a:filters) - if type(a:filters[k]) == type([]) - call extend(conditions, map(copy(a:filters[k]), 's:_translateElement(k, v:val)')) - else - call add(conditions, s:_translateElement(k, a:filters[k])) - endif - endfor - - if conditions == [] - let conditions = ["1"] - endif - return len(conditions) == 1 ? conditions[0] : join(map(conditions, '"(" . v:val . ")"'), ' && ') -endfunction " }}}2 - -function! s:_translateElement(key, term) " {{{2 - if a:key ==? 'level' - let ret = 'v:val["type"] !=? ' . string(a:term[0]) - elseif a:key ==? 'type' - let ret = a:term ==? 'style' ? 'get(v:val, "subtype", "") !=? "style"' : 'has_key(v:val, "subtype")' - elseif a:key ==? 'regex' - let ret = 'v:val["text"] !~? ' . string(a:term) - elseif a:key ==? 'file' - let ret = 'bufname(str2nr(v:val["bufnr"])) !~# ' . string(a:term) - else - call syntastic#log#warn('quiet_messages: ignoring invalid key ' . strtrans(string(a:key))) - let ret = "1" - endif - return ret -endfunction " }}}2 - -function! s:_rmrf(what) " {{{2 - if !exists('s:rmdir') - let s:rmdir = syntastic#util#shescape(get(g:, 'netrw_localrmdir', 'rmdir')) - endif - - if getftype(a:what) ==# 'dir' - for f in split(globpath(a:what, '*'), "\n") - call s:_rmrf(f) - endfor - silent! call system(s:rmdir . ' ' . syntastic#util#shescape(a:what)) - else - silent! call delete(a:what) - endif -endfunction " }}}2 - -" }}}1 - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim: set sw=4 sts=4 et fdm=marker: diff --git a/vim/vim.symlink/bundle/syntastic/doc/syntastic.txt b/vim/vim.symlink/bundle/syntastic/doc/syntastic.txt deleted file mode 100644 index b6d8dbe..0000000 --- a/vim/vim.symlink/bundle/syntastic/doc/syntastic.txt +++ /dev/null @@ -1,840 +0,0 @@ -*syntastic.txt* Syntax checking on the fly has never been so pimp. -*syntastic* - - - It's a bird! It's a plane! ZOMG It's ... ~ - - _____ __ __ _ ~ - / ___/__ ______ / /_____ ______/ /_(_)____ ~ - \__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ ~ - ___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ ~ - /____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ ~ - /____/ ~ - - - - Reference Manual~ - - -============================================================================== -CONTENTS *syntastic-contents* - - 1.Intro........................................|syntastic-intro| - 1.1.Quick start............................|syntastic-quickstart| - 2.Functionality provided.......................|syntastic-functionality| - 2.1.The statusline flag....................|syntastic-statusline-flag| - 2.2.Error signs............................|syntastic-error-signs| - 2.3.Error window...........................|syntastic-error-window| - 2.4.Error highlighting.....................|syntastic-highlighting| - 2.5.Aggregating errors.....................|syntastic-aggregating-errors| - 2.6.Filtering errors.......................|syntastic-filtering-errors| - 3.Commands.....................................|syntastic-commands| - 4.Global Options...............................|syntastic-global-options| - 5.Checker Options..............................|syntastic-checker-options| - 5.1.Choosing which checkers to use.........|syntastic-filetype-checkers| - 5.2.Choosing the executable................|syntastic-config-exec| - 5.3.Configuring specific checkers..........|syntastic-config-makeprg| - 5.4.Sorting errors.........................|syntastic-config-sort| - 6.Notes........................................|syntastic-notes| - 6.1.Handling of composite filetypes........|syntastic-composite| - 6.2.Editing files over network.............|syntastic-netrw| - 6.3.Interaction with python-mode...........|syntastic-pymode| - 6.4.Interaction with YouCompleteMe.........|syntastic-ycm| - 6.5.Interaction with the fish shell........|syntastic-fish| - 6.6.Interaction with PowerShell............|syntastic-powershell| - 6.7.Using syntastic with the fizsh shell...|syntastic-fizsh| - 6.8.Interaction with Eclim.................|syntastic-eclim| - 6.9.Interaction with vim-virtualenv........|syntastic-vim-virtualenv| - 6.10.Interaction with vim-auto-save........|syntastic-vim-auto-save| - 7.About........................................|syntastic-about| - 8.License......................................|syntastic-license| - - -============================================================================== -1. Intro *syntastic-intro* - -Syntastic is a syntax checking plugin that runs files through external syntax -checkers. This can be done on demand, or automatically as files are saved and -opened. If syntax errors are detected, the user is notified and is happy -because they didn't have to compile their code or execute their script to find -them. - -Syntastic comes in two parts: the syntax checker plugins, and the core. The -syntax checker plugins are defined on a per-filetype basis where each one wraps -up an external syntax checking program. The core script delegates off to these -plugins and uses their output to provide the syntastic functionality. - -Take a look at the wiki for a list of supported filetypes and checkers: - - https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers - -Note: This doc only deals with using syntastic. To learn how to write syntax -checker integrations, see the guide on the GitHub wiki: - - https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide - ------------------------------------------------------------------------------- -1.1. Quick start *syntastic-quickstart* - -Syntastic comes preconfigured with a default list of enabled checkers per -filetype. This list is kept reasonably short to prevent slowing down Vim or -trying to use conflicting checkers. - -You can see the list of checkers available for the current filetype with the -|:SyntasticInfo| command. - -You probably want to override the configured list of checkers for the -filetypes you use, and also change the arguments passed to specific checkers -to suit your needs. See |syntastic-checker-options| for details. - -Use |:SyntasticCheck| to manually check right now. Use |:Errors| to open the -|location-list| window, and |:lclose| to close it. You can clear the error -list with |:SyntasticReset|, and you can use |:SyntasticToggleMode| to switch -between active (checking on writing the buffer) and passive (manual) checking. - -============================================================================== -2. Functionality provided *syntastic-functionality* - -Syntax checking can be done automatically or on demand (see -|'syntastic_mode_map'| and |:SyntasticToggleMode| for configuring this). - -When syntax checking is done, the features below can be used to notify the -user of errors. See |syntastic-global-options| for how to configure and -activate/deactivate these features. - - * A statusline flag - * Signs beside lines with errors - * The |location-list| can be populated with the errors for the associated - buffer - * Erroneous parts of lines can be highlighted (this functionality is only - provided by some syntax checkers) - * Balloons (if the |+balloon_eval| feature is compiled in) can be used to - display error messages for erroneous lines when hovering the mouse over - them - * Error messages from multiple checkers can be aggregated in a single list - ------------------------------------------------------------------------------- -2.1. The statusline flag *syntastic-statusline-flag* - -To use the statusline flag, this must appear in your |'statusline'| setting > - %{SyntasticStatuslineFlag()} -< -Something like this could be more useful: > - set statusline+=%#warningmsg# - set statusline+=%{SyntasticStatuslineFlag()} - set statusline+=%* -< -When syntax errors are detected a flag will be shown. The content of the flag -is derived from the |syntastic_stl_format| option. - ------------------------------------------------------------------------------- -2.2. Error signs *syntastic-error-signs* - -Syntastic uses the |:sign| commands to mark lines with errors and warnings in -the sign column. To enable this feature, use the |'syntastic_enable_signs'| -option. - -Signs are colored using the Error and Todo syntax highlight groups by default. -If you wish to customize the colors for the signs, you can use the following -groups: - SyntasticErrorSign - For syntax errors, links to 'error' by default - SyntasticWarningSign - For syntax warnings, links to 'todo' by default - SyntasticStyleErrorSign - For style errors, links to 'SyntasticErrorSign' - by default - SyntasticStyleWarningSign - For style warnings, links to - 'SyntasticWarningSign' by default - -Example: > - highlight SyntasticErrorSign guifg=white guibg=red -< -To set up highlighting for the line where a sign resides, you can use the -following highlight groups: - SyntasticErrorLine - SyntasticWarningLine - SyntasticStyleErrorLine - Links to 'SyntasticErrorLine' by default - SyntasticStyleWarningLine - Links to 'SyntasticWarningLine' by default - -Example: > - highlight SyntasticErrorLine guibg=#2f0000 -< ------------------------------------------------------------------------------- -2.3. The error window *syntastic-error-window* - -You can use the |:Errors| command to display the errors for the current buffer -in the |location-list|. - -Note that when you use |:Errors|, the current location list is overwritten -with Syntastic's own location list. - -By default syntastic doesn't fill the |location-list| with the errors found by -the checkers, in order to reduce clashes with other plugins. Consequently, if -you run |:lopen| or |:lwindow| rather than |:Errors| to open the error window you -wouldn't see syntastic's list of errors. If you insist on using |:lopen| or -|:lwindow| you should either run |:SyntasticSetLoclist| after running the checks, -or set |syntastic_always_populate_loc_list| which tells syntastic to update the -|location-list| automatically. - ------------------------------------------------------------------------------- -2.4. Error highlighting *syntastic-highlighting* - -Some checkers provide enough information for syntastic to be able to highlight -errors. By default the SpellBad syntax highlight group is used to color errors, -and the SpellCap group is used for warnings. If you wish to customize the -colors for highlighting you can use the following groups: - SyntasticError - Links to 'SpellBad' by default - SyntasticWarning - Links to 'SpellCap' by default - SyntasticStyleError - Links to SyntasticError by default - SyntasticStyleWarning - Links to SyntasticWarning by default - -Example: > - highlight SyntasticError guibg=#2f0000 -< ------------------------------------------------------------------------------- -2.5. Aggregating errors *syntastic-aggregating-errors* - -By default, namely if |'syntastic_aggregate_errors'| is unset, syntastic runs -in turn the checkers corresponding to the filetype of the current file (see -|syntastic-filetype-checkers|), and stops as soon as a checker reports any -errors. It then notifies you of the errors using the notification mechanisms -above. In this mode error lists are always produced by a single checker, and, -if you open the error window, the name of the checker that generated the errors -is shown on the statusline of the error window. - -If |'syntastic_aggregate_errors'| is set, syntastic runs all checkers that -apply (still cf. |syntastic-filetype-checkers|), then aggregates errors found -by all checkers in a single list, and notifies you. In this mode each error -message is labeled with the name of the checker that generated it, but you can -disable generation of these labels by turning off '|syntastic_id_checkers|'. - -If |'syntastic_sort_aggregated_errors'| is set (which is the default), messages -in the aggregated list are grouped by file, then sorted by line number, then -type, then column number. Otherwise messages produced by the same checker are -grouped together, and sorting within each group is decided by the variables -|'syntastic___sort'|. - ------------------------------------------------------------------------------- -2.6 Filtering errors *syntastic-filtering-errors* - -You can selectively disable some of the errors found by checkers either -using |'syntastic_quiet_messages'|, or by specifying a list of patterns in -|'syntastic_ignore_files'|. - -See also: |'syntastic___quiet_messages'|. - -============================================================================== -3. Commands *syntastic-commands* - -:Errors *:Errors* - -When errors have been detected, use this command to pop up the |location-list| -and display the error messages. - -Please note that the |:Errors| command overwrites the current location list with -syntastic's own location list. - -:SyntasticToggleMode *:SyntasticToggleMode* - -Toggles syntastic between active and passive mode. See |'syntastic_mode_map'| -for more info. - -:SyntasticCheck *:SyntasticCheck* - -Manually cause a syntax check to be done. By default the checkers in the -|'g:syntastic__checkers'| or |'b:syntastic_checkers'| lists are run, -cf. |syntastic-filetype-checkers|. If |syntastic_aggregate_errors| is unset -(which is the default), checking stops the first time a checker reports any -errors; if |syntastic_aggregate_errors| is set, all checkers that apply are run -in turn, and all errors found are aggregated in a single list. - -The command may be followed by a (space separated) list of checkers. In this -case |'g:syntastic__checkers'| and |'b:syntastic_checkers'| are -ignored, and the checkers named by the command's arguments are run instead, in -the order specified. The rules of |syntastic_aggregate_errors| still apply. - -Example: > - :SyntasticCheck flake8 pylint -< -:SyntasticInfo *:SyntasticInfo* - -The command takes an optional argument, and outputs information about the -checkers available for the filetype named by said argument, or for the current -filetype if no argument was provided. - -:SyntasticReset *:SyntasticReset* - -Resets the list of errors and turns off all error notifiers. - -:SyntasticSetLoclist *:SyntasticSetLoclist* - -If |'syntastic_always_populate_loc_list'| is not set, the |location-list| is -not filled in automatically with the list of errors detected by the checkers. -This is useful if you run syntastic along with other plugins that use location -lists. The |:SyntasticSetLoclist| command allows you to stick the errors into -the location list explicitly. - -============================================================================== -4. Global Options *syntastic-global-options* - - - *'syntastic_check_on_open'* -Default: 0 -If enabled, syntastic will do syntax checks when buffers are first loaded as -well as on saving > - let g:syntastic_check_on_open = 1 -< - *'syntastic_check_on_wq'* -Default: 1 -Normally syntastic runs syntax checks whenever buffers are written to disk. -If you want to skip these checks when you issue |:wq|, |:x|, and |:ZZ|, set this -variable to 0. > - let g:syntastic_check_on_wq = 0 -< - *'syntastic_aggregate_errors'* -Default: 0 -When enabled, syntastic runs all checkers that apply to the current filetype, -then aggregates errors found by all checkers and displays them. When disabled, -syntastic runs each checker in turn, and stops to display the results the first -time a checker finds any errors. > - let g:syntastic_aggregate_errors = 1 -< - *'syntastic_id_checkers'* -Default: 1 -When results from multiple checkers are aggregated in a single error list -(that is either when |syntastic_aggregate_errors| is enabled, or when checking -a file with a composite filetype), it might not be immediately obvious which -checker has produced a given error message. This variable instructs syntastic -to label error messages with the names of the checkers that created them. > - let g:syntastic_id_checkers = 0 -< - *'syntastic_sort_aggregated_errors'* -Default: 1 -By default, when results from multiple checkers are aggregated in a single -error list (that is either when |syntastic_aggregate_errors| is enabled, or -when checking a file with a composite filetype), errors are grouped by file, -then sorted by line number, then grouped by type (namely errors take precedence -over warnings), then they are sorted by column number. If you want to leave -messages grouped by checker output, set this variable to 0. > - let g:syntastic_sort_aggregated_errors = 0 -< - *'syntastic_echo_current_error'* -Default: 1 -If enabled, syntastic will echo current error to the command window. If -multiple errors are found on the same line, |syntastic_cursor_columns| is used -to decide which one is shown. > - let g:syntastic_echo_current_error = 1 -< - *'syntastic_cursor_columns'* -Default: 1 -This option controls which errors are echoed to the command window if -|syntastic_echo_current_error| is set and multiple errors are found on the same -line. When the option is enabled, the first error corresponding to the current -column is show. Otherwise, the first error on the current line is echoed, -regardless of the cursor position on the current line. - -When dealing with very large lists of errors, disabling this option can speed -up navigation significantly: > - let g:syntastic_cursor_column = 0 -< - *'syntastic_enable_signs'* -Default: 1 -Use this option to tell syntastic whether to use the |:sign| interface to mark -syntax errors: > - let g:syntastic_enable_signs = 1 -< - *'syntastic_error_symbol'* *'syntastic_style_error_symbol'* - *'syntastic_warning_symbol'* *'syntastic_style_warning_symbol'* -Use this option to control what the syntastic |:sign| text contains. Several -error symbols can be customized: - syntastic_error_symbol - For syntax errors, defaults to '>>' - syntastic_style_error_symbol - For style errors, defaults to 'S>' - syntastic_warning_symbol - For syntax warnings, defaults to '>>' - syntastic_style_warning_symbol - For style warnings, defaults to 'S>' - -Example: > - let g:syntastic_error_symbol = "✗" - let g:syntastic_warning_symbol = "⚠" -< - *'syntastic_enable_balloons'* -Default: 1 -Use this option to tell syntastic whether to display error messages in balloons -when the mouse is hovered over erroneous lines: > - let g:syntastic_enable_balloons = 1 -< -Note that Vim must be compiled with |+balloon_eval|. - - *'syntastic_enable_highlighting'* -Default: 1 -Use this option to tell syntastic whether to use syntax highlighting to mark -errors (where possible). Highlighting can be turned off with the following > - let g:syntastic_enable_highlighting = 0 -< - *'syntastic_always_populate_loc_list'* -Default: 0 -Enable this option to tell syntastic to always stick any detected errors into -the |location-list|: > - let g:syntastic_always_populate_loc_list = 1 -< - *'syntastic_auto_jump'* -Default: 0 -Enable this option if you want the cursor to jump to the first detected issue -when saving or opening a file. - -When set to 0 the cursor won't jump automatically. > - let g:syntastic_auto_jump = 0 -< -When set to 1 the cursor will always jump to the first issue detected. > - let g:syntastic_auto_jump = 1 -< -When set to 2 the cursor will jump to the first issue detected, but only if -this issue is an error. > - let g:syntastic_auto_jump = 2 -< - *'syntastic_auto_loc_list'* -Default: 2 -Use this option to tell syntastic to automatically open and/or close the -|location-list| (see |syntastic-error-window|). - -When set to 0 the error window will not be opened or closed automatically. > - let g:syntastic_auto_loc_list = 0 -< -When set to 1 the error window will be automatically opened when errors are -detected, and closed when none are detected. > - let g:syntastic_auto_loc_list = 1 -< -When set to 2 the error window will be automatically closed when no errors are -detected, but not opened automatically. > - let g:syntastic_auto_loc_list = 2 -< - *'syntastic_loc_list_height'* -Default: 10 -Use this option to specify the height of the location lists that syntastic -opens. > - let g:syntastic_loc_list_height = 5 -< - *'syntastic_ignore_files'* -Default: [] -Use this option to specify files that syntastic should never check. It's a -list of |regular-expression| patterns. The full paths of files (see |::p|) are -matched against these patterns, and the matches are case sensitive. Use |\c| -to specify case insensitive patterns. Example: > - let g:syntastic_ignore_files = ['\m^/usr/include/', '\m\c\.h$'] -< - *'syntastic_filetype_map'* -Default: {} -Use this option to map non-standard filetypes to standard ones. Corresponding -checkers are mapped accordingly, which allows syntastic to check files with -non-standard filetypes: > - let g:syntastic_filetype_map = { "latex": "tex", - \ "gentoo-metadata": "xml" } -< -Composite filetypes can also be mapped to simple types, which disables the -default behaviour of running both checkers against the input file: > - let g:syntastic_filetype_map = { "handlebars.html": "handlebars" } -< - *'syntastic_mode_map'* -Default: { "mode": "active", - "active_filetypes": [], - "passive_filetypes": [] } -Use this option to fine tune when automatic syntax checking is done (or not -done). - -The option should be set to something like: > - - let g:syntastic_mode_map = { "mode": "active", - \ "active_filetypes": ["ruby", "php"], - \ "passive_filetypes": ["puppet"] } -< -"mode" can be mapped to one of two values - "active" or "passive". When set -to "active", syntastic does automatic checking whenever a buffer is saved or -initially opened. When set to "passive" syntastic only checks when the user -calls |:SyntasticCheck|. - -The exceptions to these rules are defined with "active_filetypes" and -"passive_filetypes". In passive mode, automatic checks are still done for -filetypes in the "active_filetypes" array (and "passive_filetypes" is -ignored). In active mode, automatic checks are not done for any filetypes in -the "passive_filetypes" array ("active_filetypes" is ignored). - -If any of "mode", "active_filetypes", or "passive_filetypes" are left -unspecified, they default to values above. - -At runtime, the |:SyntasticToggleMode| command can be used to switch between -active and passive modes. - - *'syntastic_quiet_messages'* -Default: {} -Use this option to filter out some of the messages produced by checkers. The -option should be set to something like: > - let g:syntastic_quiet_messages = { "level": "warnings", - \ "type": "style", - \ "regex": '\m\[C03\d\d\]', - \ "file": ['\m^/usr/include/', '\m\c\.h$'] } -< -Each element turns off messages matching the patterns specified by the -corresponding value. Values are lists, but if a list consist of a single -element you can omit adding the brackets (e.g. you can write "style" instead -of ["style"]). Elements with values [] or '' are ignored (this is useful for -overriding filters, cf. |filter-overrides|). - - "level" - takes one of two values, "warnings" or "errors" - "type" - can be either "syntax" or "style" - "regex" - is matched against the messages' text as a case insensitive - |regular-expression| - "file" - is matched against the filename the error refers to, as a case - sensitive |regular-expression|. - -If |'syntastic_id_checkers'| is set, filters are applied before error messages -are labeled with the names of the checkers that created them. - -There are also checker-specific variants of this option, providing finer -control. They are named |'syntastic___quiet_messages'|. - -For a particular checker, if both a |'syntastic_quiet_messages'| filter and -a checker-specific filter are present, they are both applied (to the list of -errors produced by the said checker). In case of conflicting values for the -same keys, the values of the checker-specific filters take precedence. - - *filter-overrides* -Since filter elements with values [] or '' are ignored, you can disable global -filters for particular checkers, by setting the values of the corresponding -elements in |'syntastic___quiet_messages'| to [] or ''. For -example, the following setting will silence all warnings, except for the -ones produced by "pylint": > - let g:syntastic_quiet_messages = { "level": "warnings" } - let g:syntastic_python_pylint_quiet_messages = { "level" : [] } -< - *'syntastic_stl_format'* -Default: [Syntax: line:%F (%t)] -Use this option to control what the syntastic statusline text contains. Several -magic flags are available to insert information: - %e - number of errors - %w - number of warnings - %t - total number of warnings and errors - %fe - line number of first error - %fw - line number of first warning - %F - line number of first warning or error - -Several additional flags are available to hide text under certain conditions: - %E{...} - hide the text in the brackets unless there are errors - %W{...} - hide the text in the brackets unless there are warnings - %B{...} - hide the text in the brackets unless there are both warnings AND - errors -These flags can't be nested. - -Example: > - let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]' -< -If this format is used and the current buffer has 5 errors and 1 warning -starting on lines 20 and 10 respectively then this would appear on the -statusline: > - [Err: 20 #5, Warn: 10 #1] -< -If the buffer had 2 warnings, starting on line 5 then this would appear: > - [Warn: 5 #2] -< - *'b:syntastic_skip_checks'* -Default: unset -Only the local form |'b:syntastic_skip_checks'| is used. When set to a true -value, no checks are run against the corresponding buffer. Example: > - let b:syntastic_skip_checks = 1 -< - *'syntastic_full_redraws'* -Default: 0 in GUI Vim and MacVim, 1 otherwise -Controls whether syntastic calls |:redraw| or |:redraw!| for screen redraws. -Changing it can in principle make screen redraws smoother, but it can also -cause screen to flicker, or cause ghost characters. Leaving it to the default -should be safe. - - *'syntastic_exit_checks'* -Default: 0 when running under "cmd.exe" on Windows, 1 otherwise -Syntastic attempts to catch abnormal termination conditions from checkers by -looking at their exit codes. The "cmd.exe" shell on Windows make these checks -meaningless, by returning 1 to Vim when the checkers exit with non-zero codes. -The above variable can be used to disable exit code checks in syntastic. - - *'syntastic_debug'* -Default: 0 -Set this to the sum of one or more of the following flags to enable -debugging: - - 1 - trace general workflow - 2 - dump location lists - 4 - trace notifiers - 8 - trace autocommands - 16 - dump options - 32 - trace running of specific checkers - -Example: > - let g:syntastic_debug = 1 -< -Syntastic will then add debugging messages to Vim's |message-history|. You can -examine these messages with |:mes|. - - *'syntastic_debug_file'* -Default: unset -When set, debugging messages are written to the file named by its value, in -addition to being added to Vim's |message-history|: > - let g:syntastic_debug_file = '~/syntastic.log' -< - *'syntastic_extra_filetypes'* -Default: [] -List of filetypes handled by checkers external to syntastic. If you have a Vim -plugin that adds a checker for syntastic, and if the said checker deals with a -filetype that is unknown to syntastic, you might consider adding that filetype -to this list: > - let g:syntastic_extra_filetypes = [ "make", "gitcommit" ] -< -This will allow |:SyntasticInfo| to do proper tab completion for the new -filetypes. - -============================================================================== -5. Checker Options *syntastic-checker-options* - ------------------------------------------------------------------------------- -5.1 Choosing which checkers to use *syntastic-filetype-checkers* - - *'g:syntastic__checkers'* -You can tell syntastic which checkers to run for a given filetype by setting a -variable 'g:syntastic__checkers' to a list of checkers, e.g. > - let g:syntastic_php_checkers = ["php", "phpcs", "phpmd"] -< - *'b:syntastic_checkers'* -There is also a per-buffer version of this setting, 'b:syntastic_checkers'. -When set, it takes precedence over |'g:syntastic__checkers'|. You can -use this in an autocmd to configure specific checkers for particular paths: > - autocmd FileType python if stridx(expand("%:p"), "/some/path/") == 0 | - \ let b:syntastic_checkers = ["pylint"] | endif -< -If neither |'g:syntastic__checkers'| nor |'b:syntastic_checkers'| -is set, a default list of checker is used. Beware however that this list -deliberately kept minimal, for performance reasons. - -Take a look at the wiki to find out what checkers and filetypes are supported -by syntastic: - - https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers - -Use |:SyntasticInfo| to see which checkers are available for a given filetype. - ------------------------------------------------------------------------------- -5.2 Choosing the executable *syntastic-config-exec* - - *'syntastic___exec'* -The executable run by a checker is normally defined automatically, when the -checker is registered. You can however override it, by setting the variable -'g:syntastic___exec': > - let g:syntastic_ruby_mri_exec = '~/bin/ruby2' -< -This variable has a local version, 'b:syntastic___exec', -which takes precedence over the global one in the corresponding buffer. - - *'b:syntastic__exec'* -And there is also a local variable named 'b:syntastic__exec', which -takes precedence over both 'b:syntastic___exec' and -'g:syntastic___exec' in the buffers where it is defined. - ------------------------------------------------------------------------------- -5.3 Configuring specific checkers *syntastic-config-makeprg* - -Most checkers use the 'makeprgBuild()' function and provide many options by -default - in fact you can customise every part of the command that gets called. - - *'syntastic___