From 9a2f55dea3f9d1d89bc45df09dbe3e4a36893d70 Mon Sep 17 00:00:00 2001 From: Max Bucknell Date: Sat, 2 May 2015 23:21:46 +0100 Subject: [PATCH] Remove vim bundle --- .gitignore | 1 + script/bootstrap.sh | 22 + vim/vim.symlink/bundle/pick.vim | 1 - vim/vim.symlink/bundle/rust.vim/.gitignore | 1 - vim/vim.symlink/bundle/rust.vim/README.md | 30 - .../bundle/rust.vim/after/syntax/rust.vim | 31 - .../bundle/rust.vim/autoload/rust.vim | 225 ----- .../bundle/rust.vim/compiler/cargo.vim | 65 -- .../bundle/rust.vim/compiler/rustc.vim | 33 - vim/vim.symlink/bundle/rust.vim/doc/rust.txt | 178 ---- .../bundle/rust.vim/ftdetect/rust.vim | 1 - .../bundle/rust.vim/ftplugin/rust.vim | 150 ---- .../bundle/rust.vim/indent/rust.vim | 196 ---- .../bundle/rust.vim/plugin/rust.vim | 22 - .../bundle/rust.vim/syntax/rust.vim | 264 ------ .../rust.vim/syntax_checkers/rust/rustc.vim | 35 - vim/vim.symlink/bundle/syntastic/.gitignore | 4 - .../bundle/syntastic/CONTRIBUTING.md | 105 --- vim/vim.symlink/bundle/syntastic/LICENCE | 13 - .../bundle/syntastic/README.markdown | 381 -------- .../bundle/syntastic/_assets/screenshot_1.png | Bin 92425 -> 0 bytes .../bundle/syntastic/autoload/syntastic/c.vim | 336 ------- .../syntastic/autoload/syntastic/log.vim | 182 ---- .../autoload/syntastic/postprocess.vim | 73 -- .../autoload/syntastic/preprocess.vim | 198 ----- .../syntastic/autoload/syntastic/util.vim | 360 -------- .../bundle/syntastic/doc/syntastic.txt | 840 ------------------ .../bundle/syntastic/plugin/syntastic.vim | 686 -------------- .../plugin/syntastic/autoloclist.vim | 38 - .../syntastic/plugin/syntastic/balloons.vim | 59 -- .../syntastic/plugin/syntastic/checker.vim | 192 ---- .../syntastic/plugin/syntastic/cursor.vim | 138 --- .../plugin/syntastic/highlighting.vim | 106 --- .../syntastic/plugin/syntastic/loclist.vim | 423 --------- .../syntastic/plugin/syntastic/modemap.vim | 100 --- .../syntastic/plugin/syntastic/notifiers.vim | 86 -- .../syntastic/plugin/syntastic/registry.vim | 329 ------- .../syntastic/plugin/syntastic/signs.vim | 138 --- .../syntax_checkers/actionscript/mxmlc.vim | 67 -- .../syntastic/syntax_checkers/ada/gcc.vim | 47 - .../applescript/osacompile.vim | 49 - .../syntax_checkers/asciidoc/asciidoc.vim | 47 - .../syntastic/syntax_checkers/asm/gcc.vim | 54 -- .../syntax_checkers/bemhtml/bemhtmllint.vim | 35 - .../syntastic/syntax_checkers/bro/bro.vim | 60 -- .../syntastic/syntax_checkers/c/avrgcc.vim | 57 -- .../syntax_checkers/c/checkpatch.vim | 60 -- .../syntax_checkers/c/clang_check.vim | 61 -- .../syntax_checkers/c/clang_tidy.vim | 61 -- .../syntastic/syntax_checkers/c/cppcheck.vim | 62 -- .../syntastic/syntax_checkers/c/gcc.vim | 59 -- .../syntastic/syntax_checkers/c/make.vim | 61 -- .../syntastic/syntax_checkers/c/oclint.vim | 65 -- .../syntastic/syntax_checkers/c/pc_lint.vim | 66 -- .../syntastic/syntax_checkers/c/sparse.vim | 46 - .../syntastic/syntax_checkers/c/splint.vim | 55 -- .../syntastic/syntax_checkers/cabal/cabal.vim | 55 -- .../syntax_checkers/chef/foodcritic.vim | 39 - .../syntastic/syntax_checkers/co/coco.vim | 47 - .../syntastic/syntax_checkers/cobol/cobc.vim | 47 - .../syntax_checkers/coffee/coffee.vim | 61 -- .../syntax_checkers/coffee/coffeelint.vim | 49 - .../syntastic/syntax_checkers/coq/coqtop.vim | 40 - .../syntax_checkers/cpp/clang_check.vim | 25 - .../syntax_checkers/cpp/clang_tidy.vim | 25 - .../syntax_checkers/cpp/cppcheck.vim | 24 - .../syntastic/syntax_checkers/cpp/cpplint.vim | 52 -- .../syntastic/syntax_checkers/cpp/gcc.vim | 56 -- .../syntastic/syntax_checkers/cpp/oclint.vim | 24 - .../syntastic/syntax_checkers/cpp/pc_lint.vim | 26 - .../syntastic/syntax_checkers/cs/mcs.vim | 39 - .../syntastic/syntax_checkers/css/csslint.vim | 47 - .../syntastic/syntax_checkers/css/phpcs.vim | 25 - .../syntax_checkers/css/prettycss.vim | 61 -- .../syntastic/syntax_checkers/css/recess.vim | 26 - .../syntax_checkers/cucumber/cucumber.vim | 42 - .../syntastic/syntax_checkers/cuda/nvcc.vim | 66 -- .../syntastic/syntax_checkers/d/dmd.vim | 60 -- .../syntax_checkers/dart/dartanalyzer.vim | 76 -- .../syntastic/syntax_checkers/docbk/igor.vim | 55 -- .../syntax_checkers/docbk/xmllint.vim | 25 - .../syntax_checkers/dustjs/swiffer.vim | 38 - .../syntax_checkers/elixir/elixir.vim | 59 -- .../erlang/erlang_check_file.erl | 66 -- .../syntax_checkers/erlang/escript.vim | 61 -- .../syntax_checkers/erlang/syntaxerl.vim | 42 - .../syntastic/syntax_checkers/eruby/ruby.vim | 78 -- .../syntax_checkers/fortran/gfortran.vim | 52 -- .../syntastic/syntax_checkers/glsl/cgc.vim | 77 -- .../syntastic/syntax_checkers/go/go.vim | 92 -- .../syntastic/syntax_checkers/go/gofmt.vim | 45 - .../syntastic/syntax_checkers/go/golint.vim | 42 - .../syntastic/syntax_checkers/go/gotype.vim | 46 - .../syntastic/syntax_checkers/go/govet.vim | 51 -- .../syntastic/syntax_checkers/haml/haml.vim | 46 - .../syntax_checkers/haml/haml_lint.vim | 37 - .../syntax_checkers/handlebars/handlebars.vim | 43 - .../syntax_checkers/haskell/ghc-mod.vim | 83 -- .../syntax_checkers/haskell/hdevtools.vim | 56 -- .../syntax_checkers/haskell/hlint.vim | 39 - .../syntax_checkers/haskell/scan.vim | 43 - .../syntastic/syntax_checkers/haxe/haxe.vim | 63 -- .../syntastic/syntax_checkers/hss/hss.vim | 38 - .../syntastic/syntax_checkers/html/jshint.vim | 54 -- .../syntastic/syntax_checkers/html/tidy.vim | 208 ----- .../syntax_checkers/html/validator.vim | 69 -- .../syntastic/syntax_checkers/html/w3.vim | 62 -- .../syntax_checkers/java/checkstyle.vim | 77 -- .../syntastic/syntax_checkers/java/javac.vim | 415 --------- .../javascript/closurecompiler.vim | 76 -- .../syntax_checkers/javascript/eslint.vim | 64 -- .../syntax_checkers/javascript/gjslint.vim | 45 - .../syntax_checkers/javascript/jscs.vim | 44 - .../syntax_checkers/javascript/jshint.vim | 64 -- .../syntax_checkers/javascript/jsl.vim | 48 - .../syntax_checkers/javascript/jslint.vim | 51 -- .../syntax_checkers/javascript/jsxhint.vim | 51 -- .../syntax_checkers/json/jsonlint.vim | 43 - .../syntax_checkers/json/jsonval.vim | 41 - .../syntax_checkers/less/less-lint.coffee | 41 - .../syntax_checkers/less/less-lint.js | 57 -- .../syntastic/syntax_checkers/less/lessc.vim | 66 -- .../syntastic/syntax_checkers/less/recess.vim | 44 - .../syntastic/syntax_checkers/lex/flex.vim | 50 -- .../syntastic/syntax_checkers/limbo/limbo.vim | 46 - .../syntastic/syntax_checkers/lisp/clisp.vim | 57 -- .../syntastic/syntax_checkers/llvm/llvm.vim | 39 - .../syntastic/syntax_checkers/lua/luac.vim | 65 -- .../syntax_checkers/markdown/mdl.vim | 45 - .../syntax_checkers/matlab/mlint.vim | 41 - .../syntastic/syntax_checkers/nasm/nasm.vim | 41 - .../syntastic/syntax_checkers/nroff/igor.vim | 25 - .../syntax_checkers/nroff/mandoc.vim | 41 - .../syntastic/syntax_checkers/objc/gcc.vim | 59 -- .../syntastic/syntax_checkers/objc/oclint.vim | 24 - .../syntastic/syntax_checkers/objcpp/gcc.vim | 59 -- .../syntax_checkers/objcpp/oclint.vim | 24 - .../syntax_checkers/ocaml/camlp4o.vim | 118 --- .../syntastic/syntax_checkers/perl/perl.vim | 99 --- .../syntax_checkers/perl/perlcritic.vim | 52 -- .../syntax_checkers/perl/podchecker.vim | 25 - .../syntastic/syntax_checkers/php/php.vim | 52 -- .../syntastic/syntax_checkers/php/phpcs.vim | 43 - .../syntastic/syntax_checkers/php/phplint.vim | 91 -- .../syntastic/syntax_checkers/php/phpmd.vim | 77 -- .../syntastic/syntax_checkers/po/msgfmt.vim | 50 -- .../syntax_checkers/pod/podchecker.vim | 51 -- .../syntax_checkers/puppet/puppet.vim | 53 -- .../syntax_checkers/puppet/puppetlint.vim | 55 -- .../syntax_checkers/python/compile.py | 13 - .../syntax_checkers/python/flake8.vim | 72 -- .../syntax_checkers/python/frosted.vim | 63 -- .../syntastic/syntax_checkers/python/mypy.vim | 35 - .../syntax_checkers/python/pep257.vim | 61 -- .../syntastic/syntax_checkers/python/pep8.vim | 48 - .../syntax_checkers/python/prospector.vim | 78 -- .../syntax_checkers/python/py3kwarn.vim | 36 - .../syntax_checkers/python/pyflakes.vim | 74 -- .../syntax_checkers/python/pylama.vim | 74 -- .../syntax_checkers/python/pylint.vim | 98 -- .../syntax_checkers/python/python.vim | 55 -- .../syntastic/syntax_checkers/r/lint.vim | 83 -- .../syntastic/syntax_checkers/r/svtools.vim | 78 -- .../syntax_checkers/racket/code-ayatollah.vim | 62 -- .../syntax_checkers/racket/racket.vim | 50 -- .../syntastic/syntax_checkers/rnc/rnv.vim | 38 - .../syntax_checkers/rst/rst2pseudoxml.vim | 62 -- .../syntax_checkers/rst/rstcheck.vim | 50 -- .../syntastic/syntax_checkers/ruby/jruby.vim | 50 -- .../syntax_checkers/ruby/macruby.vim | 47 - .../syntastic/syntax_checkers/ruby/mri.vim | 80 -- .../syntastic/syntax_checkers/ruby/reek.vim | 59 -- .../syntax_checkers/ruby/rubocop.vim | 61 -- .../syntax_checkers/ruby/rubylint.vim | 45 - .../syntastic/syntax_checkers/sass/sass.vim | 84 -- .../syntastic/syntax_checkers/sass/sassc.vim | 38 - .../syntastic/syntax_checkers/scala/fsc.vim | 48 - .../syntax_checkers/scala/scalac.vim | 43 - .../syntax_checkers/scala/scalastyle.vim | 77 -- .../syntastic/syntax_checkers/scss/sass.vim | 25 - .../syntastic/syntax_checkers/scss/sassc.vim | 25 - .../syntax_checkers/scss/scss_lint.vim | 61 -- .../syntastic/syntax_checkers/sh/bashate.vim | 48 - .../syntax_checkers/sh/checkbashisms.vim | 42 - .../syntastic/syntax_checkers/sh/sh.vim | 89 -- .../syntax_checkers/sh/shellcheck.vim | 44 - .../syntastic/syntax_checkers/slim/slimrb.vim | 56 -- .../syntax_checkers/spec/rpmlint.vim | 43 - .../syntax_checkers/tcl/nagelfar.vim | 44 - .../syntastic/syntax_checkers/tex/chktex.vim | 52 -- .../syntastic/syntax_checkers/tex/lacheck.vim | 40 - .../syntax_checkers/texinfo/makeinfo.vim | 47 - .../syntax_checkers/text/atdtool.vim | 61 -- .../syntastic/syntax_checkers/text/igor.vim | 25 - .../syntax_checkers/text/language_check.vim | 37 - .../syntax_checkers/twig/twiglint.vim | 41 - .../syntax_checkers/typescript/tsc.vim | 43 - .../syntax_checkers/typescript/tslint.vim | 46 - .../syntastic/syntax_checkers/vala/valac.vim | 80 -- .../syntax_checkers/verilog/verilator.vim | 42 - .../syntastic/syntax_checkers/vhdl/ghdl.vim | 38 - .../syntastic/syntax_checkers/vim/vimlint.vim | 101 --- .../syntax_checkers/xhtml/jshint.vim | 25 - .../syntastic/syntax_checkers/xhtml/tidy.vim | 89 -- .../syntastic/syntax_checkers/xml/plutil.vim | 42 - .../syntastic/syntax_checkers/xml/xmllint.vim | 52 -- .../syntax_checkers/xslt/xmllint.vim | 25 - .../syntastic/syntax_checkers/yacc/bison.vim | 55 -- .../syntastic/syntax_checkers/yaml/jsyaml.vim | 49 - .../syntastic/syntax_checkers/yaml/yamlxs.vim | 72 -- .../syntax_checkers/z80/z80syntaxchecker.vim | 39 - .../syntastic/syntax_checkers/zpt/zptlint.vim | 42 - .../syntax_checkers/zsh/shellcheck.vim | 25 - .../syntastic/syntax_checkers/zsh/zsh.vim | 38 - vim/vim.symlink/bundle/tlib_vim | 1 - vim/vim.symlink/bundle/vim-addon-mw-utils | 1 - .../bundle/vim-javascript/CONTRIBUTING.md | 18 - .../bundle/vim-javascript/README.md | 92 -- .../bundle/vim-javascript/extras/ctags | 8 - .../vim-javascript/ftdetect/javascript.vim | 10 - .../vim-javascript/indent/javascript.vim | 501 ----------- .../vim-javascript/syntax/javascript.vim | 331 ------- vim/vim.symlink/bundle/vim-jsx/README.md | 56 -- .../vim-jsx/after/ftdetect/javascript.vim | 10 - .../vim-jsx/after/ftplugin/javascript.vim | 15 - .../vim-jsx/after/indent/javascript.vim | 98 -- .../bundle/vim-jsx/after/jsx-config.vim | 33 - .../vim-jsx/after/syntax/javascript.vim | 43 - .../bundle/vim-mustache-handlebars/README.md | 130 --- .../vim-mustache-handlebars/example.mustache | 66 -- .../ftdetect/mustache.vim | 4 - .../ftplugin/mustache.vim | 120 --- .../syntax/mustache.vim | 89 -- 233 files changed, 23 insertions(+), 17393 deletions(-) delete mode 160000 vim/vim.symlink/bundle/pick.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/.gitignore delete mode 100644 vim/vim.symlink/bundle/rust.vim/README.md delete mode 100644 vim/vim.symlink/bundle/rust.vim/after/syntax/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/autoload/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/compiler/cargo.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/compiler/rustc.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/doc/rust.txt delete mode 100644 vim/vim.symlink/bundle/rust.vim/ftdetect/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/ftplugin/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/indent/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/plugin/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/syntax/rust.vim delete mode 100644 vim/vim.symlink/bundle/rust.vim/syntax_checkers/rust/rustc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/.gitignore delete mode 100644 vim/vim.symlink/bundle/syntastic/CONTRIBUTING.md delete mode 100644 vim/vim.symlink/bundle/syntastic/LICENCE delete mode 100644 vim/vim.symlink/bundle/syntastic/README.markdown delete mode 100644 vim/vim.symlink/bundle/syntastic/_assets/screenshot_1.png delete mode 100644 vim/vim.symlink/bundle/syntastic/autoload/syntastic/c.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/autoload/syntastic/log.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/autoload/syntastic/postprocess.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/autoload/syntastic/preprocess.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/autoload/syntastic/util.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/doc/syntastic.txt delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/autoloclist.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/balloons.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/checker.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/cursor.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/highlighting.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/loclist.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/modemap.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/notifiers.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/registry.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/plugin/syntastic/signs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/actionscript/mxmlc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ada/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/applescript/osacompile.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/asciidoc/asciidoc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/asm/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/bemhtml/bemhtmllint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/bro/bro.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/avrgcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/checkpatch.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/clang_check.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/clang_tidy.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/cppcheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/make.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/oclint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/pc_lint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/sparse.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/c/splint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cabal/cabal.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/chef/foodcritic.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/co/coco.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cobol/cobc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/coffee/coffee.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/coffee/coffeelint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/coq/coqtop.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/clang_check.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/clang_tidy.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/cppcheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/cpplint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/oclint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cpp/pc_lint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cs/mcs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/css/csslint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/css/phpcs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/css/prettycss.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/css/recess.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cucumber/cucumber.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/cuda/nvcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/d/dmd.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/dart/dartanalyzer.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/docbk/igor.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/docbk/xmllint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/dustjs/swiffer.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/elixir/elixir.vim delete mode 100755 vim/vim.symlink/bundle/syntastic/syntax_checkers/erlang/erlang_check_file.erl delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/erlang/escript.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/erlang/syntaxerl.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/eruby/ruby.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/fortran/gfortran.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/glsl/cgc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/go/go.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/go/gofmt.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/go/golint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/go/gotype.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/go/govet.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haml/haml.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haml/haml_lint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/handlebars/handlebars.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haskell/ghc-mod.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haskell/hdevtools.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haskell/hlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haskell/scan.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/haxe/haxe.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/hss/hss.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/html/jshint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/html/tidy.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/html/validator.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/html/w3.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/java/checkstyle.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/java/javac.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/closurecompiler.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/eslint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/gjslint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/jscs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/jshint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/jsl.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/jslint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/javascript/jsxhint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/json/jsonlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/json/jsonval.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/less/less-lint.coffee delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/less/less-lint.js delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/less/lessc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/less/recess.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/lex/flex.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/limbo/limbo.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/lisp/clisp.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/llvm/llvm.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/lua/luac.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/markdown/mdl.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/matlab/mlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/nasm/nasm.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/nroff/igor.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/nroff/mandoc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/objc/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/objc/oclint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/objcpp/gcc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/objcpp/oclint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ocaml/camlp4o.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/perl/perl.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/perl/perlcritic.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/perl/podchecker.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/php/php.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/php/phpcs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/php/phplint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/php/phpmd.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/po/msgfmt.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/pod/podchecker.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/puppet/puppet.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/puppet/puppetlint.vim delete mode 100755 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/compile.py delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/flake8.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/frosted.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/mypy.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/pep257.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/pep8.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/prospector.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/py3kwarn.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/pyflakes.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/pylama.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/pylint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/python/python.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/r/lint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/r/svtools.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/racket/code-ayatollah.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/racket/racket.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/rnc/rnv.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/rst/rst2pseudoxml.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/rst/rstcheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/jruby.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/macruby.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/mri.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/reek.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/rubocop.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/ruby/rubylint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sass/sass.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sass/sassc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scala/fsc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scala/scalac.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scala/scalastyle.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scss/sass.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scss/sassc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/scss/scss_lint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sh/bashate.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sh/checkbashisms.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sh/sh.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/sh/shellcheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/slim/slimrb.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/spec/rpmlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/tcl/nagelfar.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/tex/chktex.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/tex/lacheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/texinfo/makeinfo.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/text/atdtool.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/text/igor.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/text/language_check.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/twig/twiglint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/typescript/tsc.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/typescript/tslint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/vala/valac.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/verilog/verilator.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/vhdl/ghdl.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/vim/vimlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/xhtml/jshint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/xhtml/tidy.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/xml/plutil.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/xml/xmllint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/xslt/xmllint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/yacc/bison.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/yaml/jsyaml.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/yaml/yamlxs.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/z80/z80syntaxchecker.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/zpt/zptlint.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/zsh/shellcheck.vim delete mode 100644 vim/vim.symlink/bundle/syntastic/syntax_checkers/zsh/zsh.vim delete mode 160000 vim/vim.symlink/bundle/tlib_vim delete mode 160000 vim/vim.symlink/bundle/vim-addon-mw-utils delete mode 100644 vim/vim.symlink/bundle/vim-javascript/CONTRIBUTING.md delete mode 100644 vim/vim.symlink/bundle/vim-javascript/README.md delete mode 100644 vim/vim.symlink/bundle/vim-javascript/extras/ctags delete mode 100644 vim/vim.symlink/bundle/vim-javascript/ftdetect/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-javascript/indent/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-javascript/syntax/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-jsx/README.md delete mode 100644 vim/vim.symlink/bundle/vim-jsx/after/ftdetect/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-jsx/after/ftplugin/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-jsx/after/indent/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-jsx/after/jsx-config.vim delete mode 100644 vim/vim.symlink/bundle/vim-jsx/after/syntax/javascript.vim delete mode 100644 vim/vim.symlink/bundle/vim-mustache-handlebars/README.md delete mode 100644 vim/vim.symlink/bundle/vim-mustache-handlebars/example.mustache delete mode 100644 vim/vim.symlink/bundle/vim-mustache-handlebars/ftdetect/mustache.vim delete mode 100644 vim/vim.symlink/bundle/vim-mustache-handlebars/ftplugin/mustache.vim delete mode 100644 vim/vim.symlink/bundle/vim-mustache-handlebars/syntax/mustache.vim 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 c1b69f4ba26a2092aa4e9d42d2fa3ee08c6ab28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92425 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 JN<~Zfe*w}x_n80y 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___