mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e166f741ef | ||
|
|
d4fcef1aa8 | ||
|
|
7972e8eea1 | ||
|
|
6ed481e463 | ||
|
|
c1e1870a3d | ||
|
|
f0d6ecff07 | ||
|
|
15e5df246e | ||
|
|
94ababe91f | ||
|
|
080b8cdc60 | ||
|
|
e47af23f64 | ||
|
|
8f5134aef8 | ||
|
|
be8d039e02 | ||
|
|
38ce8e9cb6 | ||
|
|
55ad5a982a | ||
|
|
b2055afaa7 | ||
|
|
63a175357a | ||
|
|
25db54573a | ||
|
|
d1bfe50419 |
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -18,4 +18,4 @@ jobs:
|
|||||||
vim --version
|
vim --version
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: scripts/test
|
run: make test
|
||||||
|
|||||||
10
Makefile
Normal file
10
Makefile
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.PHONY: all test dev
|
||||||
|
|
||||||
|
all:
|
||||||
|
@ scripts/build
|
||||||
|
|
||||||
|
test:
|
||||||
|
@ scripts/test
|
||||||
|
|
||||||
|
dev:
|
||||||
|
@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\nscripts/test_extensions.vim" | DEV=1 entr bash -c 'make && make test'
|
||||||
358
README.md
358
README.md
@@ -7,7 +7,8 @@ A collection of language packs for Vim.
|
|||||||
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
||||||
|
|
||||||
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
||||||
- It **installs and updates 120+ times faster** than the <!--Package Count-->156<!--/Package Count--> packages it consists of.
|
- It **installs and updates 120+ times faster** than the <!--Package Count-->190<!--/Package Count--> packages it consists of.
|
||||||
|
- It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect).
|
||||||
- Solid syntax and indentation support (other features skipped). Only the best language packs.
|
- Solid syntax and indentation support (other features skipped). Only the best language packs.
|
||||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||||
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||||
@@ -42,186 +43,221 @@ If you need full functionality of any plugin, please use it directly with your p
|
|||||||
## Language packs
|
## Language packs
|
||||||
|
|
||||||
<!--Language Packs-->
|
<!--Language Packs-->
|
||||||
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl) (syntax)
|
- [8th](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin)
|
- [a2ps](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax, ctags)
|
- [a65](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [applescript](https://github.com/mityu/vim-applescript) (syntax, indent)
|
- [aap](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent)
|
- [abap](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [asciidoc](https://github.com/asciidoc/vim-asciidoc) (syntax)
|
- [abaqus](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey) (indent)
|
- [abc](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin)
|
- [abel](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [brewfile](https://github.com/bfontaine/Brewfile.vim) (syntax)
|
- [acedb](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl)
|
||||||
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
|
- [ada](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [caddyfile](https://github.com/isobit/vim-caddyfile) (syntax, indent, ftplugin)
|
- [ahdl](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [carp](https://github.com/hellerve/carp-vim) (syntax)
|
- [aidl](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin)
|
- [alsaconf](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin)
|
- [aml](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent)
|
- [ampl](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, compiler, indent, autoload, ftplugin)
|
- [ansible](https://github.com/pearofducks/ansible-vim)
|
||||||
- [cql](https://github.com/elubow/cql-vim) (syntax)
|
- [ant](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin)
|
- [apache](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin)
|
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim)
|
||||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, autoload, ftplugin)
|
- [applescript](https://github.com/mityu/vim-applescript)
|
||||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin)
|
- [aptconf](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [cue](https://github.com/mgrabovsky/vim-cuesheet) (syntax)
|
- [arch](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin)
|
- [arduino](https://github.com/sudar/vim-arduino-syntax)
|
||||||
- [dhall](https://github.com/vmchale/dhall-vim) (syntax, ftplugin)
|
- [art](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [dlang](https://github.com/JesseKPhillips/d.vim) (syntax, indent)
|
- [asciidoc](https://github.com/asciidoc/vim-asciidoc)
|
||||||
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin)
|
- [asn](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin)
|
- [aspperl](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [elm](https://github.com/andys8/vim-elm-syntax) (syntax, indent)
|
- [aspvbs](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin)
|
- [atlas](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
|
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey)
|
||||||
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent)
|
- [autoit](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [fennel](https://github.com/bakpakin/fennel.vim) (syntax, indent, ftplugin)
|
- [automake](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [ferm](https://github.com/vim-scripts/ferm.vim) (syntax)
|
- [ave](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [fish](https://github.com/georgewitteman/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
|
- [awk](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax)
|
- [blade](https://github.com/jwalton512/vim-blade)
|
||||||
- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent)
|
- [brewfile](https://github.com/bfontaine/Brewfile.vim)
|
||||||
- [gdscript](https://github.com/calviken/vim-gdscript3) (syntax, indent)
|
- [c/c++](https://github.com/vim-jp/vim-cpp)
|
||||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
|
- [caddyfile](https://github.com/isobit/vim-caddyfile)
|
||||||
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent)
|
- [carp](https://github.com/hellerve/carp-vim)
|
||||||
- [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax)
|
- [cjsx](https://github.com/mtscout6/vim-cjsx)
|
||||||
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
|
- [clojure](https://github.com/guns/vim-clojure-static)
|
||||||
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
|
- [cmake](https://github.com/pboettch/vim-cmake-syntax)
|
||||||
- [gradle](https://github.com/tfnico/vim-gradle) (compiler)
|
- [coffee-script](https://github.com/kchmck/vim-coffee-script)
|
||||||
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after)
|
- [cql](https://github.com/elubow/cql-vim)
|
||||||
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
|
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim)
|
||||||
- [handlebars](https://github.com/sheerun/vim-mustache-handlebars) (syntax, indent, ftplugin)
|
- [crystal](https://github.com/rhysd/vim-crystal)
|
||||||
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax)
|
- [csv](https://github.com/chrisbra/csv.vim)
|
||||||
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin)
|
- [cucumber](https://github.com/tpope/vim-cucumber)
|
||||||
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax)
|
- [cue](https://github.com/mgrabovsky/vim-cuesheet)
|
||||||
- [hcl](https://github.com/b4b4r07/vim-hcl) (syntax, indent, ftplugin)
|
- [dart](https://github.com/dart-lang/dart-vim-plugin)
|
||||||
- [helm](https://github.com/towolf/vim-helm) (syntax)
|
- [dhall](https://github.com/vmchale/dhall-vim)
|
||||||
- [hive](https://github.com/zebradil/hive.vim) (syntax, ftplugin)
|
- [dlang](https://github.com/JesseKPhillips/d.vim)
|
||||||
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
|
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim)
|
||||||
- [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin)
|
- [elf](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [icalendar](https://github.com/chutzpah/icalendar.vim) (syntax)
|
- [elixir](https://github.com/elixir-lang/vim-elixir)
|
||||||
- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, ftplugin)
|
- [elm](https://github.com/andys8/vim-elm-syntax)
|
||||||
- [ion](https://github.com/vmchale/ion-vim) (syntax, ftplugin)
|
- [emberscript](https://github.com/yalesov/vim-ember-script)
|
||||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftplugin, extras)
|
- [emblem](https://github.com/yalesov/vim-emblem)
|
||||||
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent)
|
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime)
|
||||||
- [jinja](https://github.com/lepture/vim-jinja) (syntax, indent)
|
- [fennel](https://github.com/bakpakin/fennel.vim)
|
||||||
- [jq](https://github.com/vito-c/jq.vim) (syntax, ftplugin)
|
- [ferm](https://github.com/vim-scripts/ferm.vim)
|
||||||
- [json5](https://github.com/GutenYe/json5.vim) (syntax)
|
- [fish](https://github.com/georgewitteman/vim-fish)
|
||||||
- [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin)
|
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers)
|
||||||
- [jsonnet](https://github.com/google/vim-jsonnet) (syntax, autoload, ftplugin)
|
- [forth](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
|
- [fsharp](https://github.com/ionide/Ionide-vim)
|
||||||
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after)
|
- [gdscript](https://github.com/calviken/vim-gdscript3)
|
||||||
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin)
|
- [git](https://github.com/tpope/vim-git)
|
||||||
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
|
- [glsl](https://github.com/tikhomirov/vim-glsl)
|
||||||
- [ledger](https://github.com/ledger/vim-ledger) (syntax, compiler, indent)
|
- [gmpl](https://github.com/maelvalais/gmpl.vim)
|
||||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
|
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting)
|
||||||
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (syntax, indent, compiler, ftplugin)
|
- [go](https://github.com/fatih/vim-go)
|
||||||
- [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
|
- [gradle](https://github.com/tfnico/vim-gradle)
|
||||||
- [llvm](https://github.com/rhysd/vim-llvm) (syntax, indent, ftplugin)
|
- [graphql](https://github.com/jparise/vim-graphql)
|
||||||
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax)
|
- [grub](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
|
- [haml](https://github.com/sheerun/vim-haml)
|
||||||
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
|
- [handlebars](https://github.com/sheerun/vim-mustache-handlebars)
|
||||||
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, ftplugin)
|
- [haproxy](https://github.com/CH-DanReif/haproxy.vim)
|
||||||
- [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin)
|
- [haskell](https://github.com/neovimhaskell/haskell-vim)
|
||||||
- [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax)
|
- [haxe](https://github.com/yaymukund/vim-haxe)
|
||||||
- [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin)
|
- [hcl](https://github.com/b4b4r07/vim-hcl)
|
||||||
- [moonscript](https://github.com/leafo/moonscript-vim) (syntax, indent, ftplugin)
|
- [helm](https://github.com/towolf/vim-helm)
|
||||||
- [nginx](https://github.com/chr4/nginx.vim) (syntax, indent, ftplugin)
|
- [help](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent)
|
- [hive](https://github.com/zebradil/hive.vim)
|
||||||
- [nix](https://github.com/LnL7/vim-nix) (syntax, indent, compiler, ftplugin)
|
- [html5](https://github.com/othree/html5.vim)
|
||||||
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
- [i3](https://github.com/mboughaba/i3config.vim)
|
||||||
- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, compiler, ftplugin)
|
- [icalendar](https://github.com/chutzpah/icalendar.vim)
|
||||||
- [octave](https://github.com/McSinyx/vim-octave) (syntax, indent)
|
- [idris](https://github.com/idris-hackers/idris-vim)
|
||||||
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin)
|
- [ion](https://github.com/vmchale/ion-vim)
|
||||||
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin)
|
- [javascript](https://github.com/pangloss/vim-javascript)
|
||||||
- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent)
|
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax)
|
||||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
- [jinja](https://github.com/lepture/vim-jinja)
|
||||||
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin)
|
- [jq](https://github.com/vito-c/jq.vim)
|
||||||
- [pony](https://github.com/jakwings/vim-pony) (syntax, indent, autoload, ftplugin)
|
- [json5](https://github.com/GutenYe/json5.vim)
|
||||||
- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, compiler, ftplugin)
|
- [json](https://github.com/elzr/vim-json)
|
||||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent)
|
- [jsonnet](https://github.com/google/vim-jsonnet)
|
||||||
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin)
|
- [jst](https://github.com/briancollins/vim-jst)
|
||||||
- [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin, ctags)
|
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty)
|
||||||
- [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin)
|
- [julia](https://github.com/JuliaEditorSupport/julia-vim)
|
||||||
- [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload)
|
- [kotlin](https://github.com/udalov/kotlin-vim)
|
||||||
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent)
|
- [ledger](https://github.com/ledger/vim-ledger)
|
||||||
- [python](https://github.com/vim-python/python-syntax) (syntax)
|
- [less](https://github.com/groenewege/vim-less)
|
||||||
- [qmake](https://github.com/artoj/qmake-syntax-vim) (syntax)
|
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond)
|
||||||
- [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin)
|
- [livescript](https://github.com/gkz/vim-ls)
|
||||||
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax)
|
- [llvm](https://github.com/rhysd/vim-llvm)
|
||||||
- [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, ftplugin)
|
- [log](https://github.com/MTDL9/vim-log-highlighting)
|
||||||
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
|
- [lua](https://github.com/tbastos/vim-lua)
|
||||||
- [raku](https://github.com/Raku/vim-raku) (syntax, indent, ftplugin)
|
- [m4](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin)
|
- [mako](https://github.com/sophacles/vim-bundle-mako)
|
||||||
- [razor](https://github.com/adamclerk/vim-razor) (syntax, indent, ftplugin)
|
- [markdown](https://github.com/plasticboy/vim-markdown)
|
||||||
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent)
|
- [mathematica](https://github.com/voldikss/vim-mma)
|
||||||
- [requirements](https://github.com/raimon49/requirements.txt.vim) (syntax, autoload)
|
- [mdx](https://github.com/jxnblk/vim-mdx-js)
|
||||||
- [rspec](https://github.com/keith/rspec.vim) (syntax)
|
- [meson](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim)
|
||||||
- [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, indent, autoload, ftplugin)
|
- [moonscript](https://github.com/leafo/moonscript-vim)
|
||||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin)
|
- [murphi](https://github.com/vim/vim/tree/master/runtime)
|
||||||
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ctags)
|
- [nginx](https://github.com/chr4/nginx.vim)
|
||||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax)
|
- [nim](https://github.com/zah/nim.vim)
|
||||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ctags)
|
- [nix](https://github.com/LnL7/vim-nix)
|
||||||
- [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, indent, ftplugin)
|
- [objc](https://github.com/b4winckler/vim-objc)
|
||||||
- [sh](https://github.com/arzg/vim-sh) (syntax)
|
- [ocaml](https://github.com/rgrinberg/vim-ocaml)
|
||||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftplugin)
|
- [octave](https://github.com/McSinyx/vim-octave)
|
||||||
- [slime](https://github.com/slime-lang/vim-slime-syntax) (syntax, indent)
|
- [opencl](https://github.com/petRUShka/vim-opencl)
|
||||||
- [smt2](https://github.com/bohlender/vim-smt2) (syntax, autoload, ftplugin)
|
- [perl](https://github.com/vim-perl/vim-perl)
|
||||||
- [solidity](https://github.com/tomlion/vim-solidity) (syntax, indent, ftplugin)
|
- [pgsql](https://github.com/lifepillar/pgsql.vim)
|
||||||
- [sql](https://github.com/shmup/vim-sql-syntax) (syntax)
|
- [php](https://github.com/StanAngeloff/php.vim)
|
||||||
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)
|
- [plantuml](https://github.com/aklt/plantuml-syntax)
|
||||||
- [svelte](https://github.com/evanleck/vim-svelte) (syntax, indent, ftplugin)
|
- [pony](https://github.com/jakwings/vim-pony)
|
||||||
- [svg-indent](https://github.com/jasonshell/vim-svg-indent) (indent)
|
- [powershell](https://github.com/PProvost/vim-ps1)
|
||||||
- [svg](https://github.com/vim-scripts/svg.vim) (syntax)
|
- [protobuf](https://github.com/uarun/vim-protobuf)
|
||||||
- [swift](https://github.com/keith/swift.vim) (syntax, indent, compiler, ftplugin, ctags)
|
- [pug](https://github.com/digitaltoad/vim-pug)
|
||||||
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax)
|
- [puppet](https://github.com/rodjek/vim-puppet)
|
||||||
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax, ftplugin)
|
- [purescript](https://github.com/purescript-contrib/purescript-vim)
|
||||||
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, autoload, ftplugin)
|
- [python-compiler](https://github.com/aliev/vim-compiler-python)
|
||||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin)
|
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent)
|
||||||
- [thrift](https://github.com/solarnz/thrift.vim) (syntax)
|
- [python](https://github.com/vim-python/python-syntax)
|
||||||
- [tmux](https://github.com/ericpruitt/tmux.vim) (syntax, ftplugin)
|
- [qmake](https://github.com/artoj/qmake-syntax-vim)
|
||||||
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin)
|
- [qml](https://github.com/peterhoeg/vim-qml)
|
||||||
- [tptp](https://github.com/c-cube/vim-tptp) (syntax)
|
- [r-lang](https://github.com/vim-scripts/R.vim)
|
||||||
- [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin)
|
- [racket](https://github.com/wlangstroth/vim-racket)
|
||||||
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin, ctags)
|
- [ragel](https://github.com/jneen/ragel.vim)
|
||||||
- [unison](https://github.com/unisonweb/unison) (syntax)
|
- [raku](https://github.com/Raku/vim-raku)
|
||||||
- [v](https://github.com/ollykel/v-vim) (syntax, indent, ftplugin)
|
- [raml](https://github.com/IN3D/vim-raml)
|
||||||
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent, ftplugin)
|
- [razor](https://github.com/adamclerk/vim-razor)
|
||||||
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
- [reason](https://github.com/reasonml-editor/vim-reason-plus)
|
||||||
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax)
|
- [requirements](https://github.com/raimon49/requirements.txt.vim)
|
||||||
- [velocity](https://github.com/lepture/vim-velocity) (syntax, indent)
|
- [rspec](https://github.com/keith/rspec.vim)
|
||||||
- [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin)
|
- [rst](https://github.com/marshallward/vim-restructuredtext)
|
||||||
- [vue](https://github.com/posva/vim-vue) (syntax, indent, ftplugin)
|
- [ruby](https://github.com/vim-ruby/vim-ruby)
|
||||||
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) (syntax)
|
- [rust](https://github.com/rust-lang/rust.vim)
|
||||||
- [xml](https://github.com/amadeus/vim-xml) (syntax)
|
- [sbt](https://github.com/derekwyatt/vim-sbt)
|
||||||
- [xsl](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
- [scala](https://github.com/derekwyatt/vim-scala)
|
||||||
- [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin)
|
- [scss](https://github.com/cakebaker/scss-syntax.vim)
|
||||||
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
|
- [sh](https://github.com/arzg/vim-sh)
|
||||||
- [zephir](https://github.com/xwsoul/vim-zephir) (syntax)
|
- [slim](https://github.com/slim-template/vim-slim)
|
||||||
- [zig](https://github.com/ziglang/zig.vim) (syntax, indent, autoload, ftplugin)
|
- [slime](https://github.com/slime-lang/vim-slime-syntax)
|
||||||
- [zinit](https://github.com/zinit-zsh/zplugin-vim-syntax) (syntax)
|
- [smt2](https://github.com/bohlender/vim-smt2)
|
||||||
|
- [solidity](https://github.com/tomlion/vim-solidity)
|
||||||
|
- [sql](https://github.com/shmup/vim-sql-syntax)
|
||||||
|
- [stylus](https://github.com/wavded/vim-stylus)
|
||||||
|
- [svelte](https://github.com/evanleck/vim-svelte/tree/main)
|
||||||
|
- [svg-indent](https://github.com/jasonshell/vim-svg-indent)
|
||||||
|
- [svg](https://github.com/vim-scripts/svg.vim)
|
||||||
|
- [swift](https://github.com/keith/swift.vim)
|
||||||
|
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc)
|
||||||
|
- [systemd](https://github.com/wgwoods/vim-systemd-syntax)
|
||||||
|
- [terraform](https://github.com/hashivim/vim-terraform)
|
||||||
|
- [textile](https://github.com/timcharper/textile.vim)
|
||||||
|
- [thrift](https://github.com/solarnz/thrift.vim)
|
||||||
|
- [tmux](https://github.com/ericpruitt/tmux.vim/tree/master/vim)
|
||||||
|
- [toml](https://github.com/cespare/vim-toml)
|
||||||
|
- [tptp](https://github.com/c-cube/vim-tptp)
|
||||||
|
- [trasys](https://github.com/vim/vim/tree/master/runtime)
|
||||||
|
- [twig](https://github.com/lumiliet/vim-twig)
|
||||||
|
- [typescript](https://github.com/HerringtonDarkholme/yats.vim)
|
||||||
|
- [unison](https://github.com/unisonweb/unison/tree/trunk/editor-support/vim)
|
||||||
|
- [v](https://github.com/ollykel/v-vim)
|
||||||
|
- [vala](https://github.com/arrufat/vala.vim)
|
||||||
|
- [vbnet](https://github.com/vim-scripts/vbnet.vim)
|
||||||
|
- [vcl](https://github.com/smerrill/vcl-vim-plugin)
|
||||||
|
- [velocity](https://github.com/lepture/vim-velocity)
|
||||||
|
- [vmasm](https://github.com/vim/vim/tree/master/runtime)
|
||||||
|
- [vue](https://github.com/posva/vim-vue)
|
||||||
|
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax)
|
||||||
|
- [xml](https://github.com/amadeus/vim-xml)
|
||||||
|
- [xsl](https://github.com/vim-scripts/XSLT-syntax)
|
||||||
|
- [yaml](https://github.com/stephpy/vim-yaml)
|
||||||
|
- [yard](https://github.com/sheerun/vim-yardoc)
|
||||||
|
- [zephir](https://github.com/xwsoul/vim-zephir)
|
||||||
|
- [zig](https://github.com/ziglang/zig.vim)
|
||||||
|
- [zinit](https://github.com/zinit-zsh/zplugin-vim-syntax)
|
||||||
<!--/Language Packs-->
|
<!--/Language Packs-->
|
||||||
|
|
||||||
## Updating
|
## Updating
|
||||||
|
|
||||||
You can either wait for new patch release with updates or run the `scripts/build` script by yourself.
|
You can either wait for new patch release with updates or run `make` by yourself.
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
Please make sure you have `syntax on` in your `.vimrc`, otherwise syntax files are not loaded at all.
|
Please make sure you have `syntax on` in your `.vimrc` (or use something like [sheerun/vimrc](https://github.com/sheerun/vimrc))
|
||||||
|
|
||||||
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
|
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
" ~/.vimrc, declare this variable before polyglot is loaded
|
|
||||||
let g:polyglot_disabled = ['css']
|
let g:polyglot_disabled = ['css']
|
||||||
```
|
```
|
||||||
|
|
||||||
|
*Please declare this variable before polyglot is loaded (at the top of .vimrc)*
|
||||||
|
|
||||||
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are loaded lazily, on demand.
|
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are loaded lazily, on demand.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Language packs are periodically updated using automated `scripts/build` script.
|
Language packs are periodically updated using automated `scripts/build` script.
|
||||||
|
|
||||||
Feel free to add your language to `packages.yaml`, and send pull-request. Please don't run `scripts/build` and include that in your PR, send just changes to `packages.yaml` and `build` script if really necessary. You can run `scripts/test` to run rough tests.
|
Feel free to add your language to `packages.yaml`, and send pull-request. Please don't run `make` and include that in your PR, send just changes to `packages.yaml` and build scripts if really necessary. You can run `make test` to run rough tests.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,50 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
||||||
|
|
||||||
|
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
|
||||||
|
"
|
||||||
|
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
" of this software and associated documentation files (the "Software"), to
|
||||||
|
" deal in the Software without restriction, including without limitation the
|
||||||
|
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
" sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
" furnished to do so, subject to the following conditions:
|
||||||
|
"
|
||||||
|
" The above copyright notice and this permission notice shall be included in
|
||||||
|
" all copies or substantial portions of the Software.
|
||||||
|
"
|
||||||
|
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
" IN THE SOFTWARE.
|
||||||
|
"
|
||||||
|
" Language: GraphQL
|
||||||
|
" Maintainer: Jon Parise <jon@indelible.org>
|
||||||
|
|
||||||
|
runtime! indent/graphql.vim
|
||||||
|
|
||||||
|
" Don't redefine our function and also require the standard Javascript indent
|
||||||
|
" function to exist.
|
||||||
|
if exists('*GetJavascriptGraphQLIndent') || !exists('*GetJavascriptIndent')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set the indentexpr with our own version that will call GetGraphQLIndent when
|
||||||
|
" we're inside of a GraphQL string and otherwise defer to GetJavascriptIndent.
|
||||||
|
setlocal indentexpr=GetJavascriptGraphQLIndent()
|
||||||
|
|
||||||
|
function GetJavascriptGraphQLIndent()
|
||||||
|
let l:stack = map(synstack(v:lnum, 1), "synIDattr(v:val,'name')")
|
||||||
|
if !empty(l:stack) && l:stack[0] ==# 'graphqlTemplateString'
|
||||||
|
return GetGraphQLIndent()
|
||||||
|
endif
|
||||||
|
|
||||||
|
return GetJavascriptIndent()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
|
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|||||||
47
after/indent/typescript.vim
Normal file
47
after/indent/typescript.vim
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
||||||
|
|
||||||
|
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
|
||||||
|
"
|
||||||
|
" Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
" of this software and associated documentation files (the "Software"), to
|
||||||
|
" deal in the Software without restriction, including without limitation the
|
||||||
|
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
" sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
" furnished to do so, subject to the following conditions:
|
||||||
|
"
|
||||||
|
" The above copyright notice and this permission notice shall be included in
|
||||||
|
" all copies or substantial portions of the Software.
|
||||||
|
"
|
||||||
|
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
" IN THE SOFTWARE.
|
||||||
|
"
|
||||||
|
" Language: GraphQL
|
||||||
|
" Maintainer: Jon Parise <jon@indelible.org>
|
||||||
|
|
||||||
|
runtime! indent/graphql.vim
|
||||||
|
|
||||||
|
" Don't redefine our function and also require the standard Typescript indent
|
||||||
|
" function to exist.
|
||||||
|
if exists('*GetTypescriptGraphQLIndent') || !exists('*GetTypescriptIndent')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set the indentexpr with our own version that will call GetGraphQLIndent when
|
||||||
|
" we're inside of a GraphQL string and otherwise defer to GetTypescriptIndent.
|
||||||
|
setlocal indentexpr=GetTypescriptGraphQLIndent()
|
||||||
|
|
||||||
|
function GetTypescriptGraphQLIndent()
|
||||||
|
let l:stack = map(synstack(v:lnum, 1), "synIDattr(v:val,'name')")
|
||||||
|
if !empty(l:stack) && l:stack[0] ==# 'graphqlTemplateString'
|
||||||
|
return GetGraphQLIndent()
|
||||||
|
endif
|
||||||
|
|
||||||
|
return GetTypescriptIndent()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,321 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
|
|
||||||
|
|
||||||
" Vim syntax file
|
|
||||||
" Language: C Additions
|
|
||||||
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
|
||||||
" Contributor: Mikhail Wolfson <mywolfson@gmail.com>
|
|
||||||
" URL: http://www.haeggblad.com
|
|
||||||
" Last Change: 6 Sep 2014
|
|
||||||
" Version: 0.3
|
|
||||||
" Changelog:
|
|
||||||
" 0.3 - integration of aftersyntaxc.vim
|
|
||||||
" 0.2 - Cleanup
|
|
||||||
" 0.1 - initial version.
|
|
||||||
"
|
|
||||||
" Syntax highlighting for functions in C.
|
|
||||||
"
|
|
||||||
" Based on:
|
|
||||||
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
" Highlight function names.
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
if !exists('g:cpp_no_function_highlight')
|
|
||||||
syn match cCustomParen transparent "(" contains=cParen contains=cCppParen
|
|
||||||
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
|
||||||
hi def link cCustomFunc Function
|
|
||||||
endif
|
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
" Highlight member variable names.
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
if exists('g:cpp_member_variable_highlight') && g:cpp_member_variable_highlight
|
|
||||||
syn match cCustomDot "\." contained
|
|
||||||
syn match cCustomPtr "->" contained
|
|
||||||
syn match cCustomMemVar "\(\.\|->\)\h\w*" contains=cCustomDot,cCustomPtr
|
|
||||||
hi def link cCustomMemVar Function
|
|
||||||
endif
|
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
" Highlight POSIX functions.
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
if exists('g:cpp_posix_standard') && g:cpp_posix_standard
|
|
||||||
syn keyword cPOSIXFunction socket accept bind connect getsockname
|
|
||||||
syn keyword cPOSIXFunction listen recv recvfrom recvmsg
|
|
||||||
syn keyword cPOSIXFunction send sendto sendmsg setsockopt socketpair
|
|
||||||
syn keyword cPOSIXFunction htonl htons ntohl ntohs
|
|
||||||
syn keyword cPOSIXFunction inet_ntop inet_pton getaddrinfo
|
|
||||||
syn keyword cPOSIXFunction poll select pselect
|
|
||||||
hi def link cPOSIXFunction Function
|
|
||||||
endif
|
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
" Source: aftersyntaxc.vim
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
" Common ANSI-standard functions
|
|
||||||
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
|
|
||||||
syn keyword cAnsiFunction main typeof
|
|
||||||
syn keyword cAnsiFunction open close read write lseek dup dup2
|
|
||||||
syn keyword cAnsiFunction fcntl ioctl
|
|
||||||
syn keyword cAnsiFunction wctrans towctrans towupper
|
|
||||||
syn keyword cAnsiFunction towlower wctype iswctype
|
|
||||||
syn keyword cAnsiFunction iswxdigit iswupper iswspace
|
|
||||||
syn keyword cAnsiFunction iswpunct iswprint iswlower
|
|
||||||
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
|
|
||||||
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
|
|
||||||
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
|
|
||||||
syn keyword cAnsiFunction mbrlen mbsinit wctob
|
|
||||||
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
|
|
||||||
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
|
|
||||||
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
|
|
||||||
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
|
|
||||||
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
|
|
||||||
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
|
|
||||||
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
|
|
||||||
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
|
|
||||||
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
|
|
||||||
syn keyword cAnsiFunction wcstol wcstold wcstof
|
|
||||||
syn keyword cAnsiFunction wcstod ungetwc putwchar
|
|
||||||
syn keyword cAnsiFunction putwc getwchar getwc
|
|
||||||
syn keyword cAnsiFunction fwide fputws fputwc
|
|
||||||
syn keyword cAnsiFunction fgetws fgetwc wscanf
|
|
||||||
syn keyword cAnsiFunction wprintf vwscanf vwprintf
|
|
||||||
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
|
|
||||||
syn keyword cAnsiFunction vfwprintf swscanf swprintf
|
|
||||||
syn keyword cAnsiFunction fwscanf fwprintf zonetime
|
|
||||||
syn keyword cAnsiFunction strfxtime strftime localtime
|
|
||||||
syn keyword cAnsiFunction gmtime ctime asctime
|
|
||||||
syn keyword cAnsiFunction time mkxtime mktime
|
|
||||||
syn keyword cAnsiFunction difftime clock strlen
|
|
||||||
syn keyword cAnsiFunction strerror memset strtok
|
|
||||||
syn keyword cAnsiFunction strstr strspn strrchr
|
|
||||||
syn keyword cAnsiFunction strpbrk strcspn strchr
|
|
||||||
syn keyword cAnsiFunction memchr strxfrm strncmp
|
|
||||||
syn keyword cAnsiFunction strcoll strcmp memcmp
|
|
||||||
syn keyword cAnsiFunction strncat strcat strncpy
|
|
||||||
syn keyword cAnsiFunction strcpy memmove memcpy
|
|
||||||
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
|
|
||||||
syn keyword cAnsiFunction mbtowc mblen lldiv
|
|
||||||
syn keyword cAnsiFunction ldiv div llabs
|
|
||||||
syn keyword cAnsiFunction labs abs qsort
|
|
||||||
"syn keyword cAnsiFunction bsearch system getenv
|
|
||||||
syn keyword cAnsiFunction bsearch getenv
|
|
||||||
syn keyword cAnsiFunction exit atexit abort
|
|
||||||
syn keyword cAnsiFunction realloc malloc free
|
|
||||||
syn keyword cAnsiFunction calloc srand rand
|
|
||||||
syn keyword cAnsiFunction strtoull strtoul strtoll
|
|
||||||
syn keyword cAnsiFunction strtol strtold strtof
|
|
||||||
syn keyword cAnsiFunction strtod atoll atol
|
|
||||||
syn keyword cAnsiFunction atoi atof perror
|
|
||||||
syn keyword cAnsiFunction ferror feof clearerr
|
|
||||||
syn keyword cAnsiFunction rewind ftell fsetpos
|
|
||||||
syn keyword cAnsiFunction fseek fgetpos fwrite
|
|
||||||
syn keyword cAnsiFunction fread ungetc puts
|
|
||||||
syn keyword cAnsiFunction putchar putc gets
|
|
||||||
syn keyword cAnsiFunction getchar getc fputs
|
|
||||||
syn keyword cAnsiFunction fputc fgets fgetc
|
|
||||||
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
|
|
||||||
syn keyword cAnsiFunction vscanf vprintf vfscanf
|
|
||||||
syn keyword cAnsiFunction vfprintf sscanf sprintf
|
|
||||||
syn keyword cAnsiFunction snprintf scanf printf
|
|
||||||
syn keyword cAnsiFunction fscanf fprintf setvbuf
|
|
||||||
syn keyword cAnsiFunction setbuf freopen fopen
|
|
||||||
syn keyword cAnsiFunction fflush fclose tmpnam
|
|
||||||
syn keyword cAnsiFunction tmpfile rename remove
|
|
||||||
syn keyword cAnsiFunction offsetof va_start va_end
|
|
||||||
syn keyword cAnsiFunction va_copy va_arg raise signal
|
|
||||||
syn keyword cAnsiFunction longjmp setjmp isunordered
|
|
||||||
syn keyword cAnsiFunction islessgreater islessequal isless
|
|
||||||
syn keyword cAnsiFunction isgreaterequal isgreater fmal
|
|
||||||
syn keyword cAnsiFunction fmaf fma fminl
|
|
||||||
syn keyword cAnsiFunction fminf fmin fmaxl
|
|
||||||
syn keyword cAnsiFunction fmaxf fmax fdiml
|
|
||||||
syn keyword cAnsiFunction fdimf fdim nextafterxl
|
|
||||||
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
|
|
||||||
syn keyword cAnsiFunction nextafterf nextafter nanl
|
|
||||||
syn keyword cAnsiFunction nanf nan copysignl
|
|
||||||
syn keyword cAnsiFunction copysignf copysign remquol
|
|
||||||
syn keyword cAnsiFunction remquof remquo remainderl
|
|
||||||
syn keyword cAnsiFunction remainderf remainder fmodl
|
|
||||||
syn keyword cAnsiFunction fmodf fmod truncl
|
|
||||||
syn keyword cAnsiFunction truncf trunc llroundl
|
|
||||||
syn keyword cAnsiFunction llroundf llround lroundl
|
|
||||||
syn keyword cAnsiFunction lroundf lround roundl
|
|
||||||
syn keyword cAnsiFunction roundf round llrintl
|
|
||||||
syn keyword cAnsiFunction llrintf llrint lrintl
|
|
||||||
syn keyword cAnsiFunction lrintf lrint rintl
|
|
||||||
syn keyword cAnsiFunction rintf rint nearbyintl
|
|
||||||
syn keyword cAnsiFunction nearbyintf nearbyint floorl
|
|
||||||
syn keyword cAnsiFunction floorf floor ceill
|
|
||||||
syn keyword cAnsiFunction ceilf ceil tgammal
|
|
||||||
syn keyword cAnsiFunction tgammaf tgamma lgammal
|
|
||||||
syn keyword cAnsiFunction lgammaf lgamma erfcl
|
|
||||||
syn keyword cAnsiFunction erfcf erfc erfl
|
|
||||||
syn keyword cAnsiFunction erff erf sqrtl
|
|
||||||
syn keyword cAnsiFunction sqrtf sqrt powl
|
|
||||||
syn keyword cAnsiFunction powf pow hypotl
|
|
||||||
syn keyword cAnsiFunction hypotf hypot fabsl
|
|
||||||
syn keyword cAnsiFunction fabsf fabs cbrtl
|
|
||||||
syn keyword cAnsiFunction cbrtf cbrt scalblnl
|
|
||||||
syn keyword cAnsiFunction scalblnf scalbln scalbnl
|
|
||||||
syn keyword cAnsiFunction scalbnf scalbn modfl
|
|
||||||
syn keyword cAnsiFunction modff modf logbl
|
|
||||||
syn keyword cAnsiFunction logbf logb log2l
|
|
||||||
syn keyword cAnsiFunction log2f log2 log1pl
|
|
||||||
syn keyword cAnsiFunction log1pf log1p log10l
|
|
||||||
syn keyword cAnsiFunction log10f log10 logl
|
|
||||||
syn keyword cAnsiFunction logf log ldexpl
|
|
||||||
syn keyword cAnsiFunction ldexpf ldexp ilogbl
|
|
||||||
syn keyword cAnsiFunction ilogbf ilogb frexpl
|
|
||||||
syn keyword cAnsiFunction frexpf frexp expm1l
|
|
||||||
syn keyword cAnsiFunction expm1f expm1 exp2l
|
|
||||||
syn keyword cAnsiFunction exp2f exp2 expl
|
|
||||||
syn keyword cAnsiFunction expf exp tanhl
|
|
||||||
syn keyword cAnsiFunction tanhf tanh sinhl
|
|
||||||
syn keyword cAnsiFunction sinhf sinh coshl
|
|
||||||
syn keyword cAnsiFunction coshf cosh atanhl
|
|
||||||
syn keyword cAnsiFunction atanhf atanh asinhl
|
|
||||||
syn keyword cAnsiFunction asinhf asinh acoshl
|
|
||||||
syn keyword cAnsiFunction acoshf acosh tanl
|
|
||||||
syn keyword cAnsiFunction tanf tan sinl
|
|
||||||
syn keyword cAnsiFunction sinf sin cosl
|
|
||||||
syn keyword cAnsiFunction cosf cos atan2l
|
|
||||||
syn keyword cAnsiFunction atan2f atan2 atanl
|
|
||||||
syn keyword cAnsiFunction atanf atan asinl
|
|
||||||
syn keyword cAnsiFunction asinf asin acosl
|
|
||||||
syn keyword cAnsiFunction acosf acos signbit
|
|
||||||
syn keyword cAnsiFunction isnormal isnan isinf
|
|
||||||
syn keyword cAnsiFunction isfinite fpclassify localeconv
|
|
||||||
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
|
|
||||||
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
|
|
||||||
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
|
|
||||||
syn keyword cAnsiFunction fesetround fegetround fetestexcept
|
|
||||||
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
|
|
||||||
syn keyword cAnsiFunction feclearexcept toupper tolower
|
|
||||||
syn keyword cAnsiFunction isxdigit isupper isspace
|
|
||||||
syn keyword cAnsiFunction ispunct isprint islower
|
|
||||||
syn keyword cAnsiFunction isgraph isdigit iscntrl
|
|
||||||
syn keyword cAnsiFunction isalpha isalnum creall
|
|
||||||
syn keyword cAnsiFunction crealf creal cprojl
|
|
||||||
syn keyword cAnsiFunction cprojf cproj conjl
|
|
||||||
syn keyword cAnsiFunction conjf conj cimagl
|
|
||||||
syn keyword cAnsiFunction cimagf cimag cargl
|
|
||||||
syn keyword cAnsiFunction cargf carg csqrtl
|
|
||||||
syn keyword cAnsiFunction csqrtf csqrt cpowl
|
|
||||||
syn keyword cAnsiFunction cpowf cpow cabsl
|
|
||||||
syn keyword cAnsiFunction cabsf cabs clogl
|
|
||||||
syn keyword cAnsiFunction clogf clog cexpl
|
|
||||||
syn keyword cAnsiFunction cexpf cexp ctanhl
|
|
||||||
syn keyword cAnsiFunction ctanhf ctanh csinhl
|
|
||||||
syn keyword cAnsiFunction csinhf csinh ccoshl
|
|
||||||
syn keyword cAnsiFunction ccoshf ccosh catanhl
|
|
||||||
syn keyword cAnsiFunction catanhf catanh casinhl
|
|
||||||
syn keyword cAnsiFunction casinhf casinh cacoshl
|
|
||||||
syn keyword cAnsiFunction cacoshf cacosh ctanl
|
|
||||||
syn keyword cAnsiFunction ctanf ctan csinl
|
|
||||||
syn keyword cAnsiFunction csinf csin ccosl
|
|
||||||
syn keyword cAnsiFunction ccosf ccos catanl
|
|
||||||
syn keyword cAnsiFunction catanf catan casinl
|
|
||||||
syn keyword cAnsiFunction casinf casin cacosl
|
|
||||||
syn keyword cAnsiFunction cacosf cacos assert
|
|
||||||
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
|
|
||||||
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
|
|
||||||
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
|
|
||||||
|
|
||||||
" Common ANSI-standard Names
|
|
||||||
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
|
|
||||||
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
|
|
||||||
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
|
|
||||||
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
|
|
||||||
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
|
|
||||||
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
|
|
||||||
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
|
|
||||||
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
|
|
||||||
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
|
|
||||||
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
|
|
||||||
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
|
|
||||||
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
|
|
||||||
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
|
|
||||||
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
|
|
||||||
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
|
|
||||||
|
|
||||||
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
|
|
||||||
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
|
|
||||||
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
|
|
||||||
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
|
|
||||||
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
|
|
||||||
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
|
|
||||||
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
|
|
||||||
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
|
|
||||||
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
|
|
||||||
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
|
|
||||||
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
|
|
||||||
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
|
|
||||||
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
|
|
||||||
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
|
|
||||||
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
|
|
||||||
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
|
|
||||||
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
|
|
||||||
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
|
|
||||||
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
|
|
||||||
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
|
|
||||||
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
|
|
||||||
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
|
|
||||||
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
|
|
||||||
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
|
|
||||||
|
|
||||||
syn keyword cAnsiName errno environ
|
|
||||||
|
|
||||||
syn keyword cAnsiName STDC CX_LIMITED_RANGE
|
|
||||||
syn keyword cAnsiName STDC FENV_ACCESS
|
|
||||||
syn keyword cAnsiName STDC FP_CONTRACT
|
|
||||||
|
|
||||||
syn keyword cAnsiName and bitor not_eq xor
|
|
||||||
syn keyword cAnsiName and_eq compl or xor_eq
|
|
||||||
syn keyword cAnsiName bitand not or_eq
|
|
||||||
|
|
||||||
hi def link cAnsiFunction cFunction
|
|
||||||
hi def link cAnsiName cIdentifier
|
|
||||||
hi def link cFunction Function
|
|
||||||
hi def link cIdentifier Identifier
|
|
||||||
|
|
||||||
" Booleans
|
|
||||||
syn keyword cBoolean true false TRUE FALSE
|
|
||||||
hi def link cBoolean Boolean
|
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
" Additional optional highlighting
|
|
||||||
" -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
" Operators
|
|
||||||
"syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
|
||||||
"syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
|
||||||
"syn match cOperator "[.!~*&%<>^|=,+-]"
|
|
||||||
"syn match cOperator "/[^/*=]"me=e-1
|
|
||||||
"syn match cOperator "/$"
|
|
||||||
"syn match cOperator "&&\|||"
|
|
||||||
"syn match cOperator "[][]"
|
|
||||||
"
|
|
||||||
"" Preprocs
|
|
||||||
"syn keyword cDefined defined contained containedin=cDefine
|
|
||||||
"hi def link cDefined cDefine
|
|
||||||
|
|
||||||
"" Functions
|
|
||||||
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
|
||||||
"syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
|
|
||||||
"
|
|
||||||
"hi def link cUserFunction cFunction
|
|
||||||
"hi def link cUserFunctionPointer cFunction
|
|
||||||
"
|
|
||||||
"" Delimiters
|
|
||||||
"syn match cDelimiter "[();\\]"
|
|
||||||
"" foldmethod=syntax fix, courtesy of Ivan Freitas
|
|
||||||
"syn match cBraces display "[{}]"
|
|
||||||
|
|
||||||
" Links
|
|
||||||
"hi def link cDelimiter Delimiter
|
|
||||||
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
|
||||||
"hi def link cBraces Delimiter
|
|
||||||
|
|
||||||
endif
|
|
||||||
2297
after/syntax/cpp.vim
2297
after/syntax/cpp.vim
File diff suppressed because it is too large
Load Diff
641
autoload/ada.vim
Normal file
641
autoload/ada.vim
Normal file
@@ -0,0 +1,641 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ada') == -1
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Description: Perform Ada specific completion & tagging.
|
||||||
|
" Language: Ada (2005)
|
||||||
|
" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
|
||||||
|
" Maintainer: Mathias Brousset <mathiasb17@gmail.com>
|
||||||
|
" Martin Krischik <krischik@users.sourceforge.net>
|
||||||
|
" Taylor Venable <taylor@metasyntax.net>
|
||||||
|
" Neil Bird <neil@fnxweb.com>
|
||||||
|
" Ned Okie <nokie@radford.edu>
|
||||||
|
" $Author: krischik $
|
||||||
|
" $Date: 2017-01-31 20:20:05 +0200 (Mon, 01 Jan 2017) $
|
||||||
|
" Version: 4.6
|
||||||
|
" $Revision: 887 $
|
||||||
|
" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
|
||||||
|
" History: 24.05.2006 MK Unified Headers
|
||||||
|
" 26.05.2006 MK ' should not be in iskeyword.
|
||||||
|
" 16.07.2006 MK Ada-Mode as vim-ball
|
||||||
|
" 02.10.2006 MK Better folding.
|
||||||
|
" 15.10.2006 MK Bram's suggestion for runtime integration
|
||||||
|
" 05.11.2006 MK Bram suggested not to use include protection for
|
||||||
|
" autoload
|
||||||
|
" 05.11.2006 MK Bram suggested to save on spaces
|
||||||
|
" 08.07.2007 TV fix mapleader problems.
|
||||||
|
" 09.05.2007 MK Session just won't work no matter how much
|
||||||
|
" tweaking is done
|
||||||
|
" 19.09.2007 NO still some mapleader problems
|
||||||
|
" 31.01.2017 MB fix more mapleader problems
|
||||||
|
" Help Page: ft-ada-functions
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if version < 700
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let s:keepcpo= &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Section: Constants {{{1
|
||||||
|
"
|
||||||
|
let g:ada#DotWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*'
|
||||||
|
let g:ada#WordRegex = '\a\w*'
|
||||||
|
let g:ada#Comment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
|
||||||
|
let g:ada#Keywords = []
|
||||||
|
|
||||||
|
" Section: g:ada#Keywords {{{1
|
||||||
|
"
|
||||||
|
" Section: add Ada keywords {{{2
|
||||||
|
"
|
||||||
|
for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'keyword',
|
||||||
|
\ 'info': 'Ada keyword.',
|
||||||
|
\ 'kind': 'k',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: GNAT Project Files {{{3
|
||||||
|
"
|
||||||
|
if exists ('g:ada_with_gnat_project_files')
|
||||||
|
for Item in ['project']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'keyword',
|
||||||
|
\ 'info': 'GNAT projectfile keyword.',
|
||||||
|
\ 'kind': 'k',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: add standart exception {{{2
|
||||||
|
"
|
||||||
|
for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'exception',
|
||||||
|
\ 'info': 'Ada standart exception.',
|
||||||
|
\ 'kind': 'x',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: add GNAT exception {{{3
|
||||||
|
"
|
||||||
|
if exists ('g:ada_gnat_extensions')
|
||||||
|
for Item in ['Assert_Failure']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'exception',
|
||||||
|
\ 'info': 'GNAT exception.',
|
||||||
|
\ 'kind': 'x',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: add Ada buildin types {{{2
|
||||||
|
"
|
||||||
|
for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'type',
|
||||||
|
\ 'info': 'Ada buildin type.',
|
||||||
|
\ 'kind': 't',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: add GNAT buildin types {{{3
|
||||||
|
"
|
||||||
|
if exists ('g:ada_gnat_extensions')
|
||||||
|
for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'type',
|
||||||
|
\ 'info': 'GNAT buildin type.',
|
||||||
|
\ 'kind': 't',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: add Ada Attributes {{{2
|
||||||
|
"
|
||||||
|
for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'attribute',
|
||||||
|
\ 'info': 'Ada attribute.',
|
||||||
|
\ 'kind': 'a',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: add GNAT Attributes {{{3
|
||||||
|
"
|
||||||
|
if exists ('g:ada_gnat_extensions')
|
||||||
|
for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'attribute',
|
||||||
|
\ 'info': 'GNAT attribute.',
|
||||||
|
\ 'kind': 'a',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: add Ada Pragmas {{{2
|
||||||
|
"
|
||||||
|
for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'pragma',
|
||||||
|
\ 'info': 'Ada pragma.',
|
||||||
|
\ 'kind': 'p',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: add GNAT Pragmas {{{3
|
||||||
|
"
|
||||||
|
if exists ('g:ada_gnat_extensions')
|
||||||
|
for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External']
|
||||||
|
let g:ada#Keywords += [{
|
||||||
|
\ 'word': Item,
|
||||||
|
\ 'menu': 'pragma',
|
||||||
|
\ 'info': 'GNAT pragma.',
|
||||||
|
\ 'kind': 'p',
|
||||||
|
\ 'icase': 1}]
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
" 1}}}
|
||||||
|
|
||||||
|
" Section: g:ada#Ctags_Kinds {{{1
|
||||||
|
"
|
||||||
|
let g:ada#Ctags_Kinds = {
|
||||||
|
\ 'P': ["packspec", "package specifications"],
|
||||||
|
\ 'p': ["package", "packages"],
|
||||||
|
\ 'T': ["typespec", "type specifications"],
|
||||||
|
\ 't': ["type", "types"],
|
||||||
|
\ 'U': ["subspec", "subtype specifications"],
|
||||||
|
\ 'u': ["subtype", "subtypes"],
|
||||||
|
\ 'c': ["component", "record type components"],
|
||||||
|
\ 'l': ["literal", "enum type literals"],
|
||||||
|
\ 'V': ["varspec", "variable specifications"],
|
||||||
|
\ 'v': ["variable", "variables"],
|
||||||
|
\ 'f': ["formal", "generic formal parameters"],
|
||||||
|
\ 'n': ["constant", "constants"],
|
||||||
|
\ 'x': ["exception", "user defined exceptions"],
|
||||||
|
\ 'R': ["subprogspec", "subprogram specifications"],
|
||||||
|
\ 'r': ["subprogram", "subprograms"],
|
||||||
|
\ 'K': ["taskspec", "task specifications"],
|
||||||
|
\ 'k': ["task", "tasks"],
|
||||||
|
\ 'O': ["protectspec", "protected data specifications"],
|
||||||
|
\ 'o': ["protected", "protected data"],
|
||||||
|
\ 'E': ["entryspec", "task/protected data entry specifications"],
|
||||||
|
\ 'e': ["entry", "task/protected data entries"],
|
||||||
|
\ 'b': ["label", "labels"],
|
||||||
|
\ 'i': ["identifier", "loop/declare identifiers"],
|
||||||
|
\ 'a': ["autovar", "automatic variables"],
|
||||||
|
\ 'y': ["annon", "loops and blocks with no identifier"]}
|
||||||
|
|
||||||
|
" Section: ada#Word (...) {{{1
|
||||||
|
"
|
||||||
|
" Extract current Ada word across multiple lines
|
||||||
|
" AdaWord ([line, column])\
|
||||||
|
"
|
||||||
|
function ada#Word (...)
|
||||||
|
if a:0 > 1
|
||||||
|
let l:Line_Nr = a:1
|
||||||
|
let l:Column_Nr = a:2 - 1
|
||||||
|
else
|
||||||
|
let l:Line_Nr = line('.')
|
||||||
|
let l:Column_Nr = col('.') - 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
|
||||||
|
|
||||||
|
" Cope with tag searching for items in comments; if we are, don't loop
|
||||||
|
" backards looking for previous lines
|
||||||
|
if l:Column_Nr > strlen(l:Line)
|
||||||
|
" We were in a comment
|
||||||
|
let l:Line = getline(l:Line_Nr)
|
||||||
|
let l:Search_Prev_Lines = 0
|
||||||
|
else
|
||||||
|
let l:Search_Prev_Lines = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Go backwards until we find a match (Ada ID) that *doesn't* include our
|
||||||
|
" location - i.e., the previous ID. This is because the current 'correct'
|
||||||
|
" match will toggle matching/not matching as we traverse characters
|
||||||
|
" backwards. Thus, we have to find the previous unrelated match, exclude
|
||||||
|
" it, then use the next full match (ours).
|
||||||
|
" Remember to convert vim column 'l:Column_Nr' [1..n] to string offset [0..(n-1)]
|
||||||
|
" ... but start, here, one after the required char.
|
||||||
|
let l:New_Column = l:Column_Nr + 1
|
||||||
|
while 1
|
||||||
|
let l:New_Column = l:New_Column - 1
|
||||||
|
if l:New_Column < 0
|
||||||
|
" Have to include previous l:Line from file
|
||||||
|
let l:Line_Nr = l:Line_Nr - 1
|
||||||
|
if l:Line_Nr < 1 || !l:Search_Prev_Lines
|
||||||
|
" Start of file or matching in a comment
|
||||||
|
let l:Line_Nr = 1
|
||||||
|
let l:New_Column = 0
|
||||||
|
let l:Our_Match = match (l:Line, g:ada#WordRegex )
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
" Get previous l:Line, and prepend it to our search string
|
||||||
|
let l:New_Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
|
||||||
|
let l:New_Column = strlen (l:New_Line) - 1
|
||||||
|
let l:Column_Nr = l:Column_Nr + l:New_Column
|
||||||
|
let l:Line = l:New_Line . l:Line
|
||||||
|
endif
|
||||||
|
" Check to see if this is a match excluding 'us'
|
||||||
|
let l:Match_End = l:New_Column +
|
||||||
|
\ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1
|
||||||
|
if l:Match_End >= l:New_Column &&
|
||||||
|
\ l:Match_End < l:Column_Nr
|
||||||
|
" Yes
|
||||||
|
let l:Our_Match = l:Match_End+1 +
|
||||||
|
\ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex )
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Got anything?
|
||||||
|
if l:Our_Match < 0
|
||||||
|
return ''
|
||||||
|
else
|
||||||
|
let l:Line = strpart (l:Line, l:Our_Match)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Now simply add further lines until the match gets no bigger
|
||||||
|
let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
|
||||||
|
let l:Last_Line = line ('$')
|
||||||
|
let l:Line_Nr = line ('.') + 1
|
||||||
|
while l:Line_Nr <= l:Last_Line
|
||||||
|
let l:Last_Match = l:Match_String
|
||||||
|
let l:Line = l:Line .
|
||||||
|
\ substitute (getline (l:Line_Nr), g:ada#Comment, '', '')
|
||||||
|
let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
|
||||||
|
if l:Match_String == l:Last_Match
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Strip whitespace & return
|
||||||
|
return substitute (l:Match_String, '\s\+', '', 'g')
|
||||||
|
endfunction ada#Word
|
||||||
|
|
||||||
|
" Section: ada#List_Tag (...) {{{1
|
||||||
|
"
|
||||||
|
" List tags in quickfix window
|
||||||
|
"
|
||||||
|
function ada#List_Tag (...)
|
||||||
|
if a:0 > 1
|
||||||
|
let l:Tag_Word = ada#Word (a:1, a:2)
|
||||||
|
elseif a:0 > 0
|
||||||
|
let l:Tag_Word = a:1
|
||||||
|
else
|
||||||
|
let l:Tag_Word = ada#Word ()
|
||||||
|
endif
|
||||||
|
|
||||||
|
echo "Searching for" l:Tag_Word
|
||||||
|
|
||||||
|
let l:Pattern = '^' . l:Tag_Word . '$'
|
||||||
|
let l:Tag_List = taglist (l:Pattern)
|
||||||
|
let l:Error_List = []
|
||||||
|
"
|
||||||
|
" add symbols
|
||||||
|
"
|
||||||
|
for Tag_Item in l:Tag_List
|
||||||
|
if l:Tag_Item['kind'] == ''
|
||||||
|
let l:Tag_Item['kind'] = 's'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:Error_List += [
|
||||||
|
\ l:Tag_Item['filename'] . '|' .
|
||||||
|
\ l:Tag_Item['cmd'] . '|' .
|
||||||
|
\ l:Tag_Item['kind'] . "\t" .
|
||||||
|
\ l:Tag_Item['name'] ]
|
||||||
|
endfor
|
||||||
|
set errorformat=%f\|%l\|%m
|
||||||
|
cexpr l:Error_List
|
||||||
|
cwindow
|
||||||
|
endfunction ada#List_Tag
|
||||||
|
|
||||||
|
" Section: ada#Jump_Tag (Word, Mode) {{{1
|
||||||
|
"
|
||||||
|
" Word tag - include '.' and if Ada make uppercase
|
||||||
|
"
|
||||||
|
function ada#Jump_Tag (Word, Mode)
|
||||||
|
if a:Word == ''
|
||||||
|
" Get current word
|
||||||
|
let l:Word = ada#Word()
|
||||||
|
if l:Word == ''
|
||||||
|
throw "NOT_FOUND: no identifier found."
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let l:Word = a:Word
|
||||||
|
endif
|
||||||
|
|
||||||
|
echo "Searching for " . l:Word
|
||||||
|
|
||||||
|
try
|
||||||
|
execute a:Mode l:Word
|
||||||
|
catch /.*:E426:.*/
|
||||||
|
let ignorecase = &ignorecase
|
||||||
|
set ignorecase
|
||||||
|
execute a:Mode l:Word
|
||||||
|
let &ignorecase = ignorecase
|
||||||
|
endtry
|
||||||
|
|
||||||
|
return
|
||||||
|
endfunction ada#Jump_Tag
|
||||||
|
|
||||||
|
" Section: ada#Insert_Backspace () {{{1
|
||||||
|
"
|
||||||
|
" Backspace at end of line after auto-inserted commentstring '-- ' wipes it
|
||||||
|
"
|
||||||
|
function ada#Insert_Backspace ()
|
||||||
|
let l:Line = getline ('.')
|
||||||
|
if col ('.') > strlen (l:Line) &&
|
||||||
|
\ match (l:Line, '-- $') != -1 &&
|
||||||
|
\ match (&comments,'--') != -1
|
||||||
|
return "\<bs>\<bs>\<bs>"
|
||||||
|
else
|
||||||
|
return "\<bs>"
|
||||||
|
endif
|
||||||
|
|
||||||
|
return
|
||||||
|
endfunction ada#InsertBackspace
|
||||||
|
|
||||||
|
" Section: Insert Completions {{{1
|
||||||
|
"
|
||||||
|
" Section: ada#User_Complete(findstart, base) {{{2
|
||||||
|
"
|
||||||
|
" This function is used for the 'complete' option.
|
||||||
|
"
|
||||||
|
function! ada#User_Complete(findstart, base)
|
||||||
|
if a:findstart == 1
|
||||||
|
"
|
||||||
|
" locate the start of the word
|
||||||
|
"
|
||||||
|
let line = getline ('.')
|
||||||
|
let start = col ('.') - 1
|
||||||
|
while start > 0 && line[start - 1] =~ '\i\|'''
|
||||||
|
let start -= 1
|
||||||
|
endwhile
|
||||||
|
return start
|
||||||
|
else
|
||||||
|
"
|
||||||
|
" look up matches
|
||||||
|
"
|
||||||
|
let l:Pattern = '^' . a:base . '.*$'
|
||||||
|
"
|
||||||
|
" add keywords
|
||||||
|
"
|
||||||
|
for Tag_Item in g:ada#Keywords
|
||||||
|
if l:Tag_Item['word'] =~? l:Pattern
|
||||||
|
if complete_add (l:Tag_Item) == 0
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
if complete_check ()
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
endfunction ada#User_Complete
|
||||||
|
|
||||||
|
" Section: ada#Completion (cmd) {{{2
|
||||||
|
"
|
||||||
|
" Word completion (^N/^R/^X^]) - force '.' inclusion
|
||||||
|
function ada#Completion (cmd)
|
||||||
|
set iskeyword+=46
|
||||||
|
return a:cmd . "\<C-R>=ada#Completion_End ()\<CR>"
|
||||||
|
endfunction ada#Completion
|
||||||
|
|
||||||
|
" Section: ada#Completion_End () {{{2
|
||||||
|
"
|
||||||
|
function ada#Completion_End ()
|
||||||
|
set iskeyword-=46
|
||||||
|
return ''
|
||||||
|
endfunction ada#Completion_End
|
||||||
|
|
||||||
|
" Section: ada#Create_Tags {{{1
|
||||||
|
"
|
||||||
|
function ada#Create_Tags (option)
|
||||||
|
if a:option == 'file'
|
||||||
|
let l:Filename = fnamemodify (bufname ('%'), ':p')
|
||||||
|
elseif a:option == 'dir'
|
||||||
|
let l:Filename =
|
||||||
|
\ fnamemodify (bufname ('%'), ':p:h') . "*.ada " .
|
||||||
|
\ fnamemodify (bufname ('%'), ':p:h') . "*.adb " .
|
||||||
|
\ fnamemodify (bufname ('%'), ':p:h') . "*.ads"
|
||||||
|
else
|
||||||
|
let l:Filename = a:option
|
||||||
|
endif
|
||||||
|
execute '!ctags --excmd=number ' . l:Filename
|
||||||
|
endfunction ada#Create_Tags
|
||||||
|
|
||||||
|
" Section: ada#Switch_Session {{{1
|
||||||
|
"
|
||||||
|
function ada#Switch_Session (New_Session)
|
||||||
|
"
|
||||||
|
" you should not save to much date into the seession since they will
|
||||||
|
" be sourced
|
||||||
|
"
|
||||||
|
let l:sessionoptions=&sessionoptions
|
||||||
|
|
||||||
|
try
|
||||||
|
set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize
|
||||||
|
|
||||||
|
if a:New_Session != v:this_session
|
||||||
|
"
|
||||||
|
" We actually got a new session - otherwise there
|
||||||
|
" is nothing to do.
|
||||||
|
"
|
||||||
|
if strlen (v:this_session) > 0
|
||||||
|
execute 'mksession! ' . v:this_session
|
||||||
|
endif
|
||||||
|
|
||||||
|
let v:this_session = a:New_Session
|
||||||
|
|
||||||
|
"if filereadable (v:this_session)
|
||||||
|
"execute 'source ' . v:this_session
|
||||||
|
"endif
|
||||||
|
|
||||||
|
augroup ada_session
|
||||||
|
autocmd!
|
||||||
|
autocmd VimLeavePre * execute 'mksession! ' . v:this_session
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
"if exists ("g:Tlist_Auto_Open") && g:Tlist_Auto_Open
|
||||||
|
"TlistOpen
|
||||||
|
"endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
finally
|
||||||
|
let &sessionoptions=l:sessionoptions
|
||||||
|
endtry
|
||||||
|
|
||||||
|
return
|
||||||
|
endfunction ada#Switch_Session
|
||||||
|
|
||||||
|
" Section: GNAT Pretty Printer folding {{{1
|
||||||
|
"
|
||||||
|
if exists('g:ada_folding') && g:ada_folding[0] == 'g'
|
||||||
|
"
|
||||||
|
" Lines consisting only of ')' ';' are due to a gnat pretty bug and
|
||||||
|
" have the same level as the line above (can't happen in the first
|
||||||
|
" line).
|
||||||
|
"
|
||||||
|
let s:Fold_Collate = '^\([;)]*$\|'
|
||||||
|
|
||||||
|
"
|
||||||
|
" some lone statements are folded with the line above
|
||||||
|
"
|
||||||
|
if stridx (g:ada_folding, 'i') >= 0
|
||||||
|
let s:Fold_Collate .= '\s\+\<is\>$\|'
|
||||||
|
endif
|
||||||
|
if stridx (g:ada_folding, 'b') >= 0
|
||||||
|
let s:Fold_Collate .= '\s\+\<begin\>$\|'
|
||||||
|
endif
|
||||||
|
if stridx (g:ada_folding, 'p') >= 0
|
||||||
|
let s:Fold_Collate .= '\s\+\<private\>$\|'
|
||||||
|
endif
|
||||||
|
if stridx (g:ada_folding, 'x') >= 0
|
||||||
|
let s:Fold_Collate .= '\s\+\<exception\>$\|'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" We also handle empty lines and
|
||||||
|
" comments here.
|
||||||
|
let s:Fold_Collate .= '--\)'
|
||||||
|
|
||||||
|
function ada#Pretty_Print_Folding (Line) " {{{2
|
||||||
|
let l:Text = getline (a:Line)
|
||||||
|
|
||||||
|
if l:Text =~ s:Fold_Collate
|
||||||
|
"
|
||||||
|
" fold with line above
|
||||||
|
"
|
||||||
|
let l:Level = "="
|
||||||
|
elseif l:Text =~ '^\s\+('
|
||||||
|
"
|
||||||
|
" gnat outdents a line which stards with a ( by one characters so
|
||||||
|
" that parameters which follow are aligned.
|
||||||
|
"
|
||||||
|
let l:Level = (indent (a:Line) + 1) / &shiftwidth
|
||||||
|
else
|
||||||
|
let l:Level = indent (a:Line) / &shiftwidth
|
||||||
|
endif
|
||||||
|
|
||||||
|
return l:Level
|
||||||
|
endfunction ada#Pretty_Print_Folding " }}}2
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Options and Menus {{{1
|
||||||
|
"
|
||||||
|
" Section: ada#Switch_Syntax_Options {{{2
|
||||||
|
"
|
||||||
|
function ada#Switch_Syntax_Option (option)
|
||||||
|
syntax off
|
||||||
|
if exists ('g:ada_' . a:option)
|
||||||
|
unlet g:ada_{a:option}
|
||||||
|
echo a:option . 'now off'
|
||||||
|
else
|
||||||
|
let g:ada_{a:option}=1
|
||||||
|
echo a:option . 'now on'
|
||||||
|
endif
|
||||||
|
syntax on
|
||||||
|
endfunction ada#Switch_Syntax_Option
|
||||||
|
|
||||||
|
" Section: ada#Map_Menu {{{2
|
||||||
|
"
|
||||||
|
function ada#Map_Menu (Text, Keys, Command)
|
||||||
|
if a:Keys[0] == ':'
|
||||||
|
execute
|
||||||
|
\ "50amenu " .
|
||||||
|
\ "Ada." . escape(a:Text, ' ') .
|
||||||
|
\ "<Tab>" . a:Keys .
|
||||||
|
\ " :" . a:Command . "<CR>"
|
||||||
|
execute
|
||||||
|
\ "command -buffer " .
|
||||||
|
\ a:Keys[1:] .
|
||||||
|
\" :" . a:Command . "<CR>"
|
||||||
|
elseif a:Keys[0] == '<'
|
||||||
|
execute
|
||||||
|
\ "50amenu " .
|
||||||
|
\ "Ada." . escape(a:Text, ' ') .
|
||||||
|
\ "<Tab>" . a:Keys .
|
||||||
|
\ " :" . a:Command . "<CR>"
|
||||||
|
execute
|
||||||
|
\ "nnoremap <buffer> " .
|
||||||
|
\ a:Keys .
|
||||||
|
\" :" . a:Command . "<CR>"
|
||||||
|
execute
|
||||||
|
\ "inoremap <buffer> " .
|
||||||
|
\ a:Keys .
|
||||||
|
\" <C-O>:" . a:Command . "<CR>"
|
||||||
|
else
|
||||||
|
if exists("g:mapleader")
|
||||||
|
let l:leader = g:mapleader
|
||||||
|
else
|
||||||
|
let l:leader = '\'
|
||||||
|
endif
|
||||||
|
execute
|
||||||
|
\ "50amenu " .
|
||||||
|
\ "Ada." . escape(a:Text, ' ') .
|
||||||
|
\ "<Tab>" . escape(l:leader . "a" . a:Keys , '\') .
|
||||||
|
\ " :" . a:Command . "<CR>"
|
||||||
|
execute
|
||||||
|
\ "nnoremap <buffer>" .
|
||||||
|
\ " <Leader>a" . a:Keys .
|
||||||
|
\" :" . a:Command
|
||||||
|
execute
|
||||||
|
\ "inoremap <buffer>" .
|
||||||
|
\ " <Leader>a" . a:Keys .
|
||||||
|
\" <C-O>:" . a:Command
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Section: ada#Map_Popup {{{2
|
||||||
|
"
|
||||||
|
function ada#Map_Popup (Text, Keys, Command)
|
||||||
|
if exists("g:mapleader")
|
||||||
|
let l:leader = g:mapleader
|
||||||
|
else
|
||||||
|
let l:leader = '\'
|
||||||
|
endif
|
||||||
|
execute
|
||||||
|
\ "50amenu " .
|
||||||
|
\ "PopUp." . escape(a:Text, ' ') .
|
||||||
|
\ "<Tab>" . escape(l:leader . "a" . a:Keys , '\') .
|
||||||
|
\ " :" . a:Command . "<CR>"
|
||||||
|
|
||||||
|
call ada#Map_Menu (a:Text, a:Keys, a:Command)
|
||||||
|
return
|
||||||
|
endfunction ada#Map_Popup
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
lockvar g:ada#WordRegex
|
||||||
|
lockvar g:ada#DotWordRegex
|
||||||
|
lockvar g:ada#Comment
|
||||||
|
lockvar! g:ada#Keywords
|
||||||
|
lockvar! g:ada#Ctags_Kinds
|
||||||
|
|
||||||
|
let &cpo = s:keepcpo
|
||||||
|
unlet s:keepcpo
|
||||||
|
|
||||||
|
finish " 1}}}
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Copyright (C) 2006 Martin Krischik
|
||||||
|
"
|
||||||
|
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
|
||||||
|
" vim: foldmethod=marker
|
||||||
|
|
||||||
|
endif
|
||||||
517
autoload/fsharp.vim
Normal file
517
autoload/fsharp.vim
Normal file
@@ -0,0 +1,517 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1
|
||||||
|
|
||||||
|
" Vim autoload functions
|
||||||
|
|
||||||
|
if exists('g:loaded_autoload_fsharp')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_autoload_fsharp = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! s:prompt(msg)
|
||||||
|
let height = &cmdheight
|
||||||
|
if height < 2
|
||||||
|
set cmdheight=2
|
||||||
|
endif
|
||||||
|
echom a:msg
|
||||||
|
let &cmdheight = height
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:PlainNotification(content)
|
||||||
|
return { 'Content': a:content }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:TextDocumentIdentifier(path)
|
||||||
|
let usr_ss_opt = &shellslash
|
||||||
|
set shellslash
|
||||||
|
let uri = fnamemodify(a:path, ":p")
|
||||||
|
if uri[0] == "/"
|
||||||
|
let uri = "file://" . uri
|
||||||
|
else
|
||||||
|
let uri = "file:///" . uri
|
||||||
|
endif
|
||||||
|
let &shellslash = usr_ss_opt
|
||||||
|
return { 'Uri': uri }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Position(line, character)
|
||||||
|
return { 'Line': a:line, 'Character': a:character }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:TextDocumentPositionParams(documentUri, line, character)
|
||||||
|
return {
|
||||||
|
\ 'TextDocument': s:TextDocumentIdentifier(a:documentUri),
|
||||||
|
\ 'Position': s:Position(a:line, a:character)
|
||||||
|
\ }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:DocumentationForSymbolRequest(xmlSig, assembly)
|
||||||
|
return {
|
||||||
|
\ 'XmlSig': a:xmlSig,
|
||||||
|
\ 'Assembly': a:assembly
|
||||||
|
\ }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:ProjectParms(projectUri)
|
||||||
|
return { 'Project': s:TextDocumentIdentifier(a:projectUri) }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:WorkspacePeekRequest(directory, deep, excludedDirs)
|
||||||
|
return {
|
||||||
|
\ 'Directory': fnamemodify(a:directory, ":p"),
|
||||||
|
\ 'Deep': a:deep,
|
||||||
|
\ 'ExcludedDirs': a:excludedDirs
|
||||||
|
\ }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:WorkspaceLoadParms(files)
|
||||||
|
let prm = []
|
||||||
|
for file in a:files
|
||||||
|
call add(prm, s:TextDocumentIdentifier(file))
|
||||||
|
endfor
|
||||||
|
return { 'TextDocuments': prm }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:FsdnRequest(query)
|
||||||
|
return { 'Query': a:query }
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:call(method, params, cont)
|
||||||
|
call LanguageClient#Call(a:method, a:params, a:cont)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:signature(filePath, line, character, cont)
|
||||||
|
return s:call('fsharp/signature', s:TextDocumentPositionParams(a:filePath, a:line, a:character), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:signatureData(filePath, line, character, cont)
|
||||||
|
return s:call('fsharp/signatureData', s:TextDocumentPositionParams(a:filePath, a:line, a:character), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:lineLens(projectPath, cont)
|
||||||
|
return s:call('fsharp/lineLens', s:ProjectParms(a:projectPath), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:compilerLocation(cont)
|
||||||
|
return s:call('fsharp/compilerLocation', {}, a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:compile(projectPath, cont)
|
||||||
|
return s:call('fsharp/compile', s:ProjectParms(a:projectPath), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:workspacePeek(directory, depth, excludedDirs, cont)
|
||||||
|
return s:call('fsharp/workspacePeek', s:WorkspacePeekRequest(a:directory, a:depth, a:excludedDirs), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:workspaceLoad(files, cont)
|
||||||
|
return s:call('fsharp/workspaceLoad', s:WorkspaceLoadParms(a:files), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:project(projectPath, cont)
|
||||||
|
return s:call('fsharp/project', s:ProjectParms(a:projectPath), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:fsdn(signature, cont)
|
||||||
|
return s:call('fsharp/fsdn', s:FsdnRequest(a:signature), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:f1Help(filePath, line, character, cont)
|
||||||
|
return s:call('fsharp/f1Help', s:TextDocumentPositionParams(a:filePath, a:line, a:character), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! fsharp#documentation(filePath, line, character, cont)
|
||||||
|
return s:call('fsharp/documentation', s:TextDocumentPositionParams(a:filePath, a:line, a:character), a:cont)
|
||||||
|
endfunction
|
||||||
|
function! s:documentationSymbol(xmlSig, assembly, cont)
|
||||||
|
return s:call('fsharp/documentationSymbol', s:DocumentationForSymbolRequest(a:xmlSig, a:assembly), a:cont)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" FSharpConfigDto from https://github.com/fsharp/FsAutoComplete/blob/master/src/FsAutoComplete/LspHelpers.fs
|
||||||
|
"
|
||||||
|
" * The following options seems not working with workspace/didChangeConfiguration
|
||||||
|
" since the initialization has already completed?
|
||||||
|
" 'AutomaticWorkspaceInit',
|
||||||
|
" 'WorkspaceModePeekDeepLevel',
|
||||||
|
"
|
||||||
|
" * Changes made to linter/unused analyzer settings seems not reflected after sending them to FSAC?
|
||||||
|
"
|
||||||
|
let s:config_keys_camel =
|
||||||
|
\ [
|
||||||
|
\ {'key': 'AutomaticWorkspaceInit', 'default': 1},
|
||||||
|
\ {'key': 'WorkspaceModePeekDeepLevel', 'default': 2},
|
||||||
|
\ {'key': 'ExcludeProjectDirectories', 'default': []},
|
||||||
|
\ {'key': 'keywordsAutocomplete', 'default': 1},
|
||||||
|
\ {'key': 'ExternalAutocomplete', 'default': 0},
|
||||||
|
\ {'key': 'Linter', 'default': 1},
|
||||||
|
\ {'key': 'UnionCaseStubGeneration', 'default': 1},
|
||||||
|
\ {'key': 'UnionCaseStubGenerationBody'},
|
||||||
|
\ {'key': 'RecordStubGeneration', 'default': 1},
|
||||||
|
\ {'key': 'RecordStubGenerationBody'},
|
||||||
|
\ {'key': 'InterfaceStubGeneration', 'default': 1},
|
||||||
|
\ {'key': 'InterfaceStubGenerationObjectIdentifier', 'default': 'this'},
|
||||||
|
\ {'key': 'InterfaceStubGenerationMethodBody'},
|
||||||
|
\ {'key': 'UnusedOpensAnalyzer', 'default': 1},
|
||||||
|
\ {'key': 'UnusedDeclarationsAnalyzer', 'default': 1},
|
||||||
|
\ {'key': 'SimplifyNameAnalyzer', 'default': 0},
|
||||||
|
\ {'key': 'ResolveNamespaces', 'default': 1},
|
||||||
|
\ {'key': 'EnableReferenceCodeLens', 'default': 1},
|
||||||
|
\ {'key': 'EnableAnalyzers', 'default': 0},
|
||||||
|
\ {'key': 'AnalyzersPath'},
|
||||||
|
\ {'key': 'DisableInMemoryProjectReferences', 'default': 0},
|
||||||
|
\ {'key': 'LineLens', 'default': {'enabled': 'replaceCodeLens', 'prefix': '//'}},
|
||||||
|
\ {'key': 'UseSdkScripts', 'default': 1},
|
||||||
|
\ {'key': 'dotNetRoot'},
|
||||||
|
\ {'key': 'fsiExtraParameters', 'default': []},
|
||||||
|
\ ]
|
||||||
|
let s:config_keys = []
|
||||||
|
|
||||||
|
function! fsharp#toSnakeCase(str)
|
||||||
|
let sn = substitute(a:str, '\(\<\u\l\+\|\l\+\)\(\u\)', '\l\1_\l\2', 'g')
|
||||||
|
if sn == a:str | return tolower(a:str) | endif
|
||||||
|
return sn
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:buildConfigKeys()
|
||||||
|
if len(s:config_keys) == 0
|
||||||
|
for key_camel in s:config_keys_camel
|
||||||
|
let key = {}
|
||||||
|
let key.snake = fsharp#toSnakeCase(key_camel.key)
|
||||||
|
let key.camel = key_camel.key
|
||||||
|
if has_key(key_camel, 'default')
|
||||||
|
let key.default = key_camel.default
|
||||||
|
endif
|
||||||
|
call add(s:config_keys, key)
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! g:fsharp#getServerConfig()
|
||||||
|
let fsharp = {}
|
||||||
|
call s:buildConfigKeys()
|
||||||
|
for key in s:config_keys
|
||||||
|
if exists('g:fsharp#' . key.snake)
|
||||||
|
let fsharp[key.camel] = g:fsharp#{key.snake}
|
||||||
|
elseif exists('g:fsharp#' . key.camel)
|
||||||
|
let fsharp[key.camel] = g:fsharp#{key.camel}
|
||||||
|
elseif has_key(key, 'default') && g:fsharp#use_recommended_server_config
|
||||||
|
let g:fsharp#{key.snake} = key.default
|
||||||
|
let fsharp[key.camel] = key.default
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return fsharp
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! g:fsharp#updateServerConfig()
|
||||||
|
let fsharp = fsharp#getServerConfig()
|
||||||
|
let settings = {'settings': {'FSharp': fsharp}}
|
||||||
|
call LanguageClient#Notify('workspace/didChangeConfiguration', settings)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:findWorkspace(dir, cont)
|
||||||
|
let s:cont_findWorkspace = a:cont
|
||||||
|
function! s:callback_findWorkspace(result)
|
||||||
|
let result = a:result
|
||||||
|
let content = json_decode(result.result.content)
|
||||||
|
if len(content.Data.Found) < 1
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let workspace = { 'Type': 'none' }
|
||||||
|
for found in content.Data.Found
|
||||||
|
if workspace.Type == 'none'
|
||||||
|
let workspace = found
|
||||||
|
elseif found.Type == 'solution'
|
||||||
|
if workspace.Type == 'project'
|
||||||
|
let workspace = found
|
||||||
|
else
|
||||||
|
let curLen = len(workspace.Data.Items)
|
||||||
|
let newLen = len(found.Data.Items)
|
||||||
|
if newLen > curLen
|
||||||
|
let workspace = found
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if workspace.Type == 'solution'
|
||||||
|
call s:cont_findWorkspace([workspace.Data.Path])
|
||||||
|
else
|
||||||
|
call s:cont_findWorkspace(workspace.Data.Fsprojs)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
call s:workspacePeek(a:dir, g:fsharp#workspace_mode_peek_deep_level, g:fsharp#exclude_project_directories, function("s:callback_findWorkspace"))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:workspace = []
|
||||||
|
|
||||||
|
function! s:load(arg)
|
||||||
|
let s:loading_workspace = a:arg
|
||||||
|
function! s:callback_load(_)
|
||||||
|
echo "[FSAC] Workspace loaded: " . join(s:loading_workspace, ', ')
|
||||||
|
let s:workspace = s:workspace + s:loading_workspace
|
||||||
|
endfunction
|
||||||
|
call s:workspaceLoad(a:arg, function("s:callback_load"))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#loadProject(...)
|
||||||
|
let prjs = []
|
||||||
|
for proj in a:000
|
||||||
|
call add(prjs, fnamemodify(proj, ':p'))
|
||||||
|
endfor
|
||||||
|
call s:load(prjs)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#loadWorkspaceAuto()
|
||||||
|
if &ft == 'fsharp'
|
||||||
|
call fsharp#updateServerConfig()
|
||||||
|
if g:fsharp#automatic_workspace_init
|
||||||
|
echom "[FSAC] Loading workspace..."
|
||||||
|
let bufferDirectory = fnamemodify(resolve(expand('%:p')), ':h')
|
||||||
|
call s:findWorkspace(bufferDirectory, function("s:load"))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#reloadProjects()
|
||||||
|
if len(s:workspace) > 0
|
||||||
|
function! s:callback_reloadProjects(_)
|
||||||
|
call s:prompt("[FSAC] Workspace reloaded.")
|
||||||
|
endfunction
|
||||||
|
call s:workspaceLoad(s:workspace, function("s:callback_reloadProjects"))
|
||||||
|
else
|
||||||
|
echom "[FSAC] Workspace is empty"
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#OnFSProjSave()
|
||||||
|
if &ft == "fsharp_project" && exists('g:fsharp#automatic_reload_workspace') && g:fsharp#automatic_reload_workspace
|
||||||
|
call fsharp#reloadProjects()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#showSignature()
|
||||||
|
function! s:callback_showSignature(result)
|
||||||
|
let result = a:result
|
||||||
|
if exists('result.result.content')
|
||||||
|
let content = json_decode(result.result.content)
|
||||||
|
if exists('content.Data')
|
||||||
|
echom substitute(content.Data, '\n\+$', ' ', 'g')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
call s:signature(expand('%:p'), line('.') - 1, col('.') - 1, function("s:callback_showSignature"))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#OnCursorMove()
|
||||||
|
if g:fsharp#show_signature_on_cursor_move
|
||||||
|
call fsharp#showSignature()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#showF1Help()
|
||||||
|
let result = s:f1Help(expand('%:p'), line('.') - 1, col('.') - 1)
|
||||||
|
echo result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#showTooltip()
|
||||||
|
function! s:callback_showTooltip(result)
|
||||||
|
let result = a:result
|
||||||
|
if exists('result.result.content')
|
||||||
|
let content = json_decode(result.result.content)
|
||||||
|
if exists('content.Data')
|
||||||
|
call LanguageClient#textDocument_hover()
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" show hover only if signature exists for the current position
|
||||||
|
call s:signature(expand('%:p'), line('.') - 1, col('.') - 1, function("s:callback_showTooltip"))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:script_root_dir = expand('<sfile>:p:h') . "/../"
|
||||||
|
let s:fsac = fnamemodify(s:script_root_dir . "fsac/fsautocomplete.dll", ":p")
|
||||||
|
let g:fsharp#languageserver_command =
|
||||||
|
\ ['dotnet', s:fsac,
|
||||||
|
\ '--background-service-enabled'
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
function! s:download(branch)
|
||||||
|
echom "[FSAC] Downloading FSAC. This may take a while..."
|
||||||
|
let zip = s:script_root_dir . "fsac.zip"
|
||||||
|
call system(
|
||||||
|
\ 'curl -fLo ' . zip . ' --create-dirs ' .
|
||||||
|
\ '"https://ci.appveyor.com/api/projects/fsautocomplete/fsautocomplete/artifacts/bin/pkgs/fsautocomplete.netcore.zip?branch=' . a:branch . '"'
|
||||||
|
\ )
|
||||||
|
if v:shell_error == 0
|
||||||
|
call system('unzip -o -d ' . s:script_root_dir . "/fsac " . zip)
|
||||||
|
echom "[FSAC] Updated FsAutoComplete to version " . a:branch . ""
|
||||||
|
else
|
||||||
|
echom "[FSAC] Failed to update FsAutoComplete"
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#updateFSAC(...)
|
||||||
|
if len(a:000) == 0
|
||||||
|
let branch = "master"
|
||||||
|
else
|
||||||
|
let branch = a:000[0]
|
||||||
|
endif
|
||||||
|
call s:download(branch)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:fsi_buffer = -1
|
||||||
|
let s:fsi_job = -1
|
||||||
|
let s:fsi_width = 0
|
||||||
|
let s:fsi_height = 0
|
||||||
|
|
||||||
|
function! s:win_gotoid_safe(winid)
|
||||||
|
function! s:vimReturnFocus(window)
|
||||||
|
call win_gotoid(a:window)
|
||||||
|
redraw!
|
||||||
|
endfunction
|
||||||
|
if has('nvim')
|
||||||
|
call win_gotoid(a:winid)
|
||||||
|
else
|
||||||
|
call timer_start(1, { -> s:vimReturnFocus(a:winid) })
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_fsi_command()
|
||||||
|
let cmd = g:fsharp#fsi_command
|
||||||
|
for prm in g:fsharp#fsi_extra_parameters
|
||||||
|
let cmd = cmd . " " . prm
|
||||||
|
endfor
|
||||||
|
return cmd
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#openFsi(returnFocus)
|
||||||
|
if bufwinid(s:fsi_buffer) <= 0
|
||||||
|
let fsi_command = s:get_fsi_command()
|
||||||
|
" Neovim
|
||||||
|
if exists('*termopen') || exists('*term_start')
|
||||||
|
let current_win = win_getid()
|
||||||
|
execute g:fsharp#fsi_window_command
|
||||||
|
if s:fsi_width > 0 | execute 'vertical resize' s:fsi_width | endif
|
||||||
|
if s:fsi_height > 0 | execute 'resize' s:fsi_height | endif
|
||||||
|
" if window is closed but FSI is still alive then reuse it
|
||||||
|
if s:fsi_buffer >= 0 && bufexists(str2nr(s:fsi_buffer))
|
||||||
|
exec 'b' s:fsi_buffer
|
||||||
|
normal G
|
||||||
|
if !has('nvim') && mode() == 'n' | execute "normal A" | endif
|
||||||
|
if a:returnFocus | call s:win_gotoid_safe(current_win) | endif
|
||||||
|
" open FSI: Neovim
|
||||||
|
elseif has('nvim')
|
||||||
|
let s:fsi_job = termopen(fsi_command)
|
||||||
|
if s:fsi_job > 0
|
||||||
|
let s:fsi_buffer = bufnr("%")
|
||||||
|
else
|
||||||
|
close
|
||||||
|
echom "[FSAC] Failed to open FSI."
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
" open FSI: Vim
|
||||||
|
else
|
||||||
|
let options = {
|
||||||
|
\ "term_name": "F# Interactive",
|
||||||
|
\ "curwin": 1,
|
||||||
|
\ "term_finish": "close"
|
||||||
|
\ }
|
||||||
|
let s:fsi_buffer = term_start(fsi_command, options)
|
||||||
|
if s:fsi_buffer != 0
|
||||||
|
if exists('*term_setkill') | call term_setkill(s:fsi_buffer, "term") | endif
|
||||||
|
let s:fsi_job = term_getjob(s:fsi_buffer)
|
||||||
|
else
|
||||||
|
close
|
||||||
|
echom "[FSAC] Failed to open FSI."
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
setlocal bufhidden=hide
|
||||||
|
normal G
|
||||||
|
if a:returnFocus | call s:win_gotoid_safe(current_win) | endif
|
||||||
|
return s:fsi_buffer
|
||||||
|
else
|
||||||
|
echom "[FSAC] Your Vim does not support terminal".
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return s:fsi_buffer
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#toggleFsi()
|
||||||
|
let fsiWindowId = bufwinid(s:fsi_buffer)
|
||||||
|
if fsiWindowId > 0
|
||||||
|
let current_win = win_getid()
|
||||||
|
call win_gotoid(fsiWindowId)
|
||||||
|
let s:fsi_width = winwidth('%')
|
||||||
|
let s:fsi_height = winheight('%')
|
||||||
|
close
|
||||||
|
call win_gotoid(current_win)
|
||||||
|
else
|
||||||
|
call fsharp#openFsi(0)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#quitFsi()
|
||||||
|
if s:fsi_buffer >= 0 && bufexists(str2nr(s:fsi_buffer))
|
||||||
|
if has('nvim')
|
||||||
|
let winid = bufwinid(s:fsi_buffer)
|
||||||
|
if winid > 0 | execute "close " . winid | endif
|
||||||
|
call jobstop(s:fsi_job)
|
||||||
|
else
|
||||||
|
call job_stop(s:fsi_job, "term")
|
||||||
|
endif
|
||||||
|
let s:fsi_buffer = -1
|
||||||
|
let s:fsi_job = -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#resetFsi()
|
||||||
|
call fsharp#quitFsi()
|
||||||
|
return fsharp#openFsi(1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#sendFsi(text)
|
||||||
|
if fsharp#openFsi(!g:fsharp#fsi_focus_on_send) > 0
|
||||||
|
" Neovim
|
||||||
|
if has('nvim')
|
||||||
|
call chansend(s:fsi_job, a:text . ";;". "\n")
|
||||||
|
" Vim 8
|
||||||
|
else
|
||||||
|
call term_sendkeys(s:fsi_buffer, a:text . ";;" . "\<cr>")
|
||||||
|
call term_wait(s:fsi_buffer)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" https://stackoverflow.com/a/6271254
|
||||||
|
function! s:get_visual_selection()
|
||||||
|
let [line_start, column_start] = getpos("'<")[1:2]
|
||||||
|
let [line_end, column_end] = getpos("'>")[1:2]
|
||||||
|
let lines = getline(line_start, line_end)
|
||||||
|
if len(lines) == 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let lines[-1] = lines[-1][: column_end - (&selection == 'inclusive' ? 1 : 2)]
|
||||||
|
let lines[0] = lines[0][column_start - 1:]
|
||||||
|
return lines
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_complete_buffer()
|
||||||
|
return join(getline(1, '$'), "\n")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#sendSelectionToFsi() range
|
||||||
|
let lines = s:get_visual_selection()
|
||||||
|
exec 'normal' len(lines) . 'j'
|
||||||
|
let text = join(lines, "\n")
|
||||||
|
return fsharp#sendFsi(text)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#sendLineToFsi()
|
||||||
|
let text = getline('.')
|
||||||
|
exec 'normal j'
|
||||||
|
return fsharp#sendFsi(text)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fsharp#sendAllToFsi()
|
||||||
|
let text = s:get_complete_buffer()
|
||||||
|
return fsharp#sendFsi(text)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim: sw=4 et sts=4
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -55,6 +55,10 @@ function! go#config#TermCloseOnExit() abort
|
|||||||
return get(g:, 'go_term_close_on_exit', 1)
|
return get(g:, 'go_term_close_on_exit', 1)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! go#config#TermReuse() abort
|
||||||
|
return get(g:, 'go_term_reuse', 0)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! go#config#SetTermCloseOnExit(value) abort
|
function! go#config#SetTermCloseOnExit(value) abort
|
||||||
let g:go_term_close_on_exit = a:value
|
let g:go_term_close_on_exit = a:value
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
744
autoload/ledger.vim
Normal file
744
autoload/ledger.vim
Normal file
@@ -0,0 +1,744 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ledger') == -1
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
" vim:ts=2:sw=2:sts=2:foldmethod=marker
|
||||||
|
function! ledger#transaction_state_toggle(lnum, ...) abort
|
||||||
|
if a:0 == 1
|
||||||
|
let chars = a:1
|
||||||
|
else
|
||||||
|
let chars = ' *'
|
||||||
|
endif
|
||||||
|
let trans = s:transaction.from_lnum(a:lnum)
|
||||||
|
if empty(trans) || has_key(trans, 'expr')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let old = has_key(trans, 'state') ? trans['state'] : ' '
|
||||||
|
let i = stridx(chars, old) + 1
|
||||||
|
let new = chars[i >= len(chars) ? 0 : i]
|
||||||
|
|
||||||
|
call trans.set_state(new)
|
||||||
|
|
||||||
|
call setline(trans['head'], trans.format_head())
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! ledger#transaction_state_set(lnum, char) abort
|
||||||
|
" modifies or sets the state of the transaction at the cursor,
|
||||||
|
" removing the state altogether if a:char is empty
|
||||||
|
let trans = s:transaction.from_lnum(a:lnum)
|
||||||
|
if empty(trans) || has_key(trans, 'expr')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call trans.set_state(a:char)
|
||||||
|
|
||||||
|
call setline(trans['head'], trans.format_head())
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! ledger#transaction_date_set(lnum, type, ...) abort
|
||||||
|
let time = a:0 == 1 ? a:1 : localtime()
|
||||||
|
let trans = s:transaction.from_lnum(a:lnum)
|
||||||
|
if empty(trans) || has_key(trans, 'expr')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let formatted = strftime(g:ledger_date_format, time)
|
||||||
|
if has_key(trans, 'date') && ! empty(trans['date'])
|
||||||
|
let date = split(trans['date'], '=')
|
||||||
|
else
|
||||||
|
let date = [formatted]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:type =~? 'effective\|actual'
|
||||||
|
echoerr 'actual/effective arguments were replaced by primary/auxiliary'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:type ==? 'primary'
|
||||||
|
let date[0] = formatted
|
||||||
|
elseif a:type ==? 'auxiliary'
|
||||||
|
if time < 0
|
||||||
|
" remove auxiliary date
|
||||||
|
let date = [date[0]]
|
||||||
|
else
|
||||||
|
" set auxiliary date
|
||||||
|
if len(date) >= 2
|
||||||
|
let date[1] = formatted
|
||||||
|
else
|
||||||
|
call add(date, formatted)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif a:type ==? 'unshift'
|
||||||
|
let date = [formatted, date[0]]
|
||||||
|
endif
|
||||||
|
|
||||||
|
let trans['date'] = join(date[0:1], '=')
|
||||||
|
|
||||||
|
call setline(trans['head'], trans.format_head())
|
||||||
|
endf
|
||||||
|
|
||||||
|
" == get transactions ==
|
||||||
|
|
||||||
|
function! ledger#transaction_from_lnum(lnum) abort
|
||||||
|
return s:transaction.from_lnum(a:lnum)
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! ledger#transactions(...) abort
|
||||||
|
if a:0 == 2
|
||||||
|
let lnum = a:1
|
||||||
|
let end = a:2
|
||||||
|
elseif a:0 == 0
|
||||||
|
let lnum = 1
|
||||||
|
let end = line('$')
|
||||||
|
else
|
||||||
|
throw 'wrong number of arguments for get_transactions()'
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
" safe view / position
|
||||||
|
let view = winsaveview()
|
||||||
|
let fe = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
|
||||||
|
let transactions = []
|
||||||
|
call cursor(lnum, 0)
|
||||||
|
while lnum && lnum < end
|
||||||
|
let trans = s:transaction.from_lnum(lnum)
|
||||||
|
if ! empty(trans)
|
||||||
|
call add(transactions, trans)
|
||||||
|
call cursor(trans['tail'], 0)
|
||||||
|
endif
|
||||||
|
let lnum = search('^[~=[:digit:]]', 'cW')
|
||||||
|
endw
|
||||||
|
|
||||||
|
" restore view / position
|
||||||
|
let &foldenable = fe
|
||||||
|
call winrestview(view)
|
||||||
|
|
||||||
|
return transactions
|
||||||
|
endf
|
||||||
|
|
||||||
|
" == transaction object implementation ==
|
||||||
|
|
||||||
|
let s:transaction = {} "{{{1
|
||||||
|
function! s:transaction.new() abort dict
|
||||||
|
return copy(s:transaction)
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:transaction.from_lnum(lnum) abort dict "{{{2
|
||||||
|
let [head, tail] = s:get_transaction_extents(a:lnum)
|
||||||
|
if ! head
|
||||||
|
return {}
|
||||||
|
endif
|
||||||
|
|
||||||
|
let trans = copy(s:transaction)
|
||||||
|
let trans['head'] = head
|
||||||
|
let trans['tail'] = tail
|
||||||
|
|
||||||
|
" split off eventual comments at the end of line
|
||||||
|
let line = split(getline(head), '\ze\s*\%(\t\| \);', 1)
|
||||||
|
if len(line) > 1
|
||||||
|
let trans['appendix'] = join(line[1:], '')
|
||||||
|
endif
|
||||||
|
|
||||||
|
" parse rest of line
|
||||||
|
" FIXME (minor): will not preserve spacing (see 'join(parts)')
|
||||||
|
let parts = split(line[0], '\s\+')
|
||||||
|
if parts[0] ==# '~'
|
||||||
|
let trans['expr'] = join(parts[1:])
|
||||||
|
return trans
|
||||||
|
elseif parts[0] ==# '='
|
||||||
|
let trans['auto'] = join(parts[1:])
|
||||||
|
return trans
|
||||||
|
elseif parts[0] !~# '^\d'
|
||||||
|
" this case is avoided in s:get_transaction_extents(),
|
||||||
|
" but we'll check anyway.
|
||||||
|
return {}
|
||||||
|
endif
|
||||||
|
|
||||||
|
for part in parts
|
||||||
|
if ! has_key(trans, 'date') && part =~# '^\d'
|
||||||
|
let trans['date'] = part
|
||||||
|
elseif ! has_key(trans, 'code') && part =~# '^([^)]*)$'
|
||||||
|
let trans['code'] = part[1:-2]
|
||||||
|
elseif ! has_key(trans, 'state') && part =~# '^[[:punct:]]$'
|
||||||
|
" the first character by itself is assumed to be the state of the transaction.
|
||||||
|
let trans['state'] = part
|
||||||
|
else
|
||||||
|
" everything after date/code or state belongs to the description
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
call remove(parts, 0)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
let trans['description'] = join(parts)
|
||||||
|
return trans
|
||||||
|
endf "}}}
|
||||||
|
|
||||||
|
function! s:transaction.set_state(char) abort dict "{{{2
|
||||||
|
if has_key(self, 'state') && a:char =~# '^\s*$'
|
||||||
|
call remove(self, 'state')
|
||||||
|
else
|
||||||
|
let self['state'] = a:char
|
||||||
|
endif
|
||||||
|
endf "}}}
|
||||||
|
|
||||||
|
function! s:transaction.parse_body(...) abort dict "{{{2
|
||||||
|
if a:0 == 2
|
||||||
|
let head = a:1
|
||||||
|
let tail = a:2
|
||||||
|
elseif a:0 == 0
|
||||||
|
let head = self['head']
|
||||||
|
let tail = self['tail']
|
||||||
|
else
|
||||||
|
throw 'wrong number of arguments for parse_body()'
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ! head || tail <= head
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
let lnum = head
|
||||||
|
let tags = {}
|
||||||
|
let postings = []
|
||||||
|
while lnum <= tail
|
||||||
|
let line = split(getline(lnum), '\s*\%(\t\| \);', 1)
|
||||||
|
|
||||||
|
if line[0] =~# '^\s\+[^[:blank:];]'
|
||||||
|
" posting
|
||||||
|
let [state, rest] = matchlist(line[0], '^\s\+\([*!]\?\)\s*\(.*\)$')[1:2]
|
||||||
|
if rest =~# '\t\| '
|
||||||
|
let [account, amount] = matchlist(rest, '^\(.\{-}\)\%(\t\| \)\s*\(.\{-}\)\s*$')[1:2]
|
||||||
|
else
|
||||||
|
let amount = ''
|
||||||
|
let account = matchstr(rest, '^\s*\zs.\{-}\ze\s*$')
|
||||||
|
endif
|
||||||
|
call add(postings, {'account': account, 'amount': amount, 'state': state})
|
||||||
|
end
|
||||||
|
|
||||||
|
" where are tags to be stored?
|
||||||
|
if empty(postings)
|
||||||
|
" they belong to the transaction
|
||||||
|
let tag_container = tags
|
||||||
|
else
|
||||||
|
" they belong to last posting
|
||||||
|
if ! has_key(postings[-1], 'tags')
|
||||||
|
let postings[-1]['tags'] = {}
|
||||||
|
endif
|
||||||
|
let tag_container = postings[-1]['tags']
|
||||||
|
endif
|
||||||
|
|
||||||
|
let comment = join(line[1:], ' ;')
|
||||||
|
if comment =~# '^\s*:'
|
||||||
|
" tags without values
|
||||||
|
for t in s:findall(comment, ':\zs[^:[:blank:]]\([^:]*[^:[:blank:]]\)\?\ze:')
|
||||||
|
let tag_container[t] = ''
|
||||||
|
endfor
|
||||||
|
elseif comment =~# '^\s*[^:[:blank:]][^:]\+:'
|
||||||
|
" tag with value
|
||||||
|
let key = matchstr(comment, '^\s*\zs[^:]\+\ze:')
|
||||||
|
if ! empty(key)
|
||||||
|
let val = matchstr(comment, ':\s*\zs.*\ze\s*$')
|
||||||
|
let tag_container[key] = val
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let lnum += 1
|
||||||
|
endw
|
||||||
|
return [tags, postings]
|
||||||
|
endf "}}}
|
||||||
|
|
||||||
|
function! s:transaction.format_head() abort dict "{{{2
|
||||||
|
if has_key(self, 'expr')
|
||||||
|
return '~ '.self['expr']
|
||||||
|
elseif has_key(self, 'auto')
|
||||||
|
return '= '.self['auto']
|
||||||
|
endif
|
||||||
|
|
||||||
|
let parts = []
|
||||||
|
if has_key(self, 'date') | call add(parts, self['date']) | endif
|
||||||
|
if has_key(self, 'state') | call add(parts, self['state']) | endif
|
||||||
|
if has_key(self, 'code') | call add(parts, '('.self['code'].')') | endif
|
||||||
|
if has_key(self, 'description') | call add(parts, self['description']) | endif
|
||||||
|
|
||||||
|
let line = join(parts)
|
||||||
|
if has_key(self, 'appendix') | let line .= self['appendix'] | endif
|
||||||
|
|
||||||
|
return line
|
||||||
|
endf "}}}
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" == helper functions ==
|
||||||
|
|
||||||
|
" get a list of declared accounts in the buffer
|
||||||
|
function! ledger#declared_accounts(...) abort
|
||||||
|
if a:0 == 2
|
||||||
|
let lnum = a:1
|
||||||
|
let lend = a:2
|
||||||
|
elseif a:0 == 0
|
||||||
|
let lnum = 1
|
||||||
|
let lend = line('$')
|
||||||
|
else
|
||||||
|
throw 'wrong number of arguments for ledger#declared_accounts()'
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
" save view / position
|
||||||
|
let view = winsaveview()
|
||||||
|
let fe = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
|
||||||
|
let accounts = []
|
||||||
|
call cursor(lnum, 0)
|
||||||
|
while 1
|
||||||
|
let lnum = search('^account\s', 'cW', lend)
|
||||||
|
if !lnum || lnum > lend
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
|
||||||
|
" remove comments at the end and "account" at the front
|
||||||
|
let line = split(getline(lnum), '\s\+;')[0]
|
||||||
|
let line = matchlist(line, 'account\s\+\(.\+\)')[1]
|
||||||
|
|
||||||
|
if len(line) > 1
|
||||||
|
call add(accounts, line)
|
||||||
|
endif
|
||||||
|
|
||||||
|
call cursor(lnum+1,0)
|
||||||
|
endw
|
||||||
|
|
||||||
|
" restore view / position
|
||||||
|
let &foldenable = fe
|
||||||
|
call winrestview(view)
|
||||||
|
|
||||||
|
return accounts
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:get_transaction_extents(lnum) abort
|
||||||
|
if ! (indent(a:lnum) || getline(a:lnum) =~# '^[~=[:digit:]]')
|
||||||
|
" only do something if lnum is in a transaction
|
||||||
|
return [0, 0]
|
||||||
|
endif
|
||||||
|
|
||||||
|
" safe view / position
|
||||||
|
let view = winsaveview()
|
||||||
|
let fe = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
|
||||||
|
call cursor(a:lnum, 0)
|
||||||
|
let head = search('^[~=[:digit:]]', 'bcnW')
|
||||||
|
let tail = search('^[^;[:blank:]]\S\+', 'nW')
|
||||||
|
let tail = tail > head ? tail - 1 : line('$')
|
||||||
|
|
||||||
|
" restore view / position
|
||||||
|
let &foldenable = fe
|
||||||
|
call winrestview(view)
|
||||||
|
|
||||||
|
return head ? [head, tail] : [0, 0]
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! ledger#find_in_tree(tree, levels) abort
|
||||||
|
if empty(a:levels)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let results = []
|
||||||
|
let currentlvl = a:levels[0]
|
||||||
|
let nextlvls = a:levels[1:]
|
||||||
|
let branches = ledger#filter_items(keys(a:tree), currentlvl)
|
||||||
|
for branch in branches
|
||||||
|
let exact = empty(nextlvls)
|
||||||
|
call add(results, [branch, exact])
|
||||||
|
if ! empty(nextlvls)
|
||||||
|
for [result, exact] in ledger#find_in_tree(a:tree[branch], nextlvls)
|
||||||
|
call add(results, [branch.':'.result, exact])
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return results
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! ledger#filter_items(list, keyword) abort
|
||||||
|
" return only those items that start with a specified keyword
|
||||||
|
return filter(copy(a:list), 'v:val =~ ''^\V'.substitute(a:keyword, '\\', '\\\\', 'g').'''')
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:findall(text, rx) abort
|
||||||
|
" returns all the matches in a string,
|
||||||
|
" there will be overlapping matches according to :help match()
|
||||||
|
let matches = []
|
||||||
|
|
||||||
|
while 1
|
||||||
|
let m = matchstr(a:text, a:rx, 0, len(matches)+1)
|
||||||
|
if empty(m)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(matches, m)
|
||||||
|
endw
|
||||||
|
|
||||||
|
return matches
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Move the cursor to the specified column, filling the line with spaces if necessary.
|
||||||
|
" Ensure that at least min_spaces are added, and go to the end of the line if
|
||||||
|
" the line is already too long
|
||||||
|
function! s:goto_col(pos, min_spaces) abort
|
||||||
|
exec 'normal!' '$'
|
||||||
|
let diff = max([a:min_spaces, a:pos - virtcol('.')])
|
||||||
|
if diff > 0 | exec 'normal!' diff . 'a ' | endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Return character position of decimal separator (multibyte safe)
|
||||||
|
function! s:decimalpos(expr) abort
|
||||||
|
let pos = match(a:expr, '\V' . g:ledger_decimal_sep)
|
||||||
|
if pos > 0
|
||||||
|
let pos = strchars(a:expr[:pos]) - 1
|
||||||
|
endif
|
||||||
|
return pos
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Align the amount expression after an account name at the decimal point.
|
||||||
|
"
|
||||||
|
" This function moves the amount expression of a posting so that the decimal
|
||||||
|
" separator is aligned at the column specified by g:ledger_align_at.
|
||||||
|
"
|
||||||
|
" For example, after selecting:
|
||||||
|
"
|
||||||
|
" 2015/05/09 Some Payee
|
||||||
|
" Expenses:Other $120,23 ; Tags here
|
||||||
|
" Expenses:Something $-4,99
|
||||||
|
" Expenses:More ($12,34 + $16,32)
|
||||||
|
"
|
||||||
|
" :'<,'>call ledger#align_commodity() produces:
|
||||||
|
"
|
||||||
|
" 2015/05/09 Some Payee
|
||||||
|
" Expenses:Other $120,23 ; Tags here
|
||||||
|
" Expenses:Something $-4,99
|
||||||
|
" Expenses:More ($12,34 + $16,32)
|
||||||
|
"
|
||||||
|
function! ledger#align_commodity() abort
|
||||||
|
" Extract the part of the line after the account name (excluding spaces):
|
||||||
|
let l:line = getline('.')
|
||||||
|
let rhs = matchstr(l:line, '\m^\s\+[^;[:space:]].\{-}\(\t\| \)\s*\zs.*$')
|
||||||
|
if rhs !=# ''
|
||||||
|
" Remove everything after the account name (including spaces):
|
||||||
|
call setline('.', substitute(l:line, '\m^\s\+[^[:space:]].\{-}\zs\(\t\| \).*$', '', ''))
|
||||||
|
let pos = -1
|
||||||
|
if g:ledger_decimal_sep !=# ''
|
||||||
|
" Find the position of the first decimal separator:
|
||||||
|
let pos = s:decimalpos(rhs)
|
||||||
|
endif
|
||||||
|
if pos < 0
|
||||||
|
" Find the position after the first digits
|
||||||
|
let pos = matchend(rhs, '\m\d[^[:space:]]*')
|
||||||
|
endif
|
||||||
|
" Go to the column that allows us to align the decimal separator at g:ledger_align_at:
|
||||||
|
if pos > 0
|
||||||
|
call s:goto_col(g:ledger_align_at - pos - 1, 2)
|
||||||
|
else
|
||||||
|
call s:goto_col(g:ledger_align_at - strdisplaywidth(rhs) - 2, 2)
|
||||||
|
endif " Append the part of the line that was previously removed:
|
||||||
|
exe 'normal! a' . rhs
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Align the amount under the cursor and append/prepend the default currency.
|
||||||
|
function! ledger#align_amount_at_cursor() abort
|
||||||
|
" Select and cut text:
|
||||||
|
normal! viWd
|
||||||
|
" Find the position of the decimal separator
|
||||||
|
let pos = s:decimalpos(@") " Returns zero when the separator is the empty string
|
||||||
|
if pos <= 0
|
||||||
|
let pos = len(@")
|
||||||
|
endif
|
||||||
|
" Paste text at the correct column and append/prepend default commodity:
|
||||||
|
if g:ledger_commodity_before
|
||||||
|
call s:goto_col(g:ledger_align_at - pos - len(g:ledger_default_commodity) - len(g:ledger_commodity_sep) - 1, 2)
|
||||||
|
exe 'normal! a' . g:ledger_default_commodity . g:ledger_commodity_sep
|
||||||
|
normal! p
|
||||||
|
else
|
||||||
|
call s:goto_col(g:ledger_align_at - pos - 1, 2)
|
||||||
|
exe 'normal! pa' . g:ledger_commodity_sep . g:ledger_default_commodity
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Report generation {{{1
|
||||||
|
|
||||||
|
" Helper functions and variables {{{2
|
||||||
|
" Position of report windows
|
||||||
|
let s:winpos_map = {
|
||||||
|
\ 'T': 'to new', 't': 'abo new', 'B': 'bo new', 'b': 'bel new',
|
||||||
|
\ 'L': 'to vnew', 'l': 'abo vnew', 'R': 'bo vnew', 'r': 'bel vnew'
|
||||||
|
\ }
|
||||||
|
|
||||||
|
function! s:error_message(msg) abort
|
||||||
|
redraw " See h:echo-redraw
|
||||||
|
echohl ErrorMsg
|
||||||
|
echo "\r"
|
||||||
|
echomsg a:msg
|
||||||
|
echohl NONE
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:warning_message(msg) abort
|
||||||
|
redraw " See h:echo-redraw
|
||||||
|
echohl WarningMsg
|
||||||
|
echo "\r"
|
||||||
|
echomsg a:msg
|
||||||
|
echohl NONE
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Open the quickfix/location window when it is not empty,
|
||||||
|
" closes it if it is empty.
|
||||||
|
"
|
||||||
|
" Optional parameters:
|
||||||
|
" a:1 Quickfix window title.
|
||||||
|
" a:2 Message to show when the window is empty.
|
||||||
|
"
|
||||||
|
" Returns 0 if the quickfix window is empty, 1 otherwise.
|
||||||
|
function! s:quickfix_toggle(...) abort
|
||||||
|
if g:ledger_use_location_list
|
||||||
|
let l:list = 'l'
|
||||||
|
let l:open = (len(getloclist(winnr())) > 0)
|
||||||
|
else
|
||||||
|
let l:list = 'c'
|
||||||
|
let l:open = (len(getqflist()) > 0)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if l:open
|
||||||
|
execute (g:ledger_qf_vertical ? 'vert' : 'botright') l:list.'open' g:ledger_qf_size
|
||||||
|
" Set local mappings to quit the quickfix window or lose focus.
|
||||||
|
nnoremap <silent> <buffer> <tab> <c-w><c-w>
|
||||||
|
execute 'nnoremap <silent> <buffer> q :' l:list.'close<CR>'
|
||||||
|
" Note that the following settings do not persist (e.g., when you close and re-open the quickfix window).
|
||||||
|
" See: https://superuser.com/questions/356912/how-do-i-change-the-quickix-title-status-bar-in-vim
|
||||||
|
if g:ledger_qf_hide_file
|
||||||
|
setl conceallevel=2
|
||||||
|
setl concealcursor=nc
|
||||||
|
syntax match qfFile /^[^|]*/ transparent conceal
|
||||||
|
endif
|
||||||
|
if a:0 > 0
|
||||||
|
let w:quickfix_title = a:1
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute l:list.'close'
|
||||||
|
call s:warning_message((a:0 > 1) ? a:2 : 'No results')
|
||||||
|
return 0
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Populate a quickfix/location window with data. The argument must be a String
|
||||||
|
" or a List.
|
||||||
|
function! s:quickfix_populate(data) abort
|
||||||
|
" Note that cexpr/lexpr always uses the global value of errorformat
|
||||||
|
let l:efm = &errorformat " Save global errorformat
|
||||||
|
set errorformat=%EWhile\ parsing\ file\ \"%f\"\\,\ line\ %l:,%ZError:\ %m,%-C%.%#
|
||||||
|
set errorformat+=%tarning:\ \"%f\"\\,\ line\ %l:\ %m
|
||||||
|
" Format to parse command-line errors:
|
||||||
|
set errorformat+=Error:\ %m
|
||||||
|
" Format to parse reports:
|
||||||
|
set errorformat+=%f:%l\ %m
|
||||||
|
set errorformat+=%-G%.%#
|
||||||
|
execute (g:ledger_use_location_list ? 'l' : 'c').'getexpr' 'a:data'
|
||||||
|
let &errorformat = l:efm " Restore global errorformat
|
||||||
|
return
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Build a ledger command to process the given file.
|
||||||
|
function! s:ledger_cmd(file, args) abort
|
||||||
|
let l:options = g:ledger_extra_options
|
||||||
|
if len(g:ledger_date_format) > 0 && !g:ledger_is_hledger
|
||||||
|
let l:options = join([l:options, '--date-format', g:ledger_date_format,
|
||||||
|
\ '--input-date-format', g:ledger_date_format])
|
||||||
|
endif
|
||||||
|
return join([g:ledger_bin, l:options, '-f', shellescape(expand(a:file)), a:args])
|
||||||
|
endf
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! ledger#autocomplete_and_align() abort
|
||||||
|
if pumvisible()
|
||||||
|
return "\<c-n>"
|
||||||
|
endif
|
||||||
|
" Align an amount only if there is a digit immediately before the cursor and
|
||||||
|
" such digit is preceded by at least one space (the latter condition is
|
||||||
|
" necessary to avoid situations where a date starting at the first column is
|
||||||
|
" confused with a commodity to be aligned).
|
||||||
|
if match(getline('.'), '\s.*\d\%'.col('.').'c') > -1
|
||||||
|
normal! h
|
||||||
|
call ledger#align_amount_at_cursor()
|
||||||
|
return "\<c-o>A"
|
||||||
|
endif
|
||||||
|
return "\<c-x>\<c-o>"
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Use current line as input to ledger entry and replace with output. If there
|
||||||
|
" are errors, they are echoed instead.
|
||||||
|
function! ledger#entry() abort
|
||||||
|
let l:output = systemlist(s:ledger_cmd(g:ledger_main, join(['entry', getline('.')])))
|
||||||
|
" Filter out warnings
|
||||||
|
let l:output = filter(l:output, "v:val !~? '^Warning: '")
|
||||||
|
" Errors may occur
|
||||||
|
if v:shell_error
|
||||||
|
echomsg join(l:output)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" Append output so we insert instead of overwrite, then delete line
|
||||||
|
call append('.', l:output)
|
||||||
|
normal! "_dd
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Run an arbitrary ledger command and show the output in a new buffer. If
|
||||||
|
" there are errors, no new buffer is opened: the errors are displayed in a
|
||||||
|
" quickfix window instead.
|
||||||
|
"
|
||||||
|
" Parameters:
|
||||||
|
" file The file to be processed.
|
||||||
|
" args A string of Ledger command-line arguments.
|
||||||
|
"
|
||||||
|
" Returns:
|
||||||
|
" Ledger's output as a String.
|
||||||
|
function! ledger#report(file, args) abort
|
||||||
|
let l:output = systemlist(s:ledger_cmd(a:file, a:args))
|
||||||
|
if v:shell_error " If there are errors, show them in a quickfix/location list.
|
||||||
|
call s:quickfix_populate(l:output)
|
||||||
|
call s:quickfix_toggle('Errors', 'Unable to parse errors')
|
||||||
|
endif
|
||||||
|
return l:output
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Open the output of a Ledger's command in a new buffer.
|
||||||
|
"
|
||||||
|
" Parameters:
|
||||||
|
" report A String containing the output of a Ledger's command.
|
||||||
|
"
|
||||||
|
" Returns:
|
||||||
|
" 1 if a new buffer is created; 0 otherwise.
|
||||||
|
function! ledger#output(report) abort
|
||||||
|
if empty(a:report)
|
||||||
|
call s:warning_message('No results')
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
" Open a new buffer to show Ledger's output.
|
||||||
|
execute get(s:winpos_map, g:ledger_winpos, 'bo new')
|
||||||
|
setlocal buftype=nofile bufhidden=wipe modifiable nobuflisted noswapfile nowrap
|
||||||
|
call append(0, a:report)
|
||||||
|
setlocal nomodifiable
|
||||||
|
" Set local mappings to quit window or lose focus.
|
||||||
|
nnoremap <silent> <buffer> <tab> <c-w><c-p>
|
||||||
|
nnoremap <silent> <buffer> q <c-w><c-p>@=winnr('#')<cr><c-w>c
|
||||||
|
" Add some coloring to the report
|
||||||
|
syntax match LedgerNumber /-\@1<!\d\+\([,.]\d\+\)*/
|
||||||
|
syntax match LedgerNegativeNumber /-\d\+\([,.]\d\+\)*/
|
||||||
|
syntax match LedgerImproperPerc /\d\d\d\+%/
|
||||||
|
return 1
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Show an arbitrary register report in a quickfix list.
|
||||||
|
"
|
||||||
|
" Parameters:
|
||||||
|
" file The file to be processed
|
||||||
|
" args A string of Ledger command-line arguments.
|
||||||
|
function! ledger#register(file, args) abort
|
||||||
|
let l:cmd = s:ledger_cmd(a:file, join([
|
||||||
|
\ 'register',
|
||||||
|
\ "--format='" . g:ledger_qf_register_format . "'",
|
||||||
|
\ "--prepend-format='%(filename):%(beg_line) '",
|
||||||
|
\ a:args
|
||||||
|
\ ]))
|
||||||
|
call s:quickfix_populate(systemlist(l:cmd))
|
||||||
|
call s:quickfix_toggle('Register report')
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Reconcile the given account.
|
||||||
|
" This function accepts a file path as a third optional argument.
|
||||||
|
" The default is to use the value of g:ledger_main.
|
||||||
|
"
|
||||||
|
" Parameters:
|
||||||
|
" file The file to be processed
|
||||||
|
" account An account name (String)
|
||||||
|
" target_amount The target amount (Float)
|
||||||
|
function! ledger#reconcile(file, account, target_amount) abort
|
||||||
|
let l:cmd = s:ledger_cmd(a:file, join([
|
||||||
|
\ 'register',
|
||||||
|
\ '--uncleared',
|
||||||
|
\ "--format='" . g:ledger_qf_reconcile_format . "'",
|
||||||
|
\ "--prepend-format='%(filename):%(beg_line) %(pending ? \"P\" : \"U\") '",
|
||||||
|
\ shellescape(a:account)
|
||||||
|
\ ]))
|
||||||
|
let l:file = expand(a:file) " Needed for #show_balance() later
|
||||||
|
call s:quickfix_populate(systemlist(l:cmd))
|
||||||
|
if s:quickfix_toggle('Reconcile ' . a:account, 'Nothing to reconcile')
|
||||||
|
let g:ledger_target_amount = a:target_amount
|
||||||
|
" Show updated account balance upon saving, as long as the quickfix window is open
|
||||||
|
augroup reconcile
|
||||||
|
autocmd!
|
||||||
|
execute "autocmd BufWritePost *.ldg,*.ledger call ledger#show_balance('" . l:file . "','" . a:account . "')"
|
||||||
|
autocmd BufWipeout <buffer> call <sid>finish_reconciling()
|
||||||
|
augroup END
|
||||||
|
" Add refresh shortcut
|
||||||
|
execute "nnoremap <silent> <buffer> <c-l> :<c-u>call ledger#reconcile('"
|
||||||
|
\ . l:file . "','" . a:account . "'," . string(a:target_amount) . ')<cr>'
|
||||||
|
call ledger#show_balance(l:file, a:account)
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:finish_reconciling() abort
|
||||||
|
unlet g:ledger_target_amount
|
||||||
|
augroup reconcile
|
||||||
|
autocmd!
|
||||||
|
augroup END
|
||||||
|
augroup! reconcile
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Show the pending/cleared balance of an account.
|
||||||
|
" This function has an optional parameter:
|
||||||
|
"
|
||||||
|
" a:1 An account name
|
||||||
|
"
|
||||||
|
" If no account if given, the account in the current line is used.
|
||||||
|
function! ledger#show_balance(file, ...) abort
|
||||||
|
let l:account = a:0 > 0 && !empty(a:1) ? a:1 : matchstr(getline('.'), '\m\( \|\t\)\zs\S.\{-}\ze\( \|\t\|$\)')
|
||||||
|
if empty(l:account)
|
||||||
|
call s:error_message('No account found')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let l:cmd = s:ledger_cmd(a:file, join([
|
||||||
|
\ 'cleared',
|
||||||
|
\ shellescape(l:account),
|
||||||
|
\ '--empty',
|
||||||
|
\ '--collapse',
|
||||||
|
\ "--format='%(scrub(get_at(display_total, 0)))|%(scrub(get_at(display_total, 1)))|%(quantity(scrub(get_at(display_total, 1))))'",
|
||||||
|
\ (empty(g:ledger_default_commodity) ? '' : '-X ' . shellescape(g:ledger_default_commodity))
|
||||||
|
\ ]))
|
||||||
|
let l:output = systemlist(l:cmd)
|
||||||
|
" Errors may occur, for example, when the account has multiple commodities
|
||||||
|
" and g:ledger_default_commodity is empty.
|
||||||
|
if v:shell_error
|
||||||
|
call s:quickfix_populate(l:output)
|
||||||
|
call s:quickfix_toggle('Errors', 'Unable to parse errors')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let l:amounts = split(l:output[-1], '|')
|
||||||
|
redraw " Necessary in some cases to overwrite previous messages. See :h echo-redraw
|
||||||
|
if len(l:amounts) < 3
|
||||||
|
call s:error_message('Could not determine balance. Did you use a valid account?')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
echo g:ledger_pending_string
|
||||||
|
echohl LedgerPending
|
||||||
|
echon l:amounts[0]
|
||||||
|
echohl NONE
|
||||||
|
echon ' ' g:ledger_cleared_string
|
||||||
|
echohl LedgerCleared
|
||||||
|
echon l:amounts[1]
|
||||||
|
echohl NONE
|
||||||
|
if exists('g:ledger_target_amount')
|
||||||
|
echon ' ' g:ledger_target_string
|
||||||
|
echohl LedgerTarget
|
||||||
|
echon printf('%.2f', (g:ledger_target_amount - str2float(l:amounts[2])))
|
||||||
|
echohl NONE
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
endif
|
||||||
244
autoload/nim.vim
Normal file
244
autoload/nim.vim
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
|
||||||
|
|
||||||
|
let g:nim_log = []
|
||||||
|
let s:plugin_path = escape(expand('<sfile>:p:h'), '\')
|
||||||
|
|
||||||
|
if !exists("g:nim_caas_enabled")
|
||||||
|
let g:nim_caas_enabled = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !executable('nim')
|
||||||
|
echoerr "the Nim compiler must be in your system's PATH"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has("python3")
|
||||||
|
exe 'py3file ' . fnameescape(s:plugin_path) . '/nim_vim.py'
|
||||||
|
elseif has("python")
|
||||||
|
exe 'pyfile ' . fnameescape(s:plugin_path) . '/nim_vim.py'
|
||||||
|
endif
|
||||||
|
|
||||||
|
fun! nim#init()
|
||||||
|
let cmd = printf("nim --dump.format:json --verbosity:0 dump %s", s:CurrentNimFile())
|
||||||
|
let raw_dumpdata = system(cmd)
|
||||||
|
if !v:shell_error && expand("%:e") == "nim"
|
||||||
|
let false = 0 " Needed for eval of json
|
||||||
|
let true = 1 " Needed for eval of json
|
||||||
|
let dumpdata = eval(substitute(raw_dumpdata, "\n", "", "g"))
|
||||||
|
|
||||||
|
let b:nim_project_root = dumpdata['project_path']
|
||||||
|
let b:nim_defined_symbols = dumpdata['defined_symbols']
|
||||||
|
let b:nim_caas_enabled = g:nim_caas_enabled || index(dumpdata['defined_symbols'], 'forcecaas') != -1
|
||||||
|
|
||||||
|
for path in dumpdata['lib_paths']
|
||||||
|
if finddir(path) == path
|
||||||
|
let &l:path = path . "," . &l:path
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
else
|
||||||
|
let b:nim_caas_enabled = 0
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! s:UpdateNimLog()
|
||||||
|
setlocal buftype=nofile
|
||||||
|
setlocal bufhidden=hide
|
||||||
|
setlocal noswapfile
|
||||||
|
|
||||||
|
for entry in g:nim_log
|
||||||
|
call append(line('$'), split(entry, "\n"))
|
||||||
|
endfor
|
||||||
|
|
||||||
|
let g:nim_log = []
|
||||||
|
|
||||||
|
match Search /^nim\ .*/
|
||||||
|
endf
|
||||||
|
|
||||||
|
augroup NimVim
|
||||||
|
au!
|
||||||
|
au BufEnter log://nim call s:UpdateNimLog()
|
||||||
|
if has("python3") || has("python")
|
||||||
|
" au QuitPre * :py nimTerminateAll()
|
||||||
|
au VimLeavePre * :py nimTerminateAll()
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
command! NimLog :e log://nim
|
||||||
|
|
||||||
|
command! NimTerminateService
|
||||||
|
\ :exe printf("py nimTerminateService('%s')", b:nim_project_root)
|
||||||
|
|
||||||
|
command! NimRestartService
|
||||||
|
\ :exe printf("py nimRestartService('%s')", b:nim_project_root)
|
||||||
|
|
||||||
|
fun! s:CurrentNimFile()
|
||||||
|
let save_cur = getpos('.')
|
||||||
|
call cursor(0, 0, 0)
|
||||||
|
|
||||||
|
let PATTERN = "\\v^\\#\\s*included from \\zs.*\\ze"
|
||||||
|
let l = search(PATTERN, "n")
|
||||||
|
|
||||||
|
if l != 0
|
||||||
|
let f = matchstr(getline(l), PATTERN)
|
||||||
|
let l:to_check = expand('%:h') . "/" . f
|
||||||
|
else
|
||||||
|
let l:to_check = expand("%")
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setpos('.', save_cur)
|
||||||
|
return l:to_check
|
||||||
|
endf
|
||||||
|
|
||||||
|
let g:nim_symbol_types = {
|
||||||
|
\ 'skParam': 'v',
|
||||||
|
\ 'skVar': 'v',
|
||||||
|
\ 'skLet': 'v',
|
||||||
|
\ 'skTemp': 'v',
|
||||||
|
\ 'skForVar': 'v',
|
||||||
|
\ 'skConst': 'v',
|
||||||
|
\ 'skResult': 'v',
|
||||||
|
\ 'skGenericParam': 't',
|
||||||
|
\ 'skType': 't',
|
||||||
|
\ 'skField': 'm',
|
||||||
|
\ 'skProc': 'f',
|
||||||
|
\ 'skMethod': 'f',
|
||||||
|
\ 'skIterator': 'f',
|
||||||
|
\ 'skConverter': 'f',
|
||||||
|
\ 'skMacro': 'f',
|
||||||
|
\ 'skTemplate': 'f',
|
||||||
|
\ 'skEnumField': 'v',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
fun! NimExec(op)
|
||||||
|
let isDirty = getbufvar(bufnr('%'), "&modified")
|
||||||
|
if isDirty
|
||||||
|
let tmp = tempname() . bufname("%") . "_dirty.nim"
|
||||||
|
silent! exe ":w " . tmp
|
||||||
|
|
||||||
|
let cmd = printf("idetools %s --trackDirty:\"%s,%s,%d,%d\" \"%s\"",
|
||||||
|
\ a:op, tmp, expand('%:p'), line('.'), col('.')-1, s:CurrentNimFile())
|
||||||
|
else
|
||||||
|
let cmd = printf("idetools %s --track:\"%s,%d,%d\" \"%s\"",
|
||||||
|
\ a:op, expand('%:p'), line('.'), col('.')-1, s:CurrentNimFile())
|
||||||
|
endif
|
||||||
|
|
||||||
|
if b:nim_caas_enabled
|
||||||
|
exe printf("py nimExecCmd('%s', '%s', False)", b:nim_project_root, cmd)
|
||||||
|
let output = l:py_res
|
||||||
|
else
|
||||||
|
let output = system("nim " . cmd)
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(g:nim_log, "nim " . cmd . "\n" . output)
|
||||||
|
return output
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! NimExecAsync(op, Handler)
|
||||||
|
let result = NimExec(a:op)
|
||||||
|
call a:Handler(result)
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! NimComplete(findstart, base)
|
||||||
|
if b:nim_caas_enabled == 0
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:findstart
|
||||||
|
if synIDattr(synIDtrans(synID(line("."),col("."),1)), "name") == 'Comment'
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
let line = getline('.')
|
||||||
|
let start = col('.') - 1
|
||||||
|
while start > 0 && line[start - 1] =~? '\w'
|
||||||
|
let start -= 1
|
||||||
|
endwhile
|
||||||
|
return start
|
||||||
|
else
|
||||||
|
let result = []
|
||||||
|
let sugOut = NimExec("--suggest")
|
||||||
|
for line in split(sugOut, '\n')
|
||||||
|
let lineData = split(line, '\t')
|
||||||
|
if len(lineData) > 0 && lineData[0] == "sug"
|
||||||
|
let word = split(lineData[2], '\.')[-1]
|
||||||
|
if a:base ==? '' || word =~# '^' . a:base
|
||||||
|
let kind = get(g:nim_symbol_types, lineData[1], '')
|
||||||
|
let c = { 'word': word, 'kind': kind, 'menu': lineData[3], 'dup': 1 }
|
||||||
|
call add(result, c)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endif
|
||||||
|
endf
|
||||||
|
|
||||||
|
if !exists("g:neocomplcache_omni_patterns")
|
||||||
|
let g:neocomplcache_omni_patterns = {}
|
||||||
|
endif
|
||||||
|
let g:neocomplcache_omni_patterns['nim'] = '[^. *\t]\.\w*'
|
||||||
|
|
||||||
|
if !exists('g:neocomplete#sources#omni#input_patterns')
|
||||||
|
let g:neocomplete#sources#omni#input_patterns = {}
|
||||||
|
endif
|
||||||
|
let g:neocomplete#sources#omni#input_patterns['nim'] = '[^. *\t]\.\w*'
|
||||||
|
|
||||||
|
let g:nim_completion_callbacks = {}
|
||||||
|
|
||||||
|
fun! NimAsyncCmdComplete(cmd, output)
|
||||||
|
call add(g:nim_log, a:output)
|
||||||
|
echom g:nim_completion_callbacks
|
||||||
|
if has_key(g:nim_completion_callbacks, a:cmd)
|
||||||
|
let Callback = get(g:nim_completion_callbacks, a:cmd)
|
||||||
|
call Callback(a:output)
|
||||||
|
" remove(g:nim_completion_callbacks, a:cmd)
|
||||||
|
else
|
||||||
|
echom "ERROR, Unknown Command: " . a:cmd
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! GotoDefinition_nim_ready(def_output)
|
||||||
|
if v:shell_error
|
||||||
|
echo "nim was unable to locate the definition. exit code: " . v:shell_error
|
||||||
|
" echoerr a:def_output
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let rawDef = matchstr(a:def_output, 'def\t\([^\n]*\)')
|
||||||
|
if rawDef == ""
|
||||||
|
echo "the current cursor position does not match any definitions"
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let defBits = split(rawDef, '\t')
|
||||||
|
let file = defBits[4]
|
||||||
|
let line = defBits[5]
|
||||||
|
exe printf("e +%d %s", line, file)
|
||||||
|
return 1
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! GotoDefinition_nim()
|
||||||
|
call NimExecAsync("--def", function("GotoDefinition_nim_ready"))
|
||||||
|
endf
|
||||||
|
|
||||||
|
fun! FindReferences_nim()
|
||||||
|
setloclist()
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Syntastic syntax checking
|
||||||
|
fun! SyntaxCheckers_nim_nim_GetLocList()
|
||||||
|
let makeprg = 'nim check --hints:off --listfullpaths ' . s:CurrentNimFile()
|
||||||
|
let errorformat = &errorformat
|
||||||
|
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! SyntaxCheckers_nim_nim_IsAvailable()
|
||||||
|
return executable("nim")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if exists("g:SyntasticRegistry")
|
||||||
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
|
\ 'filetype': 'nim',
|
||||||
|
\ 'name': 'nim'})
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
207
autoload/polyglot.vim
Normal file
207
autoload/polyglot.vim
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
" Line continuation is used here, remove 'C' from 'cpoptions'
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
func! polyglot#Heuristics()
|
||||||
|
" Try to detect filetype from shebang
|
||||||
|
let l:filetype = polyglot#Shebang()
|
||||||
|
if l:filetype != ""
|
||||||
|
exec "setf " . l:filetype
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
let s:interpreters = {
|
||||||
|
\ 'osascript': 'applescript',
|
||||||
|
\ 'tcc': 'c',
|
||||||
|
\ 'coffee': 'coffee',
|
||||||
|
\ 'crystal': 'crystal',
|
||||||
|
\ 'dart': 'dart',
|
||||||
|
\ 'elixir': 'elixir',
|
||||||
|
\ 'escript': 'erlang',
|
||||||
|
\ 'fish': 'fish',
|
||||||
|
\ 'gnuplot': 'gnuplot',
|
||||||
|
\ 'runhaskell': 'haskell',
|
||||||
|
\ 'chakra': 'javascript',
|
||||||
|
\ 'd8': 'javascript',
|
||||||
|
\ 'gjs': 'javascript',
|
||||||
|
\ 'js': 'javascript',
|
||||||
|
\ 'node': 'javascript',
|
||||||
|
\ 'nodejs': 'javascript',
|
||||||
|
\ 'qjs': 'javascript',
|
||||||
|
\ 'rhino': 'javascript',
|
||||||
|
\ 'v8': 'javascript',
|
||||||
|
\ 'v8-shell': 'javascript',
|
||||||
|
\ 'julia': 'julia',
|
||||||
|
\ 'lua': 'lua',
|
||||||
|
\ 'moon': 'moon',
|
||||||
|
\ 'ocaml': 'ocaml',
|
||||||
|
\ 'ocamlrun': 'ocaml',
|
||||||
|
\ 'ocamlscript': 'ocaml',
|
||||||
|
\ 'cperl': 'perl',
|
||||||
|
\ 'perl': 'perl',
|
||||||
|
\ 'php': 'php',
|
||||||
|
\ 'pwsh': 'ps1',
|
||||||
|
\ 'python': 'python',
|
||||||
|
\ 'python2': 'python',
|
||||||
|
\ 'python3': 'python',
|
||||||
|
\ 'qmake': 'qmake',
|
||||||
|
\ 'Rscript': 'r',
|
||||||
|
\ 'racket': 'racket',
|
||||||
|
\ 'perl6': 'raku',
|
||||||
|
\ 'raku': 'raku',
|
||||||
|
\ 'rakudo': 'raku',
|
||||||
|
\ 'ruby': 'ruby',
|
||||||
|
\ 'macruby': 'ruby',
|
||||||
|
\ 'rake': 'ruby',
|
||||||
|
\ 'jruby': 'ruby',
|
||||||
|
\ 'rbx': 'ruby',
|
||||||
|
\ 'scala': 'scala',
|
||||||
|
\ 'ash': 'sh',
|
||||||
|
\ 'bash': 'sh',
|
||||||
|
\ 'dash': 'sh',
|
||||||
|
\ 'ksh': 'sh',
|
||||||
|
\ 'mksh': 'sh',
|
||||||
|
\ 'pdksh': 'sh',
|
||||||
|
\ 'rc': 'sh',
|
||||||
|
\ 'sh': 'sh',
|
||||||
|
\ 'zsh': 'sh',
|
||||||
|
\ 'boolector': 'smt2',
|
||||||
|
\ 'cvc4': 'smt2',
|
||||||
|
\ 'mathsat5': 'smt2',
|
||||||
|
\ 'opensmt': 'smt2',
|
||||||
|
\ 'smtinterpol': 'smt2',
|
||||||
|
\ 'smt-rat': 'smt2',
|
||||||
|
\ 'stp': 'smt2',
|
||||||
|
\ 'verit': 'smt2',
|
||||||
|
\ 'yices2': 'smt2',
|
||||||
|
\ 'z3': 'smt2',
|
||||||
|
\ 'deno': 'typescript',
|
||||||
|
\ 'ts-node': 'typescript',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
let s:r_hashbang = '^#!\s*\(\S\+\)\s*\(.*\)\s*'
|
||||||
|
let s:r_envflag = '%(\S\+=\S\+\|-[iS]\|--ignore-environment\|--split-string\)'
|
||||||
|
let s:r_env = '^\%(\' . s:r_envflag . '\s\+\)*\(\S\+\)'
|
||||||
|
|
||||||
|
func! polyglot#Shebang()
|
||||||
|
let l:line1 = getline(1)
|
||||||
|
|
||||||
|
if l:line1 !~# "^#!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:pathrest = matchlist(l:line1, s:r_hashbang)
|
||||||
|
|
||||||
|
if len(l:pathrest) == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let [_, l:path, l:rest; __] = l:pathrest
|
||||||
|
|
||||||
|
let l:script = split(l:path, "/")[-1]
|
||||||
|
|
||||||
|
if l:script == "env"
|
||||||
|
let l:argspath = matchlist(l:rest, s:r_env)
|
||||||
|
if len(l:argspath) == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:script = l:argspath[1]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(s:interpreters, l:script)
|
||||||
|
return s:interpreters[l:script]
|
||||||
|
endif
|
||||||
|
|
||||||
|
for interpreter in keys(s:interpreters)
|
||||||
|
if l:script =~# '^' . interpreter
|
||||||
|
return s:interpreters[interpreter]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectInpFiletype()
|
||||||
|
let line = getline(1)
|
||||||
|
if line =~# '^\*'
|
||||||
|
setf abaqus | return
|
||||||
|
endif
|
||||||
|
for lnum in range(1, min([line("$"), 500]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~? '^header surface data'
|
||||||
|
setf trasys | return
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectAsaFiletype()
|
||||||
|
if exists("g:filetype_asa")
|
||||||
|
exe "setf " . g:filetype_asa | return
|
||||||
|
endif
|
||||||
|
setf aspvbs | return
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectAspFiletype()
|
||||||
|
if exists("g:filetype_asp")
|
||||||
|
exe "setf " . g:filetype_asp | return
|
||||||
|
endif
|
||||||
|
for lnum in range(1, min([line("$"), 3]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~? 'perlscript'
|
||||||
|
setf aspperl | return
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
setf aspvbs | return
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectMFiletype()
|
||||||
|
let saw_comment = 0
|
||||||
|
for lnum in range(1, min([line("$"), 100]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~# '^\s*/\*'
|
||||||
|
let saw_comment = 1
|
||||||
|
endif
|
||||||
|
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
|
||||||
|
setf objc | return
|
||||||
|
endif
|
||||||
|
if line =~# '^\s*%'
|
||||||
|
setf octave | return
|
||||||
|
endif
|
||||||
|
if line =~# '^\s*(\*'
|
||||||
|
setf mma | return
|
||||||
|
endif
|
||||||
|
if line =~? '^\s*\(\(type\|var\)\(\<\|\>\)\|--\)'
|
||||||
|
setf murphi | return
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if saw_comment
|
||||||
|
setf objc | return
|
||||||
|
endif
|
||||||
|
if exists("g:filetype_m")
|
||||||
|
exe "setf " . g:filetype_m | return
|
||||||
|
endif
|
||||||
|
setf octave | return
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectFsFiletype()
|
||||||
|
for lnum in range(1, min([line("$"), 50]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~# '^\(: \|new-device\)'
|
||||||
|
setf forth | return
|
||||||
|
endif
|
||||||
|
if line =~# '^\s*\(#light\|import\|let\|module\|namespace\|open\|type\)'
|
||||||
|
setf fsharp | return
|
||||||
|
endif
|
||||||
|
if line =~# '\s*\(#version\|precision\|uniform\|varying\|vec[234]\)'
|
||||||
|
setf glsl | return
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if exists("g:filetype_fs")
|
||||||
|
exe "setf " . g:filetype_fs | return
|
||||||
|
endif
|
||||||
|
setf forth | return
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Restore 'cpoptions'
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" common functions for vifm command-line editing buffer filetype plugins
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: August 18, 2013
|
|
||||||
|
|
||||||
" Prepare buffer
|
|
||||||
function! vifm#edit#Init()
|
|
||||||
" Mappings for quick leaving the buffer (behavior similar to Command line
|
|
||||||
" buffer in Vim)
|
|
||||||
nnoremap <buffer> <cr> :copy 0 \| wq<cr>
|
|
||||||
imap <buffer> <cr> <esc><cr>
|
|
||||||
|
|
||||||
" Start buffer editing in insert mode
|
|
||||||
startinsert
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" common functions for vifm plugin related to globals
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: November 03, 2018
|
|
||||||
|
|
||||||
" Initializes global variables to defaults unless they are already set
|
|
||||||
function! vifm#globals#Init()
|
|
||||||
if !exists('g:vifm_exec')
|
|
||||||
let g:vifm_exec = 'vifm'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:vifm_exec_args')
|
|
||||||
let g:vifm_exec_args = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:vifm_term')
|
|
||||||
if has('win32')
|
|
||||||
if filereadable('C:\Windows\system32\cmd.exe')
|
|
||||||
let g:vifm_term = 'C:\Windows\system32\cmd.exe /C'
|
|
||||||
else
|
|
||||||
" If don't find use the integrate shell it work too
|
|
||||||
let g:vifm_term = ''
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let g:vifm_term = 'xterm -e'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:vifm_embed_term')
|
|
||||||
let g:vifm_embed_term = has('gui_running')
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
endif
|
|
||||||
42
compiler/ant.vim
Normal file
42
compiler/ant.vim
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ant') == -1
|
||||||
|
|
||||||
|
" Vim Compiler File
|
||||||
|
" Compiler: ant
|
||||||
|
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||||
|
" Last Change: Mi, 13 Apr 2005 22:50:07 CEST
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "ant"
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
CompilerSet makeprg=ant
|
||||||
|
|
||||||
|
" first line:
|
||||||
|
" ant with jikes +E, which assumes the following
|
||||||
|
" two property lines in your 'build.xml':
|
||||||
|
"
|
||||||
|
" <property name = "build.compiler" value = "jikes"/>
|
||||||
|
" <property name = "build.compiler.emacs" value = "true"/>
|
||||||
|
"
|
||||||
|
" second line:
|
||||||
|
" ant with javac
|
||||||
|
"
|
||||||
|
" note that this will work also for tasks like [wtkbuild]
|
||||||
|
"
|
||||||
|
CompilerSet errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
|
||||||
|
\%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m
|
||||||
|
|
||||||
|
" ,%-C%.%#
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
|
||||||
|
|
||||||
" Vim compiler plugin
|
|
||||||
" Language: JavaScript
|
|
||||||
" Maintainer: vim-javascript community
|
|
||||||
" URL: https://github.com/pangloss/vim-javascript
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "eslint"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2
|
|
||||||
command! -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
CompilerSet makeprg=eslint\ -f\ compact\ %
|
|
||||||
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m
|
|
||||||
|
|
||||||
endif
|
|
||||||
185
doc/clojure.txt
Normal file
185
doc/clojure.txt
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1
|
||||||
|
|
||||||
|
*clojure.txt* Clojure runtime files
|
||||||
|
|
||||||
|
INTRODUCTION *clojure-introduction*
|
||||||
|
|
||||||
|
Meikel Brandmeyer's excellent Clojure runtime files. Includes syntax, indent,
|
||||||
|
ftdetect, and ftplugin scripts.
|
||||||
|
|
||||||
|
CLOJURE *ft-clojure-indent* *clojure-indent*
|
||||||
|
|
||||||
|
Clojure indentation differs somewhat from traditional Lisps, due in part to
|
||||||
|
the use of square and curly brackets, and otherwise by community convention.
|
||||||
|
These conventions are not universally followed, so the Clojure indent script
|
||||||
|
offers a few configurable options, listed below.
|
||||||
|
|
||||||
|
If the current vim does not include searchpairpos(), the indent script falls
|
||||||
|
back to normal 'lisp' indenting, and the following options are ignored.
|
||||||
|
|
||||||
|
*g:clojure_maxlines*
|
||||||
|
|
||||||
|
Set maximum scan distance of searchpairpos(). Larger values trade performance
|
||||||
|
for correctness when dealing with very long forms. A value of 0 will scan
|
||||||
|
without limits.
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_maxlines = 100
|
||||||
|
<
|
||||||
|
*g:clojure_fuzzy_indent*
|
||||||
|
*g:clojure_fuzzy_indent_patterns*
|
||||||
|
*g:clojure_fuzzy_indent_blacklist*
|
||||||
|
|
||||||
|
The 'lispwords' option is a list of comma-separated words that mark special
|
||||||
|
forms whose subforms must be indented with two spaces.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
>
|
||||||
|
(defn bad []
|
||||||
|
"Incorrect indentation")
|
||||||
|
|
||||||
|
(defn good []
|
||||||
|
"Correct indentation")
|
||||||
|
<
|
||||||
|
If you would like to specify 'lispwords' with a |pattern| instead, you can use
|
||||||
|
the fuzzy indent feature:
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_fuzzy_indent = 1
|
||||||
|
let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']
|
||||||
|
let g:clojure_fuzzy_indent_blacklist =
|
||||||
|
\ ['-fn$', '\v^with-%(meta|out-str|loading-context)$']
|
||||||
|
|
||||||
|
" Legacy comma-delimited string version; the list format above is
|
||||||
|
" recommended. Note that patterns are implicitly anchored with ^ and $
|
||||||
|
let g:clojure_fuzzy_indent_patterns = 'with.*,def.*,let.*'
|
||||||
|
<
|
||||||
|
|g:clojure_fuzzy_indent_patterns| and |g:clojure_fuzzy_indent_blacklist| are
|
||||||
|
|Lists| of patterns that will be matched against the unquoted, unqualified
|
||||||
|
symbol at the head of a list. This means that a pattern like "^foo" will match
|
||||||
|
all these candidates: "foobar", "my.ns/foobar", and "#'foobar".
|
||||||
|
|
||||||
|
Each candidate word is tested for special treatment in this order:
|
||||||
|
|
||||||
|
1. Return true if word is literally in 'lispwords'
|
||||||
|
2. Return false if word matches a pattern in
|
||||||
|
|g:clojure_fuzzy_indent_blacklist|
|
||||||
|
3. Return true if word matches a pattern in
|
||||||
|
|g:clojure_fuzzy_indent_patterns|
|
||||||
|
4. Return false and indent normally otherwise
|
||||||
|
|
||||||
|
*g:clojure_special_indent_words*
|
||||||
|
|
||||||
|
Some forms in Clojure are indented so that every subform is indented only two
|
||||||
|
spaces, regardless of 'lispwords'. If you have a custom construct that should
|
||||||
|
be indented in this idiosyncratic fashion, you can add your symbols to the
|
||||||
|
default list below.
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_special_indent_words =
|
||||||
|
\ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'
|
||||||
|
<
|
||||||
|
*g:clojure_align_multiline_strings*
|
||||||
|
|
||||||
|
Align subsequent lines in multiline strings to the column after the opening
|
||||||
|
quote, instead of the same column.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
>
|
||||||
|
(def default
|
||||||
|
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
|
||||||
|
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
|
||||||
|
enim ad minim veniam, quis nostrud exercitation ullamco laboris
|
||||||
|
nisi ut aliquip ex ea commodo consequat.")
|
||||||
|
|
||||||
|
(def aligned
|
||||||
|
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
|
||||||
|
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
|
||||||
|
enim ad minim veniam, quis nostrud exercitation ullamco laboris
|
||||||
|
nisi ut aliquip ex ea commodo consequat.")
|
||||||
|
<
|
||||||
|
This option is off by default.
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_align_multiline_strings = 0
|
||||||
|
<
|
||||||
|
*g:clojure_align_subforms*
|
||||||
|
|
||||||
|
By default, parenthesized compound forms that look like function calls and
|
||||||
|
whose head subform is on its own line have subsequent subforms indented by
|
||||||
|
two spaces relative to the opening paren:
|
||||||
|
>
|
||||||
|
(foo
|
||||||
|
bar
|
||||||
|
baz)
|
||||||
|
<
|
||||||
|
Setting this option changes this behavior so that all subforms are aligned to
|
||||||
|
the same column, emulating the default behavior of clojure-mode.el:
|
||||||
|
>
|
||||||
|
(foo
|
||||||
|
bar
|
||||||
|
baz)
|
||||||
|
<
|
||||||
|
This option is off by default.
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_align_subforms = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
CLOJURE *ft-clojure-syntax*
|
||||||
|
|
||||||
|
The default syntax groups can be augmented through the
|
||||||
|
*g:clojure_syntax_keywords* and *b:clojure_syntax_keywords* variables. The
|
||||||
|
value should be a |Dictionary| of syntax group names to a |List| of custom
|
||||||
|
identifiers:
|
||||||
|
>
|
||||||
|
let g:clojure_syntax_keywords = {
|
||||||
|
\ 'clojureMacro': ["defproject", "defcustom"],
|
||||||
|
\ 'clojureFunc': ["string/join", "string/replace"]
|
||||||
|
\ }
|
||||||
|
<
|
||||||
|
Refer to the Clojure syntax script for valid syntax group names.
|
||||||
|
|
||||||
|
If the |buffer-variable| *b:clojure_syntax_without_core_keywords* is set, only
|
||||||
|
language constants and special forms are matched.
|
||||||
|
|
||||||
|
Setting *g:clojure_fold* enables folding Clojure code via the syntax engine.
|
||||||
|
Any list, vector, or map that extends over more than one line can be folded
|
||||||
|
using the standard Vim |fold-commands|.
|
||||||
|
|
||||||
|
Please note that this option does not work with scripts that redefine the
|
||||||
|
bracket syntax regions, such as rainbow-parentheses plugins.
|
||||||
|
|
||||||
|
This option is off by default.
|
||||||
|
>
|
||||||
|
" Default
|
||||||
|
let g:clojure_fold = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
ABOUT *clojure-about*
|
||||||
|
|
||||||
|
This document and associated runtime files are maintained at:
|
||||||
|
https://github.com/guns/vim-clojure-static
|
||||||
|
|
||||||
|
Distributed under the Vim license. See |license|.
|
||||||
|
|
||||||
|
syntax/clojure.vim
|
||||||
|
|
||||||
|
Copyright 2007-2008 (c) Toralf Wittner <toralf.wittner@gmail.com>
|
||||||
|
Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>
|
||||||
|
|
||||||
|
ftdetect/clojure.vim,
|
||||||
|
ftplugin/clojure.vim,
|
||||||
|
indent/clojure.vim
|
||||||
|
|
||||||
|
Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>
|
||||||
|
|
||||||
|
Modified and relicensed under the Vim License for distribution with Vim:
|
||||||
|
|
||||||
|
Copyright 2013-2014 (c) Sung Pae <self@sungpae.com>
|
||||||
|
|
||||||
|
Last Change: %%RELEASE_DATE%%
|
||||||
|
|
||||||
|
vim:tw=78:noet:sw=8:sts=8:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
8
doc/coffee-script.txt
Normal file
8
doc/coffee-script.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
|
Please see the project readme for up-to-date docs:
|
||||||
|
https://github.com/kchmck/vim-coffee-script
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
108
doc/cryptol.txt
Normal file
108
doc/cryptol.txt
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1
|
||||||
|
|
||||||
|
*cryptol.txt* functionality for the Cryptol programming language
|
||||||
|
|
||||||
|
Copyright © 2013 Edward O'Callaghan. All Rights Reserved.
|
||||||
|
|
||||||
|
.oooooo. . oooo
|
||||||
|
d8P' `Y8b .o8 `888
|
||||||
|
888 oooo d8b oooo ooo oo.ooooo. .o888oo .ooooo. 888
|
||||||
|
888 `888""8P `88. .8' 888' `88b 888 d88' `88b 888
|
||||||
|
888 888 `88..8' 888 888 888 888 888 888
|
||||||
|
`88b ooo 888 `888' 888 888 888 . 888 888 888
|
||||||
|
`Y8bood8P' d888b .8' 888bod8P' "888" `Y8bod8P' o888o
|
||||||
|
.o..P' 888
|
||||||
|
`Y8P' o888o
|
||||||
|
|
||||||
|
Functionality for the Cryptol programming language.
|
||||||
|
Includes syntax highlighting, code folding, and more!
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *CryptolContents*
|
||||||
|
|
||||||
|
1. Usage ................ |CryptolUsage|
|
||||||
|
2. Mappings ............. |CryptolMappings|
|
||||||
|
3. License .............. |CryptolLicense|
|
||||||
|
4. Bugs ................. |CryptolBugs|
|
||||||
|
5. Contributing ......... |CryptolContributing|
|
||||||
|
6. Changelog ............ |CryptolChangelog|
|
||||||
|
7. Credits .............. |CryptolCredits|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 1: Usage *CryptolUsage*
|
||||||
|
|
||||||
|
This plugin will automatically provide syntax highlighting for Cryptol files
|
||||||
|
(files ending in .cry).
|
||||||
|
|
||||||
|
Cryptol is a purely functional domain specific language, developed over the
|
||||||
|
past decade by Galois for the NSA, for the design, implementation and
|
||||||
|
verification of cryptographic algorithms.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 2: Mappings *CryptolMappings*
|
||||||
|
|
||||||
|
Code folding is done in the typical way, for example:
|
||||||
|
* za - When on a closed fold - open it.
|
||||||
|
* zM - Close all foldings to level 0.
|
||||||
|
* zR - Reduce folding
|
||||||
|
|
||||||
|
For more information see, for example, :help za
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 3: License *CryptolLicense*
|
||||||
|
|
||||||
|
Copyright © 2013 Edward O'Callaghan. All Rights Reserved.
|
||||||
|
|
||||||
|
HOWEVER:
|
||||||
|
Be it known, The syntax file was written by
|
||||||
|
Copyright © 2005 Fergus Henderson. All Rights Reserved.
|
||||||
|
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 4: Bugs *CryptolBugs*
|
||||||
|
|
||||||
|
* https://github.com/victoredwardocallaghan/cryptol.vim/issues
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 5: TODOs *CryptolTODOs
|
||||||
|
|
||||||
|
* Add compiler support
|
||||||
|
- .
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 6: Contributing *CryptolContributing*
|
||||||
|
|
||||||
|
* Edward O'Callaghan
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 7: Changelog *CryptolChangelog*
|
||||||
|
|
||||||
|
* Initial 25 Apr 2013.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Section 8: Credits *CryptolCredits*
|
||||||
|
|
||||||
|
* Edward O'Callaghan
|
||||||
|
* Fergus Henderson - wrote the orginal syntax file.
|
||||||
|
|
||||||
|
vim:ts=4:ft=help:tw=78:et
|
||||||
|
|
||||||
|
endif
|
||||||
90
doc/dart.txt
Normal file
90
doc/dart.txt
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
|
||||||
|
|
||||||
|
*dart-vim-plugin* Dart support for Vim
|
||||||
|
|
||||||
|
INTRODUCTION *dart.vim*
|
||||||
|
|
||||||
|
dart-vim-plugin provides filetype detection, syntax highlighting, and
|
||||||
|
indentation for Dart code in Vim.
|
||||||
|
|
||||||
|
https://github.com/dart-lang/dart-vim-plugin
|
||||||
|
|
||||||
|
TOOLS *dart-tools*
|
||||||
|
|
||||||
|
An `includeexpr` is set that can read `.packages` files and resolve `package:`
|
||||||
|
uris to a file. See |gf| for an example use.
|
||||||
|
|
||||||
|
COMMANDS *dart-commands*
|
||||||
|
|
||||||
|
These commands are available in buffers with the dart filetype.
|
||||||
|
|
||||||
|
*:Dart2Js*
|
||||||
|
Runs dart2js to compile the current file. Takes the same arguments as the
|
||||||
|
dart2js binary and always passes the path to the current file as the last
|
||||||
|
argument.
|
||||||
|
If there are any errors they will be shown in the quickfix window.
|
||||||
|
|
||||||
|
*:DartFmt*
|
||||||
|
Runs dartfmt and passes the current buffer content through stdin. If the
|
||||||
|
format is successful replaces the current buffer content with the formatted
|
||||||
|
result. If the format is unsuccessful errors are shown in the quickfix window.
|
||||||
|
This command does not use the file content on disk so it is safe to run with
|
||||||
|
unwritten changes.
|
||||||
|
Passes arguments through to dartfmt.
|
||||||
|
|
||||||
|
*:DartAnalyzer*
|
||||||
|
Runs dartanalyzer to analyze the current file. Takes the same arguments as the
|
||||||
|
dartanalyzer binary and always passes the path to the current file as the last
|
||||||
|
argument.
|
||||||
|
If there are any errors they will be shown in the quickfix window.
|
||||||
|
|
||||||
|
CONFIGURATION *dart-configure*
|
||||||
|
|
||||||
|
*g:dart_html_in_string*
|
||||||
|
Set to `v:true` to highlights HTML syntax inside Strings within Dart files.
|
||||||
|
Default `v:false`
|
||||||
|
|
||||||
|
*g:dart_corelib_highlight*
|
||||||
|
Set to `v:false` to disable highlighting of code Dart classes like `Map` or
|
||||||
|
`List`.
|
||||||
|
Default `v:true`
|
||||||
|
*g:dart_style_guide*
|
||||||
|
Set to any value (set to `2` by convention) to set tab and width behavior to
|
||||||
|
match the Dart style guide - spaces only with an indent of 2. Also sets
|
||||||
|
`formatoptions += t` to auto wrap text.
|
||||||
|
|
||||||
|
Configure DartFmt options with `let g:dartfmt_options`, for example, enable
|
||||||
|
auto syntax fixes with `let g:dartfmt_options = ['--fix']`
|
||||||
|
(discover formatter options with `dartfmt -h`)
|
||||||
|
|
||||||
|
|
||||||
|
SYNTAX HIGHLIGHTING *dart-syntax*
|
||||||
|
|
||||||
|
This plugin uses narrow highlight groups to allow selectively disabling the
|
||||||
|
syntax highlights. Link any of the following groups to the `Normal` highlight
|
||||||
|
group to disable them:
|
||||||
|
|
||||||
|
`dartSdkException`: Capitalized exception or error classes defined in the SDK.
|
||||||
|
|
||||||
|
`dartCoreType`: `void`, `var`, `dynamic`
|
||||||
|
|
||||||
|
`dartSdkClass`: Capitalized classes defined in the SDK, along with `bool`,
|
||||||
|
`int`, `double`, and `num`.
|
||||||
|
|
||||||
|
`dartUserType`: Any capitalized identifier.
|
||||||
|
|
||||||
|
`dartType`: Combines `dartCoreType`, `dartSdkClass`, and `dartUserType`.
|
||||||
|
|
||||||
|
`dartSdkTypedef`: SDK defined `typdef`s.
|
||||||
|
|
||||||
|
`dartFunction`: Any lower cased identifier preceding an open parenthesis.
|
||||||
|
|
||||||
|
For example, to remove the highlighting for type and function names:
|
||||||
|
>
|
||||||
|
highlight link dartType Normal
|
||||||
|
highlight link dartFunction Normal
|
||||||
|
<
|
||||||
|
|
||||||
|
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
43
doc/dhall.txt
Normal file
43
doc/dhall.txt
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dhall') == -1
|
||||||
|
|
||||||
|
*dhall* Dhall syntax highlighting for Vim
|
||||||
|
____
|
||||||
|
=====================================================================
|
||||||
|
CONTENTS *DhallContents*
|
||||||
|
|
||||||
|
1. Config ......................................... ❘DhallConfig❘
|
||||||
|
2. License ....................................... ❘DhallLicense❘
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Section 1: Config *DhallConfig*
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*'g:dhall_use_ctags'*
|
||||||
|
Values: 0, 1
|
||||||
|
Default: ''
|
||||||
|
|
||||||
|
Generate tags file for vim on write, using universal ctags. >
|
||||||
|
let g:dhall_use_ctags=1
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:dhall_format'*
|
||||||
|
Values: 0, 1
|
||||||
|
Default: ''
|
||||||
|
|
||||||
|
Format Dhall files on write >
|
||||||
|
let g:dhall_format=1
|
||||||
|
<
|
||||||
|
*'g:dhall_strip_whitespace'*
|
||||||
|
Values: 0, 1
|
||||||
|
Default: ''
|
||||||
|
|
||||||
|
To enable whitespace stripping >
|
||||||
|
let g:dhall_strip_whitespace=1
|
||||||
|
<
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
Section 2: License *DhallLicense*
|
||||||
|
|
||||||
|
This plugin is licensed under the BDS3 license.
|
||||||
|
|
||||||
|
endif
|
||||||
116
doc/elixir.txt
Normal file
116
doc/elixir.txt
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
|
|
||||||
|
*elixir.txt* Vim configuration files for Elixir http://elixir-lang.org/
|
||||||
|
|
||||||
|
Author: Plataformatec
|
||||||
|
License: Apache License Version 2.0
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *elixir-contents*
|
||||||
|
|
||||||
|
INTRODUCTION |elixir-introduction|
|
||||||
|
INTERFACE |elixir-interface|
|
||||||
|
FUNCTIONS |elixir-functions|
|
||||||
|
KEY MAPPINGS |elixir-key-mappings|
|
||||||
|
OPTIONS |elixir-options|
|
||||||
|
SETTINGS |elixir-settings|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *elixir-introduction*
|
||||||
|
|
||||||
|
*elixir* provides Vim configuration files for Elixir http://elixir-lang.org/
|
||||||
|
|
||||||
|
* Syntax highlighting for Elixir and EEx files
|
||||||
|
* Filetype detection for `.ex`, `.exs`, `.eex` and `.leex` files
|
||||||
|
* Automatic indentation
|
||||||
|
* Integration between Ecto projects and |vim-dadbod| for running SQL queries
|
||||||
|
on defined Ecto repositories
|
||||||
|
|
||||||
|
|
||||||
|
Latest Version:
|
||||||
|
https://github.com/elixir-editors/vim-elixir
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTERFACE *elixir-interface*
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
FUNCTIONS *elixir-functions*
|
||||||
|
|
||||||
|
db#adapter#ecto#canonicalize({url}) *db#adapter#ecto#canonicalize()*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
db#adapter#ecto#complete_opaque({url}) *db#adapter#ecto#complete_opaque()*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
elixir#indent#indent({lnum}) *elixir#indent#indent()*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
elixir#indent#searchpair_back_skip() *elixir#indent#searchpair_back_skip()*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_top_of_file()*
|
||||||
|
elixir#indent#handle_top_of_file({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_follow_prev_nb()*
|
||||||
|
elixir#indent#handle_follow_prev_nb({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_following_trailing_binary_operator()*
|
||||||
|
elixir#indent#handle_following_trailing_binary_operator({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_starts_with_pipe()*
|
||||||
|
elixir#indent#handle_starts_with_pipe({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_starts_with_end()*
|
||||||
|
elixir#indent#handle_starts_with_end({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_starts_with_binary_operator()*
|
||||||
|
elixir#indent#handle_starts_with_binary_operator({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_inside_block()*
|
||||||
|
elixir#indent#handle_inside_block({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*elixir#indent#handle_inside_generic_block()*
|
||||||
|
elixir#indent#handle_inside_generic_block({context})
|
||||||
|
TODO
|
||||||
|
|
||||||
|
elixir#util#get_filename({word}) *elixir#util#get_filename({word})*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
KEY MAPPINGS *elixir-key-mappings*
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *elixir-settings*
|
||||||
|
|
||||||
|
*g:eelixir_default_subtype*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*g:elixir_indent_debug*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*g:elixir_indent_max_lookbehind*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*g:elixir_use_markdown_for_docs*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
*g:path*
|
||||||
|
TODO
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl
|
||||||
|
|
||||||
|
endif
|
||||||
1759
doc/ft-csv.txt
Normal file
1759
doc/ft-csv.txt
Normal file
File diff suppressed because it is too large
Load Diff
25
doc/ft-gitcommit-plugin.txt
Normal file
25
doc/ft-gitcommit-plugin.txt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
|
GIT COMMIT *ft-gitcommit-plugin*
|
||||||
|
|
||||||
|
One command, :DiffGitCached, is provided to show a diff of the current commit
|
||||||
|
in the preview window. It is equivalent to calling "git diff --cached" plus
|
||||||
|
any arguments given to the command.
|
||||||
|
|
||||||
|
GIT REBASE *ft-gitrebase-plugin*
|
||||||
|
|
||||||
|
In a gitrebase filetype buffer, the following commands are provided:
|
||||||
|
|
||||||
|
`:Pick` Changes the cursor line to a `pick` line.
|
||||||
|
`:Squash` Changes the cursor line to a `squash` line
|
||||||
|
`:Edit` Changes the cursor line to an `edit` line
|
||||||
|
`:Reword` Changes the cursor line to a `reword` line
|
||||||
|
`:Fixup` Changes the cursor line to a `fixup` line
|
||||||
|
`:Drop` Changes the cursor line to a `drop` line
|
||||||
|
`:Cycle` Cycles between the first 5 gitrebase commands
|
||||||
|
|
||||||
|
To make the `:Cycle` command more useful, it might be mapped, e.g. >
|
||||||
|
nnoremap <buffer> <silent> S :Cycle<CR>
|
||||||
|
<
|
||||||
|
|
||||||
|
endif
|
||||||
152
doc/ft-ruby-indent.txt
Normal file
152
doc/ft-ruby-indent.txt
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
|
RUBY *ft-ruby-indent*
|
||||||
|
*vim-ruby-indent*
|
||||||
|
|
||||||
|
Ruby: Access modifier indentation |ruby-access-modifier-indentation|
|
||||||
|
Ruby: Block style indentation |ruby-block-style-indentation|
|
||||||
|
Ruby: Assignment style indentation |ruby-assignment-style-indentation|
|
||||||
|
Ruby: Hanging element indentation |ruby-hanging-element-indentation|
|
||||||
|
|
||||||
|
*ruby-access-modifier-indentation*
|
||||||
|
*g:ruby_indent_access_modifier_style*
|
||||||
|
Ruby: Access modifier indentation ~
|
||||||
|
|
||||||
|
Different access modifier indentation styles can be used by setting: >
|
||||||
|
|
||||||
|
:let g:ruby_indent_access_modifier_style = 'normal'
|
||||||
|
:let g:ruby_indent_access_modifier_style = 'indent'
|
||||||
|
:let g:ruby_indent_access_modifier_style = 'outdent'
|
||||||
|
<
|
||||||
|
By default, the "normal" access modifier style is used.
|
||||||
|
|
||||||
|
Access modifier style "normal":
|
||||||
|
>
|
||||||
|
class Indent
|
||||||
|
private :method
|
||||||
|
protected :method
|
||||||
|
private
|
||||||
|
def method; end
|
||||||
|
protected
|
||||||
|
def method; end
|
||||||
|
public
|
||||||
|
def method; end
|
||||||
|
end
|
||||||
|
<
|
||||||
|
Access modifier style "indent":
|
||||||
|
>
|
||||||
|
class Indent
|
||||||
|
private :method
|
||||||
|
protected :method
|
||||||
|
private
|
||||||
|
def method; end
|
||||||
|
protected
|
||||||
|
def method; end
|
||||||
|
public
|
||||||
|
def method; end
|
||||||
|
end
|
||||||
|
<
|
||||||
|
Access modifier style "outdent":
|
||||||
|
>
|
||||||
|
class Indent
|
||||||
|
private :method
|
||||||
|
protected :method
|
||||||
|
private
|
||||||
|
def method; end
|
||||||
|
protected
|
||||||
|
def method; end
|
||||||
|
public
|
||||||
|
def method; end
|
||||||
|
end
|
||||||
|
<
|
||||||
|
*ruby-block-style-indentation*
|
||||||
|
*g:ruby_indent_block_style*
|
||||||
|
Ruby: Block style indentation ~
|
||||||
|
|
||||||
|
Different block indentation styles can be used by setting: >
|
||||||
|
|
||||||
|
:let g:ruby_indent_block_style = 'expression'
|
||||||
|
:let g:ruby_indent_block_style = 'do'
|
||||||
|
<
|
||||||
|
By default, the "do" block indent style is used.
|
||||||
|
|
||||||
|
Block indent style "expression":
|
||||||
|
>
|
||||||
|
first
|
||||||
|
.second do |x|
|
||||||
|
something
|
||||||
|
end
|
||||||
|
<
|
||||||
|
Block indent style "do":
|
||||||
|
>
|
||||||
|
first
|
||||||
|
.second do |x|
|
||||||
|
something
|
||||||
|
end
|
||||||
|
<
|
||||||
|
|
||||||
|
*ruby-assignment-style-indentation*
|
||||||
|
*g:ruby_indent_assignment_style*
|
||||||
|
Ruby: Assignment style indentation ~
|
||||||
|
|
||||||
|
Different styles of indenting assignment for multiline expressions:
|
||||||
|
>
|
||||||
|
:let g:ruby_indent_assignment_style = 'hanging'
|
||||||
|
:let g:ruby_indent_assignment_style = 'variable'
|
||||||
|
<
|
||||||
|
By default, the "hanging" style is used.
|
||||||
|
|
||||||
|
Assignment indent style "hanging":
|
||||||
|
>
|
||||||
|
x = if condition
|
||||||
|
something
|
||||||
|
end
|
||||||
|
<
|
||||||
|
Assignment indent style "variable":
|
||||||
|
>
|
||||||
|
x = if condition
|
||||||
|
something
|
||||||
|
end
|
||||||
|
<
|
||||||
|
|
||||||
|
*ruby-hanging-element-indentation*
|
||||||
|
*g:ruby_indent_hanging_elements*
|
||||||
|
Ruby: Hanging element indentation ~
|
||||||
|
|
||||||
|
Elements of multiline collections -- such as arrays, hashes, and method
|
||||||
|
argument lists -- can have hanging indentation enabled or disabled with the
|
||||||
|
following setting.
|
||||||
|
>
|
||||||
|
:let g:ruby_indent_hanging_elements = 1
|
||||||
|
:let g:ruby_indent_hanging_elements = 0
|
||||||
|
<
|
||||||
|
By default, this setting is "1" (true) meaning that hanging indentation is
|
||||||
|
enabled in some cases.
|
||||||
|
|
||||||
|
Here is an example method call when the setting is true (non-zero):
|
||||||
|
>
|
||||||
|
render('product/show',
|
||||||
|
product: product,
|
||||||
|
on_sale: true,
|
||||||
|
)
|
||||||
|
<
|
||||||
|
And the same method call when the setting is false (zero):
|
||||||
|
>
|
||||||
|
render('product/show',
|
||||||
|
product: product,
|
||||||
|
on_sale: true,
|
||||||
|
)
|
||||||
|
<
|
||||||
|
Note that, even if the setting is turned on, you can still get non-hanging
|
||||||
|
indentation by putting each argument on a separate line:
|
||||||
|
>
|
||||||
|
render(
|
||||||
|
'product/show',
|
||||||
|
product: product,
|
||||||
|
on_sale: true,
|
||||||
|
)
|
||||||
|
<
|
||||||
|
|
||||||
|
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
56
doc/ft-ruby-omni.txt
Normal file
56
doc/ft-ruby-omni.txt
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
|
RUBY *ft-ruby-omni*
|
||||||
|
*vim-ruby-omni*
|
||||||
|
|
||||||
|
Completion of Ruby code requires that Vim be built with |+ruby|.
|
||||||
|
|
||||||
|
Ruby completion will parse your buffer on demand in order to provide a list of
|
||||||
|
completions. These completions will be drawn from modules loaded by "require"
|
||||||
|
and modules defined in the current buffer.
|
||||||
|
|
||||||
|
The completions provided by CTRL-X CTRL-O are sensitive to the context:
|
||||||
|
|
||||||
|
CONTEXT COMPLETIONS PROVIDED ~
|
||||||
|
|
||||||
|
1. Not inside a class definition Classes, constants and globals
|
||||||
|
|
||||||
|
2. Inside a class definition Methods or constants defined in the class
|
||||||
|
|
||||||
|
3. After '.', '::' or ':' Methods applicable to the object being
|
||||||
|
dereferenced
|
||||||
|
|
||||||
|
4. After ':' or ':foo' Symbol name (beginning with "foo")
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Vim will load/evaluate code in order to provide completions. This may
|
||||||
|
cause some code execution, which may be a concern. This is no longer
|
||||||
|
enabled by default, to enable this feature add >
|
||||||
|
let g:rubycomplete_buffer_loading = 1
|
||||||
|
< - In context 1 above, Vim can parse the entire buffer to add a list of
|
||||||
|
classes to the completion results. This feature is turned off by default,
|
||||||
|
to enable it add >
|
||||||
|
let g:rubycomplete_classes_in_global = 1
|
||||||
|
< to your vimrc
|
||||||
|
- In context 2 above, anonymous classes are not supported.
|
||||||
|
- In context 3 above, Vim will attempt to determine the methods supported by
|
||||||
|
the object.
|
||||||
|
- Vim can detect and load the Rails environment for files within a rails
|
||||||
|
project. The feature is disabled by default, to enable it add >
|
||||||
|
let g:rubycomplete_rails = 1
|
||||||
|
< to your vimrc
|
||||||
|
- Vim can parse a Gemfile, in case gems are being implicitly required. To
|
||||||
|
activate the feature: >
|
||||||
|
let g:rubycomplete_load_gemfile = 1
|
||||||
|
< To specify an alternative path, use: >
|
||||||
|
let g:rubycomplete_gemfile_path = 'Gemfile.aux'
|
||||||
|
< To use Bundler.require instead of parsing the Gemfile, set: >
|
||||||
|
let g:rubycomplete_use_bundler = 1
|
||||||
|
< To use custom paths that should be added to $LOAD_PATH to correctly
|
||||||
|
resolve requires, set: >
|
||||||
|
let g:rubycomplete_load_paths = ["/path/to/code", "./lib/example"]
|
||||||
|
|
||||||
|
|
||||||
|
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
85
doc/ft-ruby-plugin.txt
Normal file
85
doc/ft-ruby-plugin.txt
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
|
RUBY *ft-ruby-plugin*
|
||||||
|
*vim-ruby-plugin*
|
||||||
|
|
||||||
|
|
||||||
|
Ruby: Recommended settings |ruby-recommended|
|
||||||
|
Ruby: Motion commands |ruby-motion|
|
||||||
|
Ruby: Text objects |ruby-text-objects|
|
||||||
|
|
||||||
|
*ruby-recommended*
|
||||||
|
*g:ruby_recommended_style*
|
||||||
|
Ruby: Recommended settings ~
|
||||||
|
|
||||||
|
The `g:ruby_recommended_style` variable activates indentation settings
|
||||||
|
according to the most common ruby convention: two spaces for indentation. It's
|
||||||
|
turned on by default to ensure an unsurprising default experience for most
|
||||||
|
ruby developers.
|
||||||
|
|
||||||
|
If you'd like to enforce your own style, it's possible to apply your own
|
||||||
|
preferences in your own configuration in `after/ftplugin/ruby.vim`. You can
|
||||||
|
also disable the setting by setting the variable to 0:
|
||||||
|
>
|
||||||
|
let g:ruby_recommended_style = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
*ruby-motion*
|
||||||
|
Ruby: Motion commands ~
|
||||||
|
|
||||||
|
Vim provides motions such as |[m| and |]m| for jumping to the start or end of
|
||||||
|
a method definition. Out of the box, these work for curly-bracket languages,
|
||||||
|
but not for Ruby. The vim-ruby plugin enhances these motions, by making them
|
||||||
|
also work on Ruby files.
|
||||||
|
|
||||||
|
*ruby-]m*
|
||||||
|
]m Go to start of next method definition.
|
||||||
|
|
||||||
|
*ruby-]M*
|
||||||
|
]M Go to end of next method definition.
|
||||||
|
|
||||||
|
*ruby-[m*
|
||||||
|
[m Go to start of previous method definition.
|
||||||
|
|
||||||
|
*ruby-[M*
|
||||||
|
[M Go to end of previous method definition.
|
||||||
|
|
||||||
|
*ruby-]]*
|
||||||
|
]] Go to start of next module or class definition.
|
||||||
|
|
||||||
|
*ruby-][*
|
||||||
|
][ Go to end of next module or class definition.
|
||||||
|
|
||||||
|
*ruby-[[*
|
||||||
|
[[ Go to start of previous module or class definition.
|
||||||
|
|
||||||
|
*ruby-[]*
|
||||||
|
[] Go to end of previous module or class definition.
|
||||||
|
|
||||||
|
*ruby-text-objects*
|
||||||
|
Ruby: Text objects ~
|
||||||
|
|
||||||
|
Vim's |text-objects| can be used to select or operate upon regions of text
|
||||||
|
that are defined by structure. The vim-ruby plugin adds text objects for
|
||||||
|
operating on methods and classes.
|
||||||
|
|
||||||
|
*ruby-v_am* *ruby-am*
|
||||||
|
am "a method", select from "def" until matching "end"
|
||||||
|
keyword.
|
||||||
|
|
||||||
|
*ruby-v_im* *ruby-im*
|
||||||
|
im "inner method", select contents of "def"/"end" block,
|
||||||
|
excluding the "def" and "end" themselves.
|
||||||
|
|
||||||
|
*ruby-v_aM* *ruby-aM*
|
||||||
|
aM "a class", select from "class" until matching "end"
|
||||||
|
keyword.
|
||||||
|
|
||||||
|
*ruby-v_iM* *ruby-iM*
|
||||||
|
iM "inner class", select contents of "class"/"end"
|
||||||
|
block, excluding the "class" and "end" themselves.
|
||||||
|
|
||||||
|
|
||||||
|
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
123
doc/ft-ruby-syntax.txt
Normal file
123
doc/ft-ruby-syntax.txt
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
|
RUBY *ruby.vim* *ft-ruby-syntax*
|
||||||
|
*vim-ruby-syntax*
|
||||||
|
|
||||||
|
Ruby: Operator highlighting |ruby_operators|
|
||||||
|
Ruby: Whitespace errors |ruby_space_errors|
|
||||||
|
Ruby: Syntax errors |ruby_syntax_errors|
|
||||||
|
Ruby: Folding |ruby_fold| |ruby_foldable_groups|
|
||||||
|
Ruby: Reducing expensive operations |ruby_no_expensive| |ruby_minlines|
|
||||||
|
Ruby: Spellchecking strings |ruby_spellcheck_strings|
|
||||||
|
|
||||||
|
*ruby_operators*
|
||||||
|
Ruby: Operator highlighting ~
|
||||||
|
|
||||||
|
Operators, and pseudo operators, can be highlighted by defining: >
|
||||||
|
|
||||||
|
:let ruby_operators = 1
|
||||||
|
:let ruby_pseudo_operators = 1
|
||||||
|
<
|
||||||
|
The supported pseudo operators are ., &., ::, *, **, &, <, << and ->.
|
||||||
|
|
||||||
|
*ruby_space_errors*
|
||||||
|
Ruby: Whitespace errors ~
|
||||||
|
|
||||||
|
Whitespace errors can be highlighted by defining "ruby_space_errors": >
|
||||||
|
|
||||||
|
:let ruby_space_errors = 1
|
||||||
|
<
|
||||||
|
This will highlight trailing whitespace and tabs preceded by a space character
|
||||||
|
as errors. This can be refined by defining "ruby_no_trail_space_error" and
|
||||||
|
"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after
|
||||||
|
spaces respectively.
|
||||||
|
|
||||||
|
*ruby_syntax_errors*
|
||||||
|
Ruby: Syntax errors ~
|
||||||
|
|
||||||
|
Redundant line continuations and predefined global variable look-alikes (such
|
||||||
|
as $# and $-z) can be highlighted as errors by defining:
|
||||||
|
>
|
||||||
|
:let ruby_line_continuation_error = 1
|
||||||
|
:let ruby_global_variable_error = 1
|
||||||
|
<
|
||||||
|
*ruby_fold*
|
||||||
|
Ruby: Folding ~
|
||||||
|
|
||||||
|
Folding can be enabled by defining "ruby_fold": >
|
||||||
|
|
||||||
|
:let ruby_fold = 1
|
||||||
|
<
|
||||||
|
This will set the value of 'foldmethod' to "syntax" locally to the current
|
||||||
|
buffer or window, which will enable syntax-based folding when editing Ruby
|
||||||
|
filetypes.
|
||||||
|
|
||||||
|
*ruby_foldable_groups*
|
||||||
|
Default folding is rather detailed, i.e., small syntax units like "if", "do",
|
||||||
|
"%w[]" may create corresponding fold levels.
|
||||||
|
|
||||||
|
You can set "ruby_foldable_groups" to restrict which groups are foldable: >
|
||||||
|
|
||||||
|
:let ruby_foldable_groups = 'if case %'
|
||||||
|
<
|
||||||
|
The value is a space-separated list of keywords:
|
||||||
|
|
||||||
|
keyword meaning ~
|
||||||
|
-------- ------------------------------------- ~
|
||||||
|
ALL Most block syntax (default)
|
||||||
|
NONE Nothing
|
||||||
|
if "if" or "unless" block
|
||||||
|
def "def" block
|
||||||
|
class "class" block
|
||||||
|
module "module" block
|
||||||
|
do "do" block
|
||||||
|
begin "begin" block
|
||||||
|
case "case" block
|
||||||
|
for "for", "while", "until" loops
|
||||||
|
{ Curly bracket block or hash literal
|
||||||
|
[ Array literal
|
||||||
|
% Literal with "%" notation, e.g.: %w(STRING), %!STRING!
|
||||||
|
/ Regexp
|
||||||
|
string String and shell command output (surrounded by ', ", `)
|
||||||
|
: Symbol
|
||||||
|
# Multiline comment
|
||||||
|
<< Here documents
|
||||||
|
__END__ Source code after "__END__" directive
|
||||||
|
|
||||||
|
NONE and ALL have priority, in that order, over all other folding groups.
|
||||||
|
|
||||||
|
*ruby_no_expensive*
|
||||||
|
Ruby: Reducing expensive operations ~
|
||||||
|
|
||||||
|
By default, the "end" keyword is colorized according to the opening statement
|
||||||
|
of the block it closes. While useful, this feature can be expensive; if you
|
||||||
|
experience slow redrawing (or you are on a terminal with poor color support)
|
||||||
|
you may want to turn it off by defining the "ruby_no_expensive" variable: >
|
||||||
|
|
||||||
|
:let ruby_no_expensive = 1
|
||||||
|
<
|
||||||
|
In this case the same color will be used for all control keywords.
|
||||||
|
|
||||||
|
*ruby_minlines*
|
||||||
|
|
||||||
|
If you do want this feature enabled, but notice highlighting errors while
|
||||||
|
scrolling backwards, which are fixed when redrawing with CTRL-L, try setting
|
||||||
|
the "ruby_minlines" variable to a value larger than 50: >
|
||||||
|
|
||||||
|
:let ruby_minlines = 100
|
||||||
|
<
|
||||||
|
Ideally, this value should be a number of lines large enough to embrace your
|
||||||
|
largest class or module.
|
||||||
|
|
||||||
|
*ruby_spellcheck_strings*
|
||||||
|
Ruby: Spellchecking strings ~
|
||||||
|
|
||||||
|
Ruby syntax will perform spellchecking of strings if you define
|
||||||
|
"ruby_spellcheck_strings": >
|
||||||
|
|
||||||
|
:let ruby_spellcheck_strings = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
vim:tw=78:sw=4:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
55
doc/graphql.txt
Normal file
55
doc/graphql.txt
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
||||||
|
|
||||||
|
*graphql.txt* GraphQL plug-in for Vim *graphql*
|
||||||
|
|
||||||
|
CONTENTS *graphql-contents*
|
||||||
|
|
||||||
|
1. Introduction |graphql-intro|
|
||||||
|
2. JavaScript Support |graphql-javascript|
|
||||||
|
3. TypeScript Support |graphql-typescript|
|
||||||
|
|
||||||
|
|
||||||
|
INTRODUCTION *graphql-intro*
|
||||||
|
|
||||||
|
This plugin provides GraphQL (http://graphql.org/) file detection, syntax
|
||||||
|
highlighting, and indentation.
|
||||||
|
|
||||||
|
|
||||||
|
JAVASCRIPT *graphql-javascript*
|
||||||
|
|
||||||
|
GraphQL syntax support in ES2015 template literals is provided. It works "out
|
||||||
|
of the box" with Vim 8.2's JavaScript support. The extended syntax provided by
|
||||||
|
the vim-javascript (https://github.com/pangloss/vim-javascript) plugin is also
|
||||||
|
supported.
|
||||||
|
|
||||||
|
*graphql-javascript-options*
|
||||||
|
|
||||||
|
*g:graphql_javascript_tags*
|
||||||
|
|g:graphql_javascript_tags| list of strings
|
||||||
|
|
||||||
|
Default: `["gql", "graphql", "Relay.QL"]`
|
||||||
|
|
||||||
|
This variable lists the ES2015 template tag names that will be recognized as
|
||||||
|
containing GraphQL template literal strings.
|
||||||
|
|
||||||
|
|
||||||
|
TYPESCRIPT *graphql-typescript*
|
||||||
|
|
||||||
|
Like |graphql-javascript|, GraphQL syntax support in ES2015 template literals
|
||||||
|
is provided. It also works "out of the box" with Vim 8.2's TypeScript support,
|
||||||
|
which is based on the yats (https://github.com/HerringtonDarkholme/yats.vim)
|
||||||
|
plugin. For older versions, you can install yats directly.
|
||||||
|
|
||||||
|
TypeScript syntax support also uses |graphql-javascript-options| to customize
|
||||||
|
the list of recognized template tag names.
|
||||||
|
|
||||||
|
REASONML *graphql-reasonml*
|
||||||
|
|
||||||
|
GraphQL syntax support inside of ReasonML template strings using graphql-ppx
|
||||||
|
is available when vim-reasonml (https://github.com/jordwalke/vim-reasonml) is
|
||||||
|
also installed.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
vim:tw=78:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
163
doc/haskell-vim.txt
Normal file
163
doc/haskell-vim.txt
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
|
|
||||||
|
*haskell-vim.txt* Last Change 2016 March 14
|
||||||
|
===============================================================================
|
||||||
|
===============================================================================
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
CONTENTS *haskell-vim-contents*
|
||||||
|
|
||||||
|
1. Features |haskell-vim-features|
|
||||||
|
2. Configuration |haskell-vim-configuration|
|
||||||
|
3. Highlighting |haskell-vim-indentation|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
FEATURES *haskell-vim-features*
|
||||||
|
|
||||||
|
* Covers a broader spectrum of keywords
|
||||||
|
* Highlighting for new features like type families, pattern synonyms,
|
||||||
|
arrow syntax, recursive do, role annotations, QuasiQuotation
|
||||||
|
* More contextual highlighting
|
||||||
|
(e.g. highlight "as" or "family" only in appropriate places)
|
||||||
|
* Smarter indentation
|
||||||
|
* Better Cabal support
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
CONFIGURATION *haskell-vim-configuration*
|
||||||
|
|
||||||
|
To enable the features you would like to use, just add the according line to
|
||||||
|
your `.vimrc`.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
HIGHLIGHTING *haskell-vim-highlighting*
|
||||||
|
|
||||||
|
`haskell-vim` can highlight additional keywords. This is enabled by setting
|
||||||
|
the according variable to 1 in the `.vimrc`.
|
||||||
|
|
||||||
|
* |haskell-vim-enable-quantification|
|
||||||
|
* |haskell-vim-enable-recursivedo|
|
||||||
|
* |haskell-vim-enable-arrowsyntax|
|
||||||
|
* |haskell-vim-enable-pattern-synonyms|
|
||||||
|
* |haskell-vim-enable-typeroles|
|
||||||
|
* |haskell-vim-enable-static-pointers|
|
||||||
|
* |haskell-vim-classic-highlighting|
|
||||||
|
* |haskell-vim-disable-TH|
|
||||||
|
|
||||||
|
*haskell-vim-enable-quantification*
|
||||||
|
`g:haskell_enable_quantification` Enables highlighting of `forall`.
|
||||||
|
|
||||||
|
*haskell-vim-enable-recursivedo*
|
||||||
|
`g:haskell_enable_recursivedo` Enables highlighting of `mdo` and `rec`.
|
||||||
|
|
||||||
|
*haskell-vim-enable-arrowsyntax*
|
||||||
|
`g:haskell_enable_arrowsyntax` Enables highlighting of `proc`.
|
||||||
|
|
||||||
|
*haskell-vim-enable-pattern-synonyms*
|
||||||
|
`g:haskell_enable_pattern_synonyms` Enables highlighting of the `pattern` keyword.
|
||||||
|
|
||||||
|
*haskell-vim-enable-typeroles*
|
||||||
|
`g:haskell_enable_typeroles` Enables highlighting of the `role` keyword, as
|
||||||
|
well as `phantom`, `norminal` and
|
||||||
|
`representational`.
|
||||||
|
|
||||||
|
*haskell-vim-enable-static-pointers*
|
||||||
|
`g:haskell_enable_static_pointers` Enables highlighting of the `static` keyword.
|
||||||
|
|
||||||
|
*haskell-vim-classic-highlighting*
|
||||||
|
`haskell-vim` has an opinionated highlighting. If you do not like that you can
|
||||||
|
switch to a more traditional mode by setting `g:haskell_classic_highlighting`
|
||||||
|
to 1.
|
||||||
|
|
||||||
|
*haskell-vim-disable-TH*
|
||||||
|
Disabling Template Haskell and Quasiquoting syntax is possible by setting
|
||||||
|
`g:haskell_disable_TH` to `1`.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
INDENTATION *haskell-vim-indentation*
|
||||||
|
|
||||||
|
To configure indentation in `haskell-vim` you can use the following variables to
|
||||||
|
change indentation depth, just add the according line to your `.vimrc`.
|
||||||
|
|
||||||
|
You can disable the indentation by setting `g:haskell_indent_disable` to `1`.
|
||||||
|
|
||||||
|
Haskell~
|
||||||
|
|
||||||
|
* |haskell-vim-indent-if|
|
||||||
|
* |haskell-vim-indent-case|
|
||||||
|
* |haskell-vim-indent-let|
|
||||||
|
* |haskell-vim-indent-where|
|
||||||
|
* |haskell-vim-indent-before-where|
|
||||||
|
* |haskell-vim-indent-after-bare-where|
|
||||||
|
* |haskell-vim-indent-do|
|
||||||
|
* |haskell-vim-indent-in|
|
||||||
|
* |haskell-vim-indent-guard|
|
||||||
|
*haskell-vim-indent-if*
|
||||||
|
* let g:haskell_indent_if = 3 >
|
||||||
|
|
||||||
|
if bool
|
||||||
|
>>>then ...
|
||||||
|
>>>else ...
|
||||||
|
<
|
||||||
|
|
||||||
|
*haskell-vim-indent-case*
|
||||||
|
* let g:haskell_indent_case = 2 >
|
||||||
|
|
||||||
|
case xs of
|
||||||
|
>>[] -> ...
|
||||||
|
>>(y:ys) -> ...
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-let*
|
||||||
|
* let g:haskell_indent_let = 4 >
|
||||||
|
|
||||||
|
let x = 0 in
|
||||||
|
>>>>x
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-where*
|
||||||
|
* let g:haskell_indent_where = 6 >
|
||||||
|
|
||||||
|
where f :: Int -> Int
|
||||||
|
>>>>>>f x = x
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-before-where*
|
||||||
|
* let g:haskell_indent_before_where = 2 >
|
||||||
|
|
||||||
|
foo
|
||||||
|
>>where
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-after-bare-where*
|
||||||
|
* let g:haskell_indent_after_bare_where = 2 >
|
||||||
|
|
||||||
|
where
|
||||||
|
>>foo
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-do*
|
||||||
|
* let g:haskell_indent_do = 3 >
|
||||||
|
|
||||||
|
do x <- a
|
||||||
|
>>>y <- b
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-in*
|
||||||
|
* let g:haskell_indent_in = 1 >
|
||||||
|
|
||||||
|
let x = 1
|
||||||
|
>in x
|
||||||
|
<
|
||||||
|
*haskell-vim-indent-guard*
|
||||||
|
* let g:haskell_indent_guard = 2 >
|
||||||
|
|
||||||
|
f x y
|
||||||
|
>>|
|
||||||
|
<
|
||||||
|
|
||||||
|
Cabal~
|
||||||
|
|
||||||
|
* |cabal-vim-indent-section|
|
||||||
|
|
||||||
|
*cabal-vim-indent-section*
|
||||||
|
* let g:cabal_indent_section = 2 (limited to max. 4 spaces) >
|
||||||
|
|
||||||
|
executable name
|
||||||
|
>>main-is: Main.hs
|
||||||
|
<
|
||||||
|
|
||||||
|
endif
|
||||||
158
doc/idris-vim.txt
Normal file
158
doc/idris-vim.txt
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'idris') == -1
|
||||||
|
|
||||||
|
*idris-vim.txt* Last change 2014 April 24
|
||||||
|
===============================================================================
|
||||||
|
===============================================================================
|
||||||
|
@@@@ @@@@@@@@ @@@@@@@@ @@@@ @@@@@@ @@ @@ @@@@ @@ @@
|
||||||
|
@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@@
|
||||||
|
@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@ @@@@
|
||||||
|
@@ @@ @@ @@@@@@@@ @@ @@@@@@ @@@@@@@ @@ @@ @@ @@ @@@ @@
|
||||||
|
@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
|
||||||
|
@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
|
||||||
|
@@@@ @@@@@@@@ @@ @@ @@@@ @@@@@@ @@@ @@@@ @@ @@
|
||||||
|
===============================================================================
|
||||||
|
CONTENTS *idris-vim-contents*
|
||||||
|
|
||||||
|
1. Features: |idris-vim-features|
|
||||||
|
2. Requirements: |idris-vim-requirements|
|
||||||
|
3. Functions: |idris-vim-functions|
|
||||||
|
4. Troubleshooting |idris-vim-troubleshooting|
|
||||||
|
5. Examples: |idris-vim-examples|
|
||||||
|
6. Information: |idris-vim-information|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
FEATURES *idris-vim-features*
|
||||||
|
|
||||||
|
* Syntax Highlighting
|
||||||
|
* Indentation
|
||||||
|
* Unicode Concealing
|
||||||
|
* Syntax Checking (via Syntastic(https://github.com/scrooloose/syntastic))
|
||||||
|
* Interactive Editing via the REPL
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
REQUIREMENTS *idris-vim-requirements*
|
||||||
|
|
||||||
|
* Idris (http://www.idris-lang.org/)
|
||||||
|
|
||||||
|
OPTIONAL:
|
||||||
|
|
||||||
|
* Syntastic(https://github.com/scrooloose/syntastic) for syntax checking
|
||||||
|
* Vimshell(https://github.com/Shougo/vimshell.vim) for a REPL
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
FUNCTIONS *idris-vim-functions*
|
||||||
|
|
||||||
|
All of the functions in idris-vim are essentially just calls back to the REPL,
|
||||||
|
so documentation for each of them is also available there.
|
||||||
|
|
||||||
|
IdrisDocumentation *IdrisDocumentation*
|
||||||
|
Shows internal documentation of the primitive under the cursor.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_h' by default.
|
||||||
|
|
||||||
|
IdrisResponseWin *IdrisResponseWin*
|
||||||
|
This opens an idris response window in a new pane.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_i' by default.
|
||||||
|
|
||||||
|
IdrisShowType *IdrisShowType*
|
||||||
|
This shows the type of the name under the cursor (or, if the cursor happens
|
||||||
|
to be over a metavariable, a bit more information about its context).
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_t' by default.
|
||||||
|
|
||||||
|
IdrisReload *IdrisReload*
|
||||||
|
This reloads the file and type-checks the file in the current buffer.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_r' by default.
|
||||||
|
|
||||||
|
IdrisEval *IdrisEval*
|
||||||
|
This prompts for an expression and then evaluates it in the REPL, then
|
||||||
|
returns the result.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_e' by default.
|
||||||
|
|
||||||
|
IdrisCaseSplit *IdrisCaseSplit*
|
||||||
|
When the cursor is over a variable in a pattern match clause or case
|
||||||
|
expression, this splits the variable into all well-typed patterns.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_c' by default
|
||||||
|
|
||||||
|
IdrisAddClause *IdrisAddClause*
|
||||||
|
When the cursor is at a type declaration this creates a new clause for that
|
||||||
|
signature.
|
||||||
|
|
||||||
|
By default mapped to '<LocalLeader>_d' for an ordinary top-level definition,
|
||||||
|
'<LocalLeader>_b' for a typeclass instance definition, and
|
||||||
|
'<LocalLeader>_md' to add a pattern-matching proof clause.
|
||||||
|
|
||||||
|
IdrisAddMissing: *IdrisAddMissing*
|
||||||
|
When the cursor is over a function, this adds all clauses necessary to make
|
||||||
|
that function cover all inputs. This also eliminates clauses which would
|
||||||
|
lead to unification errors from appearing.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_m' by default
|
||||||
|
|
||||||
|
IdrisRefine: *IdrisRefine*
|
||||||
|
Refines the item the cursor is over (applies the name and fills in any
|
||||||
|
arguments which can be filled in via unification)
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_f' by default
|
||||||
|
|
||||||
|
IdrisProofSearch: *IdrisProofSearch*
|
||||||
|
This attempts to find a value for the metavariable it was called on by
|
||||||
|
looking at the rest of the code. It can also be called with hints, which
|
||||||
|
are functions that can apply to help solve for the metavariable.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_o' without hints and '<LocalLeader>p' with hints by
|
||||||
|
default
|
||||||
|
|
||||||
|
IdrisMakeWith: *IdrisMakeWith*
|
||||||
|
When the cursor is over a pattern clause and this is called, it creates a
|
||||||
|
new with clause.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_w' by default
|
||||||
|
|
||||||
|
IdrisMakeLemma: *IdrisMakeLemma*
|
||||||
|
When the cursor is over a metavariable and this is called, it creates a new
|
||||||
|
top-level definition to solve the metavariable.
|
||||||
|
|
||||||
|
Mapped to '<LocalLeader>_l' by default
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
TROUBLESHOOTING *idris-vim-troubleshooting*
|
||||||
|
|
||||||
|
If this isn't working for you, make sure that:
|
||||||
|
|
||||||
|
* There is an Idris REPL running
|
||||||
|
* For syntax checking, you have syntastic installed
|
||||||
|
* The plugins mappings exists and don't conflict with anything else installed
|
||||||
|
(You can use ':map' to check. There should be mappings similar to
|
||||||
|
'\h * :call IdrisShowDoc()'.)
|
||||||
|
* Vim recognizes you're in an idris file (you can use ':verb set ft' to check)
|
||||||
|
|
||||||
|
If none of this works, check to issue tracker on github and if nothing is
|
||||||
|
there create an issue with a detailed description of the problem.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
EXAMPLES *idris-vim-examples*
|
||||||
|
|
||||||
|
Some excellent tutorials/examples for interactive editing using the above
|
||||||
|
functions can be found at:
|
||||||
|
http://edwinb.wordpress.com/2013/10/28/interactive-idris-editing-with-vim/
|
||||||
|
and
|
||||||
|
http://www.scribd.com/doc/214031954/60/Interactive-Editing-in-Vim
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
INFORMATION *idris-vim-information*
|
||||||
|
|
||||||
|
Author: edwinb
|
||||||
|
Repo: https://github.com/idris-hackers/idris-vim
|
||||||
|
|
||||||
|
Documentation by japesinator
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
===============================================================================
|
||||||
|
" vim:ft=help:et:ts=2:sw=2:sts=2:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
3282
doc/julia-vim-L2U-table.txt
Normal file
3282
doc/julia-vim-L2U-table.txt
Normal file
File diff suppressed because it is too large
Load Diff
405
doc/julia-vim-L2U.txt
Normal file
405
doc/julia-vim-L2U.txt
Normal file
@@ -0,0 +1,405 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
|
||||||
|
|
||||||
|
*julia-vim-L2U.txt* Support for LaTeX-to-Unicode substitutions
|
||||||
|
|
||||||
|
Author: Carlo Baldassi <carlobaldassi@gmail.com>
|
||||||
|
License: MIT license {{{
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
}}}
|
||||||
|
CONTENTS *julia-vim-L2U*
|
||||||
|
|
||||||
|
LaTeX-to-Unicode substitutions |julia-vim-L2U-introdction|
|
||||||
|
Via Tab key |julia-vim-L2U-tab|
|
||||||
|
As you type |julia-vim-L2U-as-you-type|
|
||||||
|
Via Keymap |julia-vim-L2U-keymap|
|
||||||
|
On different file types |julia-vim-L2U-file-types|
|
||||||
|
Enabling and disabling |julia-vim-L2U-enable-disable|
|
||||||
|
Variables |julia-vim-L2U-variables|
|
||||||
|
Functions |julia-vim-L2U-functions|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
LATEX TO UNICODE *julia-vim-L2U-introduction*
|
||||||
|
|
||||||
|
In the Julia REPL, entering a LaTeX-like sequence such as `\alpha` and pressing
|
||||||
|
the <Tab> key substitutes it with a Unicode character such as `α`. The Julia
|
||||||
|
REPL also provides partial completions, and suggestions for possible
|
||||||
|
completions upon repeated pressing of the <Tab> key. Emojis are also
|
||||||
|
available, with their names written between colons, e.g. `\:interrobang:`
|
||||||
|
produces `⁉`.
|
||||||
|
|
||||||
|
See |julia-vim-L2U-reference| for the complete table of substitutions.
|
||||||
|
|
||||||
|
This Vim plug-in also provides the functionality needed to convert LaTeX
|
||||||
|
input sequences into Unicode characters. There are 3 different methods
|
||||||
|
available:
|
||||||
|
|
||||||
|
1. The default one is the most similar to the Julia one: substitutions are
|
||||||
|
triggered by pressing the <Tab> key; if a partial match is found a list
|
||||||
|
of suggested completions is presented in a menu together with their
|
||||||
|
Unicode counterpart. The exact behaviour of this feature can be
|
||||||
|
customized, see |julia-vim-L2U-tab|.
|
||||||
|
|
||||||
|
2. The second one substitutes symbols on the fly as you type, but only in
|
||||||
|
|Insert| mode. See |julia-vim-L2U-as-you-type|.
|
||||||
|
|
||||||
|
3. The third is based on |keymap|. It also substitutes as-you-type, but it
|
||||||
|
doesn't show you the full LaTeX sequence as you're typing it, and there
|
||||||
|
is a time-out. Its main advantage over the previous one is that can be
|
||||||
|
used in more circumstances, e.g. in |Command-line| mode or when searching
|
||||||
|
for a character with |f| or |t|, as explained in |language-mapping|. See
|
||||||
|
|julia-vim-L2U-keymap|.
|
||||||
|
|
||||||
|
All of these methods are independent and can be used together without issues.
|
||||||
|
|
||||||
|
The default configuration is to use the first method, and it's only active
|
||||||
|
when editing Julia files. It only works in |Insert| and |Command-line| modes.
|
||||||
|
|
||||||
|
It is possible to enable it with other file types, see
|
||||||
|
|julia-vim-L2U-file-types|, and it can be even turned on/off on the fly
|
||||||
|
regardless of the file type, see |julia-vim-L2U-enable-disable|.
|
||||||
|
|
||||||
|
In |Command-line| mode, e.g. when searching with the |/| or |?| commands, the
|
||||||
|
default behavior is very similar to the default |Insert| mode behavior, but
|
||||||
|
slightly more limited, see |julia-vim-L2U-cmdmode|.
|
||||||
|
|
||||||
|
These features only work as described with Vim version 7.4 or higher. Tab
|
||||||
|
completion can still be made available on lower Vim versions, see
|
||||||
|
|julia-vim-L2U-workaround|. The keymap mode might work but it hasn't been
|
||||||
|
tested.
|
||||||
|
|
||||||
|
See |julia-vim| for the general reference about the other features of the
|
||||||
|
julia-vim plug-in.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
LATEX TO UNICODE VIA TAB KEY *julia-vim-L2U-tab*
|
||||||
|
|
||||||
|
Substitution of LaTeX sequences when pressing the <Tab> key (in |Insert| mode or
|
||||||
|
in |Command-line| modes) is active by default. Use |g:latex_to_unicode_tab| to
|
||||||
|
control it.
|
||||||
|
|
||||||
|
When this feature is active, the julia-vim plug-in creates a mapping for the
|
||||||
|
<Tab> key (in |Insert| mode) which takes precedence on any previously defined
|
||||||
|
mapping assigned to it, such that when the <Tab> key is pressed the plug-in
|
||||||
|
looks for potential LaTeX symbol matches before the cursor, and if it fails to
|
||||||
|
find anything of interest it will fall-back to the previous mapping for <Tab>
|
||||||
|
(with default Vim settings, this means it will insert a literal <Tab>; but if
|
||||||
|
you have defined some other behavior for that key, e.g. by installing another
|
||||||
|
plug-in such as supertab (https://github.com/ervandew/supertab) than that will
|
||||||
|
be used).
|
||||||
|
|
||||||
|
For example, entering this text in a file:
|
||||||
|
>
|
||||||
|
1 + \alpha
|
||||||
|
<
|
||||||
|
and then pressing <Tab>, results in:
|
||||||
|
>
|
||||||
|
1 + α
|
||||||
|
<
|
||||||
|
|
||||||
|
This feature is associated with 'omnifunc' completion, and therefore can
|
||||||
|
always be accessed via CTRL-X CTRL-O, even when |g:latex_to_unicode_tab| is 0.
|
||||||
|
|
||||||
|
A literal <Tab> key can always be entered by using CTRL-V before <Tab> (see
|
||||||
|
|i_CTRL-V|).
|
||||||
|
|
||||||
|
Partial sequence recognition triggers auto-completion (performed as if the
|
||||||
|
`longest` setting was used in 'completeopt') and shows a menu of suggestions
|
||||||
|
together with their corresponding Unicode symbol (provided the `menu` setting
|
||||||
|
is included in 'completeopt', and more then one match is found). So for
|
||||||
|
example, entering `\al` and pressing <Tab> will result in the following list:
|
||||||
|
>
|
||||||
|
+-------------+
|
||||||
|
| \aleph ℵ |
|
||||||
|
| \allequal ≌ |
|
||||||
|
| \alpha α |
|
||||||
|
+-------------+
|
||||||
|
>
|
||||||
|
Then, pressing `p` will reduce the list to `\alpha`, pressing <Tab> will
|
||||||
|
complete it and pressing <Tab> again will perform the substitution.
|
||||||
|
|
||||||
|
The completion menu can be disbled, and this will happen automatically if a
|
||||||
|
plug-in which is known to be incompatible with this feature is detected: see
|
||||||
|
|g:latex_to_unicode_suggestions|.
|
||||||
|
|
||||||
|
Some LaTeX sequences can be valid both as they are and as partial matches for
|
||||||
|
other sequences, e.g. `\ne` is associated with `≠`, but it is also a partial
|
||||||
|
match for `\nequiv` (`≢`). By default, if <Tab> finds an exact match performs
|
||||||
|
the substitution, but this can be controlled by the |g:latex_to_unicode_eager|
|
||||||
|
setting.
|
||||||
|
|
||||||
|
Command-line mode *julia-vim-L2U-cmdmode*
|
||||||
|
|
||||||
|
In |Command-line| mode, the behavior is largely the same except that both
|
||||||
|
<Tab> and <S-Tab> are mapped by default, and the functionality is slightly
|
||||||
|
more limited. No suggestions are shown for partial completions. Pre-existing
|
||||||
|
user-defined mappings of <Tab> are overridden. In order to avoid that, the
|
||||||
|
completion can be mapped onto a defferent key combination, see
|
||||||
|
|g:latex_to_unicode_cmd_mapping|. When using <Tab>, if no matches are found
|
||||||
|
the behavior falls back to the standard Vim command-line completion.
|
||||||
|
|
||||||
|
Vim versions lower than 7.4 *julia-vim-L2U-workaround*
|
||||||
|
|
||||||
|
The <Tab> key remapping is not performed by default with Vim versions lower
|
||||||
|
than 7.4. However, the functionality is still available via onmicompletion,
|
||||||
|
which is accessible by the CTRL-X CTRL-O key combination. You can map some
|
||||||
|
other key combination to this by adding something like
|
||||||
|
>
|
||||||
|
inoremap <C-Tab> <C-X><C-O>
|
||||||
|
<
|
||||||
|
in your |.vimrc| file. If you'd map <Tab> directly, then you'd need to use
|
||||||
|
CTRL-V <Tab> to insert a literal <Tab>.
|
||||||
|
|
||||||
|
The settings |g:latex_to_unicode_eager| and |g:latex_to_unicode_suggestions|
|
||||||
|
are still meaningful in this case.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
LATEX TO UNICODE AS YOU TYPE *julia-vim-L2U-as-you-type*
|
||||||
|
|
||||||
|
This feature is disabled by default, see |g:latex_to_unicode_auto|, and it is
|
||||||
|
only available with Vim version 7.4 or higher. It consists in substituting
|
||||||
|
valid LaTeX sequences with Unicode symbols automatically as the typing
|
||||||
|
progresses, as soon as the sequences is unambiguously complete. For example,
|
||||||
|
when typing:
|
||||||
|
>
|
||||||
|
\chi\^2 = 1
|
||||||
|
<
|
||||||
|
The result is
|
||||||
|
>
|
||||||
|
χ² = 1
|
||||||
|
<
|
||||||
|
The `\chi` is substituted right when the second backslash is entered, and the
|
||||||
|
`\^2` is substituted when the following space is entered, before the equal
|
||||||
|
sign.
|
||||||
|
|
||||||
|
This feature does not currently work with emojis.
|
||||||
|
|
||||||
|
This feature does not interfere with the <Tab> based substitution.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
LATEX TO UNICODE VIA KEYMAP *julia-vim-L2U-keymap*
|
||||||
|
|
||||||
|
This method is somewhat similar to the as-you-type one described above, but it
|
||||||
|
uses |keymap| to generate the mappings. This has the advantage that it works
|
||||||
|
in more circumstances, e.g. in |Command-line| mode or when searching within a
|
||||||
|
line with |f| or |t| (since it uses |language-mapping| underneath). It can
|
||||||
|
also be easily turned on or off like any other keymap (see |i_CTRL-^| and
|
||||||
|
|c_CTRL-^|). Like the as-you-type fature, it doesn't work with emojis.
|
||||||
|
The disadvantage is that you don't see the whole sequence as you're typing
|
||||||
|
it, and you can't fix mistakes with backspace, for example.
|
||||||
|
Another difference is that there is a |timeout| like for any other mapping.
|
||||||
|
|
||||||
|
In order to use this method, set |g:latex_to_unicode_keymap| to `1`.
|
||||||
|
You can use it in parallel with the other methods, they don't interfere. For
|
||||||
|
example, typing a partial sequence and pressing <Tab> still triggers
|
||||||
|
completions and suggestions if |g:latex_to_unicode_tab| is active.
|
||||||
|
|
||||||
|
If you use this feature, it's also useful to set |lCursor|.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
LATEX TO UNICODE ON DIFFERENT FILE TYPES *julia-vim-L2U-file-types*
|
||||||
|
|
||||||
|
By default, the LaTeX-to-Unicode substitutions are only active when editing
|
||||||
|
Julia files. However, you can use the variable |g:latex_to_unicode_file_types|
|
||||||
|
to specify for which file types this feature is active by default. The
|
||||||
|
variable must be set to a string containing a |pattern| (a regular expression)
|
||||||
|
which matches the desired file types, or to a list of such patterns. For
|
||||||
|
example, to activate the feature on all file types by default, you could put
|
||||||
|
this in your |.vimrc| file:
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_file_types = ".*"
|
||||||
|
<
|
||||||
|
To make it active only on, say, Julia and Lisp files, you could use:
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_file_types = ["julia", "lisp"]
|
||||||
|
<
|
||||||
|
|
||||||
|
Another option, |g:latex_to_unicode_file_types_blacklist|, can be used to
|
||||||
|
exclude certain file types. For example, if you'd wish to enable the feature
|
||||||
|
in all cases except for Python and untyped files, you would use:
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_file_types = ".*"
|
||||||
|
let g:latex_to_unicode_file_types_blacklist = ["python", ""]
|
||||||
|
<
|
||||||
|
|
||||||
|
NOTE: enabling the functionality will override the |'omnifunc'| setting, which
|
||||||
|
can be undesirable, and interfere with plug-ins for different file types. In
|
||||||
|
any case, the previous |'omnifunc'| setting is restored when the functionality
|
||||||
|
is disabled, see |julia-vim-L2U-enable-disable|.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
ENABLING AND DISABLING LATEX TO UNICODE *julia-vim-L2U-enable-disable*
|
||||||
|
|
||||||
|
The LaTeX-to-Unicode functionality can be enabled or disabled at any time,
|
||||||
|
regardless of the |'filetype'| of the file you're editing, using the functions
|
||||||
|
|LaTeXtoUnicode#Enable()|, |LaTeXtoUnicode#Disable()|, |LaTeXtoUnicode#Toggle()|.
|
||||||
|
For example, you could use a mapping like:
|
||||||
|
>
|
||||||
|
noremap <expr> <F7> LaTeXtoUnicode#Toggle()
|
||||||
|
noremap! <expr> <F7> LaTeXtoUnicode#Toggle()
|
||||||
|
<
|
||||||
|
and then use the <F7> key to quickly switch the functionality on and off as
|
||||||
|
needed (see |noremap| and |noremap!|).
|
||||||
|
|
||||||
|
NOTE: these functions are different from the variables |g:latex_to_unicode_tab|,
|
||||||
|
|g:latex_to_unicode_auto| and |g:latex_to_unicode_keymap|: the functions
|
||||||
|
enable/disable the functionality as a whole, while the variables control
|
||||||
|
individual features (tab, auto and keymap substitution).
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
VARIABLES *julia-vim-L2U-variables*
|
||||||
|
|
||||||
|
*g:latex_to_unicode_tab*
|
||||||
|
g:latex_to_unicode_tab
|
||||||
|
|
||||||
|
Determines whether to map LaTeX-to-Unicode substitution to the
|
||||||
|
<Tab> key while in |Insert| and |Command-line| modes, see
|
||||||
|
|julia-vim-L2U-tab|. If unspecified, it is on. You can disable
|
||||||
|
the feature by default by inserting the line
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_tab = 0
|
||||||
|
<
|
||||||
|
in your |.vimrc| file. You can change this setting at any moment
|
||||||
|
while editing, but you need to invoke |LaTeXtoUnicode#Init()|
|
||||||
|
for the change to take effect.
|
||||||
|
|
||||||
|
*g:latex_to_unicode_suggestions*
|
||||||
|
g:latex_to_unicode_suggestions
|
||||||
|
|
||||||
|
Determines whether the <Tab> key mapping produces suggestions
|
||||||
|
for partial matches. By default, this is set to 1 (active),
|
||||||
|
unless a plug-in which is known to be incompatible with it is
|
||||||
|
detected. Currently, known incompatible plug-ins are
|
||||||
|
YouCompleteMe (https://github.com/Valloric/YouCompleteMe),
|
||||||
|
neocomplcache (https://github.com/Shougo/neocomplcache.vim),
|
||||||
|
neocomplete (https://github.com/Shougo/neocomplete.vim) and
|
||||||
|
deoplete (https://github.com/Shougo/deoplete.nvim),
|
||||||
|
|
||||||
|
This variable can be set at any time, changes will immediately
|
||||||
|
take effect.
|
||||||
|
|
||||||
|
*g:latex_to_unicode_eager*
|
||||||
|
g:latex_to_unicode_eager
|
||||||
|
|
||||||
|
Determines whether the <Tab> key mapping performs the
|
||||||
|
substitution immediately upon finding an exact match. By
|
||||||
|
default this setting is set to 1 (active), so that e.g. typing
|
||||||
|
`\ne` and pressing the <Tab> key triggers the substitution. If
|
||||||
|
this variable is set to 0, an exact match which is also a
|
||||||
|
possible partial match to some other sequence triggers the
|
||||||
|
suggestions menu first, but another <Tab> forces the
|
||||||
|
substitution, so that e.g. typing `\ne` and then <Tab>
|
||||||
|
produces a list with `\ne`, `\neg`, `\nequiv` etc., and
|
||||||
|
pressing <Tab> again performs the substitution.
|
||||||
|
|
||||||
|
This variable can be set at any time, changes will immediately
|
||||||
|
take effect. When |g:latex_to_unicode_suggestions| is `0`,
|
||||||
|
this setting has no effect (it's like if it was always on).
|
||||||
|
|
||||||
|
*g:latex_to_unicode_auto*
|
||||||
|
g:latex_to_unicode_auto
|
||||||
|
|
||||||
|
Determines whether to activate LaTeX-to-Unicode substitution
|
||||||
|
on the fly as you type (in |Insert| mode), see
|
||||||
|
|julia-vim-L2U-as-you-type|. If unspecified, it is `0` (off).
|
||||||
|
You can enable the feature by default by inserting the line
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_auto = 1
|
||||||
|
<
|
||||||
|
in your |.vimrc| file. You can change this setting at any
|
||||||
|
moment while editing, but you need to invoke
|
||||||
|
|LaTeXtoUnicode#Init()| for the change to take effect.
|
||||||
|
|
||||||
|
|
||||||
|
*g:latex_to_unicode_keymap*
|
||||||
|
g:latex_to_unicode_keymap
|
||||||
|
|
||||||
|
Determines whether to activate the |keymap|-based
|
||||||
|
LaTeX-to-Unicode substitutions, see |julia-vim-L2U-keymap|.
|
||||||
|
If unspecified, it is `0` (off). You can enable the feature by
|
||||||
|
default by inserting the line
|
||||||
|
>
|
||||||
|
let g:latex_to_unicode_keymap = 1
|
||||||
|
<
|
||||||
|
in your |.vimrc| file. You can change this setting at any
|
||||||
|
moment while editing, but you need to invoke
|
||||||
|
|LaTeXtoUnicode#Init()| for the change to take effect.
|
||||||
|
|
||||||
|
*g:latex_to_unicode_file_types*
|
||||||
|
g:latex_to_unicode_file_types
|
||||||
|
|
||||||
|
Contains a |pattern|, or a list of patterns, which are matched
|
||||||
|
against the |'filetype'| to determine when to enable the
|
||||||
|
LaTeX-to-Unicode functionality, see |julia-vim-L2U-file-types|.
|
||||||
|
By default, its value is `"julia"`. The patterns provided must
|
||||||
|
match the whole filetype name. See also
|
||||||
|
|g:latex_to_unicode_file_types_blacklist|.
|
||||||
|
|
||||||
|
*g:latex_to_unicode_file_types_blacklist*
|
||||||
|
g:latex_to_unicode_file_types_blacklist
|
||||||
|
|
||||||
|
Same as |g:latex_to_unicode_file_types|, but acts in reverse:
|
||||||
|
it disables the LaTeX-to-Unicode functionality when the
|
||||||
|
|'filetype'| matches the provided pattern (or any of the
|
||||||
|
patterns if a list is provided). By default, it contains an
|
||||||
|
unmatchable pattern, i.e. it is effectively disabled.
|
||||||
|
|
||||||
|
*g:latex_to_unicode_cmd_mapping*
|
||||||
|
g:latex_to_unicode_cmd_mapping
|
||||||
|
|
||||||
|
Specifies the mapping (or list of mappings) for the
|
||||||
|
substitution in |Command-line| mode. By default, it is
|
||||||
|
`['<Tab>', '<S-Tab>']`, but it can be changed to avoid
|
||||||
|
overriding other user-defined mapping, e.g. to `'<S-Tab>'`
|
||||||
|
(if your terminal suppoorts it) or `'<C-\><Tab>'`.
|
||||||
|
The `'<Tab>'` (or to be more precise the |wildchar| key) and
|
||||||
|
`'<S-Tab>'` mappings are special in that they fall back to
|
||||||
|
performing default Vim completions in case no suitable
|
||||||
|
substitutions are found.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
FUNCTIONS *julia-vim-L2U-functions*
|
||||||
|
|
||||||
|
*LaTeXtoUnicode#Init()*
|
||||||
|
LaTeXtoUnicode#Init()
|
||||||
|
|
||||||
|
Initialize or re-initialize the LaTeX-to-Unicode substitutions
|
||||||
|
(see |julia-vim-L2U-introduction|). Must be invoked after
|
||||||
|
changing |g:latex_to_unicode_tab| or |g:latex_to_unicode_auto|
|
||||||
|
to make the changes take effect.
|
||||||
|
|
||||||
|
*LaTeXtoUnicode#Enable()*
|
||||||
|
*LaTeXtoUnicode#Disable()*
|
||||||
|
*LaTeXtoUnicode#Toggle()*
|
||||||
|
LaTeXtoUnicode#Enable()
|
||||||
|
LaTeXtoUnicode#Disable()
|
||||||
|
LaTeXtoUnicode#Toggle()
|
||||||
|
|
||||||
|
These functions enable/disable/toggle the LaTeX-to-Unicode
|
||||||
|
functionality, regardless of the |'filetype'| specified in
|
||||||
|
|g:latex_to_unicode_file_types| and
|
||||||
|
|g:latex_to_unicode_file_types_blacklist|. See
|
||||||
|
|julia-vim-L2U-enable-disable|. Note that LaTeXtoUnicode#Enable()
|
||||||
|
will override the |'omnifunc'| definition, if present. However,
|
||||||
|
LaTeXtoUnicode#Disable() will restore it.
|
||||||
|
These functions implicitly invoke |LaTeXtoUnicode#Init()|.
|
||||||
|
|
||||||
|
|
||||||
|
vim:tw=78:et:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
399
doc/julia-vim.txt
Normal file
399
doc/julia-vim.txt
Normal file
@@ -0,0 +1,399 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
|
||||||
|
|
||||||
|
*julia-vim.txt* Support for Julia in Vim
|
||||||
|
|
||||||
|
Author: Carlo Baldassi <carlobaldassi@gmail.com>
|
||||||
|
License: MIT license {{{
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
}}}
|
||||||
|
|
||||||
|
CONTENTS *julia-vim*
|
||||||
|
|
||||||
|
Introduction |julia-vim-introduction|
|
||||||
|
Block-wise movements/objects |julia-vim-blocks|
|
||||||
|
Keyword-oriented movements |julia-vim-blocks-move|
|
||||||
|
Block-oriented movements |julia-vim-blocks-moveblock|
|
||||||
|
Block text objects |julia-vim-blocks-objects|
|
||||||
|
Variables |julia-vim-blocks-variables|
|
||||||
|
Referring to documents |julia-vim-doc|
|
||||||
|
Extras |julia-vim-extras|
|
||||||
|
Customizations |julia-vim-options|
|
||||||
|
About |julia-vim-about|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *julia-vim-introduction*
|
||||||
|
|
||||||
|
The julia-vim plug-in provides:
|
||||||
|
- basic support for editing Julia files (automatic filetype detection,
|
||||||
|
indentation, syntax highlighting)
|
||||||
|
- support for the |matchit| plugin
|
||||||
|
- support for Julia block-wise movements (i.e. jumping around between
|
||||||
|
Julia blocks like if/end, function/end etc.) and block text-objects
|
||||||
|
- facilities for conversion of LaTeX entries to Unicode symbols which mimic
|
||||||
|
and extend what the Julia REPL and the IJulia notebook interface do.
|
||||||
|
Optionally, this functionality can be used with all file types, not
|
||||||
|
just Julia files. See |julia-vim-L2U|.
|
||||||
|
- a keymapping |K| to refer julia documents.
|
||||||
|
|
||||||
|
This help file documents: 1) the block-wise movements and objects, how they
|
||||||
|
work and what variables can be used to enable/disable/tweak them; 2) The
|
||||||
|
documentation lookup facility; 3) Some extra functions and customization
|
||||||
|
options.
|
||||||
|
The LaTeX-to-Unicode facilities are documented in |julia-vim-L2U|.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
BLOCK-WISE MOVEMENTS AND BLOCK TEXT OBJECTS *julia-vim-blocks*
|
||||||
|
|
||||||
|
In Julia, all blocks start with a keyword (`module`, `function`, `if`, `for`,
|
||||||
|
`while`, `type`, etc.) and end with the `end` keyword.
|
||||||
|
|
||||||
|
This plug-in adds support for the |matchit| plugin, such that pressing |%| while
|
||||||
|
on a block keyword will jump to the other keywords pertaining to the same
|
||||||
|
block. For example, if the cursor is at the beginning of the following code:
|
||||||
|
>
|
||||||
|
if a == 1
|
||||||
|
if b > 0
|
||||||
|
println("yes")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
println("no")
|
||||||
|
end
|
||||||
|
<
|
||||||
|
then pressing |%| will jump to the `else` keyword, pressing it again will jump
|
||||||
|
to `end`, and pressing it again will go back to the first `if`.
|
||||||
|
|
||||||
|
Note that the matchit plugin is normally distributed with ViM, but it is
|
||||||
|
disabled by default. To enable it, add this line to your |.vimrc| file:
|
||||||
|
>
|
||||||
|
runtime macros/matchit.vim
|
||||||
|
<
|
||||||
|
The julia-vim plug-in also adds commands to jump around block keywords in
|
||||||
|
normal, operator-pending and visual modes (see |vim-modes|). These are somehow
|
||||||
|
similar to the |]]| and |]m| mappings when used in C and Java files,
|
||||||
|
respectively, but are more powerful. These commands also require that the
|
||||||
|
matchit plugin is enabled.
|
||||||
|
|
||||||
|
There are two families of block movements, keyword-oriented (see
|
||||||
|
|julia-vim-blocks-move|) and block-oriented (see
|
||||||
|
|julia-vim-blocks-blockmove|).
|
||||||
|
|
||||||
|
Finally, this plug-in also adds block |text-objects| special mappings, so that
|
||||||
|
whole blocks can be manipulated as a whole when in visual mode or
|
||||||
|
operator-pending mode, see |julia-vim-block-objects|.
|
||||||
|
|
||||||
|
The block movements and block objects mappings can be collectively disabled,
|
||||||
|
see |g:julia_blocks|, and customized, see |g:julia_blocks_mappings|.
|
||||||
|
|
||||||
|
NOTE: in all cases, macros at the beginning of a block are considered as part
|
||||||
|
of the block itself. For example, in this code:
|
||||||
|
>
|
||||||
|
@inbounds for i = 1:5
|
||||||
|
s += v[i]
|
||||||
|
end
|
||||||
|
<
|
||||||
|
the block begins at `@inbounds`.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
KEYWORD-ORIENTED MOVEMENTS *julia-vim-blocks-move*
|
||||||
|
|
||||||
|
These movements jump to the following/preceding block keyword, and they
|
||||||
|
differentiate between begin keywords and end keywords. Some block keywords can
|
||||||
|
also be used outside blocks (e.g. `for` in comprehensions, or `end` within
|
||||||
|
indexing expressions): these instances are ignored by these commands.
|
||||||
|
|
||||||
|
The following movements are provided:
|
||||||
|
|
||||||
|
*julia_]j* *julia_]J* *julia_[j* *julia_[J*
|
||||||
|
move_n : jumps to the next begin keyword. By default, it is mapped to `]j`.
|
||||||
|
move_N : jumps to the next end keyword. By default, it is mapped to `]J`.
|
||||||
|
move_p : jumps to the preceding begin keyword. By default, it is mapped to `[j`.
|
||||||
|
move_P : jumps to the preceding end keyword. By default, it is mapped to `[J`.
|
||||||
|
|
||||||
|
Use |g:julia_blocks_mappings| to customize the mappings.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
BLOCK-ORIENTED MOVEMENTS *julia-vim-blocks-moveblock*
|
||||||
|
|
||||||
|
These movements are like keyword-oriented movements (|julia-vim-blocks-move|),
|
||||||
|
except that they ignore nested blocks within the block where the cursor is.
|
||||||
|
For example, given the following code (with line annotations):
|
||||||
|
>
|
||||||
|
1 while true
|
||||||
|
2 a += 1
|
||||||
|
3 if a > 5
|
||||||
|
4 break
|
||||||
|
5 end
|
||||||
|
6 end
|
||||||
|
7 if b == 2
|
||||||
|
8 return
|
||||||
|
9 end
|
||||||
|
<
|
||||||
|
if the cursor is on line 2, these movements will ignore the inner
|
||||||
|
`if/end` block (lines 3 to 5). You would then be able to jump directly
|
||||||
|
to lines 1 (with `[[`), 6 (with `][`), 7 (with `]]`), or 9 (with `2][`).
|
||||||
|
|
||||||
|
The following movements are provided:
|
||||||
|
|
||||||
|
*julia_]]* *julia_][* *julia_[[* *julia_[]*
|
||||||
|
moveblock_n : gets out from the current block (if any) and jumps to the next
|
||||||
|
begin keyword. (Similar to |w| for word movements.) By default,
|
||||||
|
it is mapped to `]]`.
|
||||||
|
moveblock_N : jumps to the end of the current block, if any. If the cursor is
|
||||||
|
already at the end of a block, jumps to the end of the following
|
||||||
|
block at the same level of the current one, or at the end of the
|
||||||
|
enclosing block. (Similar to |e| for word movements.) By
|
||||||
|
default, it is mapped to `][`.
|
||||||
|
moveblock_p : jumps to the beginning of the current block, if any. If the
|
||||||
|
cursor is already at the beginning of a block, jumps to the
|
||||||
|
beginning of the preceding block at the same level of the
|
||||||
|
current one, or at the beginning of the enclosing block.
|
||||||
|
(Similar to |b| for word movements.) By default, it is mapped to
|
||||||
|
`[[`.
|
||||||
|
moveblock_P : gets out from the current block (if any) and jumps to the
|
||||||
|
preceding end keyword. (Similar to |ge| for word movements.)
|
||||||
|
By default, it is mapped to `[]`.
|
||||||
|
|
||||||
|
Use |g:julia_blocks_mappings| to customize the mappings.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
BLOCK TEXT OBJECTS *julia-vim-blocks-objects*
|
||||||
|
|
||||||
|
The julia-vim plug-in extends the ViM |text-objects| by defining special
|
||||||
|
mappings which allow to operate on blocks as a whole when in visual mode
|
||||||
|
or operator-pending mode. The default mappings use `aj` and `ij` to refer to
|
||||||
|
these objects.
|
||||||
|
For example, given the following code (with line annotations):
|
||||||
|
>
|
||||||
|
1 while true
|
||||||
|
2 a += 1
|
||||||
|
3 if a > 5
|
||||||
|
4 break
|
||||||
|
5 end
|
||||||
|
6 end
|
||||||
|
<
|
||||||
|
if the cursor is on `break` on line 4, pressing `vaj` will select the whole
|
||||||
|
inner `if` block (lines 3 to 5), and pressing `aj` again will select the whole
|
||||||
|
`while` block (lines 1 to 6). The same effect could have been obtained with a
|
||||||
|
counter, i.e. using `v2aj`. If the cursor were initially on line 2, the whole
|
||||||
|
`while` block would have been selected with the first `vaj`. Using `daj` would
|
||||||
|
delete a block, `caj` would delete it and leave ViM in insert mode, `=aj`
|
||||||
|
would indent it, etc.
|
||||||
|
Starting from line 2, pressing `vij` wuold only select the inner part of the
|
||||||
|
`while` block (lines 2 to 5).
|
||||||
|
|
||||||
|
The following mappings are provided:
|
||||||
|
|
||||||
|
*julia_aj* *julia_ij*
|
||||||
|
select_a : the block which contains the cursor, including its delimiters.
|
||||||
|
By default, this is mapped to `aj`. Repeated application (e.g.
|
||||||
|
`vajaj`) selects the enclosing blocks. A counter can be used to
|
||||||
|
the same effect as repetition (e.g. `v2aj`).
|
||||||
|
select_i : same as select_a, but only selects the lines included between the
|
||||||
|
delimiters. Thus, this does not work with single-line blocks.
|
||||||
|
By default, this is mapped to `ij`. Repeated application (e.g.
|
||||||
|
`vijij`) has no effect, but using a counter has the same effect as
|
||||||
|
using "select_a" and then selecting the inner part of the outermost
|
||||||
|
block. For example, with the default mappings, `v3ij` is the same as
|
||||||
|
`v3ajij`, or `vajajajij`.
|
||||||
|
|
||||||
|
Use |g:julia_blocks_mappings| to customize the mappings.
|
||||||
|
|
||||||
|
The following auxiliary function is only mapped to normal mode:
|
||||||
|
|
||||||
|
*julia_whereami*
|
||||||
|
whereami : this mapping prints the first line of the current block on the
|
||||||
|
command line. If invoked repeatedly, or if given a count, it prints
|
||||||
|
the first line of the enclosing blocks, like `select_a`. If followed
|
||||||
|
by `select_a`, the selection, or operation, will refer to the last
|
||||||
|
block printed. By default, it is not mapped to any key, but a
|
||||||
|
mapping can be easily provided in |g:julia_blocks_mappings|. It is
|
||||||
|
possible to obtain the string, instead of having it printed, by
|
||||||
|
calling the function `julia_blocks#whereami()`. In such case, use
|
||||||
|
the function `julia_blocks#select_reset()` to reset the block
|
||||||
|
nesting level.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
VARIABLES *julia-vim-blocks-variables*
|
||||||
|
|
||||||
|
*g:julia_blocks*
|
||||||
|
g:julia_blocks
|
||||||
|
|
||||||
|
Determines whether to map block-wise movements and objects. If
|
||||||
|
unspecified, it is on. You can disable the feature by default
|
||||||
|
by inserting the line
|
||||||
|
>
|
||||||
|
let g:julia_blocks = 0
|
||||||
|
<
|
||||||
|
in your |.vimrc| file.
|
||||||
|
|
||||||
|
*g:julia_blocks_mappings*
|
||||||
|
g:julia_blocks_mappings
|
||||||
|
|
||||||
|
Custom mapping for block-wise movements. This must be a |dict|
|
||||||
|
associating movements to key combinations. Use empty strings
|
||||||
|
to disable individual mappings. The following is equivalent
|
||||||
|
to the default mappings (see |julia-vim-blocks-moveblock|,
|
||||||
|
|julia-vim-blocks-move| and |julia-vim-blocks-objects|):
|
||||||
|
>
|
||||||
|
let g:julia_blocks_mappings = {
|
||||||
|
\ "move_n" : "]j",
|
||||||
|
\ "move_N" : "]J",
|
||||||
|
\ "move_p" : "[j",
|
||||||
|
\ "move_P" : "[J",
|
||||||
|
\
|
||||||
|
\ "moveblock_n" : "]]",
|
||||||
|
\ "moveblock_N" : "][",
|
||||||
|
\ "moveblock_p" : "[[",
|
||||||
|
\ "moveblock_P" : "[]",
|
||||||
|
\
|
||||||
|
\ "select_a" : "aj",
|
||||||
|
\ "select_i" : "ij",
|
||||||
|
\
|
||||||
|
\ "whereami" : "",
|
||||||
|
\ }
|
||||||
|
<
|
||||||
|
You can change individual mappings by writing something like
|
||||||
|
this in your |.vimrc| file:
|
||||||
|
>
|
||||||
|
let g:julia_blocks_mappings = {
|
||||||
|
\ "move_N" : "]n",
|
||||||
|
\ "move_P" : "[n",
|
||||||
|
\ "whereami" : "<Leader>j",
|
||||||
|
\ }
|
||||||
|
<
|
||||||
|
Or you can disable individual mappings by writing something like
|
||||||
|
this in your |.vimrc| file:
|
||||||
|
>
|
||||||
|
let g:julia_blocks_mappings = {
|
||||||
|
\ "moveblock_n" : "",
|
||||||
|
\ "moveblock_p" : "",
|
||||||
|
\ }
|
||||||
|
<
|
||||||
|
All unspecified entries keep their default value.
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
REFERRING TO DOCUMENTATION *julia-vim-doc*
|
||||||
|
|
||||||
|
*julia-vim-K*
|
||||||
|
K
|
||||||
|
Look up documentation for the keyword under the cursor. If found,
|
||||||
|
a preview window with the documentation is opened.
|
||||||
|
|
||||||
|
This also works for keywords within the opened preview window,
|
||||||
|
allowing effortless browsing of the documentation.
|
||||||
|
|
||||||
|
(This is not really a key mapping, but uses the built-in
|
||||||
|
|keywordprg|-mechanism in vim; see |K| if you're curious).
|
||||||
|
|
||||||
|
|
||||||
|
*<Plug>(JuliaDocPrompt)*
|
||||||
|
<Plug>(JuliaDocPrompt)
|
||||||
|
Open a prompt for keyword documentation lookup. If you don't use |?|
|
||||||
|
for backward search, you can use the following to make `?` work like
|
||||||
|
in the Julia REPL:
|
||||||
|
>
|
||||||
|
autocmd FileType julia nmap <buffer> ? <Plug>(JuliaDocPrompt)
|
||||||
|
<
|
||||||
|
Apply |:augroup| as needed.
|
||||||
|
|
||||||
|
|
||||||
|
*:JuliaDoc*
|
||||||
|
:JuliaDoc {keyword}
|
||||||
|
Look up documentation for {keyword}.
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
EXTRAS *julia-vim-extras*
|
||||||
|
|
||||||
|
|
||||||
|
*julia#toggle_function_blockassign*
|
||||||
|
*julia#function_block2assign*
|
||||||
|
*julia#function_assign2block*
|
||||||
|
julia#toggle_function_blockassign()
|
||||||
|
julia#function_block2assign()
|
||||||
|
julia#function_assign2block()
|
||||||
|
|
||||||
|
These functions allow to transform function definitions
|
||||||
|
between block format and assignment format. For example,
|
||||||
|
these two definitions are equivalent:
|
||||||
|
>
|
||||||
|
function test(x, y)
|
||||||
|
x + 2y
|
||||||
|
end
|
||||||
|
|
||||||
|
test(x, y) = x + 2y
|
||||||
|
<
|
||||||
|
You can use the function `julia#toggle_function_blockassign()`
|
||||||
|
to switch between the two forms (the cursor needs to be on the
|
||||||
|
first line of the block form). This functionality requires
|
||||||
|
that the |matchit| plugin is loaded. Only three-line function
|
||||||
|
blocks like the one in the example are recognized. When
|
||||||
|
changing the block form into the assignment form, `return`
|
||||||
|
statements are removed; if the result is empty, `nothing` is
|
||||||
|
substituted. Leading macros (e.g. `@inline` or `@compat`) are
|
||||||
|
recognized and preserved by the transformation.
|
||||||
|
|
||||||
|
In order to make this functionality practical, it is advisable
|
||||||
|
to map it to some key combination, e.g.:
|
||||||
|
>
|
||||||
|
noremap <Leader>fb :call julia#toggle_function_blockassign()<CR>
|
||||||
|
<
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CUSTOMIZATIONS *julia-vim-options*
|
||||||
|
|
||||||
|
The following options allows customizing some aspects of the plugin.
|
||||||
|
|
||||||
|
*g:julia_spellcheck_docstrings*
|
||||||
|
g:julia_spellcheck_docstrings
|
||||||
|
|
||||||
|
Determines whether to enable spell-checking for docstrings,
|
||||||
|
i.e. triple quoted strings that start in the first column. See
|
||||||
|
|spell|. Default: on (set to `1`).
|
||||||
|
|
||||||
|
*g:julia_spellcheck_strings*
|
||||||
|
g:julia_spellcheck_strings
|
||||||
|
|
||||||
|
Determines whether to enable spell-checking for all strings.
|
||||||
|
See |spell|. Default: off (set to `0`).
|
||||||
|
|
||||||
|
*g:julia_spellcheck_comments*
|
||||||
|
g:julia_spellcheck_comments
|
||||||
|
|
||||||
|
Determines whether to enable spell-checking for comments. See
|
||||||
|
|spell|. Default: on (set to `1`).
|
||||||
|
|
||||||
|
*g:julia_highlight_operators*
|
||||||
|
g:julia_highlight_operators
|
||||||
|
|
||||||
|
Determines whether to apply syntax highlighting to operators.
|
||||||
|
Default: on (set to `1`).
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
ABOUT *julia-vim-about*
|
||||||
|
|
||||||
|
Grab the latest version or report a bug on GitHub:
|
||||||
|
|
||||||
|
http://github.com/JuliaEditorSupport/julia-vim
|
||||||
|
|
||||||
|
vim:tw=78:et:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
443
doc/ledger.txt
Normal file
443
doc/ledger.txt
Normal file
@@ -0,0 +1,443 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ledger') == -1
|
||||||
|
|
||||||
|
*ledger.txt* Plugin for the ledger filetype.
|
||||||
|
|
||||||
|
|
||||||
|
*ledger* *ledger-plugin*
|
||||||
|
|
||||||
|
Contents:
|
||||||
|
|
||||||
|
Commands............|ledger-invoking|
|
||||||
|
Source................|ledger-source|
|
||||||
|
Usage..................|ledger-usage|
|
||||||
|
Tips....................|ledger-tips|
|
||||||
|
Reports..............|ledger-reports|
|
||||||
|
Settings............|ledger-settings|
|
||||||
|
Completion........|ledger-completion|
|
||||||
|
License..............|ledger-license|
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
USAGE *ledger-usage*
|
||||||
|
|
||||||
|
Copy each file to the corresponding directory in your ~/.vim directory or
|
||||||
|
install using Pathogen.
|
||||||
|
|
||||||
|
You can also use a modeline like this in every ledger file:
|
||||||
|
|
||||||
|
vim:filetype=ledger
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
TIPS *ledger-tips*
|
||||||
|
|
||||||
|
Tips and useful commands
|
||||||
|
|
||||||
|
* vim-ledger can do syntax-sensitive folding when you set `foldmethod=syntax`
|
||||||
|
in the |modeline| of your ledger file. This way transactions can shrink down
|
||||||
|
to just one line.
|
||||||
|
|
||||||
|
* Try account-completion (as explained below). If you use YouCompleteMe, you
|
||||||
|
should disable it for Ledger files. Put this in your .vimrc:
|
||||||
|
|
||||||
|
if exists('g:ycm_filetype_blacklist')
|
||||||
|
call extend(g:ycm_filetype_blacklist, { 'ledger': 1 })
|
||||||
|
endif
|
||||||
|
|
||||||
|
* You may use `:make` for syntax checking. It may be convenient to define a
|
||||||
|
mapping for the following command:
|
||||||
|
|
||||||
|
:silent make | redraw! | cwindow
|
||||||
|
|
||||||
|
It is recommended to set the value of `g:ledger_extra_options` (see below)
|
||||||
|
as follows:
|
||||||
|
|
||||||
|
let g:ledger_extra_options = '--pedantic --explicit --check-payees'
|
||||||
|
|
||||||
|
to catch most potential problems in your source file.
|
||||||
|
|
||||||
|
* Remap vim paragraph motion to move by transaction.
|
||||||
|
|
||||||
|
In vim, the "{" and "}" keystrokes move the cursor up and down by whole
|
||||||
|
paragraphs. They can be redefined in ledger files to move by transaction
|
||||||
|
instead. Add these lines to .vimrc:
|
||||||
|
|
||||||
|
au FileType ledger noremap { ?^\d<CR>
|
||||||
|
au FileType ledger noremap } /^\d<CR>
|
||||||
|
|
||||||
|
The default definitions already work in ledger files that separate
|
||||||
|
transactions with blank lines.
|
||||||
|
|
||||||
|
* `:call ledger#transaction_date_set(line('.'), "auxiliary")`
|
||||||
|
|
||||||
|
will set today's date as the auxiliary date of the current transaction. You
|
||||||
|
can use also "primary" or "unshift" in place of "auxiliary". When you pass
|
||||||
|
"unshift" the old primary date will be set as the auxiliary date and today's
|
||||||
|
date will be set as the new primary date.
|
||||||
|
To use a different date pass a date measured in seconds since 1st Jan 1970
|
||||||
|
as the third argument.
|
||||||
|
|
||||||
|
* `:call ledger#transaction_state_set(line('.'), '*')`
|
||||||
|
|
||||||
|
sets the state of the current transaction to '*'. You can use this in custom
|
||||||
|
mappings.
|
||||||
|
|
||||||
|
* `:call ledger#transaction_state_toggle(line('.'), ' *?!')`
|
||||||
|
|
||||||
|
will toggle through the provided transaction states. You can map this to
|
||||||
|
double-clicking for example:
|
||||||
|
|
||||||
|
noremap <silent><buffer> <2-LeftMouse>\
|
||||||
|
:call ledger#transaction_state_toggle(line('.'), ' *?!')<CR>
|
||||||
|
|
||||||
|
* `:LedgerAlign`
|
||||||
|
|
||||||
|
moves the amount expression of a posting so that the decimal separator is
|
||||||
|
aligned at the column specified by g:ledger_align_at. If an amount has no
|
||||||
|
decimal point, the imaginary decimal point to the right of the least
|
||||||
|
significant digit will align. The command acts on a range, with the default
|
||||||
|
being the current line.
|
||||||
|
|
||||||
|
The decimal separator can be set using `g:ledger_decimal_sep`. The default
|
||||||
|
value of `g:ledger_decimal_sep` is `'.'`.
|
||||||
|
|
||||||
|
See below for the recommended mappings.
|
||||||
|
|
||||||
|
* `:call ledger#align_amount_at_cursor()`
|
||||||
|
|
||||||
|
aligns the amount under the cursor and append/prepend the default currency.
|
||||||
|
The default currency can be set using `g:ledger_default_commodity`. Whether
|
||||||
|
the commodity should be inserted before the amount or appended to it can be
|
||||||
|
configured with the boolean flag `g:ledger_commodity_before` (the default
|
||||||
|
value is 1). A separator between the commodity and the amount may be set
|
||||||
|
using `g:ledger_commodity_sep`.
|
||||||
|
|
||||||
|
See below for the recommended mappings.
|
||||||
|
|
||||||
|
* `:call ledger#autocomplete_and_align()`
|
||||||
|
|
||||||
|
when the cursor is on a number or immediately after it, invokes
|
||||||
|
`ledger#align_amount_at_cursor()` to align it and add the default currency;
|
||||||
|
otherwise, performs autocompletion. If you define the following mappings in
|
||||||
|
your `.vimrc` then you may perform both autocompletion and alignment using
|
||||||
|
the <Tab> key:
|
||||||
|
|
||||||
|
au FileType ledger inoremap <silent> <Tab> \
|
||||||
|
<C-r>=ledger#autocomplete_and_align()<CR>
|
||||||
|
au FileType ledger vnoremap <silent> <Tab> :LedgerAlign<CR>
|
||||||
|
|
||||||
|
Alternatively, you may create a file `.vim/after/ftplugin/ledger.vim`
|
||||||
|
containing the following definitions:
|
||||||
|
|
||||||
|
inoremap <silent> <buffer> <Tab> \
|
||||||
|
<C-r>=ledger#autocomplete_and_align()<CR>
|
||||||
|
vnoremap <silent> <buffer> <Tab> :LedgerAlign<CR>
|
||||||
|
|
||||||
|
Now, you may type `asset:check<Tab><Space>123.45<Tab>`, and have the
|
||||||
|
account name autocompleted and `$123.45` properly aligned (assuming your
|
||||||
|
default commodity is set to `'$'`). Or you may press <Tab> in Visual mode
|
||||||
|
to align a number of transactions at once.
|
||||||
|
|
||||||
|
* `:call ledger#entry()`
|
||||||
|
|
||||||
|
enters a new transaction based on the text in the current line.
|
||||||
|
The text in the current line is replaced by the new transaction.
|
||||||
|
This is a front end to `ledger entry`.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
REPORTS *ledger-reports*
|
||||||
|
|
||||||
|
* `:Ledger`
|
||||||
|
|
||||||
|
Executes an arbitrary Ledger command and sends the output to a new buffer.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
:Ledger bal ^assets ^liab
|
||||||
|
|
||||||
|
Errors are displayed in a quickfix window. The command offers account and
|
||||||
|
payee autocompletion (by pressing <Tab>): every name starting with `@` is
|
||||||
|
autocompleted as a payee; any other name is autocompleted as an account.
|
||||||
|
|
||||||
|
In a report buffer or in the quickfix window, you may press <Tab> to switch
|
||||||
|
back to your source file, and you may press `q` to dismiss the current window.
|
||||||
|
|
||||||
|
There are three highlight groups that are used to color the report:
|
||||||
|
|
||||||
|
* `LedgerNumber`
|
||||||
|
|
||||||
|
This is used to color nonnegative numbers.
|
||||||
|
|
||||||
|
* `LedgerNegativeNumber`
|
||||||
|
|
||||||
|
This is used to color negative numbers.
|
||||||
|
|
||||||
|
* `LedgerImproperPerc`
|
||||||
|
|
||||||
|
This is used to color improper percentages.
|
||||||
|
|
||||||
|
* `:Balance`
|
||||||
|
|
||||||
|
Show the pending and cleared balance of a given account below the status
|
||||||
|
line. For example:
|
||||||
|
|
||||||
|
:Balance checking:savings
|
||||||
|
|
||||||
|
The command offers payee and account autocompletion (see `:Ledger`). The
|
||||||
|
account argument is optional: if no argument is given, the first account
|
||||||
|
name found in the current line is used.
|
||||||
|
|
||||||
|
Two highlight groups can be used to customize the colors of the line:
|
||||||
|
|
||||||
|
* `LedgerCleared`
|
||||||
|
|
||||||
|
This is used to color the cleared balance.
|
||||||
|
|
||||||
|
* `LedgerPending`
|
||||||
|
|
||||||
|
This is used to color the pending balance.
|
||||||
|
|
||||||
|
* `:Register`
|
||||||
|
|
||||||
|
Opens an arbitrary register report in the quickfix window. For example:
|
||||||
|
|
||||||
|
:Register groceries -p 'this month'
|
||||||
|
|
||||||
|
The command offers account and payee autocompletion (see |:Ledger|). You
|
||||||
|
may use the standard quickfix commands to jump from an entry in the register
|
||||||
|
report to the corresponding location in the source file. If you use GUI Vim
|
||||||
|
or if your terminal has support for the mouse (e.g., iTerm2, or even
|
||||||
|
Terminal.app in OS X 10.11 or later), you may also double-click on a line
|
||||||
|
number in the quickfix window to jump to the corresponding posting.
|
||||||
|
|
||||||
|
It is strongly recommended that you add mappings for common quickfix
|
||||||
|
commands like `:cprev` and `:cnext`, or that you use T. Pope's Unimpaired
|
||||||
|
plugin.
|
||||||
|
|
||||||
|
* :`Reconcile`
|
||||||
|
|
||||||
|
Reconcile an account. For example:
|
||||||
|
|
||||||
|
:Reconcile checking
|
||||||
|
|
||||||
|
After you press Enter, you will be asked to enter a target amount (use
|
||||||
|
Vim's syntax for numbers, not your ledger's format). For example, for a
|
||||||
|
checking account, the target amount may be the balance of your latest bank
|
||||||
|
statement. The list of uncleared postings appears in the quickfix window.
|
||||||
|
The current balance of the account, together with the difference between the
|
||||||
|
target amount and the cleared balance, is shown at the bottom of the screen.
|
||||||
|
You may use standard quickfix commands to navigate through the postings. You
|
||||||
|
may use |ledger#transaction_state_set()| to update a transaction's state.
|
||||||
|
Every time you save your file, the balance and the difference from the
|
||||||
|
target amount are updated at the bottom of the screen. The goal, of course,
|
||||||
|
is to get such difference to zero. You may press `<C-l>` to refresh the
|
||||||
|
Reconcile buffer. To finish reconciling an account, simply close the
|
||||||
|
quickfix window.
|
||||||
|
|
||||||
|
There is a highlight group to customize the color of the difference from
|
||||||
|
target:
|
||||||
|
|
||||||
|
* `LedgerTarget`
|
||||||
|
|
||||||
|
This is used to color the difference between the target amount and the
|
||||||
|
cleared balance.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *ledger-settings*
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
|
||||||
|
Include the following let-statements somewhere in your `.vimrc` to modify the
|
||||||
|
behaviour of the ledger filetype.
|
||||||
|
|
||||||
|
* Path to the `ledger` executable:
|
||||||
|
|
||||||
|
let g:ledger_bin = 'ledger'
|
||||||
|
|
||||||
|
* Additional default options for the `ledger` executable:
|
||||||
|
|
||||||
|
let g:ledger_extra_options = ''
|
||||||
|
|
||||||
|
* To use a custom external system command to generate a list of account names
|
||||||
|
for completion, set the following. If g:ledger_bin is set, this will default
|
||||||
|
to running that command with arguments to parse the current file using the
|
||||||
|
accounts subcommand (works with ledger or hledger), otherwise it will parse
|
||||||
|
the postings in the current file itself.
|
||||||
|
|
||||||
|
let g:ledger_accounts_cmd = 'your_command args'
|
||||||
|
|
||||||
|
* To use a custom external system command to generate a list of descriptions
|
||||||
|
for completion, set the following. If g:ledger_bin is set, this will default
|
||||||
|
to running that command with arguments to parse the current file using the
|
||||||
|
descriptions subcommand (works with ledger or hledger), otherwise it will
|
||||||
|
parse the transactions in the current file itself.
|
||||||
|
|
||||||
|
let g:ledger_descriptions_cmd = 'your_command args'
|
||||||
|
|
||||||
|
* Number of columns that will be used to display the foldtext. Set this when
|
||||||
|
you think that the amount is too far off to the right.
|
||||||
|
|
||||||
|
let g:ledger_maxwidth = 80
|
||||||
|
|
||||||
|
* String that will be used to fill the space between account name and amount in
|
||||||
|
the foldtext. Set this to get some kind of lines or visual aid.
|
||||||
|
|
||||||
|
let g:ledger_fillstring = ' -'
|
||||||
|
|
||||||
|
* If you want the account completion to be sorted by level of detail/depth
|
||||||
|
instead of alphabetical, include the following line:
|
||||||
|
|
||||||
|
let g:ledger_detailed_first = 1
|
||||||
|
|
||||||
|
* By default vim will fold ledger transactions, leaving surrounding blank lines
|
||||||
|
unfolded. You can use 'g:ledger_fold_blanks' to hide blank lines following a
|
||||||
|
transaction.
|
||||||
|
|
||||||
|
let g:ledger_fold_blanks = 0
|
||||||
|
|
||||||
|
A value of 0 will disable folding of blank lines, 1 will allow folding of a
|
||||||
|
single blank line between transactions; any larger value will enable folding
|
||||||
|
unconditionally.
|
||||||
|
|
||||||
|
Note that only lines containing no trailing spaces are considered for
|
||||||
|
folding. You can take advantage of this to disable this feature on a
|
||||||
|
case-by-case basis.
|
||||||
|
|
||||||
|
* Decimal separator:
|
||||||
|
|
||||||
|
let g:ledger_decimal_sep = '.'
|
||||||
|
|
||||||
|
* Specify at which column decimal separators should be aligned:
|
||||||
|
|
||||||
|
let g:ledger_align_at = 60
|
||||||
|
|
||||||
|
* Default commodity used by `ledger#align_amount_at_cursor()`:
|
||||||
|
|
||||||
|
let g:ledger_default_commodity = ''
|
||||||
|
|
||||||
|
* Flag that tells whether the commodity should be prepended or appended to the
|
||||||
|
amount:
|
||||||
|
|
||||||
|
let g:ledger_commodity_before = 1
|
||||||
|
|
||||||
|
* String to be put between the commodity and the amount:
|
||||||
|
|
||||||
|
let g:ledger_commodity_sep = ''
|
||||||
|
|
||||||
|
* Flag that enable the spelling of the amount:
|
||||||
|
|
||||||
|
let g:ledger_commodity_spell = 1
|
||||||
|
|
||||||
|
* Format of transaction date:
|
||||||
|
|
||||||
|
let g:ledger_date_format = '%Y/%m/%d'
|
||||||
|
|
||||||
|
* The file to be used to generate reports:
|
||||||
|
|
||||||
|
let g:ledger_main = '%'
|
||||||
|
|
||||||
|
The default is to use the current file.
|
||||||
|
|
||||||
|
* Position of a report buffer:
|
||||||
|
|
||||||
|
let g:ledger_winpos = 'B'
|
||||||
|
|
||||||
|
Use `b` for bottom, `t` for top, `l` for left, `r` for right. Use uppercase letters
|
||||||
|
if you want the window to always occupy the full width or height.
|
||||||
|
|
||||||
|
* Format of quickfix register reports (see |:Register|):
|
||||||
|
|
||||||
|
let g:ledger_qf_register_format = \
|
||||||
|
'%(date) %-50(payee) %-30(account) %15(amount) %15(total)\n'
|
||||||
|
|
||||||
|
The format is specified using the standard Ledger syntax for --format.
|
||||||
|
|
||||||
|
* Format of the reconcile quickfix window (see |:Reconcile|):
|
||||||
|
|
||||||
|
let g:ledger_qf_reconcile_format = \
|
||||||
|
'%(date) %-4(code) %-50(payee) %-30(account) %15(amount)\n'
|
||||||
|
|
||||||
|
The format is specified using the standard Ledger syntax for --format.
|
||||||
|
|
||||||
|
* Flag that tells whether a location list or a quickfix list should be used:
|
||||||
|
|
||||||
|
let g:ledger_use_location_list = 0
|
||||||
|
|
||||||
|
The default is to use the quickfix window. Set to 1 to use a location list.
|
||||||
|
|
||||||
|
* Position of the quickfix/location list:
|
||||||
|
|
||||||
|
let g:ledger_qf_vertical = 0
|
||||||
|
|
||||||
|
Set to 1 to open the quickfix window in a vertical split.
|
||||||
|
|
||||||
|
* Size of the quickfix window:
|
||||||
|
|
||||||
|
let g:ledger_qf_size = 10
|
||||||
|
|
||||||
|
This is the number of lines of a horizontal quickfix window, or the number
|
||||||
|
of columns of a vertical quickfix window.
|
||||||
|
|
||||||
|
* Flag to show or hide filenames in the quickfix window:
|
||||||
|
|
||||||
|
let g:ledger_qf_hide_file = 1
|
||||||
|
|
||||||
|
Filenames in the quickfix window are hidden by default. Set this to 1 is
|
||||||
|
you want filenames to be visible.
|
||||||
|
|
||||||
|
* Text of the output of the |:Balance| command:
|
||||||
|
|
||||||
|
let g:ledger_cleared_string = 'Cleared: '
|
||||||
|
let g:ledger_pending_string = 'Cleared or pending: '
|
||||||
|
let g:ledger_target_string = 'Difference from target: '
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMPLETION *ledger-completion*
|
||||||
|
|
||||||
|
Omni completion is currently implemented for account names only.
|
||||||
|
|
||||||
|
### Accounts
|
||||||
|
|
||||||
|
Account names are matched by the start of every sub-level. When you
|
||||||
|
insert an account name like this:
|
||||||
|
|
||||||
|
Asse<C-X><C-O>
|
||||||
|
|
||||||
|
You will get a list of top-level accounts that start like this.
|
||||||
|
|
||||||
|
Go ahead and try something like:
|
||||||
|
|
||||||
|
As:Ban:Che<C-X><C-O>
|
||||||
|
|
||||||
|
When you have an account like this, 'Assets:Bank:Checking' should show up.
|
||||||
|
|
||||||
|
When you want to complete on a virtual transaction, it's currently best
|
||||||
|
to keep the cursor in front of the closing bracket. Of course you can
|
||||||
|
insert the closing bracket after calling the completion, too.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
LICENSE *ledger-license*
|
||||||
|
|
||||||
|
https://github.com/ledger/vim-ledger
|
||||||
|
|
||||||
|
Copyright 2019 Caleb Maclennan
|
||||||
|
Copyright 2009–2017 Johann Klähn
|
||||||
|
Copyright 2009 Stefan Karrmann
|
||||||
|
Copyright 2005 Wolfgang Oertl
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
vim:ts=8 sw=8 noexpandtab tw=78 ft=help:
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
16
doc/ocaml.txt
Normal file
16
doc/ocaml.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1
|
||||||
|
|
||||||
|
*ocaml.txt* Filetype plugin for OCaml
|
||||||
|
|
||||||
|
CONFIGURATION *ocaml-configuration*
|
||||||
|
|
||||||
|
*g:ocaml_highlight_operators*
|
||||||
|
|
||||||
|
By default operators are not linked to the Operator group and thus not
|
||||||
|
highlighted. You can turn on highlighting of operators by defining:
|
||||||
|
|
||||||
|
let g:ocaml_highlight_operators = 1
|
||||||
|
|
||||||
|
vim:tw=78:et:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
22
doc/opam.txt
Normal file
22
doc/opam.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1
|
||||||
|
|
||||||
|
*opam.txt* Switch OCaml versions from inside Vim using OPAM
|
||||||
|
|
||||||
|
Author: Rudi Grinberg <http://rgrinberg.com>
|
||||||
|
License: Same terms as Vim itself (see |license|)
|
||||||
|
|
||||||
|
This plugin is only available if 'compatible' is not set.
|
||||||
|
|
||||||
|
COMMANDS *:opam*
|
||||||
|
|
||||||
|
:Opam {version} Set the current OCaml version to {version}.
|
||||||
|
|
||||||
|
ABOUT *opam-about*
|
||||||
|
|
||||||
|
Grab the latest version or report a bug on GitHub:
|
||||||
|
|
||||||
|
https://github.com/ocaml/vim-ocaml
|
||||||
|
|
||||||
|
vim:tw=78:et:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
143
doc/pgsql.txt
Normal file
143
doc/pgsql.txt
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'pgsql') == -1
|
||||||
|
|
||||||
|
*pgsql.txt* Syntax highlighting for PostgreSQL files
|
||||||
|
_ ~
|
||||||
|
| | ~
|
||||||
|
____ ____ ___ ____| | ~
|
||||||
|
| _ \ / _ |/___)/ _ | | ~
|
||||||
|
| |_| ( (_| |___ | |_| | | ~
|
||||||
|
| __/ \___ (___/ \__ |\_) ~
|
||||||
|
|_| (_____| |_| ~
|
||||||
|
|
||||||
|
The best PostgreSQL plugin for Vim!
|
||||||
|
|
||||||
|
Author: Lifepillar <https://github.com/lifepillar>
|
||||||
|
License: Public Domain
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *pgsql-contents*
|
||||||
|
|
||||||
|
1. Syntax highlighting ................... |pgsql-syntax|
|
||||||
|
2. Customization ......................... |pgsql-customization|
|
||||||
|
3. Autocompletion ........................ |pgsql-autocompletion|
|
||||||
|
4. Contributing .......................... |pgsql-contributing|
|
||||||
|
5. Credits ............................... |pgsql-credits|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Syntax highlighting *pgsql-syntax*
|
||||||
|
|
||||||
|
Files with a .`pgsql` suffix are highlighted out of the box. If you want to
|
||||||
|
highlight `.sql` files using this plugin by default, add this to your `.vimrc`
|
||||||
|
(see |ft_sql.txt| for more details):
|
||||||
|
>
|
||||||
|
let g:sql_type_default = 'pgsql'
|
||||||
|
<
|
||||||
|
Alternatively, after loading a `.sql` file use this command:
|
||||||
|
>
|
||||||
|
SQLSetType pgsql.vim
|
||||||
|
<
|
||||||
|
To set the file type in new buffers use:
|
||||||
|
>
|
||||||
|
let b:sql_type_override='pgsql' | set ft=sql
|
||||||
|
<
|
||||||
|
Identifiers starting with an underscore are highlighted as variables. It is
|
||||||
|
recommended to adopt the convention of prefixing function parameters and local
|
||||||
|
variables with `_`.
|
||||||
|
|
||||||
|
Code between `$pgsql$`, `$body$`, or `$$` pairs is interpreted as PL/pgSQL and
|
||||||
|
highlighted accordingly (the delimiters are case-insensitive). If you prefer
|
||||||
|
to use `$$` to highlight strings instead, you may set |g:pgsql_dollar_strings|
|
||||||
|
to 1.
|
||||||
|
|
||||||
|
Text enclosed between `$anyword$` pairs, where `anyword` is any non-empty
|
||||||
|
sequence of word characters different from those with a special meaning (such
|
||||||
|
as `$pgsql$`) is treated as a multi-line string.
|
||||||
|
|
||||||
|
Finally, the plugin supports syntax highlighting of arbitrary languages within
|
||||||
|
procedure and function blocks. This feature needs to be configured: see
|
||||||
|
|g:pgsql_pl|.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Customization *pgsql-customization*
|
||||||
|
|
||||||
|
*'g:pgsql_backslash_quote'*
|
||||||
|
Set to 1 to recognize `\'` as an escape sequence in all strings. By default,
|
||||||
|
`\'` is treated as an escape sequence only in "escape" strings constants,
|
||||||
|
i.e., strings enclosed in `E''`.
|
||||||
|
>
|
||||||
|
let g:pgsql_backslash_quote = 0
|
||||||
|
<
|
||||||
|
*'g:pgsql_disabled_extensions'*
|
||||||
|
Support for the most common PostgreSQL extensions is enabled by default. Set
|
||||||
|
this to a List of names of extensions whose keywords you do not want to be
|
||||||
|
highlighted.
|
||||||
|
>
|
||||||
|
let g:pgsql_disabled_extensions = []
|
||||||
|
<
|
||||||
|
*'g:pgsql_dollar_strings'*
|
||||||
|
Set to 1 if you want double-dollar enclosed text highlighted as a SQL string.
|
||||||
|
By default, text quoted with `$$` is highlighted as PL/pgSQL.
|
||||||
|
>
|
||||||
|
let g:pgsql_dollar_strings = 0
|
||||||
|
<
|
||||||
|
*'g:pgsql_pl'*
|
||||||
|
*'b:pgsql_pl'*
|
||||||
|
A List of the filetypes that should be highlighted inside the body of
|
||||||
|
user-defined functions and procedures.
|
||||||
|
>
|
||||||
|
let g:pgsql_pl = []
|
||||||
|
<
|
||||||
|
For example, to use PL/Python and PL/R, you should define:
|
||||||
|
>
|
||||||
|
let g:pgsql_pl = ['python', 'r']
|
||||||
|
<
|
||||||
|
Then, code between `$python$` pairs will be highlighted as Python, and code
|
||||||
|
between `$r$` pairs will be highlighted as R.
|
||||||
|
|
||||||
|
The buffer-local version of this setting can be used to override the global
|
||||||
|
setting in a single buffer.
|
||||||
|
|
||||||
|
Note: changes to any of these variables take effect after the SQL filetype is
|
||||||
|
reloaded.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Autocompletion *pgsql-autocompletion*
|
||||||
|
|
||||||
|
This plugin just defines a new dialect for Vim's SQL plugin. As such, it
|
||||||
|
inherits the static and dynamic completion methods already offered by Vim (see
|
||||||
|
|sql-completion|). So, for example, by default you may use `<C-c>f` to
|
||||||
|
complete function names, `<C-c>T` to complete types, and so on. See
|
||||||
|
|ft_sql.txt| for thorough documentation about SQL support in Vim.
|
||||||
|
|
||||||
|
As far as I know, YouCompleteMe does not support SQL. If you use YouCompleteMe
|
||||||
|
you may want to disable it for SQL buffers. Add this to
|
||||||
|
`.vim/after/ftplugin/sql.vim`:
|
||||||
|
>
|
||||||
|
if exists('g:ycm_filetype_blacklist')
|
||||||
|
call extend(g:ycm_filetype_blacklist, { 'sql': 1 })
|
||||||
|
endif
|
||||||
|
<
|
||||||
|
Of course, I recommend using my own MUcomplete plugin over YCM ;)
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Contributing *pgsql-contributing*
|
||||||
|
|
||||||
|
For bug reports and feature requests please use:
|
||||||
|
|
||||||
|
https://github.com/lifepillar/pgsql.vim/issues
|
||||||
|
|
||||||
|
Pull requests are welcome, too!
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Credits *pgsql-credits*
|
||||||
|
|
||||||
|
This plugin was originally a fork of space::tekk's
|
||||||
|
|
||||||
|
https://github.com/spacetekk/pgsql.vim
|
||||||
|
|
||||||
|
and completely rewritten.
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
68
doc/ps1.txt
Normal file
68
doc/ps1.txt
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'powershell') == -1
|
||||||
|
|
||||||
|
*ps1.txt* A Windows PowerShell syntax plugin for Vim
|
||||||
|
|
||||||
|
Maintainer: Peter Provost <https://www.github.com/PProvost>
|
||||||
|
License: Apache 2.0
|
||||||
|
Version: 2.10
|
||||||
|
|
||||||
|
INTRODUCTION *ps1-syntax*
|
||||||
|
|
||||||
|
This plugin provides Vim syntax, indent and filetype detection for Windows
|
||||||
|
PowerShell scripts, modules, and XML configuration files.
|
||||||
|
|
||||||
|
|
||||||
|
ABOUT *ps1-about*
|
||||||
|
|
||||||
|
Grab the latest version or report a bug on GitHub:
|
||||||
|
|
||||||
|
https://github.com/PProvost/vim-ps1
|
||||||
|
|
||||||
|
|
||||||
|
FOLDING *ps1-folding*
|
||||||
|
|
||||||
|
The ps1 syntax file provides syntax folding (see |:syn-fold|) for script blocks
|
||||||
|
and digital signatures in scripts.
|
||||||
|
|
||||||
|
When 'foldmethod' is set to "syntax" then function script blocks will be
|
||||||
|
folded unless you use the following in your .vimrc or before opening a script: >
|
||||||
|
|
||||||
|
:let g:ps1_nofold_blocks = 1
|
||||||
|
<
|
||||||
|
Digital signatures in scripts will also be folded unless you use: >
|
||||||
|
|
||||||
|
:let g:ps1_nofold_sig = 1
|
||||||
|
<
|
||||||
|
Note: syntax folding might slow down syntax highlighting significantly,
|
||||||
|
especially for large files.
|
||||||
|
|
||||||
|
|
||||||
|
COMPILER *ps1-compiler*
|
||||||
|
|
||||||
|
The powershell |compiler| script configures |:make| to execute the script in
|
||||||
|
PowerShell.
|
||||||
|
|
||||||
|
It tries to pick a smart default PowerShell command: `pwsh` if available and
|
||||||
|
`powershell` otherwise, but you can customize the command: >
|
||||||
|
|
||||||
|
:let g:ps1_makeprg_cmd = '/path/to/pwsh'
|
||||||
|
<
|
||||||
|
To configure whether to show the exception type information: >
|
||||||
|
|
||||||
|
:let g:ps1_efm_show_error_categories = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
KEYWORD LOOKUP *ps1-keyword*
|
||||||
|
|
||||||
|
To look up keywords using PowerShell's Get-Help, press the |K| key. For more
|
||||||
|
convenient paging, the pager `less` should be installed, which is included in
|
||||||
|
many Linux distributions and in macOS.
|
||||||
|
|
||||||
|
Many other distributions are available for Windows like
|
||||||
|
https://chocolatey.org/packages/less/. Make sure `less` is in a directory
|
||||||
|
listed in the `PATH` environment variable, which chocolatey above does.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
vim:ft=help:
|
||||||
|
|
||||||
|
endif
|
||||||
124
doc/python-syntax.txt
Normal file
124
doc/python-syntax.txt
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'python') == -1
|
||||||
|
|
||||||
|
*python-syntax.txt* Python syntax highlighting
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Introduction *python-syntax* *ft-python-syntax* *python.vim*
|
||||||
|
|
||||||
|
This is an enhanced version of the original Vim 6.1 Python syntax highlighting
|
||||||
|
`python.vim` by Neil Schemenauer.
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
|
||||||
|
* Enhanced highlighting for:
|
||||||
|
* Strings
|
||||||
|
* Special symbols inside strings
|
||||||
|
* Numeric constants
|
||||||
|
* Added support for:
|
||||||
|
* Python 3
|
||||||
|
* Numbers with underscores
|
||||||
|
* String %-formatting and f-strings
|
||||||
|
* Magic comments: source code encoding and shebangs
|
||||||
|
* New exceptions and builtins
|
||||||
|
* Doctests
|
||||||
|
* `@decorator` syntax
|
||||||
|
* Class variables such as `self` and `cls`
|
||||||
|
* Operators
|
||||||
|
* Highlighting of the following errors:
|
||||||
|
* Invalid symbols in source file
|
||||||
|
* Invalid numeric constants
|
||||||
|
* Invalid %-formatting inside strings
|
||||||
|
* Invalid variable names
|
||||||
|
* Invalid operators
|
||||||
|
* Mixing spaces and tabs
|
||||||
|
* Trailing spaces (Enabled with `g:python_highlight_space_errors`)
|
||||||
|
* Commands for easy switching between versions
|
||||||
|
|
||||||
|
Folding is done by the plugin SimpylFold
|
||||||
|
(https://github.com/tmhedberg/SimpylFold).
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
Configuration *python-syntax-configuration*
|
||||||
|
|
||||||
|
Option variables
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Set variable to `1` to enable or `0` to disable.
|
||||||
|
|
||||||
|
For example to enable all syntax highlighting features you can add the
|
||||||
|
following command to your `~/.config/nvim/init.vim` or `~/.vimrc`: >
|
||||||
|
|
||||||
|
let g:python_highlight_all = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
`g:python_version_2` (default `0`)
|
||||||
|
Python 2 mode
|
||||||
|
|
||||||
|
`b:python_version_2` (default `0`)
|
||||||
|
Python 2 mode (buffer local)
|
||||||
|
|
||||||
|
`g:python_highlight_builtins` (default `0`)
|
||||||
|
Highlight builtin objects, types, and functions
|
||||||
|
|
||||||
|
`g:python_highlight_builtin_objs` (default `0`)
|
||||||
|
Highlight builtin objects only
|
||||||
|
|
||||||
|
`g:python_highlight_builtin_types` (default `0`)
|
||||||
|
Highlight builtin types only
|
||||||
|
|
||||||
|
`g:python_highlight_builtin_funcs` (default `0`)
|
||||||
|
Highlight builtin functions only
|
||||||
|
|
||||||
|
`g:python_highlight_builtin_funcs_kwarg` (default `1`)
|
||||||
|
Highlight builtin functions when used as kwarg
|
||||||
|
|
||||||
|
`g:python_highlight_exceptions` (default `0`)
|
||||||
|
Highlight standard exceptions
|
||||||
|
|
||||||
|
`g:python_highlight_string_formatting` (default `0`)
|
||||||
|
Highlight `%` string formatting
|
||||||
|
|
||||||
|
`g:python_highlight_string_format` (default `0`)
|
||||||
|
Highlight syntax of `str.format` syntax
|
||||||
|
|
||||||
|
`g:python_highlight_string_templates` (default `0`)
|
||||||
|
Highlight syntax of `string.Template`
|
||||||
|
|
||||||
|
`g:python_highlight_indent_errors` (default `0`)
|
||||||
|
Highlight indentation errors
|
||||||
|
|
||||||
|
`g:python_highlight_space_errors` (default `0`)
|
||||||
|
Highlight trailing spaces
|
||||||
|
|
||||||
|
`g:python_highlight_doctests` (default `0`)
|
||||||
|
Highlight doc-tests
|
||||||
|
|
||||||
|
`g:python_highlight_func_calls` (default `0`)
|
||||||
|
Highlight functions calls
|
||||||
|
|
||||||
|
`g:python_highlight_class_vars` (default `0`)
|
||||||
|
Highlight class variables `self` and `cls`
|
||||||
|
|
||||||
|
`g:python_highlight_operators` (default `0`)
|
||||||
|
Highlight all operators
|
||||||
|
|
||||||
|
`g:python_highlight_all` (default `0`)
|
||||||
|
Enable all highlight options above, except for previously set.
|
||||||
|
|
||||||
|
`g:python_highlight_file_headers_as_comments` (default `0`)
|
||||||
|
Highlight shebang and coding headers as comments
|
||||||
|
|
||||||
|
`g:python_slow_sync` (default `1`)
|
||||||
|
Disable for slow machines
|
||||||
|
|
||||||
|
Commands
|
||||||
|
--------
|
||||||
|
|
||||||
|
`Python2Syntax`
|
||||||
|
Switch to Python 2
|
||||||
|
|
||||||
|
`Python3Syntax`
|
||||||
|
Switch to Python 3
|
||||||
|
|
||||||
|
endif
|
||||||
24
doc/reason.txt
Normal file
24
doc/reason.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'reason') == -1
|
||||||
|
|
||||||
|
*reason.txt* Filetype plugin for Reason
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *reason* *ft-reason*
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *reason-intro*
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *reason-settings*
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
MAPPINGS *reason-mappings*
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
vim:tw=78:sw=4:noet:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
490
doc/rust.txt
Normal file
490
doc/rust.txt
Normal file
@@ -0,0 +1,490 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
|
*ft_rust.txt* Filetype plugin for Rust
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *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. It requires Vim 8 or higher for full functionality. Some commands
|
||||||
|
will not work on earlier versions.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *rust-settings*
|
||||||
|
|
||||||
|
This plugin has a few variables you can define in your vimrc that change the
|
||||||
|
behavior of the plugin.
|
||||||
|
|
||||||
|
Some variables can be set buffer local (`:b` prefix), and the buffer local
|
||||||
|
will take precedence over the global `g:` counterpart.
|
||||||
|
|
||||||
|
*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:rust_use_custom_ctags_defs*
|
||||||
|
g:rust_use_custom_ctags_defs~
|
||||||
|
Set this option to 1 if you have customized ctags definitions for Rust
|
||||||
|
and do not wish for those included with rust.vim to be used: >
|
||||||
|
let g:rust_use_custom_ctags_defs = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
NOTE: rust.vim's built-in definitions are only used for the Tagbar Vim
|
||||||
|
plugin, if you have it installed, AND if Universal Ctags is not
|
||||||
|
detected. This is because Universal Ctags already has built-in
|
||||||
|
support for Rust when used with Tagbar.
|
||||||
|
|
||||||
|
Also, note that when using ctags other than Universal Ctags, it is not
|
||||||
|
automatically used when generating |tags| files that Vim can use to
|
||||||
|
navigate to definitions across different source files. Feel free to
|
||||||
|
copy `rust.vim/ctags/rust.ctags` into your own `~/.ctags` if you wish
|
||||||
|
to generate |tags| files.
|
||||||
|
|
||||||
|
|
||||||
|
*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:rustfmt_command*
|
||||||
|
g:rustfmt_command~
|
||||||
|
Set this option to the name of the 'rustfmt' executable in your $PATH. If
|
||||||
|
not specified it defaults to 'rustfmt' : >
|
||||||
|
let g:rustfmt_command = 'rustfmt'
|
||||||
|
<
|
||||||
|
*g:rustfmt_autosave*
|
||||||
|
g:rustfmt_autosave~
|
||||||
|
Set this option to 1 to run |:RustFmt| automatically when saving a
|
||||||
|
buffer. If not specified it defaults to 0 : >
|
||||||
|
let g:rustfmt_autosave = 0
|
||||||
|
<
|
||||||
|
There is also a buffer-local b:rustfmt_autosave that can be set for
|
||||||
|
the same purpose, and can override the global setting.
|
||||||
|
|
||||||
|
*g:rustfmt_autosave_if_config_present*
|
||||||
|
g:rustfmt_autosave_if_config_present~
|
||||||
|
Set this option to 1 to have *b:rustfmt_autosave* be set automatically
|
||||||
|
if a `rustfmt.toml` file is present in any parent directly leading to
|
||||||
|
the file being edited. If not set, default to 0: >
|
||||||
|
let g:rustfmt_autosave_if_config_present = 0
|
||||||
|
<
|
||||||
|
This is useful to have `rustfmt` only execute on save, on projects
|
||||||
|
that have `rustfmt.toml` configuration.
|
||||||
|
|
||||||
|
There is also a buffer-local b:rustfmt_autosave_if_config_present
|
||||||
|
that can be set for the same purpose, which can overrides the global
|
||||||
|
setting.
|
||||||
|
*g:rustfmt_fail_silently*
|
||||||
|
g:rustfmt_fail_silently~
|
||||||
|
Set this option to 1 to prevent 'rustfmt' from populating the
|
||||||
|
|location-list| with errors. If not specified it defaults to 0: >
|
||||||
|
let g:rustfmt_fail_silently = 0
|
||||||
|
<
|
||||||
|
*g:rustfmt_options*
|
||||||
|
g:rustfmt_options~
|
||||||
|
Set this option to a string of options to pass to 'rustfmt'. The
|
||||||
|
write-mode is already set to 'overwrite'. If not specified it
|
||||||
|
defaults to '' : >
|
||||||
|
let g:rustfmt_options = ''
|
||||||
|
<
|
||||||
|
*g:rustfmt_emit_files*
|
||||||
|
g:rustfmt_emit_files~
|
||||||
|
If not specified rust.vim tries to detect the right parameter to
|
||||||
|
pass to rustfmt based on its reported version. Otherwise, it
|
||||||
|
determines whether to run rustfmt with '--emit=files' (when 1 is
|
||||||
|
provided) instead of '--write-mode=overwrite'. >
|
||||||
|
let g:rustfmt_emit_files = 0
|
||||||
|
|
||||||
|
|
||||||
|
*g:rust_playpen_url*
|
||||||
|
g:rust_playpen_url~
|
||||||
|
Set this option to override the url for the playpen to use: >
|
||||||
|
let g:rust_playpen_url = 'https://play.rust-lang.org/'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_shortener_url*
|
||||||
|
g:rust_shortener_url~
|
||||||
|
Set this option to override the url for the url shortener: >
|
||||||
|
let g:rust_shortener_url = 'https://is.gd/'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_clip_command*
|
||||||
|
g:rust_clip_command~
|
||||||
|
Set this option to the command used in your OS to copy the Rust Play
|
||||||
|
url to the clipboard: >
|
||||||
|
let g:rust_clip_command = 'xclip -selection clipboard'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:cargo_makeprg_params*
|
||||||
|
g:cargo_makeprg_params~
|
||||||
|
Set this option to the string of parameters to pass to cargo. If not
|
||||||
|
specified it defaults to '$*' : >
|
||||||
|
let g:cargo_makeprg_params = 'build'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:cargo_shell_command_runner*
|
||||||
|
g:cargo_shell_command_runner~
|
||||||
|
Set this option to change how to run shell commands for cargo commands
|
||||||
|
|:Cargo|, |:Cbuild|, |:Crun|, ...
|
||||||
|
By default, |:terminal| is used to run shell command in terminal window
|
||||||
|
asynchronously. But if you prefer |:!| for running the commands, it can
|
||||||
|
be specified: >
|
||||||
|
let g:cargo_shell_command_runner = '!'
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
Integration with Syntastic *rust-syntastic*
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
This plugin automatically integrates with the Syntastic checker. There are two
|
||||||
|
checkers provided: 'rustc', and 'cargo'. The latter invokes 'Cargo' in order to
|
||||||
|
build code, and the former delivers a single edited '.rs' file as a compilation
|
||||||
|
target directly to the Rust compiler, `rustc`.
|
||||||
|
|
||||||
|
Because Cargo is almost exclusively being used for building Rust code these
|
||||||
|
days, 'cargo' is the default checker. >
|
||||||
|
|
||||||
|
let g:syntastic_rust_checkers = ['cargo']
|
||||||
|
<
|
||||||
|
If you would like to change it, you can set `g:syntastic_rust_checkers` to a
|
||||||
|
different value.
|
||||||
|
*g:rust_cargo_avoid_whole_workspace*
|
||||||
|
*b:rust_cargo_avoid_whole_workspace*
|
||||||
|
g:rust_cargo_avoid_whole_workspace~
|
||||||
|
When editing a crate that is part of a Cargo workspace, and this
|
||||||
|
option is set to 1 (the default), then 'cargo' will be executed
|
||||||
|
directly in that crate directory instead of in the workspace
|
||||||
|
directory. Setting 0 prevents this behavior - however be aware that if
|
||||||
|
you are working in large workspace, Cargo commands may take more time,
|
||||||
|
plus the Syntastic error list may include all the crates in the
|
||||||
|
workspace. >
|
||||||
|
let g:rust_cargo_avoid_whole_workspace = 0
|
||||||
|
<
|
||||||
|
*g:rust_cargo_check_all_targets*
|
||||||
|
*b:rust_cargo_check_all_targets*
|
||||||
|
g:rust_cargo_check_all_targets~
|
||||||
|
When set to 1, the `--all-targets` option will be passed to cargo when
|
||||||
|
Syntastic executes it, allowing the linting of all targets under the
|
||||||
|
package.
|
||||||
|
The default is 0.
|
||||||
|
|
||||||
|
*g:rust_cargo_check_all_features*
|
||||||
|
*b:rust_cargo_check_all_features*
|
||||||
|
g:rust_cargo_check_all_features~
|
||||||
|
When set to 1, the `--all-features` option will be passed to cargo when
|
||||||
|
Syntastic executes it, allowing the linting of all features of the
|
||||||
|
package.
|
||||||
|
The default is 0.
|
||||||
|
|
||||||
|
*g:rust_cargo_check_examples*
|
||||||
|
*b:rust_cargo_check_examples*
|
||||||
|
g:rust_cargo_check_examples~
|
||||||
|
When set to 1, the `--examples` option will be passed to cargo when
|
||||||
|
Syntastic executes it, to prevent the exclusion of examples from
|
||||||
|
linting. The examples are normally under the `examples/` directory of
|
||||||
|
the crate.
|
||||||
|
The default is 0.
|
||||||
|
|
||||||
|
*g:rust_cargo_check_tests*
|
||||||
|
*b:rust_cargo_check_tests*
|
||||||
|
g:rust_cargo_check_tests~
|
||||||
|
When set to 1, the `--tests` option will be passed to cargo when
|
||||||
|
Syntastic executes it, to prevent the exclusion of tests from linting.
|
||||||
|
The tests are normally under the `tests/` directory of the crate.
|
||||||
|
The default is 0.
|
||||||
|
|
||||||
|
*g:rust_cargo_check_benches*
|
||||||
|
*b:rust_cargo_check_benches*
|
||||||
|
g:rust_cargo_check_benches~
|
||||||
|
When set to 1, the `--benches` option will be passed to cargo when
|
||||||
|
Syntastic executes it. The benches are normally under the `benches/`
|
||||||
|
directory of the crate.
|
||||||
|
The default is 0.
|
||||||
|
|
||||||
|
Integration with auto-pairs *rust-auto-pairs*
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
This plugin automatically configures the auto-pairs plugin not to duplicate
|
||||||
|
single quotes, which are used more often for lifetime annotations than for
|
||||||
|
single character literals.
|
||||||
|
|
||||||
|
*g:rust_keep_autopairs_default*
|
||||||
|
g:rust_keep_autopairs_default~
|
||||||
|
|
||||||
|
Don't override auto-pairs default for the Rust filetype. The default
|
||||||
|
is 0.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMMANDS *rust-commands*
|
||||||
|
|
||||||
|
Invoking Cargo
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This plug defines very simple shortcuts for invoking Cargo from with Vim.
|
||||||
|
|
||||||
|
:Cargo <args> *:Cargo*
|
||||||
|
Runs 'cargo' with the provided arguments.
|
||||||
|
|
||||||
|
:Cbuild <args> *:Cbuild*
|
||||||
|
Shortcut for 'cargo build`.
|
||||||
|
|
||||||
|
:Cclean <args> *:Cclean*
|
||||||
|
Shortcut for 'cargo clean`.
|
||||||
|
|
||||||
|
:Cdoc <args> *:Cdoc*
|
||||||
|
Shortcut for 'cargo doc`.
|
||||||
|
|
||||||
|
:Cinit <args> *:Cinit*
|
||||||
|
Shortcut for 'cargo init`.
|
||||||
|
|
||||||
|
:Crun <args> *:Crun*
|
||||||
|
Shortcut for 'cargo run`.
|
||||||
|
|
||||||
|
:Ctest <args> *:Ctest*
|
||||||
|
Shortcut for 'cargo test`.
|
||||||
|
|
||||||
|
:Cupdate <args> *:Cupdate*
|
||||||
|
Shortcut for 'cargo update`.
|
||||||
|
|
||||||
|
:Cbench <args> *:Cbench*
|
||||||
|
Shortcut for 'cargo bench`.
|
||||||
|
|
||||||
|
:Csearch <args> *:Csearch*
|
||||||
|
Shortcut for 'cargo search`.
|
||||||
|
|
||||||
|
:Cpublish <args> *:Cpublish*
|
||||||
|
Shortcut for 'cargo publish`.
|
||||||
|
|
||||||
|
:Cinstall <args> *:Cinstall*
|
||||||
|
Shortcut for 'cargo install`.
|
||||||
|
|
||||||
|
:Cruntarget <args> *:Cruntarget*
|
||||||
|
Shortcut for 'cargo run --bin' or 'cargo run --example',
|
||||||
|
depending on the currently open buffer.
|
||||||
|
|
||||||
|
Formatting
|
||||||
|
----------
|
||||||
|
|
||||||
|
:RustFmt *:RustFmt*
|
||||||
|
Runs |g:rustfmt_command| on the current buffer. If
|
||||||
|
|g:rustfmt_options| is set then those will be passed to the
|
||||||
|
executable.
|
||||||
|
|
||||||
|
If |g:rustfmt_fail_silently| is 0 (the default) then it
|
||||||
|
will populate the |location-list| with the errors from
|
||||||
|
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
|
||||||
|
then it will not populate the |location-list|.
|
||||||
|
|
||||||
|
:RustFmtRange *:RustFmtRange*
|
||||||
|
Runs |g:rustfmt_command| with selected range. See
|
||||||
|
|:RustFmt| for any other information.
|
||||||
|
|
||||||
|
|
||||||
|
Playpen integration
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
:RustPlay *:RustPlay*
|
||||||
|
This command will only work if you have web-api.vim installed
|
||||||
|
(available at https://github.com/mattn/webapi-vim). It sends the
|
||||||
|
current selection, or if nothing is selected, the entirety of the
|
||||||
|
current buffer to the Rust playpen, and emits a message with the
|
||||||
|
shortened URL to the playpen.
|
||||||
|
|
||||||
|
|g:rust_playpen_url| is the base URL to the playpen, by default
|
||||||
|
"https://play.rust-lang.org/".
|
||||||
|
|
||||||
|
|g:rust_shortener_url| is the base url for the shorterner, by
|
||||||
|
default "https://is.gd/"
|
||||||
|
|
||||||
|
|g:rust_clip_command| is the command to run to copy the
|
||||||
|
playpen url to the clipboard of your system.
|
||||||
|
|
||||||
|
|
||||||
|
Evaluation of a single Rust file
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
NOTE: These commands are useful only when working with standalone Rust files,
|
||||||
|
which is usually not the case for common Rust development. If you wish to
|
||||||
|
building Rust crates from with Vim can should use Vim's make, Syntastic, or
|
||||||
|
functionality from other plugins.
|
||||||
|
|
||||||
|
|
||||||
|
: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.
|
||||||
|
|
||||||
|
|
||||||
|
Running test(s)
|
||||||
|
---------------
|
||||||
|
|
||||||
|
:[N]RustTest[!] [options] *:RustTest*
|
||||||
|
Runs a test under the cursor when the current buffer is in a
|
||||||
|
cargo project with "cargo test" command. If the command did
|
||||||
|
not find any test function under the cursor, it stops with an
|
||||||
|
error message.
|
||||||
|
|
||||||
|
When N is given, adjust the size of the new window to N lines
|
||||||
|
or columns.
|
||||||
|
|
||||||
|
When ! is given, runs all tests regardless of current cursor
|
||||||
|
position.
|
||||||
|
|
||||||
|
When [options] is given, it is passed to "cargo" command
|
||||||
|
arguments.
|
||||||
|
|
||||||
|
When the current buffer is outside cargo project, the command
|
||||||
|
runs "rustc --test" command instead of "cargo test" as
|
||||||
|
fallback. All tests are run regardless of adding ! since there
|
||||||
|
is no way to run specific test function with rustc. [options]
|
||||||
|
is passed to "rustc" command arguments in the case.
|
||||||
|
|
||||||
|
Takes optional modifiers (see |<mods>|): >
|
||||||
|
:tab RustTest
|
||||||
|
:belowright 16RustTest
|
||||||
|
:leftabove vert 80RustTest
|
||||||
|
<
|
||||||
|
rust.vim Debugging
|
||||||
|
------------------
|
||||||
|
|
||||||
|
:RustInfo *:RustInfo*
|
||||||
|
Emits debugging info of the Vim Rust plugin.
|
||||||
|
|
||||||
|
:RustInfoToClipboard *:RustInfoClipboard*
|
||||||
|
Saves debugging info of the Vim Rust plugin to the default
|
||||||
|
register.
|
||||||
|
|
||||||
|
:RustInfoToFile [filename] *:RustInfoToFile*
|
||||||
|
Saves debugging info of the Vim Rust plugin to the the given
|
||||||
|
file, overwritting it.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
MAPPINGS *rust-mappings*
|
||||||
|
|
||||||
|
This plugin defines mappings for |[[| and |]]| to support hanging indents.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
vim:tw=78:sw=4:noet:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
137
doc/scala.txt
Normal file
137
doc/scala.txt
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
|
||||||
|
|
||||||
|
*scala.txt* Syntax highlighting and helper functions for the Scala language.
|
||||||
|
|
||||||
|
This plugin is only available if 'compatible' is not set.
|
||||||
|
{Vi does not have any of this}
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *scala*
|
||||||
|
|
||||||
|
Syntax highlighting and helper functions for the scala language. Extras
|
||||||
|
include:
|
||||||
|
|
||||||
|
- Sorting of import statements, configurable to your conventions.
|
||||||
|
- Tagbar support to navigate definitions within a file in the plugin's
|
||||||
|
sidebar window.
|
||||||
|
- ...and probably more that we've forgotten to update in this doc.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
OPTIONS *scala-options*
|
||||||
|
|
||||||
|
Use these options to control behavior of the plugin. Default values are
|
||||||
|
indicated in the examples.
|
||||||
|
|
||||||
|
*'g:scala_use_builtin_tagbar_defs'*
|
||||||
|
If you are using the Tagbar Vim plugin, vim-scala includes a Tagbar type
|
||||||
|
definition and ctags definition for Scala, so you can use Tagbar immediately.
|
||||||
|
If you have your own ctags definition in `~/.ctags` and prefer to use it, set
|
||||||
|
this option to 0 (we would appreciate contributions if you've improved the
|
||||||
|
ctags definition!).
|
||||||
|
|
||||||
|
Note that Tagbar's ctags definition for Scala is not used to generate a
|
||||||
|
|tags| file that Vim can use to navigate to definitions in other files, only
|
||||||
|
for the plugin sidebar. Feel free to copy `vim-scala/ctags/scala.ctags` into
|
||||||
|
your own `~/.ctags` if you wish to generate |tags| files.
|
||||||
|
>
|
||||||
|
let g:scala_use_builtin_tagbar_defs = 1
|
||||||
|
<
|
||||||
|
*'g:scala_use_default_keymappings'*
|
||||||
|
Set this option to disable definition of all mappings provided by vim-scala.
|
||||||
|
See |scala-mappings|.
|
||||||
|
>
|
||||||
|
let g:scala_use_default_keymappings = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:scala_scaladoc_indent'*
|
||||||
|
By default, the plugin indents documentation comments according to the
|
||||||
|
standard Javadoc format.
|
||||||
|
/**
|
||||||
|
* This is a doc comment using Javadoc-style indentation.
|
||||||
|
*/
|
||||||
|
Set this option to enable the indentation standard as recommended for Scaladoc
|
||||||
|
comments.
|
||||||
|
/** This is a Scaladoc comment using
|
||||||
|
* the recommended indentation.
|
||||||
|
*/
|
||||||
|
>
|
||||||
|
let g:scala_scaladoc_indent = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMMANDS *scala-commands*
|
||||||
|
|
||||||
|
*:SortScalaImports*
|
||||||
|
:SortScalaImports There are two modes in which this command can operate.
|
||||||
|
By default it walks all import groups at the top of
|
||||||
|
the Scala file and orders their lines alphabetically.
|
||||||
|
A group is a series of lines starting with the
|
||||||
|
import keyword separated by one or more blank lines.
|
||||||
|
|
||||||
|
The second, more advanced mode, can be activated by
|
||||||
|
setting
|
||||||
|
|
||||||
|
let g:scala_sort_across_groups=1
|
||||||
|
|
||||||
|
This makes this command include all imports in the
|
||||||
|
sorting regardless of blank lines in between them and
|
||||||
|
puts them in three predefined groups instead.
|
||||||
|
The three groups in which the imports can fall are:
|
||||||
|
|
||||||
|
1. Scala and Java core
|
||||||
|
2. Third party libraries
|
||||||
|
3. First party code (ie. your own)
|
||||||
|
|
||||||
|
Java and Scala core imports are identified by the
|
||||||
|
java(x) and scala namespaces.
|
||||||
|
Everything else that isn't a first party namespace
|
||||||
|
will be a third party import.
|
||||||
|
You can define a regex that matches first party
|
||||||
|
namespaces by setting
|
||||||
|
|
||||||
|
g:scala_first_party_namespaces
|
||||||
|
|
||||||
|
For example in a standard Play app this would be
|
||||||
|
set to
|
||||||
|
g:scala_first_party_namespaces=
|
||||||
|
\ '\(controllers\|views\|models\)'
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
MAPPINGS *scala-mappings*
|
||||||
|
|
||||||
|
Currently the only mappings defined are for FuzzyFinder users--these will
|
||||||
|
only be enabled if FuzzyFinder is detected.
|
||||||
|
|
||||||
|
*scala-leader-fs*
|
||||||
|
<Leader>fs "Find src". Primes |:FufFile| with `src/main/scala`,
|
||||||
|
and goes deeper still if only a single directory
|
||||||
|
exists below that. Helpful for package namespacing
|
||||||
|
like `src/main/scala/com/myorg`.
|
||||||
|
|
||||||
|
*scala-leader-ft*
|
||||||
|
<Leader>ft "Find test". Like |scala-leader-fs|, but with
|
||||||
|
`src/test/scala`.
|
||||||
|
|
||||||
|
*scala-leader-fr*
|
||||||
|
<Leader>fr "Find from root". For the rarer cases when you want to
|
||||||
|
start FuzzyFinder at project root (parent of `src/`).
|
||||||
|
|
||||||
|
Disabling Mappings~
|
||||||
|
|
||||||
|
If you wish to disable the default key mappings, write the following line in
|
||||||
|
your ~/.vimrc: >
|
||||||
|
|
||||||
|
let g:scala_use_default_keymappings = 0
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CREDITS *scala-credits*
|
||||||
|
|
||||||
|
Developed by Derek Wyatt, building on initial work by Stefan Matthias Aust.
|
||||||
|
Distributed under the Apache 2 license.
|
||||||
|
|
||||||
|
Project's home and Git repository: https://github.com/derekwyatt/vim-scala
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
18
doc/terraform.txt
Normal file
18
doc/terraform.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1
|
||||||
|
|
||||||
|
*terraform.txt* basic vim/terraform integration
|
||||||
|
|
||||||
|
Author: HashiVim <https://github.com/hashivim>
|
||||||
|
License: ISC license
|
||||||
|
Repo: https://github.com/hashivim/vim-terraform
|
||||||
|
|
||||||
|
COMMANDS *terraform*
|
||||||
|
|
||||||
|
This command is only available if terraform is in your PATH.
|
||||||
|
|
||||||
|
*terraform-:terraform*
|
||||||
|
:Terraform [args] Invoke an arbitrary terraform command.
|
||||||
|
|
||||||
|
vim:tw=78:et:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
70
doc/textile.txt
Normal file
70
doc/textile.txt
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'textile') == -1
|
||||||
|
|
||||||
|
*textile.txt* Textile for Vim Last Change: November 3, 2008
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
REQUIREMENTS *textile-requirements*
|
||||||
|
|
||||||
|
- ruby - http://ruby-lang.org/ (seperate executable, not compiled in)
|
||||||
|
- RedCloth - http://redcloth.org/
|
||||||
|
|
||||||
|
Files with the extension *.textile will auto-detected. If editing a new file,
|
||||||
|
or otherwise, run ":setf textile" to enable textile commands.
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CHANGELOG *textile-changelog*
|
||||||
|
|
||||||
|
0.3 - Fixed keymappings in the documentation
|
||||||
|
0.2 - Added multiple colors for headers, and alternating colors for list
|
||||||
|
items
|
||||||
|
- Fixed error in the vim script for TextileRenderBufferToFile
|
||||||
|
- Changed shortcut keys from \tp to \rp (render preview instead of
|
||||||
|
textile preview, since it's file-type specific anyways)
|
||||||
|
0.1 - Initial Release
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMMANDS *textile-commands*
|
||||||
|
|
||||||
|
:TextilePreview - Render the current buffer to a temp file, and open it in
|
||||||
|
your web browser (OSX only)
|
||||||
|
|
||||||
|
<Leader>rp
|
||||||
|
|
||||||
|
:TextileRenderTab - ... to a new tab
|
||||||
|
|
||||||
|
<Leader>rt
|
||||||
|
|
||||||
|
:TextileRenderFile - ... to a file
|
||||||
|
|
||||||
|
<Leader>rf
|
||||||
|
|
||||||
|
<Leader> is \ by default, so <Leader>rp == \rp
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONFIG *textile-config*
|
||||||
|
|
||||||
|
MAC OS X:
|
||||||
|
|
||||||
|
Optional:
|
||||||
|
let g:TextileBrowser="Google Chrome" - Open preview in "Google Chrome"
|
||||||
|
rather than Safari (optional)
|
||||||
|
|
||||||
|
Other:
|
||||||
|
|
||||||
|
Mandatory:
|
||||||
|
let g:TextileOS="Linux"
|
||||||
|
let g:TextileBrowser="/path/to/browser_bin"
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CREDITS *textile-credits*
|
||||||
|
|
||||||
|
- "Dominic Mitchell":http://happygiraffe.net/: initial syntax highlighting
|
||||||
|
- "Aaron Bieber":http://blog.aaronbieber.com/: improved syntax highlighting
|
||||||
|
- "Tim Harper":http://tim.theenchanter.com/ : improved syntax highlighting,
|
||||||
|
plugin
|
||||||
|
|
||||||
|
vim:tw=78:noet:wrap:ts=2:expandtab:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
210
doc/vim-fsharp.txt
Normal file
210
doc/vim-fsharp.txt
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1
|
||||||
|
|
||||||
|
*vim-fsharp.txt* F# support for Vim
|
||||||
|
*FSharp* *F#* *fsharp* *vim-fsharp*
|
||||||
|
===============================================================================
|
||||||
|
# #
|
||||||
|
# ███████╗███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ #
|
||||||
|
# ██╔════╝██╔════╝██║ ██║██╔══██╗██╔══██╗██╔══██╗ #
|
||||||
|
# █████╗ ███████╗███████║███████║██████╔╝██████╔╝ #
|
||||||
|
# ██╔══╝ ╚════██║██╔══██║██╔══██║██╔══██╗██╔═══╝ #
|
||||||
|
# ██║ ███████║██║ ██║██║ ██║██║ ██║██║ #
|
||||||
|
# ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ #
|
||||||
|
# #
|
||||||
|
===============================================================================
|
||||||
|
CONTENTS *fsharp-contents*
|
||||||
|
|
||||||
|
1. Dependencies.................................|fsharp-dependencies|
|
||||||
|
2. Usage........................................|fsharp-usage|
|
||||||
|
3. Options......................................|fsharp-options|
|
||||||
|
4. Commands.....................................|fsharp-commands|
|
||||||
|
5. Mappings.....................................|fsharp-mappings|
|
||||||
|
6. Credits......................................|fsharp-credits|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
DEPENDENCIES *fsharp-dependencies*
|
||||||
|
|
||||||
|
Required:~
|
||||||
|
- Vim 7.3 or higher with Python 2 or 3 support
|
||||||
|
- Mono OR .NET Framework
|
||||||
|
- F#
|
||||||
|
|
||||||
|
Optional:~
|
||||||
|
- Syntastic plugin (for syntax and type checking)
|
||||||
|
NOTE: Must be enabled (see |'g:syntastic_fsharp_checkers'|)
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
USAGE *fsharp-usage*
|
||||||
|
|
||||||
|
Syntax highlighting and linting will trigger upon opening a `*.fs`, `*.fsi`,
|
||||||
|
or `*.fsx` file. Using omni completion will begin the fsautocomplete process.
|
||||||
|
|
||||||
|
Suggestion: Install a completer such as NeoComplete or SuperTab
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
OPTIONS *fsharp-options*
|
||||||
|
|
||||||
|
*'g:syntastic_fsharp_checkers'*
|
||||||
|
Use this option to enable syntastic integration >
|
||||||
|
let g:syntastic_fsharp_checkers=['syntax']
|
||||||
|
<
|
||||||
|
*'g:fsharp_only_check_errors_on_write'*
|
||||||
|
Use this option to disable "on the fly" syntax checking >
|
||||||
|
let g:fsharp_only_check_errors_on_write = 1
|
||||||
|
<
|
||||||
|
*'g:fsharpbinding_debug'*
|
||||||
|
Use this option to enable debug-mode and inspect fsautocomplete behavior: >
|
||||||
|
let g:fsharpbinding_debug = 1
|
||||||
|
<
|
||||||
|
This will create two log files `log.txt` and `log2.txt` in your temporary folder
|
||||||
|
(i.e. `/tmp/`)
|
||||||
|
|
||||||
|
*'g:fsharp_xbuild_path'*
|
||||||
|
Use this option set the msbuild/xbuild path >
|
||||||
|
let g:fsharp_xbuild_path = "/path/to/xbuild/or/msbuild"
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:fsharp_test_runner'*
|
||||||
|
Use this option to point to a suitable test runner (such as nunit-console.exe) >
|
||||||
|
let g:fsharp_test_runner = "/path/to/test/runner"
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:fsharp_completion_helptext'*
|
||||||
|
Use this option to disable helptext during auto completion. Turn off if
|
||||||
|
completion is too slow >
|
||||||
|
let g:fsharp_completion_helptext = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:fsharp_map_keys'*
|
||||||
|
Use this option to disable default bindings >
|
||||||
|
let g:fsharp_map_keys = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
*'g:fsharp_map_prefix'*
|
||||||
|
Use this option to override the default prefix of `<leader>` >
|
||||||
|
let g:fsharp_map_prefix = 'cp'
|
||||||
|
<
|
||||||
|
Set to `cp` in this example
|
||||||
|
|
||||||
|
*'g:fsharp_map_fsisendline'*
|
||||||
|
Use this option to override the default mapping to send the current line to
|
||||||
|
fsharp interactive >
|
||||||
|
let g:fsharp_map_fsisendline = 'p'
|
||||||
|
<
|
||||||
|
Set to `p` in this example
|
||||||
|
|
||||||
|
*'g:fsharp_map_fsisendsel'*
|
||||||
|
Use this option to override the default mapping to send the current selection
|
||||||
|
to fsharp interactive >
|
||||||
|
let g:fsharp_map_fsisendsel = 'p'
|
||||||
|
<
|
||||||
|
Set to `p` in this example
|
||||||
|
|
||||||
|
*'g:fsharp_map_gotodecl'*
|
||||||
|
Use this option to override the default mapping to go to declaration in the
|
||||||
|
current window >
|
||||||
|
let g:fsharp_map_gotodecl = 'g'
|
||||||
|
<
|
||||||
|
Set to `g` in this example
|
||||||
|
|
||||||
|
*'g:fsharp_map_gobackfromdecl'*
|
||||||
|
Use this option to override the default mapping to go back to where go to
|
||||||
|
declaration was triggered >
|
||||||
|
let g:fsharp_map_gobackfromdecl = 'b'
|
||||||
|
<
|
||||||
|
Set to `b` in this example
|
||||||
|
|
||||||
|
*'g:fsharp_map_fsiinput'*
|
||||||
|
Override the default mapping to evaluate an fsharp expression in the fsi >
|
||||||
|
let g:fsharp_map_fsiinput = 'i'
|
||||||
|
<
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
COMMANDS *fsharp-commands*
|
||||||
|
|
||||||
|
General commands:~
|
||||||
|
*:make*
|
||||||
|
:make
|
||||||
|
Calls xbuild on the fsproj for the current file (if any).
|
||||||
|
|
||||||
|
*:FSharpParseProject*
|
||||||
|
:FSharpParseProject
|
||||||
|
Reparses all the project files and dependencies (this is done automatically
|
||||||
|
when opening a .fs or .fsi file).
|
||||||
|
|
||||||
|
*:FSharpBuildProject*
|
||||||
|
:FSharpBuildProject
|
||||||
|
Calls xbuild on the fsproj for the current file (if any). Can also take a
|
||||||
|
path to the proj file to build.
|
||||||
|
|
||||||
|
*:FSharpRunProject*
|
||||||
|
:FSharpRunProject
|
||||||
|
Runs the project for the current file (if any).
|
||||||
|
|
||||||
|
*:FSharpRunTests*
|
||||||
|
:FSharpRunTests
|
||||||
|
If `g:fsharp_test_runner` is set it will build the current project and run
|
||||||
|
any tests. (Currently only tested with nunit-console.exe)
|
||||||
|
|
||||||
|
*:FSharpToggleHelptext*
|
||||||
|
:FSharpToggleHelptext
|
||||||
|
toggles g:fsharp_completion_helptext. (See below for details)
|
||||||
|
|
||||||
|
FSharp interaction commands:~
|
||||||
|
|
||||||
|
`:FsiEval`
|
||||||
|
:FsiEval
|
||||||
|
Evaluates an fsharp expression in the fsi
|
||||||
|
|
||||||
|
`:FsiEvalBuffer`
|
||||||
|
:FsiEvalBuffer
|
||||||
|
Evaluates the entire buffer in the fsi
|
||||||
|
|
||||||
|
`:FsiReset`
|
||||||
|
:FsiReset
|
||||||
|
Resets the current fsharp interactive
|
||||||
|
|
||||||
|
`:FsiRead`
|
||||||
|
:FsiRead
|
||||||
|
Outputs any lines written by the fsi but not yet output as vim messages
|
||||||
|
|
||||||
|
`:FsiClear`
|
||||||
|
:FsiClear
|
||||||
|
Deletes all text from the fsi output buffer but doesn't reset the fsi
|
||||||
|
session.
|
||||||
|
|
||||||
|
`:FsiShow`
|
||||||
|
:FsiShow
|
||||||
|
Opens the _fsi-out_ buffer in a split window
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
MAPPINGS *fsharp-mappings*
|
||||||
|
|
||||||
|
General:~
|
||||||
|
|
||||||
|
<leader>t
|
||||||
|
Echoes the type of the expression currently pointed to by the cursor
|
||||||
|
<leader>d
|
||||||
|
Go to declaration in current window
|
||||||
|
<leader>s
|
||||||
|
Takes you back from where go to declaration was triggered. Experimental
|
||||||
|
|
||||||
|
FSharp Interactive:~
|
||||||
|
<A-CR> OR
|
||||||
|
<leader>i
|
||||||
|
Send either the current selection or the current line to the fsharp
|
||||||
|
interactive and echoes the output the first line of the output. All
|
||||||
|
output will be written to the fsi-out buffer.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
CREDITS *fsharp-credits*
|
||||||
|
|
||||||
|
Syntax and indent files by kongo2002 <github.com/kongo2002>:
|
||||||
|
http://github.com/kongo2002/fsharp-vim
|
||||||
|
|
||||||
|
Adapted from Tim Robinson <github.com/timrobinson>:
|
||||||
|
http://github.com/timrobinson/fsharp-vim
|
||||||
|
>
|
||||||
|
===============================================================================
|
||||||
|
|
||||||
|
endif
|
||||||
2734
doc/vim-go.txt
Normal file
2734
doc/vim-go.txt
Normal file
File diff suppressed because it is too large
Load Diff
104
doc/vim-jsonnet.txt
Normal file
104
doc/vim-jsonnet.txt
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsonnet') == -1
|
||||||
|
|
||||||
|
*vim-jsonnet.txt* Jsonnet development plugin
|
||||||
|
*vim-jsonnet*
|
||||||
|
|
||||||
|
====================================================================================
|
||||||
|
# # ### # # # ##### ####### # # # # ####### #######
|
||||||
|
# # # ## ## # # # # # ## # ## # # #
|
||||||
|
# # # # # # # # # # # # # # # # # # #
|
||||||
|
# # # # # # ##### # ##### # # # # # # # # ##### #
|
||||||
|
# # # # # # # # # # # # # # # # # #
|
||||||
|
# # # # # # # # # # # # ## # ## # #
|
||||||
|
# ### # # ##### ##### ####### # # # # ####### #
|
||||||
|
====================================================================================
|
||||||
|
CONTENTS *jsonnet-contents*
|
||||||
|
|
||||||
|
1. Intro........................................|jsonnet-intro|
|
||||||
|
2. Install......................................|jsonnet-install|
|
||||||
|
3. Commands.....................................|jsonnet-commands|
|
||||||
|
4. Mappings.....................................|jsonnet-mappings|
|
||||||
|
6. Functions....................................|jsonnet-functions|
|
||||||
|
7. Settings.....................................|jsonnet-settings|
|
||||||
|
8. Troubleshooting..............................|jsonnet-troubleshooting|
|
||||||
|
9. Credits......................................|jsonnet-credits|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRO *jsonnet-intro*
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INSTALL *jsonnet-install*
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMMANDS *jsonnet-commands*
|
||||||
|
|
||||||
|
*:JsonnetFmt*
|
||||||
|
:JsonnetFmt
|
||||||
|
|
||||||
|
Filter the current Jsonnet buffer through `jsonnetfmt`. It tries to
|
||||||
|
preserve cursor position and avoids replacing the buffer with stderr
|
||||||
|
output.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
MAPPINGS *jsonnet-mappings*
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
FUNCTIONS *jsonnet-functions*
|
||||||
|
|
||||||
|
*jsonnet#Format()*
|
||||||
|
|
||||||
|
Filter the current Jsonnet buffer through `jsonnetfmt`. It tries to
|
||||||
|
preserve cursor position and avoids replacing the buffer with stderr
|
||||||
|
output.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *jsonnet-settings*
|
||||||
|
|
||||||
|
*'g:jsonnet_fmt_on_save'*
|
||||||
|
|
||||||
|
Use this option to auto |:JsonnetFmt| on save. By default it's enabled >
|
||||||
|
|
||||||
|
let g:jsonnet_fmt_on_save = 1
|
||||||
|
<
|
||||||
|
*'g:jsonnet_command'*
|
||||||
|
|
||||||
|
Use this option to define which tool is used to fotmat. By default `jsonnet` is
|
||||||
|
used >
|
||||||
|
|
||||||
|
let g:jsonnet_command = "jsonnet"
|
||||||
|
<
|
||||||
|
*'g:jsonnet_fmt_command'*
|
||||||
|
|
||||||
|
Use this option to define which <cmd> parameter is used with *g:jsonnet_command* tool.
|
||||||
|
By default `fmt` is used >
|
||||||
|
|
||||||
|
let g:jsonnet_fmt_command = "fmt"
|
||||||
|
<
|
||||||
|
*'g:jsonnet_fmt_options'*
|
||||||
|
|
||||||
|
Use this option to add additional options to the
|
||||||
|
|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'|. Default is empty. >
|
||||||
|
|
||||||
|
let g:jsonnet_fmt_options = ''
|
||||||
|
<
|
||||||
|
*'g:jsonnet_fmt_fail_silently'*
|
||||||
|
|
||||||
|
Use this option to enable processing of
|
||||||
|
|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'| command if it fails. By default
|
||||||
|
it is turned off. By default the error output from the
|
||||||
|
|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'| command is ignored.
|
||||||
|
FixMe: The processing of the |'g:jsonnet_command'| + |'g:jsonnet_fmt_command'|
|
||||||
|
is not implemented yet. So clearing this option would not do anything at this time. >
|
||||||
|
|
||||||
|
let g:jsonnet_fmt_fail_silently = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
TROUBLESHOOTING *jsonnet-troubleshooting*
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CREDITS *jsonnet-credits*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
128
doc/vim-jsx-pretty-doc.txt
Normal file
128
doc/vim-jsx-pretty-doc.txt
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
|
||||||
|
|
||||||
|
vim-jsx-pretty is syntax highlight for JSX (React.js).
|
||||||
|
(https://github.com/MaxMEllon/vim-jsx-pretty)
|
||||||
|
|
||||||
|
version 1.0.6
|
||||||
|
Author: maxmellon<maxmellon1994@gmail.com>
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
About |vim-jsx-pretty-about|
|
||||||
|
Usage |vim-jsx-pretty-usage|
|
||||||
|
Install |vim-jsx-pretty-install|
|
||||||
|
Config |vim-jsx-pretty-config|
|
||||||
|
Detail |vim-jsx-pretty-detail|
|
||||||
|
License |vim-jsx-pretty-license|
|
||||||
|
Thanks |vim-jsx-retty-thanks|
|
||||||
|
Inspiration |vim-jsx-pretty-inspiration|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
ABOUT *vim-jsx-pretty-about*
|
||||||
|
|
||||||
|
*vim-jsx-pretty* is highlight and indentation JSX (React.js) syntax.
|
||||||
|
|
||||||
|
Dependency Plugin:
|
||||||
|
- pangloss/vim-javascript
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
USAGE *vim-jsx-pretty-usage*
|
||||||
|
|
||||||
|
Just Install it.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
INSTALL *vim-jsx-pretty-install*
|
||||||
|
|
||||||
|
If you used plugin manager `vim-plug`, As follows. >
|
||||||
|
|
||||||
|
Plug 'pangloss/vim-javascript' " dependency plugin
|
||||||
|
Plug 'maxmellon/vim-jsx-pretty'
|
||||||
|
<
|
||||||
|
===============================================================================
|
||||||
|
CONFIG *vim-jsx-pretty-config*
|
||||||
|
|
||||||
|
- config list
|
||||||
|
>
|
||||||
|
| name | default | detail |
|
||||||
|
|---------------------------------------|---------|----------------------|
|
||||||
|
| g:vim_jsx_pretty_enable_jsx_highlight | 1 | jsx highlight flag |
|
||||||
|
| g:vim_jsx_pretty_colorful_config | 0 | colorful config flag |
|
||||||
|
<
|
||||||
|
|
||||||
|
- *g:vim_jsx_pretty_enable_jsx_highlight*
|
||||||
|
|
||||||
|
If you set 'g:vim_jsx_pretty_enable_jsx_highlight', Disable jsx highlight.
|
||||||
|
But highlight group is set to jsx syntax. So you should set manual
|
||||||
|
highlight setting.
|
||||||
|
|
||||||
|
- Example: >
|
||||||
|
|
||||||
|
let g:vim_jsx_pretty_enable_jsx_highlight = 0
|
||||||
|
|
||||||
|
highlight def link jsxTag Function
|
||||||
|
highlight def link jsxTagName Function
|
||||||
|
highlight def link jsxString String
|
||||||
|
highlight def link jsxNameSpace Function
|
||||||
|
highlight def link jsxComment Error
|
||||||
|
highlight def link jsxAttrib Type
|
||||||
|
highlight def link jsxCloseTag Identifier
|
||||||
|
highlight def link jsxCloseString Identifier
|
||||||
|
|
||||||
|
- *g:vim_jsx_pretty_colorful_config*
|
||||||
|
|
||||||
|
If you set 'g:vim_jsx_pretty_colorful_config', Enable colorful config.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
DETAIL *vim-jsx-pretty-detail*
|
||||||
|
|
||||||
|
- Syntax group list
|
||||||
|
>
|
||||||
|
| name | match | | |
|
||||||
|
|--------------|--------------------|--------------|--------------------|
|
||||||
|
| jsxTag | `<tag id="sample">`| jsxjsxAttrib | `<tag id="sample">`|
|
||||||
|
| | `~~~~~~~~~~~~~~~~~`| | `_____~~__________`|
|
||||||
|
|--------------|--------------------|--------------|--------------------|
|
||||||
|
| jsxTagName | `<tag id="sample">`| jsxEqual | `<tag id="sample">`|
|
||||||
|
| | `_~~~_____________`| | `_______~_________`|
|
||||||
|
|--------------|--------------------|--------------|--------------------|
|
||||||
|
| jsxString | `<tag id="sample">`| jsxCloseTag | `</tag> | <tag />`|
|
||||||
|
| | `________~~~~~~~~_`| | `~~~~~~ | _____~~|
|
||||||
|
|--------------|--------------------|--------------|--------------------|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
LICENSE *vim-jsx-pretty-license*
|
||||||
|
|
||||||
|
Copyright (c) 2016-2017 MaxMEllon
|
||||||
|
MIT License
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
THANKS *vim-jsx-pretty-thanks*
|
||||||
|
|
||||||
|
- yuezk
|
||||||
|
- y0za
|
||||||
|
- cormacrelf
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
INSPIREATION *vim-jsx-pretty-inspiration*
|
||||||
|
|
||||||
|
- vim-jsx
|
||||||
|
See: https://github.com/mxw/vim-jsx
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
667
doc/vim-markdown.txt
Normal file
667
doc/vim-markdown.txt
Normal file
@@ -0,0 +1,667 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
|
||||||
|
|
||||||
|
*vim-markdown* Vim Markdown
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
Contents ~
|
||||||
|
|
||||||
|
1. Introduction |vim-markdown-introduction|
|
||||||
|
2. Installation |vim-markdown-installation|
|
||||||
|
3. Basic usage |vim-markdown-basic-usage|
|
||||||
|
1. Folding |vim-markdown-folding|
|
||||||
|
2. Concealing |vim-markdown-concealing|
|
||||||
|
4. Options |vim-markdown-options|
|
||||||
|
1. Disable Folding |vim-markdown-disable-folding|
|
||||||
|
2. Change fold style |vim-markdown-change-fold-style|
|
||||||
|
3. Set header folding level |vim-markdown-set-header-folding-level|
|
||||||
|
4. Disable Default Key Mappings |vim-markdown-disable-default-key-mappings|
|
||||||
|
5. Enable TOC window auto-fit |vim-markdown-enable-toc-window-auto-fit|
|
||||||
|
6. Text emphasis restriction to single-lines
|
||||||
|
|vim-markdown-text-emphasis-restriction-to-single-lines|
|
||||||
|
7. Syntax Concealing |vim-markdown-syntax-concealing|
|
||||||
|
8. Fenced code block languages |vim-markdown-fenced-code-block-languages|
|
||||||
|
9. Follow named anchors |vim-markdown-follow-named-anchors|
|
||||||
|
10. Syntax extensions |vim-markdown-syntax-extensions|
|
||||||
|
1. LaTeX math |vim-markdown-latex-math|
|
||||||
|
2. YAML Front Matter |vim-markdown-yaml-front-matter|
|
||||||
|
3. TOML Front Matter |vim-markdown-toml-front-matter|
|
||||||
|
4. JSON Front Matter |vim-markdown-json-front-matter|
|
||||||
|
5. Strikethrough |vim-markdown-strikethrough|
|
||||||
|
11. Adjust new list item indent |vim-markdown-adjust-new-list-item-indent|
|
||||||
|
12. Do not require .md extensions for Markdown links
|
||||||
|
|vim-markdown-do-not-require-.md-extensions-for-markdown-links|
|
||||||
|
13. Auto-write when following link
|
||||||
|
|vim-markdown-auto-write-when-following-link|
|
||||||
|
14. Change default file extension
|
||||||
|
|vim-markdown-change-default-file-extension|
|
||||||
|
15. Do not automatically insert bulletpoints
|
||||||
|
|vim-markdown-do-not-automatically-insert-bulletpoints|
|
||||||
|
16. Change how to open new files |vim-markdown-change-how-to-open-new-files|
|
||||||
|
5. Mappings |vim-markdown-mappings|
|
||||||
|
6. Commands |vim-markdown-commands|
|
||||||
|
7. Credits |vim-markdown-credits|
|
||||||
|
8. License |vim-markdown-license|
|
||||||
|
9. References |vim-markdown-references|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-introduction*
|
||||||
|
Introduction ~
|
||||||
|
|
||||||
|
Syntax highlighting, matching rules and mappings for the original Markdown [1]
|
||||||
|
and extensions.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-installation*
|
||||||
|
Installation ~
|
||||||
|
|
||||||
|
If you use Vundle [2], add the following lines to your '~/.vimrc':
|
||||||
|
>
|
||||||
|
Plugin 'godlygeek/tabular'
|
||||||
|
Plugin 'plasticboy/vim-markdown'
|
||||||
|
<
|
||||||
|
The 'tabular' plugin must come _before_ 'vim-markdown'.
|
||||||
|
|
||||||
|
Then run inside Vim:
|
||||||
|
>
|
||||||
|
:so ~/.vimrc
|
||||||
|
:PluginInstall
|
||||||
|
<
|
||||||
|
If you use Pathogen [3], do this:
|
||||||
|
>
|
||||||
|
cd ~/.vim/bundle
|
||||||
|
git clone https://github.com/plasticboy/vim-markdown.git
|
||||||
|
<
|
||||||
|
To install without Pathogen using the Debian vim-addon-manager [4], do this:
|
||||||
|
>
|
||||||
|
git clone https://github.com/plasticboy/vim-markdown.git
|
||||||
|
cd vim-markdown
|
||||||
|
sudo make install
|
||||||
|
vim-addon-manager install markdown
|
||||||
|
<
|
||||||
|
If you are not using any package manager, download the tarball [5] and do this:
|
||||||
|
>
|
||||||
|
cd ~/.vim
|
||||||
|
tar --strip=1 -zxf vim-markdown-master.tar.gz
|
||||||
|
<
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-basic-usage*
|
||||||
|
Basic usage ~
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-folding*
|
||||||
|
Folding ~
|
||||||
|
|
||||||
|
Folding is enabled for headers by default.
|
||||||
|
|
||||||
|
The following commands are useful to open and close folds:
|
||||||
|
|
||||||
|
*vim-markdown-zr*
|
||||||
|
- 'zr': reduces fold level throughout the buffer
|
||||||
|
*vim-markdown-zR*
|
||||||
|
- 'zR': opens all folds
|
||||||
|
*vim-markdown-zm*
|
||||||
|
- 'zm': increases fold level throughout the buffer
|
||||||
|
*vim-markdown-zM*
|
||||||
|
- 'zM': folds everything all the way
|
||||||
|
*vim-markdown-za*
|
||||||
|
- 'za': open a fold your cursor is on
|
||||||
|
*vim-markdown-zA*
|
||||||
|
- 'zA': open a fold your cursor is on recursively
|
||||||
|
*vim-markdown-zc*
|
||||||
|
- 'zc': close a fold your cursor is on
|
||||||
|
*vim-markdown-zC*
|
||||||
|
- 'zC': close a fold your cursor is on recursively
|
||||||
|
|
||||||
|
Options are available to disable folding or change folding style.
|
||||||
|
|
||||||
|
Try ':help fold-expr' and ':help fold-commands' for details.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-concealing*
|
||||||
|
Concealing ~
|
||||||
|
|
||||||
|
Concealing is set for some syntax such as bold, italic, code block and link.
|
||||||
|
|
||||||
|
Concealing lets you conceal text with other text. The actual source text is not
|
||||||
|
modified. If you put your cursor on the concealed line, the conceal goes away.
|
||||||
|
|
||||||
|
Options are available to disable or change concealing.
|
||||||
|
|
||||||
|
Try ':help concealcursor' and ':help conceallevel' for details.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-options*
|
||||||
|
Options ~
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-disable-folding*
|
||||||
|
Disable Folding ~
|
||||||
|
|
||||||
|
*g:vim_markdown_folding_disabled*
|
||||||
|
- 'g:vim_markdown_folding_disabled'
|
||||||
|
|
||||||
|
Add the following line to your '.vimrc' to disable the folding
|
||||||
|
configuration:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_folding_disabled = 1
|
||||||
|
<
|
||||||
|
This option only controls Vim Markdown specific folding configuration.
|
||||||
|
|
||||||
|
To enable/disable folding use Vim's standard folding configuration.
|
||||||
|
>
|
||||||
|
set [no]foldenable
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-change-fold-style*
|
||||||
|
Change fold style ~
|
||||||
|
|
||||||
|
*g:vim_markdown_folding_style_pythonic*
|
||||||
|
- 'g:vim_markdown_folding_style_pythonic'
|
||||||
|
|
||||||
|
To fold in a style like python-mode [6], add the following to your
|
||||||
|
'.vimrc':
|
||||||
|
>
|
||||||
|
let g:vim_markdown_folding_style_pythonic = 1
|
||||||
|
<
|
||||||
|
'g:vim_markdown_folding_level' setting (default 1) is set to 'foldlevel'.
|
||||||
|
Thus level 1 heading which is served as a document title is expanded by
|
||||||
|
default.
|
||||||
|
|
||||||
|
*g:vim_markdown_override_foldtext*
|
||||||
|
- 'g:vim_markdown_override_foldtext'
|
||||||
|
|
||||||
|
To prevent foldtext from being set add the following to your '.vimrc':
|
||||||
|
>
|
||||||
|
let g:vim_markdown_override_foldtext = 0
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-set-header-folding-level*
|
||||||
|
Set header folding level ~
|
||||||
|
|
||||||
|
*g:vim_markdown_folding_level*
|
||||||
|
- 'g:vim_markdown_folding_level'
|
||||||
|
|
||||||
|
Folding level is a number between 1 and 6. By default, if not specified, it
|
||||||
|
is set to 1.
|
||||||
|
>
|
||||||
|
let g:vim_markdown_folding_level = 6
|
||||||
|
<
|
||||||
|
Tip: it can be changed on the fly with:
|
||||||
|
>
|
||||||
|
:let g:vim_markdown_folding_level = 1
|
||||||
|
:edit
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-disable-default-key-mappings*
|
||||||
|
Disable Default Key Mappings ~
|
||||||
|
|
||||||
|
*g:vim_markdown_no_default_key_mappings*
|
||||||
|
- 'g:vim_markdown_no_default_key_mappings'
|
||||||
|
|
||||||
|
Add the following line to your '.vimrc' to disable default key mappings:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_no_default_key_mappings = 1
|
||||||
|
<
|
||||||
|
You can also map them by yourself with '<Plug>' mappings.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-enable-toc-window-auto-fit*
|
||||||
|
Enable TOC window auto-fit ~
|
||||||
|
|
||||||
|
*g:vim_markdown_toc_autofit*
|
||||||
|
- 'g:vim_markdown_toc_autofit'
|
||||||
|
|
||||||
|
Allow for the TOC window to auto-fit when it's possible for it to shrink.
|
||||||
|
It never increases its default size (half screen), it only shrinks.
|
||||||
|
>
|
||||||
|
let g:vim_markdown_toc_autofit = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-text-emphasis-restriction-to-single-lines*
|
||||||
|
Text emphasis restriction to single-lines ~
|
||||||
|
|
||||||
|
*g:vim_markdown_emphasis_multiline*
|
||||||
|
- 'g:vim_markdown_emphasis_multiline'
|
||||||
|
|
||||||
|
By default text emphasis works across multiple lines until a closing token
|
||||||
|
is found. However, it's possible to restrict text emphasis to a single line
|
||||||
|
(i.e., for it to be applied a closing token must be found on the same
|
||||||
|
line). To do so:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_emphasis_multiline = 0
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-syntax-concealing*
|
||||||
|
Syntax Concealing ~
|
||||||
|
|
||||||
|
*g:vim_markdown_conceal*
|
||||||
|
- 'g:vim_markdown_conceal'
|
||||||
|
|
||||||
|
Concealing is set for some syntax.
|
||||||
|
|
||||||
|
For example, conceal '[link text](link url)' as just 'link text'. Also,
|
||||||
|
'_italic_' and '*italic*' will conceal to just _italic_. Similarly
|
||||||
|
'__bold__', '**bold**', '___italic bold___', and '***italic bold***' will
|
||||||
|
conceal to just **bold**, **bold**, **_italic bold_**, and **_italic
|
||||||
|
bold_** respectively.
|
||||||
|
|
||||||
|
To enable conceal use Vim's standard conceal configuration.
|
||||||
|
>
|
||||||
|
set conceallevel=2
|
||||||
|
<
|
||||||
|
To disable conceal regardless of 'conceallevel' setting, add the following
|
||||||
|
to your '.vimrc':
|
||||||
|
>
|
||||||
|
let g:vim_markdown_conceal = 0
|
||||||
|
<
|
||||||
|
To disable math conceal with LaTeX math syntax enabled, add the following
|
||||||
|
to your '.vimrc':
|
||||||
|
>
|
||||||
|
let g:tex_conceal = ""
|
||||||
|
let g:vim_markdown_math = 1
|
||||||
|
<
|
||||||
|
*g:vim_markdown_conceal_code_blocks*
|
||||||
|
- 'g:vim_markdown_conceal_code_blocks'
|
||||||
|
|
||||||
|
Disabling conceal for code fences requires an additional setting:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_conceal_code_blocks = 0
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-fenced-code-block-languages*
|
||||||
|
Fenced code block languages ~
|
||||||
|
|
||||||
|
*g:vim_markdown_fenced_languages*
|
||||||
|
- 'g:vim_markdown_fenced_languages'
|
||||||
|
|
||||||
|
You can use filetype name as fenced code block languages for syntax
|
||||||
|
highlighting. If you want to use different name from filetype, you can add
|
||||||
|
it in your '.vimrc' like so:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_fenced_languages = ['csharp=cs']
|
||||||
|
<
|
||||||
|
This will cause the following to be highlighted using the 'cs' filetype
|
||||||
|
syntax.
|
||||||
|
>
|
||||||
|
```csharp
|
||||||
|
...
|
||||||
|
```
|
||||||
|
<
|
||||||
|
Default is "['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']".
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-follow-named-anchors*
|
||||||
|
Follow named anchors ~
|
||||||
|
|
||||||
|
*g:vim_markdown_follow_anchor*
|
||||||
|
- 'g:vim_markdown_follow_anchor'
|
||||||
|
|
||||||
|
This feature allows the 'ge' command to follow named anchors in links of
|
||||||
|
the form 'file#anchor' or just '#anchor', where file may omit the '.md'
|
||||||
|
extension as usual. Two variables control its operation:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_follow_anchor = 1
|
||||||
|
<
|
||||||
|
This tells vim-markdown whether to attempt to follow a named anchor in a
|
||||||
|
link or not. When it is 1, and only if a link can be split in two parts by
|
||||||
|
the pattern '#', then the first part is interpreted as the file and the
|
||||||
|
second one as the named anchor. This also includes urls of the form
|
||||||
|
'#anchor', for which the first part is considered empty, meaning that the
|
||||||
|
target file is the current one. After the file is opened, the anchor will
|
||||||
|
be searched.
|
||||||
|
|
||||||
|
Default is '0'.
|
||||||
|
|
||||||
|
*g:vim_markdown_anchorexpr*
|
||||||
|
- 'g:vim_markdown_anchorexpr'
|
||||||
|
>
|
||||||
|
let g:vim_markdown_anchorexpr = "'<<'.v:anchor.'>>'"
|
||||||
|
<
|
||||||
|
This expression will be evaluated substituting 'v:anchor' with a quoted
|
||||||
|
string that contains the anchor to visit. The result of the evaluation will
|
||||||
|
become the real anchor to search in the target file. This is useful in
|
||||||
|
order to convert anchors of the form, say, 'my-section-title' to searches
|
||||||
|
of the form 'My Section Title' or '<<my-section-title>>'.
|
||||||
|
|
||||||
|
Default is "''".
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-syntax-extensions*
|
||||||
|
Syntax extensions ~
|
||||||
|
|
||||||
|
The following options control which syntax extensions will be turned on. They
|
||||||
|
are off by default.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-latex-math*
|
||||||
|
LaTeX math ~
|
||||||
|
|
||||||
|
*g:vim_markdown_math*
|
||||||
|
- 'g:vim_markdown_math'
|
||||||
|
|
||||||
|
Used as '$x^2$', '$$x^2$$', escapable as '\$x\$' and '\$\$x\$\$'.
|
||||||
|
>
|
||||||
|
let g:vim_markdown_math = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-yaml-front-matter*
|
||||||
|
YAML Front Matter ~
|
||||||
|
|
||||||
|
*g:vim_markdown_frontmatter*
|
||||||
|
- 'g:vim_markdown_frontmatter'
|
||||||
|
|
||||||
|
Highlight YAML front matter as used by Jekyll or Hugo [7].
|
||||||
|
>
|
||||||
|
let g:vim_markdown_frontmatter = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-toml-front-matter*
|
||||||
|
TOML Front Matter ~
|
||||||
|
|
||||||
|
*g:vim_markdown_toml_frontmatter*
|
||||||
|
- 'g:vim_markdown_toml_frontmatter'
|
||||||
|
|
||||||
|
Highlight TOML front matter as used by Hugo [7].
|
||||||
|
|
||||||
|
TOML syntax highlight requires vim-toml [8].
|
||||||
|
>
|
||||||
|
let g:vim_markdown_toml_frontmatter = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-json-front-matter*
|
||||||
|
JSON Front Matter ~
|
||||||
|
|
||||||
|
*g:vim_markdown_json_frontmatter*
|
||||||
|
- 'g:vim_markdown_json_frontmatter'
|
||||||
|
|
||||||
|
Highlight JSON front matter as used by Hugo [7].
|
||||||
|
|
||||||
|
JSON syntax highlight requires vim-json [9].
|
||||||
|
>
|
||||||
|
let g:vim_markdown_json_frontmatter = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-strikethrough*
|
||||||
|
Strikethrough ~
|
||||||
|
|
||||||
|
*g:vim_markdown_strikethrough*
|
||||||
|
- 'g:vim_markdown_strikethrough'
|
||||||
|
|
||||||
|
Strikethrough uses two tildes. '~~Scratch this.~~'
|
||||||
|
>
|
||||||
|
let g:vim_markdown_strikethrough = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-adjust-new-list-item-indent*
|
||||||
|
Adjust new list item indent ~
|
||||||
|
|
||||||
|
*g:vim_markdown_new_list_item_indent*
|
||||||
|
- 'g:vim_markdown_new_list_item_indent'
|
||||||
|
|
||||||
|
You can adjust a new list indent. For example, you insert a single line
|
||||||
|
like below:
|
||||||
|
>
|
||||||
|
* item1
|
||||||
|
<
|
||||||
|
Then if you type 'o' to insert new line in vim and type '* item2', the
|
||||||
|
result will be:
|
||||||
|
>
|
||||||
|
* item1
|
||||||
|
* item2
|
||||||
|
<
|
||||||
|
vim-markdown automatically insert the indent. By default, the number of
|
||||||
|
spaces of indent is 4. If you'd like to change the number as 2, just write:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_new_list_item_indent = 2
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-do-not-require-.md-extensions-for-markdown-links*
|
||||||
|
Do not require .md extensions for Markdown links ~
|
||||||
|
|
||||||
|
*g:vim_markdown_no_extensions_in_markdown*
|
||||||
|
- 'g:vim_markdown_no_extensions_in_markdown'
|
||||||
|
|
||||||
|
If you want to have a link like this '[link text](link-url)' and follow it
|
||||||
|
for editing in vim using the 'ge' command, but have it open the file "link-
|
||||||
|
url.md" instead of the file "link-url", then use this option:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_no_extensions_in_markdown = 1
|
||||||
|
<
|
||||||
|
This is super useful for GitLab and GitHub wiki repositories.
|
||||||
|
|
||||||
|
Normal behaviour would be that vim-markup required you to do this '[link
|
||||||
|
text](link-url.md)', but this is not how the Gitlab and GitHub wiki
|
||||||
|
repositories work. So this option adds some consistency between the two.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-auto-write-when-following-link*
|
||||||
|
Auto-write when following link ~
|
||||||
|
|
||||||
|
*g:vim_markdown_autowrite*
|
||||||
|
- 'g:vim_markdown_autowrite'
|
||||||
|
|
||||||
|
If you follow a link like this '[link text](link-url)' using the 'ge'
|
||||||
|
shortcut, this option will automatically save any edits you made before
|
||||||
|
moving you:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_autowrite = 1
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-change-default-file-extension*
|
||||||
|
Change default file extension ~
|
||||||
|
|
||||||
|
*g:vim_markdown_auto_extension_ext*
|
||||||
|
- 'g:vim_markdown_auto_extension_ext'
|
||||||
|
|
||||||
|
If you would like to use a file extension other than '.md' you may do so
|
||||||
|
using the 'vim_markdown_auto_extension_ext' variable:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_auto_extension_ext = 'txt'
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-do-not-automatically-insert-bulletpoints*
|
||||||
|
Do not automatically insert bulletpoints ~
|
||||||
|
|
||||||
|
*g:vim_markdown_auto_insert_bullets*
|
||||||
|
- 'g:vim_markdown_auto_insert_bullets'
|
||||||
|
|
||||||
|
Automatically inserting bulletpoints can lead to problems when wrapping
|
||||||
|
text (see issue #232 for details), so it can be disabled:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_auto_insert_bullets = 0
|
||||||
|
<
|
||||||
|
In that case, you probably also want to set the new list item indent to 0
|
||||||
|
as well, or you will have to remove an indent each time you add a new list
|
||||||
|
item:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_new_list_item_indent = 0
|
||||||
|
<
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
*vim-markdown-change-how-to-open-new-files*
|
||||||
|
Change how to open new files ~
|
||||||
|
|
||||||
|
*g:vim_markdown_edit_url_in*
|
||||||
|
- 'g:vim_markdown_edit_url_in'
|
||||||
|
|
||||||
|
By default when following a link the target file will be opened in your
|
||||||
|
current buffer. This behavior can change if you prefer using splits or tabs
|
||||||
|
by using the 'vim_markdown_edit_url_in' variable. Possible values are
|
||||||
|
'tab', 'vsplit', 'hsplit', 'current' opening in a new tab, vertical split,
|
||||||
|
horizontal split, and current buffer respectively. Defaults to current
|
||||||
|
buffer if not set:
|
||||||
|
>
|
||||||
|
let g:vim_markdown_edit_url_in = 'tab'
|
||||||
|
<
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-mappings*
|
||||||
|
Mappings ~
|
||||||
|
|
||||||
|
The following work on normal and visual modes:
|
||||||
|
|
||||||
|
*vim-markdown-gx*
|
||||||
|
- 'gx': open the link under the cursor in the same browser as the standard
|
||||||
|
'gx' command. '<Plug>Markdown_OpenUrlUnderCursor'
|
||||||
|
|
||||||
|
The standard 'gx' is extended by allowing you to put your cursor anywhere
|
||||||
|
inside a link.
|
||||||
|
|
||||||
|
For example, all the following cursor positions will work:
|
||||||
|
>
|
||||||
|
[Example](http://example.com)
|
||||||
|
^ ^ ^^ ^ ^
|
||||||
|
1 2 34 5 6
|
||||||
|
|
||||||
|
<http://example.com>
|
||||||
|
^ ^ ^
|
||||||
|
1 2 3
|
||||||
|
<
|
||||||
|
Known limitation: does not work for links that span multiple lines.
|
||||||
|
|
||||||
|
*vim-markdown-ge*
|
||||||
|
- 'ge': open the link under the cursor in Vim for editing. Useful for
|
||||||
|
relative markdown links. '<Plug>Markdown_EditUrlUnderCursor'
|
||||||
|
|
||||||
|
The rules for the cursor position are the same as the 'gx' command.
|
||||||
|
|
||||||
|
*vim-markdown-]]*
|
||||||
|
- ']]': go to next header. '<Plug>Markdown_MoveToNextHeader'
|
||||||
|
|
||||||
|
*vim-markdown-[[*
|
||||||
|
- '[[': go to previous header. Contrast with ']c'.
|
||||||
|
'<Plug>Markdown_MoveToPreviousHeader'
|
||||||
|
|
||||||
|
*vim-markdown-][*
|
||||||
|
- '][': go to next sibling header if any.
|
||||||
|
'<Plug>Markdown_MoveToNextSiblingHeader'
|
||||||
|
|
||||||
|
*vim-markdown-[]*
|
||||||
|
- '[]': go to previous sibling header if any.
|
||||||
|
'<Plug>Markdown_MoveToPreviousSiblingHeader'
|
||||||
|
|
||||||
|
*vim-markdown-]c*
|
||||||
|
- ']c': go to Current header. '<Plug>Markdown_MoveToCurHeader'
|
||||||
|
|
||||||
|
*vim-markdown-]u*
|
||||||
|
- ']u': go to parent header (Up). '<Plug>Markdown_MoveToParentHeader'
|
||||||
|
|
||||||
|
This plugin follows the recommended Vim plugin mapping interface, so to change
|
||||||
|
the map ']u' to 'asdf', add to your '.vimrc':
|
||||||
|
>
|
||||||
|
map asdf <Plug>Markdown_MoveToParentHeader
|
||||||
|
<
|
||||||
|
To disable a map use:
|
||||||
|
>
|
||||||
|
map <Plug> <Plug>Markdown_MoveToParentHeader
|
||||||
|
<
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-commands*
|
||||||
|
Commands ~
|
||||||
|
|
||||||
|
The following requires ':filetype plugin on'.
|
||||||
|
|
||||||
|
*:HeaderDecrease*
|
||||||
|
- ':HeaderDecrease':
|
||||||
|
|
||||||
|
Decrease level of all headers in buffer: 'h2' to 'h1', 'h3' to 'h2', etc.
|
||||||
|
|
||||||
|
If range is given, only operate in the range.
|
||||||
|
|
||||||
|
If an 'h1' would be decreased, abort.
|
||||||
|
|
||||||
|
For simplicity of implementation, Setex headers are converted to Atx.
|
||||||
|
|
||||||
|
*:HeaderIncrease*
|
||||||
|
- ':HeaderIncrease': Analogous to ':HeaderDecrease', but increase levels
|
||||||
|
instead.
|
||||||
|
|
||||||
|
*:SetexToAtx*
|
||||||
|
- ':SetexToAtx':
|
||||||
|
|
||||||
|
Convert all Setex style headers in buffer to Atx.
|
||||||
|
|
||||||
|
If a range is given, e.g. hit ':' from visual mode, only operate on the
|
||||||
|
range.
|
||||||
|
|
||||||
|
*:TableFormat*
|
||||||
|
- ':TableFormat': Format the table under the cursor like this [10].
|
||||||
|
|
||||||
|
Requires Tabular [11].
|
||||||
|
|
||||||
|
The input table _must_ already have a separator line as the second line of
|
||||||
|
the table. That line only needs to contain the correct pipes '|', nothing
|
||||||
|
else is required.
|
||||||
|
|
||||||
|
*:Toc*
|
||||||
|
- ':Toc': create a quickfix vertical window navigable table of contents with
|
||||||
|
the headers.
|
||||||
|
|
||||||
|
Hit '<Enter>' on a line to jump to the corresponding line of the markdown
|
||||||
|
file.
|
||||||
|
|
||||||
|
*:Toch*
|
||||||
|
- ':Toch': Same as ':Toc' but in an horizontal window.
|
||||||
|
|
||||||
|
*:Toct*
|
||||||
|
- ':Toct': Same as ':Toc' but in a new tab.
|
||||||
|
|
||||||
|
*:Tocv*
|
||||||
|
- ':Tocv': Same as ':Toc' for symmetry with ':Toch' and ':Tocv'.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-credits*
|
||||||
|
Credits ~
|
||||||
|
|
||||||
|
The main contributors of vim-markdown are:
|
||||||
|
|
||||||
|
- **Ben Williams** (A.K.A. **plasticboy**). The original developer of vim-
|
||||||
|
markdown. Homepage [12].
|
||||||
|
|
||||||
|
If you feel that your name should be on this list, please make a pull request
|
||||||
|
listing your contributions.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-license*
|
||||||
|
License ~
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2012 Benjamin D. Williams
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
*vim-markdown-references*
|
||||||
|
References ~
|
||||||
|
|
||||||
|
[1] http://daringfireball.net/projects/markdown/
|
||||||
|
[2] https://github.com/gmarik/vundle
|
||||||
|
[3] https://github.com/tpope/vim-pathogen
|
||||||
|
[4] http://packages.qa.debian.org/v/vim-addon-manager.html
|
||||||
|
[5] https://github.com/plasticboy/vim-markdown/archive/master.tar.gz
|
||||||
|
[6] https://github.com/klen/python-mode
|
||||||
|
[7] https://gohugo.io/content/front-matter/
|
||||||
|
[8] https://github.com/cespare/vim-toml
|
||||||
|
[9] https://github.com/elzr/vim-json
|
||||||
|
[10] http://www.cirosantilli.com/markdown-style-guide/#tables
|
||||||
|
[11] https://github.com/godlygeek/tabular
|
||||||
|
[12] http://plasticboy.com/
|
||||||
|
|
||||||
|
vim: ft=help
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
*vim-polyglot* Vim Polyglot
|
|
||||||
|
|
||||||
===============================================================================
|
|
||||||
*vim-polyglot-introduction*
|
|
||||||
Introduction ~
|
|
||||||
|
|
||||||
Vim Polyglot is a solid language pack for vim. No configuration needed.
|
|
||||||
|
|
||||||
Please make sure you have `syntax on` in your `.vimrc`
|
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
|
||||||
DISABLING LANGUAGE PACKS *vim-polyglot-disabled*
|
|
||||||
|
|
||||||
|
|
||||||
Individual language packs can be disabled by setting `g:polyglot_disabled`:
|
|
||||||
|
|
||||||
>
|
|
||||||
" ~/.vimrc, declare this variable before polyglot is loaded let
|
|
||||||
g:polyglot_disabled = ['css']
|
|
||||||
<
|
|
||||||
|
|
||||||
Note that disabling languages won't make in general your vim startup any faster
|
|
||||||
/ slower (only for specific file type). Vim-polyglot is selection of language
|
|
||||||
plugins that are loaded only on demand.
|
|
||||||
64
doc/vim-raml.txt
Normal file
64
doc/vim-raml.txt
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'raml') == -1
|
||||||
|
|
||||||
|
# vim-raml
|
||||||
|
Vim syntax and language settings for RAML
|
||||||
|
|
||||||
|
About
|
||||||
|
---
|
||||||
|
vim-raml is a superset of Vim's own syntax settings for YAML, as RAML itself
|
||||||
|
is a superset of YAML. Obviously, filetype detection is provided for RAML
|
||||||
|
files as well to make use of the expanded syntax, as well language formatting
|
||||||
|
defaults.
|
||||||
|
|
||||||
|
You'll notice several changes over using the default YAML syntax file:
|
||||||
|
- The RAML version header, manditory in RAML now stands out brightly,
|
||||||
|
rather than looking like a comment.
|
||||||
|
- Parameter interpolation i.e. ```<<thing>>``` is highlighted inside of blocks
|
||||||
|
and values.
|
||||||
|
- Delimiters and blocks i.e. ```-, |, etc``` are consistently highlighted
|
||||||
|
(flaky in YAML).
|
||||||
|
- HTTP verbs, response codes, data types, and route definitions are all
|
||||||
|
colored separately from regular keys to help immediately distingush
|
||||||
|
different levels of the data structure.
|
||||||
|
- HTTP verbs include all that are supported by RAML: get, post, put, delete,
|
||||||
|
head, patch, and options
|
||||||
|
- Response codes e.g. 200, 201, 404, 401, etc are colored like numbers
|
||||||
|
(for obvious reasons)
|
||||||
|
- Data types e.g. ```type: integer```. Supports all RAML datatypes. string,
|
||||||
|
number, integer, date, boolean, and file.
|
||||||
|
- Route definitions: these include ```/posts:``` or ```/{id}:```
|
||||||
|
|
||||||
|
Installation
|
||||||
|
---
|
||||||
|
vim-raml doesn't have any strange or esoteric requirements.
|
||||||
|
Provided you're using Vundle, Pathogen or any of the other standard Vim
|
||||||
|
plugin managers. You can install vim-raml exactly how you'd expect.
|
||||||
|
|
||||||
|
For completeness, to install via Vundle just add the following into your
|
||||||
|
.vimrc with your other plugins
|
||||||
|
|
||||||
|
Plugin '.../.../'
|
||||||
|
Plugin 'IN3D/vim-raml'
|
||||||
|
Plugin '.../.../'
|
||||||
|
|
||||||
|
Then run:
|
||||||
|
|
||||||
|
:source %
|
||||||
|
:PluginInstall
|
||||||
|
|
||||||
|
|
||||||
|
Or for Pathogen:
|
||||||
|
|
||||||
|
cd ~/.vim/bundle
|
||||||
|
git clone https://github.com/IN3D/vim-raml.git
|
||||||
|
|
||||||
|
And Pathogen should pick it up the next time Vim is started.
|
||||||
|
|
||||||
|
|
||||||
|
Questions, suggestions, and issues
|
||||||
|
---
|
||||||
|
If you have a question, suggestion, or have found an issue with vim-raml.
|
||||||
|
The best way to bring it to my attention is to open an issue at
|
||||||
|
https://github.com/IN3D/vim-raml/issues
|
||||||
|
|
||||||
|
endif
|
||||||
File diff suppressed because it is too large
Load Diff
29
ftplugin/8th.vim
Normal file
29
ftplugin/8th.vim
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, '8th') == -1
|
||||||
|
|
||||||
|
" Vim ftplugin file
|
||||||
|
" Language: 8th
|
||||||
|
" Version: any
|
||||||
|
" Last Change: 2015/11/08
|
||||||
|
" Maintainer: Ron Aaron <ron@aaron-tech.com>
|
||||||
|
" URL: https://8th-dev.com/
|
||||||
|
" Filetypes: *.8th
|
||||||
|
" NOTE: 8th allows any non-whitespace in a name, so you need to do:
|
||||||
|
" setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
|
||||||
|
" This goes with the syntax/8th.vim file.
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_8thplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_8thplugin = 1
|
||||||
|
|
||||||
|
setlocal ts=2 sts=2 sw=2 et
|
||||||
|
setlocal com=s1:/*,mb:*,ex:*/,:\|,:\\
|
||||||
|
setlocal fo=tcrqol
|
||||||
|
setlocal matchpairs+=\::;
|
||||||
|
setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
|
||||||
|
setlocal suffixesadd=.8th
|
||||||
|
|
||||||
|
endif
|
||||||
24
ftplugin/a2ps.vim
Normal file
24
ftplugin/a2ps.vim
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'a2ps') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: a2ps(1) configuration file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl com< cms< inc< fo<"
|
||||||
|
|
||||||
|
setlocal comments=:# commentstring=#\ %s include=^\\s*Include:
|
||||||
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
29
ftplugin/aap.vim
Normal file
29
ftplugin/aap.vim
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aap') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Aap recipe
|
||||||
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
|
" Last Change: 2013 Apr 05
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Reset 'formatoptions', 'comments' and 'expandtab' to undo this plugin.
|
||||||
|
let b:undo_ftplugin = "setl fo< com< et<"
|
||||||
|
|
||||||
|
" Set 'formatoptions' to break comment lines but not other lines,
|
||||||
|
" and insert the comment leader when hitting <CR> or using "o".
|
||||||
|
setlocal fo-=t fo+=croql
|
||||||
|
|
||||||
|
" Set 'comments' to format dashed lists in comments.
|
||||||
|
setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:-
|
||||||
|
|
||||||
|
" Expand tabs to spaces to avoid trouble.
|
||||||
|
setlocal expandtab
|
||||||
|
|
||||||
|
endif
|
||||||
33
ftplugin/abap.vim
Normal file
33
ftplugin/abap.vim
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abap') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: ABAP
|
||||||
|
" Author: Steven Oliver <oliver.steven@gmail.com>
|
||||||
|
" Copyright: Copyright (c) 2013 Steven Oliver
|
||||||
|
" License: You may redistribute this under the same terms as Vim itself
|
||||||
|
" --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if (exists("b:did_ftplugin"))
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
setlocal softtabstop=2 shiftwidth=2
|
||||||
|
setlocal suffixesadd=.abap
|
||||||
|
|
||||||
|
" Windows allows you to filter the open file dialog
|
||||||
|
if has("gui_win32") && !exists("b:browsefilter")
|
||||||
|
let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim: set sw=4 sts=4 et tw=80 :
|
||||||
|
|
||||||
|
endif
|
||||||
101
ftplugin/abaqus.vim
Normal file
101
ftplugin/abaqus.vim
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abaqus') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Abaqus finite element input file (www.abaqus.com)
|
||||||
|
" Maintainer: Carl Osterwisch <osterwischc@asme.org>
|
||||||
|
" Last Change: 2012 Apr 30
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Save the compatibility options and temporarily switch to vim defaults
|
||||||
|
let s:cpo_save = &cpoptions
|
||||||
|
set cpoptions&vim
|
||||||
|
|
||||||
|
" Set the format of the include file specification for Abaqus
|
||||||
|
" Used in :check gf ^wf [i and other commands
|
||||||
|
setlocal include=\\<\\cINPUT\\s*=
|
||||||
|
|
||||||
|
" Remove characters up to the first = when evaluating filenames
|
||||||
|
setlocal includeexpr=substitute(v:fname,'.\\{-}=','','')
|
||||||
|
|
||||||
|
" Remove comma from valid filename characters since it is used to
|
||||||
|
" separate keyword parameters
|
||||||
|
setlocal isfname-=,
|
||||||
|
|
||||||
|
" Define format of comment lines (see 'formatoptions' for uses)
|
||||||
|
setlocal comments=:**
|
||||||
|
setlocal commentstring=**%s
|
||||||
|
|
||||||
|
" Definitions start with a * and assign a NAME, NSET, or ELSET
|
||||||
|
" Used in [d ^wd and other commands
|
||||||
|
setlocal define=^\\*\\a.*\\c\\(NAME\\\|NSET\\\|ELSET\\)\\s*=
|
||||||
|
|
||||||
|
" Abaqus keywords and identifiers may include a - character
|
||||||
|
setlocal iskeyword+=-
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setlocal include< includeexpr< isfname<"
|
||||||
|
\ . " comments< commentstring< define< iskeyword<"
|
||||||
|
|
||||||
|
if has("folding")
|
||||||
|
" Fold all lines that do not begin with *
|
||||||
|
setlocal foldexpr=getline(v:lnum)[0]!=\"\*\"
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
let b:undo_ftplugin .= " foldexpr< foldmethod<"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set the file browse filter (currently only supported under Win32 gui)
|
||||||
|
if has("gui_win32") && !exists("b:browsefilter")
|
||||||
|
let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" .
|
||||||
|
\ "Abaqus Results (*.dat)\t*.dat\n" .
|
||||||
|
\ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
let b:undo_ftplugin .= "|unlet! b:browsefilter"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Define patterns for the matchit plugin
|
||||||
|
if exists("loaded_matchit") && !exists("b:match_words")
|
||||||
|
let b:match_ignorecase = 1
|
||||||
|
let b:match_words =
|
||||||
|
\ '\*part:\*end\s*part,' .
|
||||||
|
\ '\*assembly:\*end\s*assembly,' .
|
||||||
|
\ '\*instance:\*end\s*instance,' .
|
||||||
|
\ '\*step:\*end\s*step'
|
||||||
|
let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Define keys used to move [count] keywords backward or forward.
|
||||||
|
noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR>
|
||||||
|
noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR>
|
||||||
|
|
||||||
|
" Define key to toggle commenting of the current line or range
|
||||||
|
noremap <silent><buffer> <LocalLeader><LocalLeader>
|
||||||
|
\ :call <SID>Abaqus_ToggleComment()<CR>j
|
||||||
|
function! <SID>Abaqus_ToggleComment() range
|
||||||
|
if strpart(getline(a:firstline), 0, 2) == "**"
|
||||||
|
" Un-comment all lines in range
|
||||||
|
silent execute a:firstline . ',' . a:lastline . 's/^\*\*//'
|
||||||
|
else
|
||||||
|
" Comment all lines in range
|
||||||
|
silent execute a:firstline . ',' . a:lastline . 's/^/**/'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
|
||||||
|
\ . "|unmap <buffer> <LocalLeader><LocalLeader>"
|
||||||
|
|
||||||
|
" Undo must be done in nocompatible mode for <LocalLeader>.
|
||||||
|
let b:undo_ftplugin = "let s:cpo_save = &cpoptions|"
|
||||||
|
\ . "set cpoptions&vim|"
|
||||||
|
\ . b:undo_ftplugin
|
||||||
|
\ . "|let &cpoptions = s:cpo_save"
|
||||||
|
\ . "|unlet s:cpo_save"
|
||||||
|
|
||||||
|
" Restore saved compatibility options
|
||||||
|
let &cpoptions = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
214
ftplugin/ada.vim
Normal file
214
ftplugin/ada.vim
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ada') == -1
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Description: Perform Ada specific completion & tagging.
|
||||||
|
" Language: Ada (2005)
|
||||||
|
" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
|
||||||
|
" Maintainer: Martin Krischik <krischik@users.sourceforge.net>
|
||||||
|
" Taylor Venable <taylor@metasyntax.net>
|
||||||
|
" Neil Bird <neil@fnxweb.com>
|
||||||
|
" $Author: krischik $
|
||||||
|
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
|
||||||
|
" Version: 4.6 with patch from David Bürgin
|
||||||
|
" $Revision: 887 $
|
||||||
|
" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $
|
||||||
|
" History: 24.05.2006 MK Unified Headers
|
||||||
|
" 26.05.2006 MK ' should not be in iskeyword.
|
||||||
|
" 16.07.2006 MK Ada-Mode as vim-ball
|
||||||
|
" 02.10.2006 MK Better folding.
|
||||||
|
" 15.10.2006 MK Bram's suggestion for runtime integration
|
||||||
|
" 05.11.2006 MK Bram suggested not to use include protection for
|
||||||
|
" autoload
|
||||||
|
" 05.11.2006 MK Bram suggested to save on spaces
|
||||||
|
" 08.07.2007 TV fix default compiler problems.
|
||||||
|
" Help Page: ft-ada-plugin
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Provides mapping overrides for tag jumping that figure out the current
|
||||||
|
" Ada object and tag jump to that, not the 'simple' vim word.
|
||||||
|
" Similarly allows <Ctrl-N> matching of full-length ada entities from tags.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists ("b:did_ftplugin") || version < 700
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 45
|
||||||
|
|
||||||
|
"
|
||||||
|
" Temporarily set cpoptions to ensure the script loads OK
|
||||||
|
"
|
||||||
|
let s:cpoptions = &cpoptions
|
||||||
|
set cpoptions-=C
|
||||||
|
|
||||||
|
" Section: Comments {{{1
|
||||||
|
"
|
||||||
|
setlocal comments=O:--,:--\ \
|
||||||
|
setlocal commentstring=--\ \ %s
|
||||||
|
setlocal complete=.,w,b,u,t,i
|
||||||
|
|
||||||
|
" Section: case {{{1
|
||||||
|
"
|
||||||
|
setlocal nosmartcase
|
||||||
|
setlocal ignorecase
|
||||||
|
|
||||||
|
" Section: formatoptions {{{1
|
||||||
|
"
|
||||||
|
setlocal formatoptions+=ron
|
||||||
|
|
||||||
|
" Section: Tagging {{{1
|
||||||
|
"
|
||||||
|
if exists ("g:ada_extended_tagging")
|
||||||
|
" Make local tag mappings for this buffer (if not already set)
|
||||||
|
if g:ada_extended_tagging == 'jump'
|
||||||
|
if mapcheck('<C-]>','n') == ''
|
||||||
|
nnoremap <unique> <buffer> <C-]> :call ada#Jump_Tag ('', 'tjump')<cr>
|
||||||
|
endif
|
||||||
|
if mapcheck('g<C-]>','n') == ''
|
||||||
|
nnoremap <unique> <buffer> g<C-]> :call ada#Jump_Tag ('','stjump')<cr>
|
||||||
|
endif
|
||||||
|
elseif g:ada_extended_tagging == 'list'
|
||||||
|
if mapcheck('<C-]>','n') == ''
|
||||||
|
nnoremap <unique> <buffer> <C-]> :call ada#List_Tag ()<cr>
|
||||||
|
endif
|
||||||
|
if mapcheck('g<C-]>','n') == ''
|
||||||
|
nnoremap <unique> <buffer> g<C-]> :call ada#List_Tag ()<cr>
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Completion {{{1
|
||||||
|
"
|
||||||
|
setlocal completefunc=ada#User_Complete
|
||||||
|
setlocal omnifunc=adacomplete#Complete
|
||||||
|
|
||||||
|
if exists ("g:ada_extended_completion")
|
||||||
|
if mapcheck ('<C-N>','i') == ''
|
||||||
|
inoremap <unique> <buffer> <C-N> <C-R>=ada#Completion("\<lt>C-N>")<cr>
|
||||||
|
endif
|
||||||
|
if mapcheck ('<C-P>','i') == ''
|
||||||
|
inoremap <unique> <buffer> <C-P> <C-R>=ada#Completion("\<lt>C-P>")<cr>
|
||||||
|
endif
|
||||||
|
if mapcheck ('<C-X><C-]>','i') == ''
|
||||||
|
inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>ada#Completion("\<lt>C-X>\<lt>C-]>")<cr>
|
||||||
|
endif
|
||||||
|
if mapcheck ('<bs>','i') == ''
|
||||||
|
inoremap <silent> <unique> <buffer> <bs> <C-R>=ada#Insert_Backspace ()<cr>
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Matchit {{{1
|
||||||
|
"
|
||||||
|
" Only do this when not done yet for this buffer & matchit is used
|
||||||
|
"
|
||||||
|
if !exists ("b:match_words") &&
|
||||||
|
\ exists ("loaded_matchit")
|
||||||
|
"
|
||||||
|
" The following lines enable the macros/matchit.vim plugin for
|
||||||
|
" Ada-specific extended matching with the % key.
|
||||||
|
"
|
||||||
|
let s:notend = '\%(\<end\s\+\)\@<!'
|
||||||
|
let b:match_words =
|
||||||
|
\ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' .
|
||||||
|
\ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' .
|
||||||
|
\ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' .
|
||||||
|
\ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' .
|
||||||
|
\ s:notend . '\<record\>:\<end\>\s\+\<record\>'
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" Section: Compiler {{{1
|
||||||
|
"
|
||||||
|
if ! exists("g:ada_default_compiler")
|
||||||
|
if has("vms")
|
||||||
|
let g:ada_default_compiler = 'decada'
|
||||||
|
else
|
||||||
|
let g:ada_default_compiler = 'gnat'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ! exists("current_compiler") ||
|
||||||
|
\ current_compiler != g:ada_default_compiler
|
||||||
|
execute "compiler " . g:ada_default_compiler
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Folding {{{1
|
||||||
|
"
|
||||||
|
if exists("g:ada_folding")
|
||||||
|
if g:ada_folding[0] == 'i'
|
||||||
|
setlocal foldmethod=indent
|
||||||
|
setlocal foldignore=--
|
||||||
|
setlocal foldnestmax=5
|
||||||
|
elseif g:ada_folding[0] == 'g'
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum)
|
||||||
|
elseif g:ada_folding[0] == 's'
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
endif
|
||||||
|
setlocal tabstop=8
|
||||||
|
setlocal softtabstop=3
|
||||||
|
setlocal shiftwidth=3
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Abbrev {{{1
|
||||||
|
"
|
||||||
|
if exists("g:ada_abbrev")
|
||||||
|
iabbrev ret return
|
||||||
|
iabbrev proc procedure
|
||||||
|
iabbrev pack package
|
||||||
|
iabbrev func function
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: Commands, Mapping, Menus {{{1
|
||||||
|
"
|
||||||
|
call ada#Map_Popup (
|
||||||
|
\ 'Tag.List',
|
||||||
|
\ 'l',
|
||||||
|
\ 'call ada#List_Tag ()')
|
||||||
|
call ada#Map_Popup (
|
||||||
|
\'Tag.Jump',
|
||||||
|
\'j',
|
||||||
|
\'call ada#Jump_Tag ()')
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Tag.Create File',
|
||||||
|
\':AdaTagFile',
|
||||||
|
\'call ada#Create_Tags (''file'')')
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Tag.Create Dir',
|
||||||
|
\':AdaTagDir',
|
||||||
|
\'call ada#Create_Tags (''dir'')')
|
||||||
|
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Highlight.Toggle Space Errors',
|
||||||
|
\ ':AdaSpaces',
|
||||||
|
\'call ada#Switch_Syntax_Option (''space_errors'')')
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Highlight.Toggle Lines Errors',
|
||||||
|
\ ':AdaLines',
|
||||||
|
\'call ada#Switch_Syntax_Option (''line_errors'')')
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Highlight.Toggle Rainbow Color',
|
||||||
|
\ ':AdaRainbow',
|
||||||
|
\'call ada#Switch_Syntax_Option (''rainbow_color'')')
|
||||||
|
call ada#Map_Menu (
|
||||||
|
\'Highlight.Toggle Standard Types',
|
||||||
|
\ ':AdaTypes',
|
||||||
|
\'call ada#Switch_Syntax_Option (''standard_types'')')
|
||||||
|
|
||||||
|
" 1}}}
|
||||||
|
" Reset cpoptions
|
||||||
|
let &cpoptions = s:cpoptions
|
||||||
|
unlet s:cpoptions
|
||||||
|
|
||||||
|
finish " 1}}}
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Copyright (C) 2006 Martin Krischik
|
||||||
|
"
|
||||||
|
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
|
||||||
|
" vim: foldmethod=marker
|
||||||
|
|
||||||
|
endif
|
||||||
23
ftplugin/alsaconf.vim
Normal file
23
ftplugin/alsaconf.vim
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'alsaconf') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: alsaconf(8) configuration file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||||
|
|
||||||
|
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
48
ftplugin/ant.vim
Normal file
48
ftplugin/ant.vim
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ant') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: ant
|
||||||
|
" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
|
||||||
|
" Last Changed: 20 Jan 2009
|
||||||
|
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
|
||||||
|
" Make sure the continuation lines below do not cause problems in
|
||||||
|
" compatibility mode.
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
" Define some defaults in case the included ftplugins don't set them.
|
||||||
|
let s:undo_ftplugin = ""
|
||||||
|
let s:browsefilter = "XML Files (*.xml)\t*.xml\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
|
||||||
|
runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Override our defaults if these were set by an included ftplugin.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists("b:browsefilter")
|
||||||
|
let s:browsefilter = b:browsefilter
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Change the :browse e filter to primarily show Ant-related files.
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter = "Build Files (build.xml)\tbuild.xml\n" .
|
||||||
|
\ "Java Files (*.java)\t*.java\n" .
|
||||||
|
\ "Properties Files (*.prop*)\t*.prop*\n" .
|
||||||
|
\ "Manifest Files (*.mf)\t*.mf\n" .
|
||||||
|
\ s:browsefilter
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Undo the stuff we changed.
|
||||||
|
let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin
|
||||||
|
|
||||||
|
" Restore the saved compatibility options.
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
endif
|
||||||
23
ftplugin/arch.vim
Normal file
23
ftplugin/arch.vim
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'arch') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: GNU Arch inventory file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||||
|
|
||||||
|
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
19
ftplugin/art.vim
Normal file
19
ftplugin/art.vim
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'art') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin
|
||||||
|
" Language: ART-IM and ART*Enterprise
|
||||||
|
" Maintainer: Dorai Sitaram <ds26@gte.com>
|
||||||
|
" URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
|
||||||
|
" Last Change: Apr 2, 2003
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
run ftplugin/lisp.vim
|
||||||
|
|
||||||
|
setl lw-=if
|
||||||
|
setl lw+=def-art-fun,deffacts,defglobal,defrule,defschema,for,schema,while
|
||||||
|
|
||||||
|
endif
|
||||||
20
ftplugin/automake.vim
Normal file
20
ftplugin/automake.vim
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'automake') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Automake
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
runtime! ftplugin/make.vim ftplugin/make_*.vim ftplugin/make/*.vim
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
22
ftplugin/awk.vim
Normal file
22
ftplugin/awk.vim
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'awk') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin
|
||||||
|
" Language: awk, nawk, gawk, mawk
|
||||||
|
" Maintainer: Antonio Colombo <azc100@gmail.com>
|
||||||
|
" Last Change: 2017 Feb 17
|
||||||
|
|
||||||
|
" This plugin was prepared by Mark Sikora
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl commentstring<"
|
||||||
|
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -37,8 +37,9 @@ nnoremap <buffer><Plug>(crystal-spec-run-all) :<C-u>CrystalSpecRunAll<CR>
|
|||||||
nnoremap <buffer><Plug>(crystal-spec-run-current) :<C-u>CrystalSpecRunCurrent<CR>
|
nnoremap <buffer><Plug>(crystal-spec-run-current) :<C-u>CrystalSpecRunCurrent<CR>
|
||||||
nnoremap <buffer><Plug>(crystal-format) :<C-u>CrystalFormat<CR>
|
nnoremap <buffer><Plug>(crystal-format) :<C-u>CrystalFormat<CR>
|
||||||
|
|
||||||
|
" autocmd is setup per buffer. Please do not use :autocmd!. It refreshes
|
||||||
|
" augroup hence removes autocmds for other buffers (#105)
|
||||||
augroup plugin-ft-crystal
|
augroup plugin-ft-crystal
|
||||||
autocmd!
|
|
||||||
autocmd BufWritePre <buffer> if g:crystal_auto_format && &filetype ==# 'crystal' | call crystal_lang#format('', 1) | endif
|
autocmd BufWritePre <buffer> if g:crystal_auto_format && &filetype ==# 'crystal' | call crystal_lang#format('', 1) | endif
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
|||||||
23
ftplugin/grub.vim
Normal file
23
ftplugin/grub.vim
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'grub') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: grub(8) configuration file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||||
|
|
||||||
|
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
26
ftplugin/help.vim
Normal file
26
ftplugin/help.vim
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'help') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Vim help file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2018-12-29
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl fo< tw< cole< cocu< keywordprg<"
|
||||||
|
|
||||||
|
setlocal formatoptions+=tcroql textwidth=78 keywordprg=:help
|
||||||
|
if has("conceal")
|
||||||
|
setlocal cole=2 cocu=nc
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
24
ftplugin/m4.vim
Normal file
24
ftplugin/m4.vim
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'm4') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: m4
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2008-07-09
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||||
|
|
||||||
|
setlocal comments=:#,:dnl commentstring=dnl\ %s
|
||||||
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" Mail file type extension to pick files for attachments via vifm
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: June 22, 2020
|
|
||||||
|
|
||||||
" Insert attachment picked via vifm after 'Subject' header
|
|
||||||
function! s:AddMailAttachments()
|
|
||||||
call vifm#globals#Init()
|
|
||||||
|
|
||||||
" XXX: similar code is in plugins/vifm.vim, but it's different in details
|
|
||||||
let l:listf = tempname()
|
|
||||||
|
|
||||||
if !has('nvim')
|
|
||||||
if has('gui_running')
|
|
||||||
execute 'silent !' g:vifm_term g:vifm_exec
|
|
||||||
\ '--choose-files' shellescape(l:listf, 1)
|
|
||||||
\ g:vifm_exec_args
|
|
||||||
else
|
|
||||||
execute 'silent !' g:vifm_exec
|
|
||||||
\ '--choose-files' shellescape(l:listf, 1)
|
|
||||||
\ g:vifm_exec_args
|
|
||||||
endif
|
|
||||||
|
|
||||||
redraw!
|
|
||||||
|
|
||||||
call s:HandleRunResults(v:shell_error, l:listf)
|
|
||||||
else
|
|
||||||
" Work around handicapped neovim...
|
|
||||||
let callback = { 'listf': l:listf }
|
|
||||||
function! callback.on_exit(id, code, event)
|
|
||||||
buffer #
|
|
||||||
silent! bdelete! #
|
|
||||||
call s:HandleRunResults(a:code, self.listf)
|
|
||||||
endfunction
|
|
||||||
enew
|
|
||||||
call termopen(g:vifm_exec . ' --choose-files ' . shellescape(l:listf, 1)
|
|
||||||
\. ' ' . g:vifm_exec_args, callback)
|
|
||||||
|
|
||||||
startinsert
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:HandleRunResults(exitcode, listf)
|
|
||||||
if a:exitcode != 0
|
|
||||||
echoerr 'Got non-zero code from vifm: ' . a:exitcode
|
|
||||||
call delete(a:listf)
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:insert_pos = search('^Subject:', 'nw')
|
|
||||||
|
|
||||||
if filereadable(a:listf) && l:insert_pos != 0
|
|
||||||
for line in readfile(a:listf)
|
|
||||||
call append(l:insert_pos, 'Attach: '.escape(line, " "))
|
|
||||||
let l:insert_pos += 1
|
|
||||||
endfor
|
|
||||||
endif
|
|
||||||
call delete(a:listf)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
nnoremap <buffer> <silent> <localleader>a :call <sid>AddMailAttachments()<cr>
|
|
||||||
|
|
||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" vifm command-line editing buffer filetype plugin
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: August 18, 2013
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
|
|
||||||
" Behave as vifm script file
|
|
||||||
runtime! ftplugin/vifm.vim
|
|
||||||
|
|
||||||
" Use vifm script highlighting
|
|
||||||
set syntax=vifm
|
|
||||||
|
|
||||||
call vifm#edit#Init()
|
|
||||||
|
|
||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" vifm command-line editing buffer filetype plugin
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: August 18, 2013
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
|
|
||||||
call vifm#edit#Init()
|
|
||||||
|
|
||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" Filetype plugin for vifm rename buffer
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: October 05, 2014
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
|
|
||||||
" Copy list of original file names
|
|
||||||
let s:files = getline(1, '$')
|
|
||||||
|
|
||||||
" Closes window/tab/Vim when buffer is left alone in there
|
|
||||||
function! s:QuitIfOnlyWindow()
|
|
||||||
" Boil out if there is more than one window
|
|
||||||
if winbufnr(2) != -1
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Just close tab with this single window or quit Vim with last tab
|
|
||||||
if tabpagenr('$') == 1
|
|
||||||
bdelete
|
|
||||||
quit
|
|
||||||
else
|
|
||||||
close
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Create a vertical split window for original file names and configure it
|
|
||||||
belowright vsplit __VifmRenameOrig__
|
|
||||||
enew
|
|
||||||
call setline(1, s:files)
|
|
||||||
setlocal buftype=nofile
|
|
||||||
setlocal bufhidden=hide
|
|
||||||
setlocal noswapfile
|
|
||||||
setlocal nobuflisted
|
|
||||||
setlocal cursorbind
|
|
||||||
setlocal scrollbind
|
|
||||||
setlocal nocursorline
|
|
||||||
|
|
||||||
" Free now useless list of file names
|
|
||||||
unlet s:files
|
|
||||||
|
|
||||||
" Setup a hook in auxiliary local window to do not leave it alone, when it's
|
|
||||||
" useless
|
|
||||||
augroup VifmRenameAutoCmds
|
|
||||||
autocmd! * <buffer>
|
|
||||||
autocmd BufEnter <buffer> call s:QuitIfOnlyWindow()
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" Go back to the original window and ensure it will remain synchronized with
|
|
||||||
" the auxiliary one
|
|
||||||
wincmd w
|
|
||||||
setlocal cursorbind
|
|
||||||
setlocal scrollbind
|
|
||||||
|
|
||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
|
||||||
|
|
||||||
" vifmrc filetype plugin
|
|
||||||
" Maintainer: xaizek <xaizek@posteo.net>
|
|
||||||
" Last Change: July 08, 2016
|
|
||||||
" Based On: Vim file type file by Bram Moolenaar
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
let b:undo_ftplugin = "setlocal formatoptions< comments< textwidth< commentstring<"
|
|
||||||
|
|
||||||
" Break comment lines but not other lines
|
|
||||||
setlocal formatoptions-=t formatoptions+=croql
|
|
||||||
|
|
||||||
" Set comment character
|
|
||||||
setlocal comments=:\"
|
|
||||||
|
|
||||||
" Format comments to be up to 78 characters long
|
|
||||||
if &textwidth == 0
|
|
||||||
setlocal textwidth=78
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Comments start with a double quote
|
|
||||||
setlocal commentstring=\"%s
|
|
||||||
|
|
||||||
" Move around comments
|
|
||||||
nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
|
|
||||||
vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
|
|
||||||
nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
|
|
||||||
vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
|
|
||||||
|
|
||||||
" Let the matchit plugin know what items can be matched.
|
|
||||||
if exists("loaded_matchit")
|
|
||||||
let b:match_ignorecase = 0
|
|
||||||
let b:match_words = '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,24 +1,34 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zig') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zig') == -1
|
||||||
|
|
||||||
" Only do this when not done yet for this buffer
|
" Only do this when not done yet for this buffer
|
||||||
if (exists("b:did_ftplugin"))
|
if exists("b:did_ftplugin")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:cpo_orig = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Recomended code style, no tabs and 4-space indentation
|
||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
setlocal tabstop=4
|
setlocal tabstop=8
|
||||||
|
setlocal softtabstop=4
|
||||||
setlocal shiftwidth=4
|
setlocal shiftwidth=4
|
||||||
|
|
||||||
setlocal suffixesadd=.zig
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal suffixesadd=.zir
|
|
||||||
setlocal commentstring=//\ %s
|
setlocal suffixesadd=.zig,.zir
|
||||||
setlocal makeprg=zig\ build
|
setlocal makeprg=zig\ build
|
||||||
|
|
||||||
if (has("comments"))
|
if has("comments")
|
||||||
set comments=:///,://,:\\\\
|
setlocal comments=:///,://!,://,:\\\\
|
||||||
set formatoptions=tcqor
|
setlocal commentstring=//\ %s
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl et< ts< sts< sw< fo< sua< mp< com< cms<"
|
||||||
|
|
||||||
|
let &cpo = s:cpo_orig
|
||||||
|
unlet s:cpo_orig
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
57
heuristics.yaml
Normal file
57
heuristics.yaml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
extensions: [inp]
|
||||||
|
rules:
|
||||||
|
- lines: 1
|
||||||
|
pattern: '^\*'
|
||||||
|
filetype: abaqus
|
||||||
|
- lines: 500
|
||||||
|
pattern: '^header surface data'
|
||||||
|
ignore_case: true
|
||||||
|
filetype: trasys
|
||||||
|
---
|
||||||
|
extensions: [asa]
|
||||||
|
rules:
|
||||||
|
- override: "g:filetype_asa"
|
||||||
|
- filetype: aspvbs
|
||||||
|
---
|
||||||
|
extensions: [asp]
|
||||||
|
rules:
|
||||||
|
- override: "g:filetype_asp"
|
||||||
|
- lines: 3
|
||||||
|
pattern: 'perlscript'
|
||||||
|
ignore_case: true
|
||||||
|
filetype: aspperl
|
||||||
|
- filetype: aspvbs
|
||||||
|
---
|
||||||
|
extensions: [m]
|
||||||
|
rules:
|
||||||
|
- lines: 100
|
||||||
|
rules:
|
||||||
|
- pattern: '^\s*/\*'
|
||||||
|
set: 'saw_comment'
|
||||||
|
- pattern: '^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])'
|
||||||
|
filetype: objc
|
||||||
|
- pattern: '^\s*%'
|
||||||
|
filetype: octave
|
||||||
|
- pattern: '^\s*\(\*'
|
||||||
|
filetype: mma
|
||||||
|
- pattern: '^\s*((type|var)\b|--)'
|
||||||
|
ignore_case: true
|
||||||
|
filetype: murphi
|
||||||
|
- if_set: "saw_comment"
|
||||||
|
filetype: objc
|
||||||
|
- override: "g:filetype_m"
|
||||||
|
- filetype: octave
|
||||||
|
---
|
||||||
|
extensions: [fs]
|
||||||
|
rules:
|
||||||
|
- lines: 50
|
||||||
|
rules:
|
||||||
|
- pattern: '^(: |new-device)'
|
||||||
|
filetype: forth
|
||||||
|
- pattern: '^\s*(#light|import|let|module|namespace|open|type)'
|
||||||
|
filetype: fsharp
|
||||||
|
- pattern: '\s*(#version|precision|uniform|varying|vec[234])'
|
||||||
|
filetype: glsl
|
||||||
|
- override: "g:filetype_fs"
|
||||||
|
- filetype: forth
|
||||||
16
indent/aap.vim
Normal file
16
indent/aap.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aap') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: Aap recipe
|
||||||
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
|
" Last Change: 2005 Jun 24
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Works mostly like Python.
|
||||||
|
runtime! indent/python.vim
|
||||||
|
|
||||||
|
endif
|
||||||
312
indent/ada.vim
Normal file
312
indent/ada.vim
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ada') == -1
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Description: Vim Ada indent file
|
||||||
|
" Language: Ada (2005)
|
||||||
|
" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
|
||||||
|
" Copyright: Copyright (C) 2006 Martin Krischik
|
||||||
|
" Maintainer: Martin Krischik <krischik@users.sourceforge.net>
|
||||||
|
" Neil Bird <neil@fnxweb.com>
|
||||||
|
" Ned Okie <nokie@radford.edu>
|
||||||
|
" $Author: krischik $
|
||||||
|
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
|
||||||
|
" Version: 4.6
|
||||||
|
" $Revision: 887 $
|
||||||
|
" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $
|
||||||
|
" History: 24.05.2006 MK Unified Headers
|
||||||
|
" 16.07.2006 MK Ada-Mode as vim-ball
|
||||||
|
" 15.10.2006 MK Bram's suggestion for runtime integration
|
||||||
|
" 05.11.2006 MK Bram suggested to save on spaces
|
||||||
|
" 19.09.2007 NO g: missing before ada#Comment
|
||||||
|
" Help Page: ft-vim-indent
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" ToDo:
|
||||||
|
" Verify handling of multi-line exprs. and recovery upon the final ';'.
|
||||||
|
" Correctly find comments given '"' and "" ==> " syntax.
|
||||||
|
" Combine the two large block-indent functions into one?
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent") || version < 700
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:did_indent = 45
|
||||||
|
|
||||||
|
setlocal indentexpr=GetAdaIndent()
|
||||||
|
setlocal indentkeys-=0{,0}
|
||||||
|
setlocal indentkeys+=0=~then,0=~end,0=~elsif,0=~when,0=~exception,0=~begin,0=~is,0=~record
|
||||||
|
|
||||||
|
" Only define the functions once.
|
||||||
|
if exists("*GetAdaIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let s:keepcpo= &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if exists("g:ada_with_gnat_project_files")
|
||||||
|
let s:AdaBlockStart = '^\s*\(if\>\|while\>\|else\>\|elsif\>\|loop\>\|for\>.*\<\(loop\|use\)\>\|declare\>\|begin\>\|type\>.*\<is\>[^;]*$\|\(type\>.*\)\=\<record\>\|procedure\>\|function\>\|accept\>\|do\>\|task\>\|package\>\|project\>\|then\>\|when\>\|is\>\)'
|
||||||
|
else
|
||||||
|
let s:AdaBlockStart = '^\s*\(if\>\|while\>\|else\>\|elsif\>\|loop\>\|for\>.*\<\(loop\|use\)\>\|declare\>\|begin\>\|type\>.*\<is\>[^;]*$\|\(type\>.*\)\=\<record\>\|procedure\>\|function\>\|accept\>\|do\>\|task\>\|package\>\|then\>\|when\>\|is\>\)'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: s:MainBlockIndent {{{1
|
||||||
|
"
|
||||||
|
" Try to find indent of the block we're in
|
||||||
|
" prev_indent = the previous line's indent
|
||||||
|
" prev_lnum = previous line (to start looking on)
|
||||||
|
" blockstart = expr. that indicates a possible start of this block
|
||||||
|
" stop_at = if non-null, if a matching line is found, gives up!
|
||||||
|
" No recursive previous block analysis: simply look for a valid line
|
||||||
|
" with a lesser or equal indent than we currently (on prev_lnum) have.
|
||||||
|
" This shouldn't work as well as it appears to with lines that are currently
|
||||||
|
" nowhere near the correct indent (e.g., start of line)!
|
||||||
|
" Seems to work OK as it 'starts' with the indent of the /previous/ line.
|
||||||
|
function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at)
|
||||||
|
let lnum = a:prev_lnum
|
||||||
|
let line = substitute( getline(lnum), g:ada#Comment, '', '' )
|
||||||
|
while lnum > 1
|
||||||
|
if a:stop_at != '' && line =~ '^\s*' . a:stop_at && indent(lnum) < a:prev_indent
|
||||||
|
return a:prev_indent
|
||||||
|
elseif line =~ '^\s*' . a:blockstart
|
||||||
|
let ind = indent(lnum)
|
||||||
|
if ind < a:prev_indent
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
" Get previous non-blank/non-comment-only line
|
||||||
|
while 1
|
||||||
|
let line = substitute( getline(lnum), g:ada#Comment, '', '' )
|
||||||
|
if line !~ '^\s*$' && line !~ '^\s*#'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum <= 0
|
||||||
|
return a:prev_indent
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endwhile
|
||||||
|
" Fallback - just move back one
|
||||||
|
return a:prev_indent - shiftwidth()
|
||||||
|
endfunction MainBlockIndent
|
||||||
|
|
||||||
|
" Section: s:EndBlockIndent {{{1
|
||||||
|
"
|
||||||
|
" Try to find indent of the block we're in (and about to complete),
|
||||||
|
" including handling of nested blocks. Works on the 'end' of a block.
|
||||||
|
" prev_indent = the previous line's indent
|
||||||
|
" prev_lnum = previous line (to start looking on)
|
||||||
|
" blockstart = expr. that indicates a possible start of this block
|
||||||
|
" blockend = expr. that indicates a possible end of this block
|
||||||
|
function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend )
|
||||||
|
let lnum = a:prev_lnum
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ends = 0
|
||||||
|
while lnum > 1
|
||||||
|
if getline(lnum) =~ '^\s*' . a:blockstart
|
||||||
|
let ind = indent(lnum)
|
||||||
|
if ends <= 0
|
||||||
|
if ind < a:prev_indent
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let ends = ends - 1
|
||||||
|
endif
|
||||||
|
elseif getline(lnum) =~ '^\s*' . a:blockend
|
||||||
|
let ends = ends + 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
" Get previous non-blank/non-comment-only line
|
||||||
|
while 1
|
||||||
|
let line = getline(lnum)
|
||||||
|
let line = substitute( line, g:ada#Comment, '', '' )
|
||||||
|
if line !~ '^\s*$'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum <= 0
|
||||||
|
return a:prev_indent
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endwhile
|
||||||
|
" Fallback - just move back one
|
||||||
|
return a:prev_indent - shiftwidth()
|
||||||
|
endfunction EndBlockIndent
|
||||||
|
|
||||||
|
" Section: s:StatementIndent {{{1
|
||||||
|
"
|
||||||
|
" Return indent of previous statement-start
|
||||||
|
" (after we've indented due to multi-line statements).
|
||||||
|
" This time, we start searching on the line *before* the one given (which is
|
||||||
|
" the end of a statement - we want the previous beginning).
|
||||||
|
function s:StatementIndent( current_indent, prev_lnum )
|
||||||
|
let lnum = a:prev_lnum
|
||||||
|
while lnum > 0
|
||||||
|
let prev_lnum = lnum
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
" Get previous non-blank/non-comment-only line
|
||||||
|
while 1
|
||||||
|
let line = substitute( getline(lnum), g:ada#Comment, '', '' )
|
||||||
|
|
||||||
|
if line !~ '^\s*$' && line !~ '^\s*#'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum <= 0
|
||||||
|
return a:current_indent
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
" Leave indent alone if our ';' line is part of a ';'-delineated
|
||||||
|
" aggregate (e.g., procedure args.) or first line after a block start.
|
||||||
|
if line =~ s:AdaBlockStart || line =~ '(\s*$'
|
||||||
|
return a:current_indent
|
||||||
|
endif
|
||||||
|
if line !~ '[.=(]\s*$'
|
||||||
|
let ind = indent(prev_lnum)
|
||||||
|
if ind < a:current_indent
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
" Fallback - just use current one
|
||||||
|
return a:current_indent
|
||||||
|
endfunction StatementIndent
|
||||||
|
|
||||||
|
|
||||||
|
" Section: GetAdaIndent {{{1
|
||||||
|
"
|
||||||
|
" Find correct indent of a new line based upon what went before
|
||||||
|
"
|
||||||
|
function GetAdaIndent()
|
||||||
|
" Find a non-blank line above the current line.
|
||||||
|
let lnum = prevnonblank(v:lnum - 1)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
let package_line = 0
|
||||||
|
|
||||||
|
" Get previous non-blank/non-comment-only/non-cpp line
|
||||||
|
while 1
|
||||||
|
let line = substitute( getline(lnum), g:ada#Comment, '', '' )
|
||||||
|
if line !~ '^\s*$' && line !~ '^\s*#'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum <= 0
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Get default indent (from prev. line)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
let initind = ind
|
||||||
|
|
||||||
|
" Now check what's on the previous line
|
||||||
|
if line =~ s:AdaBlockStart || line =~ '(\s*$'
|
||||||
|
" Check for false matches to AdaBlockStart
|
||||||
|
let false_match = 0
|
||||||
|
if line =~ '^\s*\(procedure\|function\|package\)\>.*\<is\s*new\>'
|
||||||
|
" Generic instantiation
|
||||||
|
let false_match = 1
|
||||||
|
elseif line =~ ')\s*;\s*$' || line =~ '^\([^(]*([^)]*)\)*[^(]*;\s*$'
|
||||||
|
" forward declaration
|
||||||
|
let false_match = 1
|
||||||
|
endif
|
||||||
|
" Move indent in
|
||||||
|
if ! false_match
|
||||||
|
let ind = ind + shiftwidth()
|
||||||
|
endif
|
||||||
|
elseif line =~ '^\s*\(case\|exception\)\>'
|
||||||
|
" Move indent in twice (next 'when' will move back)
|
||||||
|
let ind = ind + 2 * shiftwidth()
|
||||||
|
elseif line =~ '^\s*end\s*record\>'
|
||||||
|
" Move indent back to tallying 'type' preceeding the 'record'.
|
||||||
|
" Allow indent to be equal to 'end record's.
|
||||||
|
let ind = s:MainBlockIndent( ind+shiftwidth(), lnum, 'type\>', '' )
|
||||||
|
elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$'
|
||||||
|
" Revert to indent of line that started this parenthesis pair
|
||||||
|
exe lnum
|
||||||
|
exe 'normal! $F)%'
|
||||||
|
if getline('.') =~ '^\s*('
|
||||||
|
" Dire layout - use previous indent (could check for g:ada#Comment here)
|
||||||
|
let ind = indent( prevnonblank( line('.')-1 ) )
|
||||||
|
else
|
||||||
|
let ind = indent('.')
|
||||||
|
endif
|
||||||
|
exe v:lnum
|
||||||
|
elseif line =~ '[.=(]\s*$'
|
||||||
|
" A statement continuation - move in one
|
||||||
|
let ind = ind + shiftwidth()
|
||||||
|
elseif line =~ '^\s*new\>'
|
||||||
|
" Multiple line generic instantiation ('package blah is\nnew thingy')
|
||||||
|
let ind = s:StatementIndent( ind - shiftwidth(), lnum )
|
||||||
|
elseif line =~ ';\s*$'
|
||||||
|
" Statement end (but not 'end' ) - try to find current statement-start indent
|
||||||
|
let ind = s:StatementIndent( ind, lnum )
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Check for potential argument list on next line
|
||||||
|
let continuation = (line =~ '[A-Za-z0-9_]\s*$')
|
||||||
|
|
||||||
|
|
||||||
|
" Check current line; search for simplistic matching start-of-block
|
||||||
|
let line = getline(v:lnum)
|
||||||
|
if line =~ '^\s*#'
|
||||||
|
" Start of line for ada-pp
|
||||||
|
let ind = 0
|
||||||
|
elseif continuation && line =~ '^\s*('
|
||||||
|
" Don't do this if we've already indented due to the previous line
|
||||||
|
if ind == initind
|
||||||
|
let ind = ind + shiftwidth()
|
||||||
|
endif
|
||||||
|
elseif line =~ '^\s*\(begin\|is\)\>'
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' )
|
||||||
|
elseif line =~ '^\s*record\>'
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + shiftwidth()
|
||||||
|
elseif line =~ '^\s*\(else\|elsif\)\>'
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
|
||||||
|
elseif line =~ '^\s*when\>'
|
||||||
|
" Align 'when' one /in/ from matching block start
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + shiftwidth()
|
||||||
|
elseif line =~ '^\s*end\>\s*\<if\>'
|
||||||
|
" End of if statements
|
||||||
|
let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' )
|
||||||
|
elseif line =~ '^\s*end\>\s*\<loop\>'
|
||||||
|
" End of loops
|
||||||
|
let ind = s:EndBlockIndent( ind, lnum, '\(\(while\|for\)\>.*\)\?\<loop\>', 'end\>\s*\<loop\>' )
|
||||||
|
elseif line =~ '^\s*end\>\s*\<record\>'
|
||||||
|
" End of records
|
||||||
|
let ind = s:EndBlockIndent( ind, lnum, '\(type\>.*\)\=\<record\>', 'end\>\s*\<record\>' )
|
||||||
|
elseif line =~ '^\s*end\>\s*\<procedure\>'
|
||||||
|
" End of procedures
|
||||||
|
let ind = s:EndBlockIndent( ind, lnum, 'procedure\>.*\<is\>', 'end\>\s*\<procedure\>' )
|
||||||
|
elseif line =~ '^\s*end\>\s*\<case\>'
|
||||||
|
" End of case statement
|
||||||
|
let ind = s:EndBlockIndent( ind, lnum, 'case\>.*\<is\>', 'end\>\s*\<case\>' )
|
||||||
|
elseif line =~ '^\s*end\>'
|
||||||
|
" General case for end
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, '\(if\|while\|for\|loop\|accept\|begin\|record\|case\|exception\|package\)\>', '' )
|
||||||
|
elseif line =~ '^\s*exception\>'
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, 'begin\>', '' )
|
||||||
|
elseif line =~ '^\s*then\>'
|
||||||
|
let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfunction GetAdaIndent
|
||||||
|
|
||||||
|
let &cpo = s:keepcpo
|
||||||
|
unlet s:keepcpo
|
||||||
|
|
||||||
|
finish " 1}}}
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Copyright (C) 2006 Martin Krischik
|
||||||
|
"
|
||||||
|
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
|
||||||
|
" vim: foldmethod=marker
|
||||||
|
|
||||||
|
endif
|
||||||
16
indent/ant.vim
Normal file
16
indent/ant.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ant') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: ANT files
|
||||||
|
" Maintainer: David Fishburn <fishburn@ianywhere.com>
|
||||||
|
" Last Change: Thu May 15 2003 10:02:54 PM
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Use XML formatting rules
|
||||||
|
runtime! indent/xml.vim
|
||||||
|
|
||||||
|
endif
|
||||||
15
indent/automake.vim
Normal file
15
indent/automake.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'automake') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: automake
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2006-04-19
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" same as makefile indenting for now.
|
||||||
|
runtime! indent/make.vim
|
||||||
|
|
||||||
|
endif
|
||||||
236
indent/awk.vim
Normal file
236
indent/awk.vim
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'awk') == -1
|
||||||
|
|
||||||
|
" vim: set sw=3 sts=3:
|
||||||
|
|
||||||
|
" Awk indent script. It can handle multi-line statements and expressions.
|
||||||
|
" It works up to the point where the distinction between correct/incorrect
|
||||||
|
" and personal taste gets fuzzy. Drop me an e-mail for bug reports and
|
||||||
|
" reasonable style suggestions.
|
||||||
|
"
|
||||||
|
" Bugs:
|
||||||
|
" =====
|
||||||
|
" - Some syntax errors may cause erratic indentation.
|
||||||
|
" - Same for very unusual but syntacticly correct use of { }
|
||||||
|
" - In some cases it's confused by the use of ( and { in strings constants
|
||||||
|
" - This version likes the closing brace of a multiline pattern-action be on
|
||||||
|
" character position 1 before the following pattern-action combination is
|
||||||
|
" formatted
|
||||||
|
|
||||||
|
" Author:
|
||||||
|
" =======
|
||||||
|
" Erik Janssen, ejanssen@itmatters.nl
|
||||||
|
"
|
||||||
|
" History:
|
||||||
|
" ========
|
||||||
|
" 26-04-2002 Got initial version working reasonably well
|
||||||
|
" 29-04-2002 Fixed problems in function headers and max line width
|
||||||
|
" Added support for two-line if's without curly braces
|
||||||
|
" Fixed hang: 2011 Aug 31
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal indentexpr=GetAwkIndent()
|
||||||
|
" Mmm, copied from the tcl indent program. Is this okay?
|
||||||
|
setlocal indentkeys-=:,0#
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetAwkIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" This function contains a lot of exit points. It checks for simple cases
|
||||||
|
" first to get out of the function as soon as possible, thereby reducing the
|
||||||
|
" number of possibilities later on in the difficult parts
|
||||||
|
|
||||||
|
function! GetAwkIndent()
|
||||||
|
|
||||||
|
" Find previous line and get its indentation
|
||||||
|
let prev_lineno = s:Get_prev_line( v:lnum )
|
||||||
|
if prev_lineno == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let prev_data = getline( prev_lineno )
|
||||||
|
let ind = indent( prev_lineno )
|
||||||
|
|
||||||
|
" Increase indent if the previous line contains an opening brace. Search
|
||||||
|
" for this brace the hard way to prevent errors if the previous line is a
|
||||||
|
" 'pattern { action }' (simple check match on /{/ increases the indent then)
|
||||||
|
|
||||||
|
if s:Get_brace_balance( prev_data, '{', '}' ) > 0
|
||||||
|
return ind + shiftwidth()
|
||||||
|
endif
|
||||||
|
|
||||||
|
let brace_balance = s:Get_brace_balance( prev_data, '(', ')' )
|
||||||
|
|
||||||
|
" If prev line has positive brace_balance and starts with a word (keyword
|
||||||
|
" or function name), align the current line on the first '(' of the prev
|
||||||
|
" line
|
||||||
|
|
||||||
|
if brace_balance > 0 && s:Starts_with_word( prev_data )
|
||||||
|
return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If this line starts with an open brace bail out now before the line
|
||||||
|
" continuation checks.
|
||||||
|
|
||||||
|
if getline( v:lnum ) =~ '^\s*{'
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If prev line seems to be part of multiline statement:
|
||||||
|
" 1. Prev line is first line of a multiline statement
|
||||||
|
" -> attempt to indent on first ' ' or '(' of prev line, just like we
|
||||||
|
" indented the positive brace balance case above
|
||||||
|
" 2. Prev line is not first line of a multiline statement
|
||||||
|
" -> copy indent of prev line
|
||||||
|
|
||||||
|
let continue_mode = s:Seems_continuing( prev_data )
|
||||||
|
if continue_mode > 0
|
||||||
|
if s:Seems_continuing( getline(s:Get_prev_line( prev_lineno )) )
|
||||||
|
" Case 2
|
||||||
|
return ind
|
||||||
|
else
|
||||||
|
" Case 1
|
||||||
|
if continue_mode == 1
|
||||||
|
" Need continuation due to comma, backslash, etc
|
||||||
|
return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
|
||||||
|
else
|
||||||
|
" if/for/while without '{'
|
||||||
|
return ind + shiftwidth()
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If the previous line doesn't need continuation on the current line we are
|
||||||
|
" on the start of a new statement. We have to make sure we align with the
|
||||||
|
" previous statement instead of just the previous line. This is a bit
|
||||||
|
" complicated because the previous statement might be multi-line.
|
||||||
|
"
|
||||||
|
" The start of a multiline statement can be found by:
|
||||||
|
"
|
||||||
|
" 1 If the previous line contains closing braces and has negative brace
|
||||||
|
" balance, search backwards until cumulative brace balance becomes zero,
|
||||||
|
" take indent of that line
|
||||||
|
" 2 If the line before the previous needs continuation search backward
|
||||||
|
" until that's not the case anymore. Take indent of one line down.
|
||||||
|
|
||||||
|
" Case 1
|
||||||
|
if prev_data =~ ')' && brace_balance < 0
|
||||||
|
while brace_balance != 0 && prev_lineno > 0
|
||||||
|
let prev_lineno = s:Get_prev_line( prev_lineno )
|
||||||
|
let prev_data = getline( prev_lineno )
|
||||||
|
let brace_balance=brace_balance+s:Get_brace_balance(prev_data,'(',')' )
|
||||||
|
endwhile
|
||||||
|
let ind = indent( prev_lineno )
|
||||||
|
else
|
||||||
|
" Case 2
|
||||||
|
if s:Seems_continuing( getline( prev_lineno - 1 ) )
|
||||||
|
let prev_lineno = prev_lineno - 2
|
||||||
|
let prev_data = getline( prev_lineno )
|
||||||
|
while prev_lineno > 0 && (s:Seems_continuing( prev_data ) > 0)
|
||||||
|
let prev_lineno = s:Get_prev_line( prev_lineno )
|
||||||
|
let prev_data = getline( prev_lineno )
|
||||||
|
endwhile
|
||||||
|
let ind = indent( prev_lineno + 1 )
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Decrease indent if this line contains a '}'.
|
||||||
|
if getline(v:lnum) =~ '^\s*}'
|
||||||
|
let ind = ind - shiftwidth()
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find the open and close braces in this line and return how many more open-
|
||||||
|
" than close braces there are. It's also used to determine cumulative balance
|
||||||
|
" across multiple lines.
|
||||||
|
|
||||||
|
function! s:Get_brace_balance( line, b_open, b_close )
|
||||||
|
let line2 = substitute( a:line, a:b_open, "", "g" )
|
||||||
|
let openb = strlen( a:line ) - strlen( line2 )
|
||||||
|
let line3 = substitute( line2, a:b_close, "", "g" )
|
||||||
|
let closeb = strlen( line2 ) - strlen( line3 )
|
||||||
|
return openb - closeb
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find out whether the line starts with a word (i.e. keyword or function
|
||||||
|
" call). Might need enhancements here.
|
||||||
|
|
||||||
|
function! s:Starts_with_word( line )
|
||||||
|
if a:line =~ '^\s*[a-zA-Z_0-9]\+\s*('
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find the length of the first word in a line. This is used to be able to
|
||||||
|
" align a line relative to the 'print ' or 'if (' on the previous line in case
|
||||||
|
" such a statement spans multiple lines.
|
||||||
|
" Precondition: only to be used on lines where 'Starts_with_word' returns 1.
|
||||||
|
|
||||||
|
function! s:First_word_len( line )
|
||||||
|
let white_end = matchend( a:line, '^\s*' )
|
||||||
|
if match( a:line, '^\s*func' ) != -1
|
||||||
|
let word_end = matchend( a:line, '[a-z]\+\s\+[a-zA-Z_0-9]\+[ (]*' )
|
||||||
|
else
|
||||||
|
let word_end = matchend( a:line, '[a-zA-Z_0-9]\+[ (]*' )
|
||||||
|
endif
|
||||||
|
return word_end - white_end
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Determine if 'line' completes a statement or is continued on the next line.
|
||||||
|
" This one is far from complete and accepts illegal code. Not important for
|
||||||
|
" indenting, however.
|
||||||
|
|
||||||
|
function! s:Seems_continuing( line )
|
||||||
|
" Unfinished lines
|
||||||
|
if a:line =~ '\(--\|++\)\s*$'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
if a:line =~ '[\\,\|\&\+\-\*\%\^]\s*$'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
" if/for/while (cond) eol
|
||||||
|
if a:line =~ '^\s*\(if\|while\|for\)\s*(.*)\s*$' || a:line =~ '^\s*else\s*'
|
||||||
|
return 2
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Get previous relevant line. Search back until a line is that is no
|
||||||
|
" comment or blank and return the line number
|
||||||
|
|
||||||
|
function! s:Get_prev_line( lineno )
|
||||||
|
let lnum = a:lineno - 1
|
||||||
|
let data = getline( lnum )
|
||||||
|
while lnum > 0 && (data =~ '^\s*#' || data =~ '^\s*$')
|
||||||
|
let lnum = lnum - 1
|
||||||
|
let data = getline( lnum )
|
||||||
|
endwhile
|
||||||
|
return lnum
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" This function checks whether an indented line exceeds a maximum linewidth
|
||||||
|
" (hardcoded 80). If so and it is possible to stay within 80 positions (or
|
||||||
|
" limit num of characters beyond linewidth) by decreasing the indent (keeping
|
||||||
|
" it > base_indent), do so.
|
||||||
|
|
||||||
|
function! s:Safe_indent( base, wordlen, this_line )
|
||||||
|
let line_base = matchend( a:this_line, '^\s*' )
|
||||||
|
let line_len = strlen( a:this_line ) - line_base
|
||||||
|
let indent = a:base
|
||||||
|
if (indent + a:wordlen + line_len) > 80
|
||||||
|
" Simple implementation good enough for the time being
|
||||||
|
let indent = indent + 3
|
||||||
|
endif
|
||||||
|
return indent + a:wordlen
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -23,18 +23,19 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
|||||||
" Language: GraphQL
|
" Language: GraphQL
|
||||||
" Maintainer: Jon Parise <jon@indelible.org>
|
" Maintainer: Jon Parise <jon@indelible.org>
|
||||||
|
|
||||||
if exists('b:did_indent')
|
" Set our local options if indentation hasn't already been set up.
|
||||||
finish
|
" This generally means we've been detected as the primary filetype.
|
||||||
|
if !exists('b:did_indent')
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal nocindent
|
||||||
|
setlocal nolisp
|
||||||
|
setlocal nosmartindent
|
||||||
|
|
||||||
|
setlocal indentexpr=GetGraphQLIndent()
|
||||||
|
setlocal indentkeys=0{,0},0),0[,0],0#,!^F,o,O
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
endif
|
endif
|
||||||
let b:did_indent = 1
|
|
||||||
|
|
||||||
setlocal autoindent
|
|
||||||
setlocal nocindent
|
|
||||||
setlocal nolisp
|
|
||||||
setlocal nosmartindent
|
|
||||||
|
|
||||||
setlocal indentexpr=GetGraphQLIndent()
|
|
||||||
setlocal indentkeys=0{,0},0),0[,0],0#,!^F,o,O
|
|
||||||
|
|
||||||
" If our indentation function already exists, we have nothing more to do.
|
" If our indentation function already exists, we have nothing more to do.
|
||||||
if exists('*GetGraphQLIndent')
|
if exists('*GetGraphQLIndent')
|
||||||
@@ -46,7 +47,7 @@ set cpoptions&vim
|
|||||||
|
|
||||||
" Check if the character at lnum:col is inside a string.
|
" Check if the character at lnum:col is inside a string.
|
||||||
function s:InString(lnum, col)
|
function s:InString(lnum, col)
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') is# 'graphqlString'
|
return synIDattr(synID(a:lnum, a:col, 1), 'name') ==# 'graphqlString'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function GetGraphQLIndent()
|
function GetGraphQLIndent()
|
||||||
|
|||||||
534
packages.yaml
534
packages.yaml
@@ -1,4 +1,81 @@
|
|||||||
---
|
---
|
||||||
|
name: 8th
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/8th.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: 8th
|
||||||
|
extensions:
|
||||||
|
- 8th
|
||||||
|
---
|
||||||
|
name: a2ps
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/a2ps.vim'
|
||||||
|
after:
|
||||||
|
- haproxy
|
||||||
|
filetypes:
|
||||||
|
- name: a2ps
|
||||||
|
filenames:
|
||||||
|
- '*/etc/a2ps.cfg'
|
||||||
|
- '*/etc/a2ps/*.cfg'
|
||||||
|
- a2psrc
|
||||||
|
- .a2psrc
|
||||||
|
---
|
||||||
|
name: a65
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/a65.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: a65
|
||||||
|
extensions:
|
||||||
|
- a65
|
||||||
|
---
|
||||||
|
name: aap
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/aap.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: aap
|
||||||
|
extensions:
|
||||||
|
- aap
|
||||||
|
---
|
||||||
|
name: abap
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/abap.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: abap
|
||||||
|
extensions:
|
||||||
|
- abap
|
||||||
|
---
|
||||||
|
name: abaqus
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/abaqus.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: abaqus
|
||||||
|
extensions:
|
||||||
|
- inp
|
||||||
|
---
|
||||||
|
name: abc
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/abc.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: abc
|
||||||
|
extensions:
|
||||||
|
- abc
|
||||||
|
---
|
||||||
|
name: abel
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/abel.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: abel
|
||||||
|
extensions:
|
||||||
|
- abl
|
||||||
|
---
|
||||||
|
name: acedb
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/acedb.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: acedb
|
||||||
|
extensions:
|
||||||
|
- wrm
|
||||||
|
---
|
||||||
name: acpiasl
|
name: acpiasl
|
||||||
remote: martinlroth/vim-acpi-asl
|
remote: martinlroth/vim-acpi-asl
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -7,6 +84,78 @@ filetypes:
|
|||||||
- asl
|
- asl
|
||||||
- dsl
|
- dsl
|
||||||
---
|
---
|
||||||
|
name: ada
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/ada.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: ada
|
||||||
|
extensions:
|
||||||
|
- adb
|
||||||
|
- ads
|
||||||
|
- ada
|
||||||
|
- gpr
|
||||||
|
---
|
||||||
|
name: ahdl
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/ahdl.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: ahdl
|
||||||
|
extensions:
|
||||||
|
- tdf
|
||||||
|
---
|
||||||
|
name: aidl
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/aidl.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: aidl
|
||||||
|
extensions:
|
||||||
|
- aidl
|
||||||
|
---
|
||||||
|
name: alsaconf
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/alsaconf.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: alsaconf
|
||||||
|
filenames:
|
||||||
|
- .asoundrc
|
||||||
|
- '*/usr/share/alsa/alsa.conf'
|
||||||
|
- '*/etc/asound.conf'
|
||||||
|
---
|
||||||
|
name: aml
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/aml.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: aml
|
||||||
|
extensions:
|
||||||
|
- aml
|
||||||
|
---
|
||||||
|
name: ampl
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/ampl.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: ampl
|
||||||
|
extensions:
|
||||||
|
- run
|
||||||
|
---
|
||||||
|
name: ant
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/ant.vim'
|
||||||
|
after: xml
|
||||||
|
filetypes:
|
||||||
|
- name: ant
|
||||||
|
filenames:
|
||||||
|
- build.xml
|
||||||
|
---
|
||||||
|
name: apache
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/apache.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: apache
|
||||||
|
filenames:
|
||||||
|
- .htaccess
|
||||||
|
- '*/etc/httpd/*.conf'
|
||||||
|
- '*/etc/apache2/sites-*/*.com'
|
||||||
|
---
|
||||||
name: apiblueprint
|
name: apiblueprint
|
||||||
remote: sheerun/apiblueprint.vim
|
remote: sheerun/apiblueprint.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -15,19 +164,49 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: applescript
|
name: applescript
|
||||||
remote: mityu/vim-applescript
|
remote: mityu/vim-applescript
|
||||||
dirs: :syntax
|
dirs:
|
||||||
|
- syntax
|
||||||
|
- indent
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: applescript
|
- name: applescript
|
||||||
linguist: AppleScript
|
linguist: AppleScript
|
||||||
---
|
---
|
||||||
|
name: aptconf
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/aptconf.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: aptconf
|
||||||
|
filenames:
|
||||||
|
- apt.conf
|
||||||
|
- '*/.aptitude/config'
|
||||||
|
- '*/etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf}'
|
||||||
|
---
|
||||||
|
name: arch
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/arch.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: arch
|
||||||
|
filenames:
|
||||||
|
- .arch-inventory
|
||||||
|
- =tagging-method
|
||||||
|
---
|
||||||
name: arduino
|
name: arduino
|
||||||
remote: sudar/vim-arduino-syntax
|
remote: sudar/vim-arduino-syntax
|
||||||
|
after: c/c++
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: arduino
|
- name: arduino
|
||||||
linguist: Processing
|
linguist: Processing
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- ino
|
- ino
|
||||||
---
|
---
|
||||||
|
name: art
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/art.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: art
|
||||||
|
extensions:
|
||||||
|
- art
|
||||||
|
---
|
||||||
name: asciidoc
|
name: asciidoc
|
||||||
remote: asciidoc/vim-asciidoc
|
remote: asciidoc/vim-asciidoc
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -40,6 +219,79 @@ filetypes:
|
|||||||
- name: autohotkey
|
- name: autohotkey
|
||||||
linguist: AutoHotkey
|
linguist: AutoHotkey
|
||||||
---
|
---
|
||||||
|
name: automake
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/automake.vim'
|
||||||
|
after: elf
|
||||||
|
filetypes:
|
||||||
|
- name: automake
|
||||||
|
filenames:
|
||||||
|
- '[Mm]akefile.am'
|
||||||
|
- GNUmakefile.am
|
||||||
|
---
|
||||||
|
name: asn
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/asn.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: asn
|
||||||
|
extensions:
|
||||||
|
- asn
|
||||||
|
- asn1
|
||||||
|
---
|
||||||
|
name: aspvbs
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
globs:
|
||||||
|
- '**/aspvbs.vim'
|
||||||
|
dependencies:
|
||||||
|
filetypes:
|
||||||
|
- name: aspvbs
|
||||||
|
extensions:
|
||||||
|
- asa
|
||||||
|
- asp
|
||||||
|
---
|
||||||
|
name: aspperl
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
globs:
|
||||||
|
- '**/aspperl.vim'
|
||||||
|
dependencies:
|
||||||
|
filetypes:
|
||||||
|
- name: aspperl
|
||||||
|
extensions:
|
||||||
|
- asp
|
||||||
|
---
|
||||||
|
name: atlas
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/atlas.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: atlas
|
||||||
|
extensions:
|
||||||
|
- atl
|
||||||
|
- as
|
||||||
|
---
|
||||||
|
name: autoit
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/autoit.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: autoit
|
||||||
|
extensions:
|
||||||
|
- au3
|
||||||
|
---
|
||||||
|
name: ave
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/ave.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: ave
|
||||||
|
extensions:
|
||||||
|
- ave
|
||||||
|
---
|
||||||
|
name: awk
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/awk.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: awk
|
||||||
|
extensions:
|
||||||
|
- awk
|
||||||
|
---
|
||||||
name: c/c++
|
name: c/c++
|
||||||
remote: vim-jp/vim-cpp
|
remote: vim-jp/vim-cpp
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -47,11 +299,9 @@ filetypes:
|
|||||||
linguist: C
|
linguist: C
|
||||||
- name: cpp
|
- name: cpp
|
||||||
linguist: C++
|
linguist: C++
|
||||||
---
|
ignored_extensions:
|
||||||
name: c++11
|
# conflicts with more popular reason, remove after heuristics work
|
||||||
remote: octol/vim-cpp-enhanced-highlight
|
- re
|
||||||
# It just adds after files for c / c++
|
|
||||||
filetypes: []
|
|
||||||
---
|
---
|
||||||
name: caddyfile
|
name: caddyfile
|
||||||
remote: isobit/vim-caddyfile
|
remote: isobit/vim-caddyfile
|
||||||
@@ -72,6 +322,11 @@ remote: guns/vim-clojure-static
|
|||||||
filetypes:
|
filetypes:
|
||||||
- name: clojure
|
- name: clojure
|
||||||
linguist: Clojure
|
linguist: Clojure
|
||||||
|
extra_extensions:
|
||||||
|
- edn
|
||||||
|
extra_filenames:
|
||||||
|
- build.boot
|
||||||
|
- profile.boot
|
||||||
---
|
---
|
||||||
name: cmake
|
name: cmake
|
||||||
remote: pboettch/vim-cmake-syntax
|
remote: pboettch/vim-cmake-syntax
|
||||||
@@ -81,16 +336,27 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: coffee-script
|
name: coffee-script
|
||||||
remote: kchmck/vim-coffee-script
|
remote: kchmck/vim-coffee-script
|
||||||
dirs: :noafter
|
ignored_dirs:
|
||||||
|
# Don't slow down html and haml files
|
||||||
|
- after
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: coffee
|
- name: coffee
|
||||||
linguist: CoffeeScript
|
linguist: CoffeeScript
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
|
# 17 results: https://github.com/search?q=extension%3Acoffeekup+html&type=Code
|
||||||
- coffeekup
|
- coffeekup
|
||||||
|
ignored_extensions:
|
||||||
|
# Used by C#
|
||||||
|
- csx
|
||||||
|
# Used by Chuck
|
||||||
- ck
|
- ck
|
||||||
|
ignored_filenames:
|
||||||
|
# Probably mistake
|
||||||
|
- '*Cakefile'
|
||||||
- name: litcoffee
|
- name: litcoffee
|
||||||
linguist: Literate CoffeeScript
|
linguist: Literate CoffeeScript
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
|
# ? results: https://github.com/search?q=extension%3Acoffee.md+require&type=Code (probably search is broken)
|
||||||
- coffee.md
|
- coffee.md
|
||||||
---
|
---
|
||||||
name: cjsx
|
name: cjsx
|
||||||
@@ -125,8 +391,10 @@ filetypes:
|
|||||||
linguist: CSV
|
linguist: CSV
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- tsv
|
- tsv
|
||||||
- dat
|
|
||||||
- tab
|
- tab
|
||||||
|
ignored_extensions:
|
||||||
|
# This is definitely not csv-only, maybe re-enable when heuristics done
|
||||||
|
- dat
|
||||||
---
|
---
|
||||||
name: cucumber
|
name: cucumber
|
||||||
remote: tpope/vim-cucumber
|
remote: tpope/vim-cucumber
|
||||||
@@ -134,6 +402,7 @@ filetypes:
|
|||||||
- name: cucumber
|
- name: cucumber
|
||||||
linguist: Gherkin
|
linguist: Gherkin
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
|
# https://github.com/search?q=extension%3Astory+when&type=Code
|
||||||
- story
|
- story
|
||||||
---
|
---
|
||||||
name: cue
|
name: cue
|
||||||
@@ -161,19 +430,15 @@ filetypes:
|
|||||||
- name: d
|
- name: d
|
||||||
linguist: D
|
linguist: D
|
||||||
- name: dcov
|
- name: dcov
|
||||||
linguist: D
|
|
||||||
extensions:
|
extensions:
|
||||||
- lst
|
- lst
|
||||||
- name: dd
|
- name: dd
|
||||||
linguist: D
|
|
||||||
extensions:
|
extensions:
|
||||||
- dd
|
- dd
|
||||||
- name: ddoc
|
- name: ddoc
|
||||||
linguist: D
|
|
||||||
extensions:
|
extensions:
|
||||||
- ddoc
|
- ddoc
|
||||||
- name: dsdl
|
- name: dsdl
|
||||||
linguist: D
|
|
||||||
extensions:
|
extensions:
|
||||||
- sdl
|
- sdl
|
||||||
---
|
---
|
||||||
@@ -192,13 +457,25 @@ filetypes:
|
|||||||
filenames:
|
filenames:
|
||||||
- 'docker-compose*.yaml'
|
- 'docker-compose*.yaml'
|
||||||
- 'docker-compose*.yml'
|
- 'docker-compose*.yml'
|
||||||
|
ignored_filenames:
|
||||||
|
# Probably mistakes?
|
||||||
|
- 'docker-compose*.yaml*'
|
||||||
|
- 'docker-compose*.yml*'
|
||||||
|
---
|
||||||
|
name: elf
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/elf.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: elf
|
||||||
|
extensions:
|
||||||
|
- am
|
||||||
---
|
---
|
||||||
name: elixir
|
name: elixir
|
||||||
remote: elixir-lang/vim-elixir
|
remote: elixir-lang/vim-elixir
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: elixir
|
- name: elixir
|
||||||
linguist: Elixir
|
linguist: Elixir
|
||||||
- name: elixir
|
- name: eelixir
|
||||||
linguist: HTML+EEX
|
linguist: HTML+EEX
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- leex
|
- leex
|
||||||
@@ -221,6 +498,7 @@ filetypes:
|
|||||||
- name: emblem
|
- name: emblem
|
||||||
extensions:
|
extensions:
|
||||||
- emblem
|
- emblem
|
||||||
|
- em
|
||||||
---
|
---
|
||||||
name: erlang
|
name: erlang
|
||||||
remote: vim-erlang/vim-erlang-runtime
|
remote: vim-erlang/vim-erlang-runtime
|
||||||
@@ -260,16 +538,30 @@ filetypes:
|
|||||||
extensions:
|
extensions:
|
||||||
- fbs
|
- fbs
|
||||||
---
|
---
|
||||||
|
name: forth
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/forth.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: forth
|
||||||
|
extensions:
|
||||||
|
- fs
|
||||||
|
- ft
|
||||||
|
- fth
|
||||||
|
---
|
||||||
name: fsharp
|
name: fsharp
|
||||||
remote: ionide/Ionide-vim
|
remote: ionide/Ionide-vim
|
||||||
dirs: :basic
|
ignored_dirs:
|
||||||
|
- ftplugin
|
||||||
|
after: glsl
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: fsharp
|
- name: fsharp
|
||||||
linguist: F#
|
linguist: F#
|
||||||
---
|
---
|
||||||
name: gdscript
|
name: gdscript
|
||||||
remote: calviken/vim-gdscript3
|
remote: calviken/vim-gdscript3
|
||||||
dirs: :syntax
|
dirs:
|
||||||
|
- syntax
|
||||||
|
- indent
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: gdscript3
|
- name: gdscript3
|
||||||
linguist: GDScript
|
linguist: GDScript
|
||||||
@@ -283,7 +575,7 @@ filetypes:
|
|||||||
- "*.git/config"
|
- "*.git/config"
|
||||||
- "*/.config/git/config"
|
- "*/.config/git/config"
|
||||||
- "*.git/modules/**/config"
|
- "*.git/modules/**/config"
|
||||||
- gitconfig
|
- '.gitmodules'
|
||||||
- name: gitrebase
|
- name: gitrebase
|
||||||
filenames:
|
filenames:
|
||||||
- git-rebase-todo
|
- git-rebase-todo
|
||||||
@@ -292,14 +584,13 @@ filetypes:
|
|||||||
- ".gitsendemail.*"
|
- ".gitsendemail.*"
|
||||||
- name: gitcommit
|
- name: gitcommit
|
||||||
filenames:
|
filenames:
|
||||||
- COMMIT_EDIT_MSG
|
- '*.git/{,modules/**/,worktrees/*/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG'
|
||||||
- TAG_EDIT_MSG
|
|
||||||
- MERGE_MSG
|
|
||||||
- MSG
|
|
||||||
---
|
---
|
||||||
name: glsl
|
name: glsl
|
||||||
remote: tikhomirov/vim-glsl
|
remote: tikhomirov/vim-glsl
|
||||||
dirs: :noafter
|
ignored_dirs:
|
||||||
|
# don't slow down html and haml files
|
||||||
|
- after
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: glsl
|
- name: glsl
|
||||||
linguist: GLSL
|
linguist: GLSL
|
||||||
@@ -321,7 +612,11 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: go
|
name: go
|
||||||
remote: fatih/vim-go
|
remote: fatih/vim-go
|
||||||
dirs: :go
|
ignored_dirs:
|
||||||
|
- autoload
|
||||||
|
- ftplugin
|
||||||
|
extra_dirs:
|
||||||
|
- autoload/go/config.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: go
|
- name: go
|
||||||
linguist: Go
|
linguist: Go
|
||||||
@@ -334,7 +629,6 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: graphql
|
name: graphql
|
||||||
remote: jparise/vim-graphql
|
remote: jparise/vim-graphql
|
||||||
dirs: :all
|
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: graphql
|
- name: graphql
|
||||||
linguist: GraphQL
|
linguist: GraphQL
|
||||||
@@ -345,6 +639,17 @@ filetypes:
|
|||||||
- name: groovy
|
- name: groovy
|
||||||
linguist: Gradle
|
linguist: Gradle
|
||||||
---
|
---
|
||||||
|
name: grub
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/grub.vim'
|
||||||
|
after: dlang
|
||||||
|
filetypes:
|
||||||
|
- name: grub
|
||||||
|
filenames:
|
||||||
|
- '*/boot/grub/menu.lst'
|
||||||
|
- '*/boot/grub/grub.conf'
|
||||||
|
- '*/etc/grub.conf'
|
||||||
|
---
|
||||||
name: haml
|
name: haml
|
||||||
remote: sheerun/vim-haml
|
remote: sheerun/vim-haml
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -364,12 +669,17 @@ filetypes:
|
|||||||
- hjs
|
- hjs
|
||||||
- mustache
|
- mustache
|
||||||
- njk
|
- njk
|
||||||
|
- hogan
|
||||||
|
- hdbs
|
||||||
|
- hb
|
||||||
---
|
---
|
||||||
name: haproxy
|
name: haproxy
|
||||||
remote: CH-DanReif/haproxy.vim
|
remote: CH-DanReif/haproxy.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: haproxy
|
- name: haproxy
|
||||||
linguist: HAProxy
|
linguist: HAProxy
|
||||||
|
extra_filenames:
|
||||||
|
- 'haproxy*.c*'
|
||||||
---
|
---
|
||||||
name: haskell
|
name: haskell
|
||||||
remote: neovimhaskell/haskell-vim
|
remote: neovimhaskell/haskell-vim
|
||||||
@@ -395,14 +705,18 @@ filetypes:
|
|||||||
- nomad
|
- nomad
|
||||||
extra_filenames:
|
extra_filenames:
|
||||||
- Appfile
|
- Appfile
|
||||||
|
ignored_extensions:
|
||||||
|
# handled by vim-terraform
|
||||||
|
- tf
|
||||||
|
- tfvars
|
||||||
---
|
---
|
||||||
name: hive
|
name: hive
|
||||||
remote: zebradil/hive.vim
|
remote: zebradil/hive.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: hive
|
- name: hive
|
||||||
linguist: HiveQL
|
linguist: HiveQL
|
||||||
- name: hive
|
extra_extensions:
|
||||||
linguist: HiveQL
|
- ql
|
||||||
---
|
---
|
||||||
name: html5
|
name: html5
|
||||||
remote: othree/html5.vim
|
remote: othree/html5.vim
|
||||||
@@ -417,6 +731,8 @@ filetypes:
|
|||||||
filenames:
|
filenames:
|
||||||
- i3.config
|
- i3.config
|
||||||
- i3config
|
- i3config
|
||||||
|
- .i3.config
|
||||||
|
- .i3config
|
||||||
extensions:
|
extensions:
|
||||||
- i3.config
|
- i3.config
|
||||||
- i3config
|
- i3config
|
||||||
@@ -447,7 +763,9 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: javascript
|
name: javascript
|
||||||
remote: pangloss/vim-javascript
|
remote: pangloss/vim-javascript
|
||||||
dirs: :javascript
|
ignored_dirs:
|
||||||
|
# we don't want eslint compiler, see #521
|
||||||
|
- compiler
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: javascript
|
- name: javascript
|
||||||
linguist: JavaScript
|
linguist: JavaScript
|
||||||
@@ -463,6 +781,7 @@ filetypes:
|
|||||||
- jenkinsfile
|
- jenkinsfile
|
||||||
- Jenkinsfile
|
- Jenkinsfile
|
||||||
filenames:
|
filenames:
|
||||||
|
- Jenkinsfile
|
||||||
- Jenkinsfile*
|
- Jenkinsfile*
|
||||||
---
|
---
|
||||||
name: jinja
|
name: jinja
|
||||||
@@ -483,6 +802,8 @@ filetypes:
|
|||||||
linguist: JSONiq
|
linguist: JSONiq
|
||||||
extra_filenames:
|
extra_filenames:
|
||||||
- ".jqrc"
|
- ".jqrc"
|
||||||
|
ignored_filenames:
|
||||||
|
- ".jqrc*"
|
||||||
---
|
---
|
||||||
name: json5
|
name: json5
|
||||||
remote: GutenYe/json5.vim
|
remote: GutenYe/json5.vim
|
||||||
@@ -512,13 +833,14 @@ filetypes:
|
|||||||
linguist: EJS
|
linguist: EJS
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- jst
|
- jst
|
||||||
|
- ect
|
||||||
|
ignored_extensions:
|
||||||
|
# I haven't found reference to them
|
||||||
- djs
|
- djs
|
||||||
- hamljs
|
- hamljs
|
||||||
- ect
|
|
||||||
---
|
---
|
||||||
name: jsx
|
name: jsx
|
||||||
remote: MaxMEllon/vim-jsx-pretty
|
remote: MaxMEllon/vim-jsx-pretty
|
||||||
dirs: :all
|
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: javascriptreact
|
- name: javascriptreact
|
||||||
linguist: JSX
|
linguist: JSX
|
||||||
@@ -537,7 +859,8 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: ledger
|
name: ledger
|
||||||
remote: ledger/vim-ledger
|
remote: ledger/vim-ledger
|
||||||
dirs: :basic
|
ignored_dirs:
|
||||||
|
- ftplugin
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: ledger
|
- name: ledger
|
||||||
extensions:
|
extensions:
|
||||||
@@ -547,7 +870,9 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: less
|
name: less
|
||||||
remote: groenewege/vim-less
|
remote: groenewege/vim-less
|
||||||
dirs: :noafter
|
ignored_dirs:
|
||||||
|
# We don't want to slow down .html files
|
||||||
|
- after
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: less
|
- name: less
|
||||||
linguist: Less
|
linguist: Less
|
||||||
@@ -579,8 +904,10 @@ filetypes:
|
|||||||
- name: log
|
- name: log
|
||||||
extensions:
|
extensions:
|
||||||
- log
|
- log
|
||||||
|
- LOG
|
||||||
filenames:
|
filenames:
|
||||||
- '*_log'
|
- '*_log'
|
||||||
|
- '*_LOG'
|
||||||
---
|
---
|
||||||
name: lua
|
name: lua
|
||||||
remote: tbastos/vim-lua
|
remote: tbastos/vim-lua
|
||||||
@@ -588,6 +915,16 @@ filetypes:
|
|||||||
- name: lua
|
- name: lua
|
||||||
linguist: Lua
|
linguist: Lua
|
||||||
---
|
---
|
||||||
|
name: m4
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/m4.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: m4
|
||||||
|
linguist: M4
|
||||||
|
extra_extensions:
|
||||||
|
# Autotest .at files are actually m4
|
||||||
|
- at
|
||||||
|
---
|
||||||
name: mako
|
name: mako
|
||||||
remote: sophacles/vim-bundle-mako
|
remote: sophacles/vim-bundle-mako
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -600,16 +937,21 @@ remote: voldikss/vim-mma
|
|||||||
filetypes:
|
filetypes:
|
||||||
- name: mma
|
- name: mma
|
||||||
linguist: Mathematica
|
linguist: Mathematica
|
||||||
|
extra_extensions:
|
||||||
|
- wls
|
||||||
---
|
---
|
||||||
name: markdown
|
name: markdown
|
||||||
remote: plasticboy/vim-markdown
|
remote: plasticboy/vim-markdown
|
||||||
dirs: :noafter
|
ignored_dirs:
|
||||||
|
# Disable slow folding config
|
||||||
|
- after
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: markdown
|
- name: markdown
|
||||||
linguist: Markdown
|
linguist: Markdown
|
||||||
ignored_extensions:
|
ignored_extensions:
|
||||||
# Handled by mdx extension
|
# Handled by mdx extension
|
||||||
- mdx
|
- mdx
|
||||||
|
- '{md,mdx,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx}'
|
||||||
---
|
---
|
||||||
name: mdx
|
name: mdx
|
||||||
remote: jxnblk/vim-mdx-js
|
remote: jxnblk/vim-mdx-js
|
||||||
@@ -620,7 +962,6 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: meson
|
name: meson
|
||||||
remote: mesonbuild/meson:data/syntax-highlighting/vim
|
remote: mesonbuild/meson:data/syntax-highlighting/vim
|
||||||
dirs: :all
|
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: meson
|
- name: meson
|
||||||
linguist: Meson
|
linguist: Meson
|
||||||
@@ -634,6 +975,14 @@ filetypes:
|
|||||||
- name: moon
|
- name: moon
|
||||||
linguist: MoonScript
|
linguist: MoonScript
|
||||||
---
|
---
|
||||||
|
name: murphi
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/murphi.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: murphi
|
||||||
|
extensions:
|
||||||
|
- m
|
||||||
|
---
|
||||||
name: nginx
|
name: nginx
|
||||||
remote: chr4/nginx.vim
|
remote: chr4/nginx.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -650,7 +999,8 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: nim
|
name: nim
|
||||||
remote: zah/nim.vim
|
remote: zah/nim.vim
|
||||||
dirs: :basic
|
ignored_dirs:
|
||||||
|
- ftplugin
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: nim
|
- name: nim
|
||||||
linguist: Nim
|
linguist: Nim
|
||||||
@@ -678,13 +1028,15 @@ filetypes:
|
|||||||
- mlip
|
- mlip
|
||||||
- mli.cppo
|
- mli.cppo
|
||||||
- ml.cppo
|
- ml.cppo
|
||||||
|
extra_filenames:
|
||||||
|
- .ocamlinit
|
||||||
- name: omake
|
- name: omake
|
||||||
extensions:
|
extensions:
|
||||||
- om
|
- om
|
||||||
filenames:
|
filenames:
|
||||||
- OMakefile
|
- OMakefile
|
||||||
- OMakeroot
|
- OMakeroot
|
||||||
- Omakeroot.in
|
- OMakeroot.in
|
||||||
- name: opam
|
- name: opam
|
||||||
extensions:
|
extensions:
|
||||||
- opam
|
- opam
|
||||||
@@ -694,13 +1046,33 @@ filetypes:
|
|||||||
- name: oasis
|
- name: oasis
|
||||||
filenames:
|
filenames:
|
||||||
- _oasis
|
- _oasis
|
||||||
|
- name: dune
|
||||||
|
filenames:
|
||||||
|
- jbuild
|
||||||
|
- dune
|
||||||
|
- dune-project
|
||||||
|
- dune-workspace
|
||||||
|
- name: ocamlbuild_tags
|
||||||
|
filenames:
|
||||||
|
- _tags
|
||||||
|
- name: ocpbuild
|
||||||
|
extensions:
|
||||||
|
- ocp
|
||||||
|
- name: ocpbuildroot
|
||||||
|
extensions:
|
||||||
|
- root
|
||||||
|
- name: sexplib
|
||||||
|
extensions:
|
||||||
|
- sexp
|
||||||
---
|
---
|
||||||
name: octave
|
name: octave
|
||||||
remote: McSinyx/vim-octave
|
remote: McSinyx/vim-octave
|
||||||
|
after: mathematica
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: octave
|
- name: octave
|
||||||
extensions:
|
extensions:
|
||||||
- oct
|
- oct
|
||||||
|
- m
|
||||||
---
|
---
|
||||||
name: opencl
|
name: opencl
|
||||||
remote: petRUShka/vim-opencl
|
remote: petRUShka/vim-opencl
|
||||||
@@ -722,6 +1094,8 @@ filetypes:
|
|||||||
ignored_extensions:
|
ignored_extensions:
|
||||||
# Handled by cql plugin
|
# Handled by cql plugin
|
||||||
- cql
|
- cql
|
||||||
|
# Handled by pgsql plugin
|
||||||
|
- pgsql
|
||||||
---
|
---
|
||||||
name: pgsql
|
name: pgsql
|
||||||
remote: lifepillar/pgsql.vim
|
remote: lifepillar/pgsql.vim
|
||||||
@@ -748,6 +1122,7 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: blade
|
name: blade
|
||||||
remote: jwalton512/vim-blade
|
remote: jwalton512/vim-blade
|
||||||
|
after: php
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: blade
|
- name: blade
|
||||||
linguist: Blade
|
linguist: Blade
|
||||||
@@ -769,8 +1144,9 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: powershell
|
name: powershell
|
||||||
remote: PProvost/vim-ps1
|
remote: PProvost/vim-ps1
|
||||||
|
after: xml
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: powershell
|
- name: ps1
|
||||||
linguist: PowerShell
|
linguist: PowerShell
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- pssc
|
- pssc
|
||||||
@@ -810,6 +1186,8 @@ remote: vim-python/python-syntax
|
|||||||
filetypes:
|
filetypes:
|
||||||
- name: python
|
- name: python
|
||||||
linguist: Python
|
linguist: Python
|
||||||
|
ignored_filenames:
|
||||||
|
- 'lit.*cfg'
|
||||||
---
|
---
|
||||||
name: python-indent
|
name: python-indent
|
||||||
remote: Vimjas/vim-python-pep8-indent
|
remote: Vimjas/vim-python-pep8-indent
|
||||||
@@ -831,6 +1209,10 @@ filetypes:
|
|||||||
- '*requirements.{txt,in}'
|
- '*requirements.{txt,in}'
|
||||||
- '*require.{txt,in}'
|
- '*require.{txt,in}'
|
||||||
- 'constraints.{txt,in}'
|
- 'constraints.{txt,in}'
|
||||||
|
ignored_extensions:
|
||||||
|
# Probaly a bug in plugin
|
||||||
|
- txt
|
||||||
|
- in
|
||||||
---
|
---
|
||||||
name: qmake
|
name: qmake
|
||||||
remote: artoj/qmake-syntax-vim
|
remote: artoj/qmake-syntax-vim
|
||||||
@@ -846,7 +1228,8 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: r-lang
|
name: r-lang
|
||||||
remote: vim-scripts/R.vim
|
remote: vim-scripts/R.vim
|
||||||
dirs: :basic
|
ignored_dirs:
|
||||||
|
- ftplugin
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: r
|
- name: r
|
||||||
linguist: R
|
linguist: R
|
||||||
@@ -927,9 +1310,18 @@ filetypes:
|
|||||||
- Cheffile
|
- Cheffile
|
||||||
- KitchenSink
|
- KitchenSink
|
||||||
- Routefile
|
- Routefile
|
||||||
|
- .Guardfile
|
||||||
|
- .Brewfile
|
||||||
|
- vagrantfile
|
||||||
|
- .simplecov
|
||||||
|
- '[Rr]akefile*'
|
||||||
ignored_filenames:
|
ignored_filenames:
|
||||||
# Handled by brewfile extension
|
# Handled by brewfile extension
|
||||||
- Brewfile
|
- Brewfile
|
||||||
|
- rakefile
|
||||||
|
- routefile
|
||||||
|
- thorfile
|
||||||
|
- rantfile
|
||||||
- name: eruby
|
- name: eruby
|
||||||
linguist: HTML+ERB
|
linguist: HTML+ERB
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
@@ -1080,6 +1472,8 @@ filetypes:
|
|||||||
- name: sxhkdrc
|
- name: sxhkdrc
|
||||||
extensions:
|
extensions:
|
||||||
- sxhkdrc
|
- sxhkdrc
|
||||||
|
filenames:
|
||||||
|
- sxhkdrc
|
||||||
---
|
---
|
||||||
name: systemd
|
name: systemd
|
||||||
remote: wgwoods/vim-systemd-syntax
|
remote: wgwoods/vim-systemd-syntax
|
||||||
@@ -1115,7 +1509,6 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: tmux
|
name: tmux
|
||||||
remote: ericpruitt/tmux.vim:vim
|
remote: ericpruitt/tmux.vim:vim
|
||||||
dirs: :all
|
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: tmux
|
- name: tmux
|
||||||
filenames:
|
filenames:
|
||||||
@@ -1147,6 +1540,9 @@ filetypes:
|
|||||||
linguist: Twig
|
linguist: Twig
|
||||||
ignored_extensions:
|
ignored_extensions:
|
||||||
- xml.twig
|
- xml.twig
|
||||||
|
ignored_extensions:
|
||||||
|
# already covered by .twig
|
||||||
|
- html.twig
|
||||||
- name: xml.twig
|
- name: xml.twig
|
||||||
extensions:
|
extensions:
|
||||||
- xml.twig
|
- xml.twig
|
||||||
@@ -1161,7 +1557,6 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: unison
|
name: unison
|
||||||
remote: unisonweb/unison@trunk:editor-support/vim
|
remote: unisonweb/unison@trunk:editor-support/vim
|
||||||
dirs: :all
|
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: unison
|
- name: unison
|
||||||
extensions:
|
extensions:
|
||||||
@@ -1194,19 +1589,6 @@ filetypes:
|
|||||||
- name: vcl
|
- name: vcl
|
||||||
linguist: VCL
|
linguist: VCL
|
||||||
---
|
---
|
||||||
name: vifm
|
|
||||||
remote: vifm/vifm.vim
|
|
||||||
filetypes:
|
|
||||||
- name: vifm
|
|
||||||
extensions:
|
|
||||||
- vifm
|
|
||||||
filenames:
|
|
||||||
- vifmrc
|
|
||||||
- '*vifm/colors/*'
|
|
||||||
- name: vifm-rename
|
|
||||||
filenames:
|
|
||||||
- 'vifm.rename*'
|
|
||||||
---
|
|
||||||
name: velocity
|
name: velocity
|
||||||
remote: lepture/vim-velocity
|
remote: lepture/vim-velocity
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -1214,6 +1596,14 @@ filetypes:
|
|||||||
extensions:
|
extensions:
|
||||||
- vm
|
- vm
|
||||||
---
|
---
|
||||||
|
name: vmasm
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/vmasm.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: vmasm
|
||||||
|
extensions:
|
||||||
|
- mar
|
||||||
|
---
|
||||||
name: vue
|
name: vue
|
||||||
remote: posva/vim-vue
|
remote: posva/vim-vue
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -1254,26 +1644,26 @@ filetypes:
|
|||||||
extra_filenames:
|
extra_filenames:
|
||||||
- fish_history
|
- fish_history
|
||||||
- fish_read_history
|
- fish_read_history
|
||||||
|
ignored_filenames:
|
||||||
|
- '~/.config/fish/fish_{read_,}history'
|
||||||
# Ansible needs to be after YAML
|
# Ansible needs to be after YAML
|
||||||
---
|
---
|
||||||
name: ansible
|
name: ansible
|
||||||
remote: pearofducks/ansible-vim
|
remote: pearofducks/ansible-vim
|
||||||
|
after: yaml
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: yaml.ansible
|
- name: yaml.ansible
|
||||||
extensions:
|
|
||||||
- asl
|
|
||||||
- dsl
|
|
||||||
filenames:
|
filenames:
|
||||||
- playbook.ya?ml
|
- "playbook.y{a,}ml"
|
||||||
- site.ya?ml
|
- "site.y{a,}ml"
|
||||||
- main.ya?ml
|
- "main.y{a,}ml"
|
||||||
- local.ya?ml
|
- "local.y{a,}ml"
|
||||||
- requirements.ya?ml
|
- "requirements.y{a,}ml"
|
||||||
|
- 'tasks.*.y{a,}ml'
|
||||||
|
- 'roles.*.y{a,}ml'
|
||||||
|
- 'handlers.*.y{a,}ml'
|
||||||
- 'group_vars/*'
|
- 'group_vars/*'
|
||||||
- 'host_vars/*'
|
- 'host_vars/*'
|
||||||
- 'tasks.*.ya?ml'
|
|
||||||
- 'roles.*.ya?ml'
|
|
||||||
- 'handlers.*.ya?ml'
|
|
||||||
# Helm needs to be after YAML
|
# Helm needs to be after YAML
|
||||||
---
|
---
|
||||||
name: helm
|
name: helm
|
||||||
@@ -1284,6 +1674,14 @@ filetypes:
|
|||||||
- "*/templates/*.yaml"
|
- "*/templates/*.yaml"
|
||||||
- "*/templates/*.tpl"
|
- "*/templates/*.tpl"
|
||||||
---
|
---
|
||||||
|
name: help
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/help.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: help
|
||||||
|
filenames:
|
||||||
|
- '$VIMRUNTIME/doc/*.txt'
|
||||||
|
---
|
||||||
name: zephir
|
name: zephir
|
||||||
remote: xwsoul/vim-zephir
|
remote: xwsoul/vim-zephir
|
||||||
filetypes:
|
filetypes:
|
||||||
@@ -1293,10 +1691,18 @@ filetypes:
|
|||||||
name: zig
|
name: zig
|
||||||
remote: ziglang/zig.vim
|
remote: ziglang/zig.vim
|
||||||
filetypes:
|
filetypes:
|
||||||
|
- name: zir
|
||||||
|
extensions:
|
||||||
|
- zir
|
||||||
- name: zig
|
- name: zig
|
||||||
linguist: Zig
|
linguist: Zig
|
||||||
extra_extensions:
|
extra_extensions:
|
||||||
- zir
|
- zir
|
||||||
- name: zir
|
---
|
||||||
|
name: trasys
|
||||||
|
remote: vim/vim:runtime
|
||||||
|
glob: '**/trasys.vim'
|
||||||
|
filetypes:
|
||||||
|
- name: trasys
|
||||||
extensions:
|
extensions:
|
||||||
- zir
|
- inp
|
||||||
|
|||||||
599
scripts/build
599
scripts/build
@@ -5,22 +5,83 @@ require 'open3'
|
|||||||
require 'yaml'
|
require 'yaml'
|
||||||
require 'fileutils'
|
require 'fileutils'
|
||||||
require 'set'
|
require 'set'
|
||||||
|
require 'json'
|
||||||
|
require 'tsort'
|
||||||
|
|
||||||
Dir.chdir(File.dirname(__dir__))
|
Dir.chdir(File.dirname(__dir__))
|
||||||
|
|
||||||
PACKAGES = YAML.load_stream(File.read('packages.yaml'))
|
|
||||||
|
|
||||||
BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master'
|
BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master'
|
||||||
|
|
||||||
DIRS = {
|
def camelize(str)
|
||||||
default: %w(syntax indent compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin),
|
str.split(/[-_\.]/).map { |a| a.capitalize }.join("")
|
||||||
all: %w(syntax indent compiler autoload ftplugin after extras ctags),
|
end
|
||||||
basic: %w(syntax compiler indent after/syntax after/indent),
|
|
||||||
syntax: %w(syntax indent after/syntax after/indent),
|
def except(hash, *keys)
|
||||||
noafter: %w(syntax compiler indent autoload ftplugin),
|
h = hash.dup
|
||||||
javascript: %w(syntax indent compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin extras),
|
keys.each { |k| h.delete(k) }
|
||||||
go: %w(autoload/go/config.vim syntax compiler indent after/syntax after/indent)
|
h
|
||||||
}
|
end
|
||||||
|
|
||||||
|
def load_data()
|
||||||
|
packages = Hash[YAML.load_stream(File.read('packages.yaml'))
|
||||||
|
.group_by { |a| a.fetch("name") }
|
||||||
|
.map { |a, b| [a, b.first] }]
|
||||||
|
|
||||||
|
deps = Hash.new { |h, k| h[k] = [] }
|
||||||
|
|
||||||
|
for package in packages.values
|
||||||
|
for name in [package.fetch("after", [])].flatten
|
||||||
|
packages[name] or raise "#{package["name"]} depends on unknown package: #{name}"
|
||||||
|
deps[name] << package["name"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
each_node = lambda {|&b| packages.keys.each(&b) }
|
||||||
|
each_child = lambda {|n, &b| deps[n].each(&b) }
|
||||||
|
|
||||||
|
languages = load_languages
|
||||||
|
|
||||||
|
# Reason can have ocaml as interpreter but let's not depend on it...
|
||||||
|
languages["Reason"]["interpreters"] -= ["ocaml"]
|
||||||
|
|
||||||
|
packages = TSort.tsort(each_node, each_child).map { |a| packages[a] }
|
||||||
|
|
||||||
|
for package in packages
|
||||||
|
for filetype in package["filetypes"]
|
||||||
|
if filetype["linguist"]
|
||||||
|
if filetype["extensions"]
|
||||||
|
raise "#{package["name"]} #{filetype["name"]}: extensions can't be set when linguist is defined"
|
||||||
|
end
|
||||||
|
|
||||||
|
if filetype["filenames"]
|
||||||
|
raise "#{package["name"]} #{filetype["name"]}: filenames can't be set when linguist is defined"
|
||||||
|
end
|
||||||
|
|
||||||
|
linguist = languages.fetch(filetype["linguist"])
|
||||||
|
|
||||||
|
filetype["extensions"] = (linguist["extensions"] || []).map { |e| e[1..-1] } |
|
||||||
|
filetype.fetch("extra_extensions", []) -
|
||||||
|
filetype.fetch("ignored_extensions", []).uniq
|
||||||
|
|
||||||
|
filetype["filenames"] = (linguist["filenames"] || []) |
|
||||||
|
filetype.fetch("extra_filenames", []) -
|
||||||
|
filetype.fetch("ignored_filenames", []).uniq
|
||||||
|
|
||||||
|
filetype["interpreters"] = (linguist["interpreters"] || []) |
|
||||||
|
filetype.fetch("extra_interpreters", []) -
|
||||||
|
filetype.fetch("ignored_interpreters", []).uniq
|
||||||
|
else
|
||||||
|
filetype["extensions"] ||= []
|
||||||
|
filetype["filenames"] ||= []
|
||||||
|
filetype["interpreters"] ||= []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
heuristics = YAML.load_stream(File.read('heuristics.yaml'))
|
||||||
|
|
||||||
|
[packages, transform_patterns(heuristics)]
|
||||||
|
end
|
||||||
|
|
||||||
def parallel(*procs)
|
def parallel(*procs)
|
||||||
threads = procs.map { |p| Thread.new { method(p).call } }
|
threads = procs.map { |p| Thread.new { method(p).call } }
|
||||||
@@ -41,17 +102,12 @@ def read_strings(data, keys, print=false)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def transform_with(data, keys, transfrom=false, &block)
|
def patterns_to_vim_patterns(patterns)
|
||||||
if data.is_a?(Hash)
|
stdin, stdout, stderr = Open3.popen3('vim', '-V', '--clean', '/dev/stdin', '-es', '-c', "echo expand('%:p:h') | source #{__dir__}/eregex.vim", '-c', "for line in range(0, line('$')) | call setline(line, ExtendedRegex2VimRegex(getline(line))) | endfor", '-c', ':wq! /dev/stdout', chdir: __dir__)
|
||||||
Hash[data.map do |key, val|
|
stdin.write(patterns.join("\n"))
|
||||||
[key, transform_with(val, keys, keys.include?(key), &block)]
|
stdin.close
|
||||||
end]
|
stdout.readlines.map(&:chomp).map do |r|
|
||||||
elsif data.is_a?(Array)
|
r.gsub('\b', '\(\<\|\>\)')
|
||||||
data.map { |d| transform_with(d, keys, transfrom, &block) }
|
|
||||||
elsif data.is_a?(String)
|
|
||||||
transfrom ? yield(data) : data
|
|
||||||
else
|
|
||||||
data
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -66,29 +122,21 @@ def each_hash(data, &block)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def patterns_to_vim_patterns(patterns)
|
|
||||||
stdin, stdout, stderr = Open3.popen3('vim', '-V', '--clean', '/dev/stdin', '-es', '-c', "echo expand('%:p:h') | source #{__dir__}/scripts/eregex.vim", '-c', "for line in range(0, line('$')) | call setline(line, ExtendedRegex2VimRegex(getline(line))) | endfor", '-c', ':wq! /dev/stdout', chdir: __dir__)
|
|
||||||
stdin.write(patterns.join("\n"))
|
|
||||||
stdin.close
|
|
||||||
stdout.readlines
|
|
||||||
end
|
|
||||||
|
|
||||||
def transform_patterns(data)
|
def transform_patterns(heuristics)
|
||||||
patterns = read_strings(data, ["pattern", "patterns"])
|
patterns = []
|
||||||
patterns_mapping = Hash[patterns.zip(patterns_to_vim_patterns(patterns))]
|
each_hash(heuristics) do |h|
|
||||||
transform_with(data, ["pattern", "patterns"]) { |a| patterns_mapping[a] }
|
if h.has_key?("pattern")
|
||||||
end
|
patterns << h["pattern"]
|
||||||
|
|
||||||
def load_heuristics
|
|
||||||
url = "#{BASE_URL}/lib/linguist/heuristics.yml"
|
|
||||||
data = URI.open(url) { |io| YAML.load(io.read) }
|
|
||||||
each_hash(data["disambiguations"]) do |h|
|
|
||||||
if h.has_key?("named_pattern")
|
|
||||||
h["pattern"] = data["named_patterns"].fetch(h["named_pattern"])
|
|
||||||
h.delete("named_pattern")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
transform_patterns(data["disambiguations"])
|
patterns_mapping = Hash[patterns.zip(patterns_to_vim_patterns(patterns))]
|
||||||
|
each_hash(heuristics) do |h|
|
||||||
|
if h.has_key?("pattern")
|
||||||
|
h["pattern"] = patterns_mapping.fetch(h["pattern"])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
heuristics
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_languages
|
def load_languages
|
||||||
@@ -102,7 +150,6 @@ def parse_remote(remote)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def copy_file(package, src, dest)
|
def copy_file(package, src, dest)
|
||||||
return unless [".vim", ".ctags", ".vital"].include?(File.extname(src))
|
|
||||||
FileUtils.mkdir_p(File.dirname(dest))
|
FileUtils.mkdir_p(File.dirname(dest))
|
||||||
name = package.fetch("name")
|
name = package.fetch("name")
|
||||||
|
|
||||||
@@ -119,17 +166,17 @@ def copy_file(package, src, dest)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def download
|
def download(packages)
|
||||||
FileUtils.rm_rf('tmp')
|
packages.map { |p| p["remote"] or raise "No remote for: " + p["name"] }.uniq.each_slice(20) do |remotes|
|
||||||
|
remotes.map do |remote|
|
||||||
PACKAGES.each_slice(20) do |batch|
|
|
||||||
batch.map do |package|
|
|
||||||
Thread.new do
|
Thread.new do
|
||||||
repo, branch, path = parse_remote(package.fetch("remote"))
|
repo, branch, path = parse_remote(remote)
|
||||||
dir = "tmp/" + repo.split('/')[1]
|
dir = "tmp/" + repo
|
||||||
FileUtils.mkdir_p(dir)
|
unless File.exist?(dir)
|
||||||
url = "https://codeload.github.com/#{repo}/tar.gz/#{branch}"
|
FileUtils.mkdir_p(dir)
|
||||||
`curl --silent -fL #{url} | tar -zx -C "#{dir}" --strip 1`
|
url = "https://codeload.github.com/#{repo}/tar.gz/#{branch}"
|
||||||
|
`curl --silent -fL #{url} | tar -zx -C "#{dir}" --strip 1`
|
||||||
|
end
|
||||||
progress
|
progress
|
||||||
end
|
end
|
||||||
end.map(&:join)
|
end.map(&:join)
|
||||||
@@ -150,30 +197,150 @@ def progress
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract
|
def indent(str, amount)
|
||||||
FileUtils.rm_rf(DIRS[:all])
|
str.gsub(/^(?!$)/, " " * amount).gsub(/\s+$/, "").gsub(/^ +\n/, "")
|
||||||
|
end
|
||||||
|
|
||||||
|
def pattern_to_condition(rule)
|
||||||
|
operator = (rule["negative"] ? "!" : "=") + "~" + (rule["ignore_case"] ? "?" : "#")
|
||||||
|
|
||||||
|
"line #{operator} '#{rule["pattern"]}'"
|
||||||
|
end
|
||||||
|
|
||||||
|
def rules_to_code(rules)
|
||||||
|
output = ""
|
||||||
|
|
||||||
|
vars = []
|
||||||
|
each_hash(rules) do |h|
|
||||||
|
if h.has_key?("set")
|
||||||
|
vars << h["set"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if vars.size > 0
|
||||||
|
output << vars.uniq.sort.map do |var|
|
||||||
|
"let #{var} = 0"
|
||||||
|
end.join("\n") + "\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
output << rule_to_code(rules)
|
||||||
|
end
|
||||||
|
|
||||||
|
def rule_to_code(rule)
|
||||||
|
if rule.has_key?("lines")
|
||||||
|
if rule["lines"] == 1
|
||||||
|
return <<~EOS
|
||||||
|
let line = getline(1)
|
||||||
|
|
||||||
|
#{indent(rule_to_code(except(rule, "lines")), 0)}
|
||||||
|
EOS
|
||||||
|
else
|
||||||
|
return <<~EOS
|
||||||
|
for lnum in range(1, min([line("$"), #{rule["lines"]}]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
|
||||||
|
#{indent(rule_to_code(except(rule, "lines")), 2)}
|
||||||
|
endfor
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("rules")
|
||||||
|
return rule["rules"].map { |r| indent(rule_to_code(r), 0) }.join("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("pattern")
|
||||||
|
return <<~EOS
|
||||||
|
if #{pattern_to_condition(rule)}
|
||||||
|
#{indent(rule_to_code(except(rule, "pattern", "ignore_case", "negative")), 2)}
|
||||||
|
endif
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("if_set")
|
||||||
|
return <<~EOS
|
||||||
|
if #{rule["negative"] ? "!" : ""}#{rule["if_set"]}
|
||||||
|
#{indent(rule_to_code(except(rule, "if_set", "negative")), 2)}
|
||||||
|
endif
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("set")
|
||||||
|
return <<~EOS
|
||||||
|
let #{rule["set"]} = 1
|
||||||
|
#{indent(rule_to_code(except(rule, "set")), 0)}
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
if (rule.keys - ["filetype", "override", "set"]).size > 0
|
||||||
|
raise "Unknown rule: #{JSON.generate(rule)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("override")
|
||||||
|
return <<~EOS
|
||||||
|
if exists("#{rule["override"]}")
|
||||||
|
exe "setf " . #{rule["override"]} | return
|
||||||
|
endif
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("filetype")
|
||||||
|
return "setf #{rule["filetype"]} | return"
|
||||||
|
end
|
||||||
|
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract(packages)
|
||||||
|
all_dirs = %w(syntax indent doc compiler autoload ftplugin ctags extras after)
|
||||||
|
|
||||||
|
default_dirs = %w(
|
||||||
|
syntax indent doc compiler autoload ftplugin ctags extras
|
||||||
|
after/syntax after/indent after/ftplugin
|
||||||
|
)
|
||||||
|
|
||||||
|
FileUtils.rm_rf(all_dirs)
|
||||||
|
|
||||||
output = []
|
output = []
|
||||||
PACKAGES.map do |package|
|
packages.map do |package|
|
||||||
repo, branch, path = parse_remote(package["remote"])
|
repo, branch, path = parse_remote(package["remote"])
|
||||||
dir = "tmp/" + repo.split('/')[1]
|
dir = "tmp/" + repo
|
||||||
subdirs = []
|
dirs = package.fetch("dirs", default_dirs)
|
||||||
for subdir in DIRS.fetch(package.fetch("dirs", "default").to_sym)
|
ignored_dirs = package.fetch("ignored_dirs", [])
|
||||||
|
if ignored_dirs.size > 0
|
||||||
|
dirs = dirs.reject { |d| ignored_dirs.any? { |id| d.start_with?(id) } }
|
||||||
|
end
|
||||||
|
dirs |= package.fetch("extra_dirs", [])
|
||||||
|
for subdir in dirs
|
||||||
subtree = "#{dir}/#{path ? path + "/" : ""}"
|
subtree = "#{dir}/#{path ? path + "/" : ""}"
|
||||||
subpath = "#{subtree}#{subdir}"
|
subpath = "#{subtree}#{subdir}"
|
||||||
if FileTest.directory?(subpath)
|
if FileTest.directory?(subpath)
|
||||||
Dir.glob("#{subdir}/**/*", base: subtree).each do |p|
|
if repo == "vim/vim" && (["glob", "globs"] & package.keys).size == 0
|
||||||
|
raise "Package from vim/vim should define glob or globs: #{package["name"]}"
|
||||||
|
end
|
||||||
|
glob = package.fetch("glob", package.fetch('globs', '**/*.{vim,ctags,vital,txt}'))
|
||||||
|
Dir.glob("#{subdir}/#{glob}", base: subtree).each do |p|
|
||||||
next unless File.file?("#{subtree}/#{p}")
|
next unless File.file?("#{subtree}/#{p}")
|
||||||
|
if p.include?("samba")
|
||||||
|
raise package["name"]
|
||||||
|
end
|
||||||
copy_file(package, "#{subtree}/#{p}", p)
|
copy_file(package, "#{subtree}/#{p}", p)
|
||||||
end
|
end
|
||||||
|
|
||||||
subdirs << subdir.split("/").last
|
|
||||||
elsif File.exist?(subpath)
|
elsif File.exist?(subpath)
|
||||||
copy_file(package, subpath, subdir)
|
copy_file(package, subpath, subdir)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
output << "- [#{package["name"]}](https://github.com/#{repo}) (#{subdirs.uniq.join(", ")})"
|
if branch != "master" || path
|
||||||
|
if path
|
||||||
|
output << "- [#{package["name"]}](https://github.com/#{repo}/tree/#{branch}/#{path})"
|
||||||
|
else
|
||||||
|
output << "- [#{package["name"]}](https://github.com/#{repo}/tree/#{branch})"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
output << "- [#{package["name"]}](https://github.com/#{repo})"
|
||||||
|
end
|
||||||
progress
|
progress
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -192,16 +359,23 @@ def extract
|
|||||||
File.write('README.md', readme)
|
File.write('README.md', readme)
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_ftdetect
|
def generate_ftdetect(packages, heuristics)
|
||||||
heuristics, languages = parallel(:load_heuristics, :load_languages)
|
|
||||||
|
|
||||||
output = <<~EOS
|
output = <<~EOS
|
||||||
" don't spam the user when Vim is started in Vi compatibility mode
|
" don't spam the user when Vim is started in Vi compatibility mode
|
||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
if !exists('g:polyglot_disabled')
|
" Disable all native vim ftdetect
|
||||||
let g:polyglot_disabled = []
|
if exists('g:polyglot_test')
|
||||||
|
autocmd!
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:disabled_packages = {}
|
||||||
|
|
||||||
|
if exists('g:polyglot_disabled')
|
||||||
|
for pkg in g:polyglot_disabled
|
||||||
|
let s:disabled_packages[pkg] = 1
|
||||||
|
endfor
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! s:SetDefault(name, value)
|
function! s:SetDefault(name, value)
|
||||||
@@ -245,44 +419,74 @@ def generate_ftdetect
|
|||||||
call s:SetDefault('g:python_highlight_file_headers_as_comments', 1)
|
call s:SetDefault('g:python_highlight_file_headers_as_comments', 1)
|
||||||
call s:SetDefault('g:python_slow_sync', 1)
|
call s:SetDefault('g:python_slow_sync', 1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
ambiguous_extensions = languages.flat_map { |_, v| v["extensions"] || [] }
|
extensions = Hash.new { |h, k| h[k] = [] }
|
||||||
.group_by(&:itself).transform_values(&:count)
|
|
||||||
.select { |a, b| b > 1 }.keys.map { |a| a[1..] }.to_set
|
|
||||||
|
|
||||||
for package in PACKAGES
|
for package in packages
|
||||||
name = package.fetch("name")
|
for filetype in package["filetypes"]
|
||||||
output << if name == "jsx"
|
for ext in filetype["extensions"]
|
||||||
"if !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)\n"
|
extensions[ext] << filetype["name"]
|
||||||
else
|
end
|
||||||
"if index(g:polyglot_disabled, '#{name}') == -1\n"
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ambiguous_extensions = extensions
|
||||||
|
.select { |a, b| b.uniq.size > 1 }.keys.sort
|
||||||
|
|
||||||
|
expected_filetypes = detect_filetypes
|
||||||
|
|
||||||
|
for package in packages
|
||||||
|
name = package.fetch("name")
|
||||||
|
|
||||||
|
output << "if !has_key(s:disabled_packages, '#{name}')\n"
|
||||||
|
|
||||||
filetypes = package["filetypes"] or raise "Unknown filetype for: #{package["name"]}"
|
filetypes = package["filetypes"] or raise "Unknown filetype for: #{package["name"]}"
|
||||||
|
|
||||||
|
package_heuristics = []
|
||||||
|
|
||||||
for filetype in filetypes
|
for filetype in filetypes
|
||||||
syntax = filetype["syntax"] ? " syntax=#{filetype["syntax"]}" : ""
|
name = filetype.fetch("name")
|
||||||
set_command = package.fetch("custom_set", "set ft=#{filetype.fetch("name")}#{syntax}")
|
syntax = filetype["syntax"] ? " | set syntax=#{filetype["syntax"]}" : ""
|
||||||
|
|
||||||
linguist = filetype["linguist"] ? languages.fetch(filetype["linguist"]) : {}
|
set_command = "setf #{name}"
|
||||||
extensions = filetype["extensions"] || linguist.fetch("extensions", []).map { |e| e[1..] }
|
|
||||||
extensions = (extensions | filetype.fetch("extra_extensions", [])) - filetype.fetch("ignored_extensions", [])
|
|
||||||
|
|
||||||
filenames = filetype["filenames"] || linguist.fetch("filenames", [])
|
if filetype["syntax"]
|
||||||
filenames = (filenames | filetype.fetch("extra_filenames", [])) - filetype.fetch("ignored_filenames", [])
|
set_command = "if !did_filetype() | set ft=#{name} syntax=#{filetype["syntax"]} | endif"
|
||||||
|
end
|
||||||
|
|
||||||
|
if filetype["custom_set"]
|
||||||
|
set_command = filetype["custom_set"]
|
||||||
|
end
|
||||||
|
|
||||||
|
extensions = filetype["extensions"]
|
||||||
|
filenames = filetype["filenames"]
|
||||||
|
|
||||||
|
if expected_filetypes[name] && !filetype["syntax"]
|
||||||
|
for e in expected_filetypes.fetch(name)[:extensions] - extensions - expand_all(filetype.fetch("ignored_extensions", []))
|
||||||
|
puts "Probable missing extension for #{name}: #{e}"
|
||||||
|
end
|
||||||
|
|
||||||
|
for e in expected_filetypes.fetch(name)[:filenames] - expand_all(filenames).flat_map { |e| [e, e.gsub(/^\./, '')] } - expand_all(filetype.fetch("ignored_filenames", [])) - ['*']
|
||||||
|
puts "Probable missing filename for #{name}: #{e}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for extension in extensions.sort
|
for extension in extensions.sort
|
||||||
outer_filetype = filetype["outer_filetype"]
|
outer_filetype = filetype["outer_filetype"]
|
||||||
if outer_filetype
|
if outer_filetype
|
||||||
output << " au BufNewFile *.*.#{extension} execute \"do BufNewFile filetypedetect \" . expand(\"<afile>:r\") | #{outer_filetype}"
|
output << " au BufNewFile *.*.#{extension} execute \"do BufNewFile filetypedetect \" . expand(\"<afile>:r\") | #{outer_filetype}\n"
|
||||||
output << " au BufReadPre *.*#{extension} execute \"do BufRead filetypedetect \" . expand(\"<afile>:r\") | #{outer_filetype}"
|
output << " au BufReadPre *.*.#{extension} execute \"do BufRead filetypedetect \" . expand(\"<afile>:r\") | #{outer_filetype}\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
if ambiguous_extensions.include?(extension)
|
heuristic = heuristics.find { |h| h["extensions"].include?(extension) }
|
||||||
output << " au BufNewFile,BufRead *.#{extension} setf #{filetype["name"]}\n"
|
if heuristic
|
||||||
|
package_heuristics << heuristic
|
||||||
else
|
else
|
||||||
|
# if ambiguous_extensions.include?(extension)
|
||||||
|
# puts "Ambiguous extension without heuristic: #{extension} => #{filetype["name"]}"
|
||||||
|
# end
|
||||||
|
#
|
||||||
output << " au BufNewFile,BufRead *.#{extension} #{set_command}\n"
|
output << " au BufNewFile,BufRead *.#{extension} #{set_command}\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -295,20 +499,225 @@ def generate_ftdetect
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for heuristic in package_heuristics.uniq
|
||||||
|
extensions = heuristic["extensions"].map { |e| "*.#{e}" }
|
||||||
|
output << " au! BufNewFile,BufRead #{extensions.join(",")} call polyglot#Detect#{camelize(heuristic["extensions"].first)}Filetype()\n"
|
||||||
|
end
|
||||||
|
|
||||||
output << "endif\n\n"
|
output << "endif\n\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
output << <<~EOS
|
output << <<~EOS
|
||||||
|
au BufNewFile,BufRead,StdinReadPost *
|
||||||
|
\\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
|
||||||
|
\\ | call polyglot#Heuristics() | endif
|
||||||
|
|
||||||
" restore Vi compatibility settings
|
" restore Vi compatibility settings
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
File.write('ftdetect/polyglot.vim', output)
|
File.write('ftdetect/polyglot.vim', output)
|
||||||
|
|
||||||
|
output = <<~EOS
|
||||||
|
" Line continuation is used here, remove 'C' from 'cpoptions'
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
func! polyglot#Heuristics()
|
||||||
|
" Try to detect filetype from shebang
|
||||||
|
let l:filetype = polyglot#Shebang()
|
||||||
|
if l:filetype != ""
|
||||||
|
exec "setf " . l:filetype
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
let s:interpreters = {
|
||||||
|
EOS
|
||||||
|
|
||||||
|
for filetype in packages.flat_map { |p| p.fetch("filetypes", []) }.sort_by { |a| a["name"] }
|
||||||
|
for interpreter in filetype["interpreters"]
|
||||||
|
output << " \\ '#{interpreter}': '#{filetype["name"]}',\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
output << <<~EOS
|
||||||
|
\\ }
|
||||||
|
|
||||||
|
let s:r_hashbang = '^#!\\s*\\(\\S\\+\\)\\s*\\(.*\\)\\s*'
|
||||||
|
let s:r_envflag = '%(\\S\\+=\\S\\+\\|-[iS]\\|--ignore-environment\\|--split-string\\)'
|
||||||
|
let s:r_env = '^\\%(\\' . s:r_envflag . '\\s\\+\\)*\\(\\S\\+\\)'
|
||||||
|
|
||||||
|
func! polyglot#Shebang()
|
||||||
|
let l:line1 = getline(1)
|
||||||
|
|
||||||
|
if l:line1 !~# "^#!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:pathrest = matchlist(l:line1, s:r_hashbang)
|
||||||
|
|
||||||
|
if len(l:pathrest) == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let [_, l:path, l:rest; __] = l:pathrest
|
||||||
|
|
||||||
|
let l:script = split(l:path, "/")[-1]
|
||||||
|
|
||||||
|
if l:script == "env"
|
||||||
|
let l:argspath = matchlist(l:rest, s:r_env)
|
||||||
|
if len(l:argspath) == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:script = l:argspath[1]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(s:interpreters, l:script)
|
||||||
|
return s:interpreters[l:script]
|
||||||
|
endif
|
||||||
|
|
||||||
|
for interpreter in keys(s:interpreters)
|
||||||
|
if l:script =~# '^' . interpreter
|
||||||
|
return s:interpreters[interpreter]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
EOS
|
||||||
|
|
||||||
|
for heuristic in heuristics
|
||||||
|
output << <<~EOS
|
||||||
|
func! polyglot#Detect#{camelize(heuristic["extensions"].first)}Filetype()
|
||||||
|
#{indent(rules_to_code(heuristic), 2)}
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
|
output << <<~EOS
|
||||||
|
" Restore 'cpoptions'
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
EOS
|
||||||
|
|
||||||
|
File.write('autoload/polyglot.vim', output)
|
||||||
end
|
end
|
||||||
|
|
||||||
# download
|
def generate_tests(packages)
|
||||||
# extract
|
output = <<~EOS
|
||||||
generate_ftdetect
|
function! TestFiletype(filetype)
|
||||||
# puts(" Bye! Have a wonderful time!")
|
try
|
||||||
# FileUtils.rm_rf("tmp")
|
enew
|
||||||
|
exec 'set ft=' . a:filetype
|
||||||
|
catch
|
||||||
|
echo 'Error loading filetype ' . a:filetype . ':'
|
||||||
|
echo v:exception
|
||||||
|
echo v:throwpoint
|
||||||
|
exec ':cq!'
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
EOS
|
||||||
|
|
||||||
|
for package in packages
|
||||||
|
for filetype in package.fetch("filetypes", [])
|
||||||
|
output << "call TestFiletype('#{filetype["name"]}')\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
File.write('scripts/test_filetypes.vim', output)
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def brace_expansion(s)
|
||||||
|
r=1 # Dummy value to forward-declare the parse function `r`
|
||||||
|
t=->x{ # Function to parse a bracket block
|
||||||
|
x=x[0].gsub(/^{(.*)}$/){$1} # Remove outer brackets if both are present
|
||||||
|
# x[0] is required because of quirks in the `scan` function
|
||||||
|
x=x.scan(/(({(\g<1>|,)*}|[^,{}]|(?<=,|^)(?=,|$))+)/)
|
||||||
|
# Regex black magic: collect elements of outer bracket
|
||||||
|
x.map{|i|i=i[0];i[?{]?r[i]:i}.flatten # For each element with brackets, run parse function
|
||||||
|
}
|
||||||
|
r=->x{ # Function to parse bracket expansions a{b,c}{d,e}
|
||||||
|
i=x.scan(/({(\g<1>)*}|[^{} ]+)/) # Regex black magic: scan for adjacent sets of brackets
|
||||||
|
i=i.map(&t) # Map all elements against the bracket parser function `t`
|
||||||
|
i.shift.product(*i).map &:join # Combine the adjacent sets with cartesian product and join them together
|
||||||
|
}
|
||||||
|
s.split.map(&r).flatten
|
||||||
|
end
|
||||||
|
|
||||||
|
def square_expansion(s)
|
||||||
|
return [s] unless s.include?('[')
|
||||||
|
s.scan(/(\[[^\]]+\]|[^\[]+)/).map { |x| x[0] }
|
||||||
|
.map { |x| x[0] == "[" ? x[1..-2].split("") : [x] }
|
||||||
|
.reduce(&:product).map(&:flatten).map(&:join)
|
||||||
|
end
|
||||||
|
|
||||||
|
def comma_expanson(s)
|
||||||
|
s.scan(/{[^{]+}|[^{]+/).map { |a| a[0] == "{" ? a : a.split(",", -1) }.reduce([]) do |a, b|
|
||||||
|
a.size > 0 ?
|
||||||
|
(b.is_a?(String) ?
|
||||||
|
a[0..-2] + [a[-1] + b] :
|
||||||
|
a[0..-2] + [a[-1] + b[0]] + b[1..-1]) :
|
||||||
|
[b].flatten
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def expand_all(pattern)
|
||||||
|
if pattern.is_a?(Array)
|
||||||
|
return pattern.flat_map { |p| expand_all(p) }
|
||||||
|
end
|
||||||
|
|
||||||
|
comma_expanson(pattern).flat_map do |e|
|
||||||
|
brace_expansion(e).flat_map do |e2|
|
||||||
|
square_expansion(e2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def detect_filetypes
|
||||||
|
filetypes = Dir['tmp/**/ftdetect/*.vim'].flat_map do |file|
|
||||||
|
contents = File.read(file).gsub(/^\s*au(tocmd)?!?\s*$/, '')
|
||||||
|
results = contents.scan(/^\s*(?:au!|au|au[^g][^ ]*) +(?:\S+)\s+(\S+)[\s\\]+([^\n]+)/)
|
||||||
|
results = results.map do |a, b|
|
||||||
|
[
|
||||||
|
a,
|
||||||
|
b.gsub(/call (?:s:setf|s:StarSetf)\('([^']+)'\)/i, 'setf \1')
|
||||||
|
.gsub(/set(?:local)?\s+(?:ft|filetype)=(\S+)/, 'setf \1')
|
||||||
|
.gsub(/setf\S*/, 'setf')
|
||||||
|
.gsub(/.*setf\s+(\S+).*/, 'setf \1')
|
||||||
|
]
|
||||||
|
end.select { |a, b| b.match(/setf \S+/) }.map { |a, b| [a, b.split(" ")[1]] }
|
||||||
|
results
|
||||||
|
end
|
||||||
|
|
||||||
|
Hash[filetypes.flat_map do |ext, filetype|
|
||||||
|
expand_all(ext).map { |e| [filetype, e] }
|
||||||
|
end.group_by { |a, b| a }.map { |a, b| [a, b.map { |c, d| d }] }.map { |a, b|
|
||||||
|
[a, {
|
||||||
|
extensions: b.select { |x| x.match(/^\*\.[^\/]+$/) }.map { |a| a.strip[2..] },
|
||||||
|
filenames: expand_all(b.select { |x| !x.match(/^\*\.[^\/]+$/) })
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
end
|
||||||
|
|
||||||
|
if __FILE__ == $0
|
||||||
|
if !ENV["DEV"]
|
||||||
|
FileUtils.rm_rf("tmp")
|
||||||
|
end
|
||||||
|
|
||||||
|
packages, heuristics = load_data()
|
||||||
|
download(packages)
|
||||||
|
extract(packages)
|
||||||
|
generate_ftdetect(packages, heuristics)
|
||||||
|
generate_tests(packages)
|
||||||
|
puts(" Bye! Have a wonderful time!")
|
||||||
|
|
||||||
|
if !ENV["DEV"]
|
||||||
|
FileUtils.rm_rf("tmp")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
22
scripts/test
22
scripts/test
@@ -2,18 +2,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
vim -N --startuptime /dev/stdout -u <(
|
vim --clean -N -u <(echo "
|
||||||
echo "filetype plugin indent on"
|
let &rtp='$PWD,'.&rtp
|
||||||
echo "syntax enable"
|
let g:polyglot_test = 1
|
||||||
echo "let &rtp='$PWD,'.&rtp"
|
source scripts/test_extensions.vim
|
||||||
cat ftdetect/polyglot.vim | grep -E 'set ft=[a-z-]+' -o | sort | uniq | awk -F '=' '{ print $2 }' | while read ft; do
|
\"source scripts/test_filetypes.vim
|
||||||
echo "try"
|
qa!
|
||||||
echo " enew"
|
")
|
||||||
echo " set ft=$ft"
|
|
||||||
echo "catch"
|
|
||||||
echo " echo v:exception"
|
|
||||||
echo " exec ':cq!'"
|
|
||||||
echo "endtry"
|
|
||||||
done
|
|
||||||
echo "exec ':q!'"
|
|
||||||
)
|
|
||||||
|
|||||||
209
scripts/test_extensions.vim
Normal file
209
scripts/test_extensions.vim
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
function! TestExtension(filetype, filename, content)
|
||||||
|
try
|
||||||
|
let g:message = ""
|
||||||
|
exec "noautocmd n " . a:filename
|
||||||
|
put =a:content
|
||||||
|
1delete _
|
||||||
|
filetype detect
|
||||||
|
exec "if &filetype != '" . a:filetype . "' \nthrow &filetype\nendif"
|
||||||
|
exec ":bw!"
|
||||||
|
catch
|
||||||
|
echo g:message
|
||||||
|
echo 'Filename "' . a:filename . '" does not resolve to extension "' . a:filetype . '"'
|
||||||
|
echo ' instead received: "' . v:exception . '"'
|
||||||
|
exec ':cq!'
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call TestExtension('sh', 'bash1', "#!/bin/bash")
|
||||||
|
call TestExtension('sh', 'bash2', "#! /bin/bash")
|
||||||
|
call TestExtension('sh', 'bash3', "#! /bin/bash2.3")
|
||||||
|
call TestExtension('sh', 'bash4', "#!/usr/bin/env bash")
|
||||||
|
call TestExtension('sh', 'bash6', "#!/usr/bin/env -i -=split-string foo=bar bash -l foo")
|
||||||
|
call TestExtension('sh', 'bash1', "#!/bin/bash")
|
||||||
|
|
||||||
|
" Vim help file
|
||||||
|
call TestExtension('help', $VIMRUNTIME . '/doc/foobar.txt', '')
|
||||||
|
|
||||||
|
" Abaqus or Trasys
|
||||||
|
call TestExtension('abaqus', 'foobar.inp', "*HEADING\nFoobar")
|
||||||
|
call TestExtension('trasys', 'foobar.inp', "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1")
|
||||||
|
|
||||||
|
" 8th (Firth-derivative)
|
||||||
|
call TestExtension('8th', 'foobar.8th', '')
|
||||||
|
call TestExtension('8th', 'foobar.8th', '')
|
||||||
|
|
||||||
|
" A-A-P recipe
|
||||||
|
call TestExtension('aap', 'foobar.aap', '')
|
||||||
|
|
||||||
|
|
||||||
|
" A2ps printing utility
|
||||||
|
call TestExtension('a2ps', '/etc/a2ps.cfg', '')
|
||||||
|
call TestExtension('a2ps', '/usr/local/etc/a2ps.cfg', '')
|
||||||
|
call TestExtension('a2ps', '/etc/a2ps/foobar.cfg', '')
|
||||||
|
call TestExtension('a2ps', '/usr/local/etc/a2ps/foobar.cfg', '')
|
||||||
|
call TestExtension('a2ps', '/tmp/a2psrc', '')
|
||||||
|
call TestExtension('a2ps', '/tmp/.a2psrc', '')
|
||||||
|
|
||||||
|
" ABAB/4
|
||||||
|
call TestExtension('abap', 'foobar.abap', '')
|
||||||
|
|
||||||
|
" ABC music notation
|
||||||
|
call TestExtension('abc', 'foobar.abc', '')
|
||||||
|
|
||||||
|
" ABEL
|
||||||
|
call TestExtension('abel', 'foobar.abl', '')
|
||||||
|
|
||||||
|
" AceDB
|
||||||
|
call TestExtension('acedb', 'foobar.wrm', '')
|
||||||
|
|
||||||
|
" Ada (83, 9X, 95)
|
||||||
|
call TestExtension('ada', 'foobar.adb', '')
|
||||||
|
call TestExtension('ada', 'foobar.ads', '')
|
||||||
|
call TestExtension('ada', 'foobar.ada', '')
|
||||||
|
call TestExtension('ada', 'foobar.gpr', '')
|
||||||
|
|
||||||
|
" AHDL
|
||||||
|
call TestExtension('ahdl', 'foobar.tdf', '')
|
||||||
|
|
||||||
|
" AIDL
|
||||||
|
call TestExtension('aidl', 'foobar.aidl', '')
|
||||||
|
|
||||||
|
" AMPL
|
||||||
|
call TestExtension('ampl', 'foobar.run', '')
|
||||||
|
|
||||||
|
" Ant
|
||||||
|
call TestExtension('ant', 'build.xml', '')
|
||||||
|
|
||||||
|
" Arduino
|
||||||
|
call TestExtension('arduino', 'foobar.ino', '')
|
||||||
|
call TestExtension('arduino', 'foobar.pde', '')
|
||||||
|
|
||||||
|
" Apache config file
|
||||||
|
call TestExtension('apache', '.htaccess', '')
|
||||||
|
call TestExtension('apache', '/etc/httpd/foobar.conf', '')
|
||||||
|
call TestExtension('apache', '/etc/apache2/sites-foobar/foobar.com', '')
|
||||||
|
call TestExtension('apache', '/usr/local/etc/httpd/foobar.conf', '')
|
||||||
|
call TestExtension('apache', '/usr/local/etc/apache2/sites-foobar/foobar.com', '')
|
||||||
|
|
||||||
|
" XA65 MOS6510 cross assembler
|
||||||
|
call TestExtension('a65', 'foobar.a65', '')
|
||||||
|
|
||||||
|
" Applescript
|
||||||
|
call TestExtension('applescript', 'foobar.scpt', '')
|
||||||
|
|
||||||
|
" Applix ELF
|
||||||
|
call TestExtension('elf', 'foobar.am', '')
|
||||||
|
call TestExtension('automake', 'Makefile.am', '')
|
||||||
|
call TestExtension('automake', 'makefile.am', '')
|
||||||
|
|
||||||
|
" ALSA configuration
|
||||||
|
call TestExtension('alsaconf', '.asoundrc', '')
|
||||||
|
call TestExtension('alsaconf', '/usr/share/alsa/alsa.conf', '')
|
||||||
|
call TestExtension('alsaconf', '/media/foo/usr/share/alsa/alsa.conf', '')
|
||||||
|
call TestExtension('alsaconf', '/etc/asound.conf', '')
|
||||||
|
call TestExtension('alsaconf', '/media/foo/etc/asound.conf', '')
|
||||||
|
|
||||||
|
" Arc Macro Language
|
||||||
|
call TestExtension('aml', 'foobar.aml', '')
|
||||||
|
|
||||||
|
" APT config file
|
||||||
|
call TestExtension('aptconf', 'apt.conf', '')
|
||||||
|
call TestExtension('aptconf', '/root/.aptitude/config', '')
|
||||||
|
call TestExtension('aptconf', '/etc/apt/apt.conf.d/foo_bar-12', '')
|
||||||
|
call TestExtension('aptconf', '/etc/apt/apt.conf.d/foo_bar-12.conf', '')
|
||||||
|
call TestExtension('', '/etc/apt/apt.conf.d/.gsdf', '')
|
||||||
|
|
||||||
|
" Arch Inventory file
|
||||||
|
call TestExtension('arch', '.arch-inventory', '')
|
||||||
|
call TestExtension('arch', '=tagging-method', '')
|
||||||
|
|
||||||
|
" ART*Enterprise (formerly ART-IM)
|
||||||
|
call TestExtension('art', 'foobar.art', '')
|
||||||
|
|
||||||
|
" AsciiDoc
|
||||||
|
call TestExtension('asciidoc', 'foobar.asciidoc', '')
|
||||||
|
call TestExtension('asciidoc', 'foobar.adoc', '')
|
||||||
|
|
||||||
|
" ASN.1
|
||||||
|
call TestExtension('asn', 'foobar.asn', '')
|
||||||
|
call TestExtension('asn', 'foobar.asn1', '')
|
||||||
|
|
||||||
|
" Active Server Pages (with Visual Basic Script)
|
||||||
|
call TestExtension('aspvbs', 'foobar.asa', '')
|
||||||
|
let g:filetype_asa = 'fizfuz'
|
||||||
|
call TestExtension('fizfuz', 'foobar.asa', '')
|
||||||
|
|
||||||
|
" Active Server Pages (with Perl or Visual Basic Script)
|
||||||
|
call TestExtension('aspvbs', 'vbs.asp', "")
|
||||||
|
call TestExtension('aspperl', 'perl.asp', "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>")
|
||||||
|
let g:filetype_asp = 'fizfuz'
|
||||||
|
call TestExtension('fizfuz', 'fizfuz.asp', '')
|
||||||
|
|
||||||
|
|
||||||
|
" Grub (must be before catch *.lst)
|
||||||
|
call TestExtension('grub', '/boot/grub/menu.lst', '')
|
||||||
|
call TestExtension('grub', '/media/foobar/boot/grub/menu.lst', '')
|
||||||
|
call TestExtension('grub', '/boot/grub/grub.conf', '')
|
||||||
|
call TestExtension('grub', '/media/foobar/boot/grub/grub.conf', '')
|
||||||
|
call TestExtension('grub', '/etc/grub.conf', '')
|
||||||
|
call TestExtension('grub', '/media/foobar/etc/grub.conf', '')
|
||||||
|
|
||||||
|
" Assembly (all kinds)
|
||||||
|
" *.lst is not pure assembly, it has two extra columns (address, byte codes)
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm()
|
||||||
|
|
||||||
|
" Macro (VAX)
|
||||||
|
call TestExtension('vmasm', 'foobar.mar', '')
|
||||||
|
|
||||||
|
" Atlas
|
||||||
|
call TestExtension('atlas', 'foobar.atl', '')
|
||||||
|
call TestExtension('atlas', 'foobar.as', '')
|
||||||
|
|
||||||
|
" Autoit v3
|
||||||
|
call TestExtension('autoit', 'foobar.au3', '')
|
||||||
|
|
||||||
|
" Autohotkey
|
||||||
|
call TestExtension('autohotkey', 'foobar.ahk', '')
|
||||||
|
|
||||||
|
" Automake
|
||||||
|
call TestExtension('automake', 'Makefile.am', '')
|
||||||
|
call TestExtension('automake', 'makefile.am', '')
|
||||||
|
call TestExtension('automake', 'GNUmakefile.am', '')
|
||||||
|
|
||||||
|
" Autotest .at files are actually m4
|
||||||
|
call TestExtension('m4', 'foobar.at', '')
|
||||||
|
|
||||||
|
" Avenue
|
||||||
|
call TestExtension('ave', 'foobar.ave', '')
|
||||||
|
|
||||||
|
" Awk
|
||||||
|
call TestExtension('awk', 'foobar.awk', '')
|
||||||
|
|
||||||
|
" vim-polyglot only
|
||||||
|
call TestExtension('blade', 'test.blade.php', '')
|
||||||
|
call TestExtension('yaml.ansible', 'playbook.yml', '')
|
||||||
|
call TestExtension('yaml.ansible', 'host_vars/foobar', '')
|
||||||
|
call TestExtension('yaml.ansible', 'handlers.foobar.yaml', '')
|
||||||
|
call TestExtension('yaml.ansible', 'requirements.yaml', '')
|
||||||
|
call TestExtension('ps1xml', 'foobar.ps1xml', '')
|
||||||
|
|
||||||
|
" .m extension
|
||||||
|
call TestExtension('octave', 'matlab.m', '')
|
||||||
|
call TestExtension('objc', 'objc.m', "\n\n #import <Foundation/Foundation.h>")
|
||||||
|
call TestExtension('octave', 'objc.m', "results_ub_times=zeros(2,2,M);\n%results pour la lower bound")
|
||||||
|
call TestExtension('mma', 'mathematica.m', "newcase[ \"00003\" ];\n (* Hello world *)")
|
||||||
|
call TestExtension('murphi', 'murphi.m', "type\n square: 1 .. 9")
|
||||||
|
call TestExtension('murphi', 'murphi.m', "something\n--foobar")
|
||||||
|
call TestExtension('octave', 'percentcomment.m', "hello world\n%foobar")
|
||||||
|
call TestExtension('objc', 'comment.m', "\n/* Hello world */")
|
||||||
|
let g:filetype_m = 'fizfuz'
|
||||||
|
call TestExtension('fizfuz', 'fizfuz.m', '')
|
||||||
|
|
||||||
|
" .fs extension
|
||||||
|
call TestExtension('forth', 'empty.fs', '')
|
||||||
|
call TestExtension('fsharp', 'fsharp.fs', "let myInt = 5")
|
||||||
|
call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}")
|
||||||
|
let g:filetype_fs = 'fizfuz'
|
||||||
|
call TestExtension('fizfuz', 'fizfuz.fs', '')
|
||||||
229
scripts/test_filetypes.vim
Normal file
229
scripts/test_filetypes.vim
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
function! TestFiletype(filetype)
|
||||||
|
try
|
||||||
|
enew
|
||||||
|
exec 'set ft=' . a:filetype
|
||||||
|
catch
|
||||||
|
echo 'Error loading filetype ' . a:filetype . ':'
|
||||||
|
echo v:exception
|
||||||
|
echo v:throwpoint
|
||||||
|
exec ':cq!'
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call TestFiletype('8th')
|
||||||
|
call TestFiletype('a2ps')
|
||||||
|
call TestFiletype('a65')
|
||||||
|
call TestFiletype('aap')
|
||||||
|
call TestFiletype('abap')
|
||||||
|
call TestFiletype('abaqus')
|
||||||
|
call TestFiletype('abc')
|
||||||
|
call TestFiletype('abel')
|
||||||
|
call TestFiletype('acedb')
|
||||||
|
call TestFiletype('asl')
|
||||||
|
call TestFiletype('ada')
|
||||||
|
call TestFiletype('ahdl')
|
||||||
|
call TestFiletype('aidl')
|
||||||
|
call TestFiletype('alsaconf')
|
||||||
|
call TestFiletype('aml')
|
||||||
|
call TestFiletype('ampl')
|
||||||
|
call TestFiletype('ant')
|
||||||
|
call TestFiletype('apache')
|
||||||
|
call TestFiletype('apiblueprint')
|
||||||
|
call TestFiletype('applescript')
|
||||||
|
call TestFiletype('aptconf')
|
||||||
|
call TestFiletype('arch')
|
||||||
|
call TestFiletype('arduino')
|
||||||
|
call TestFiletype('art')
|
||||||
|
call TestFiletype('asciidoc')
|
||||||
|
call TestFiletype('autohotkey')
|
||||||
|
call TestFiletype('automake')
|
||||||
|
call TestFiletype('asn')
|
||||||
|
call TestFiletype('aspvbs')
|
||||||
|
call TestFiletype('aspperl')
|
||||||
|
call TestFiletype('atlas')
|
||||||
|
call TestFiletype('autoit')
|
||||||
|
call TestFiletype('ave')
|
||||||
|
call TestFiletype('awk')
|
||||||
|
call TestFiletype('c')
|
||||||
|
call TestFiletype('cpp')
|
||||||
|
call TestFiletype('caddyfile')
|
||||||
|
call TestFiletype('carp')
|
||||||
|
call TestFiletype('clojure')
|
||||||
|
call TestFiletype('cmake')
|
||||||
|
call TestFiletype('coffee')
|
||||||
|
call TestFiletype('litcoffee')
|
||||||
|
call TestFiletype('cryptol')
|
||||||
|
call TestFiletype('crystal')
|
||||||
|
call TestFiletype('ecrystal')
|
||||||
|
call TestFiletype('csv')
|
||||||
|
call TestFiletype('cucumber')
|
||||||
|
call TestFiletype('cuesheet')
|
||||||
|
call TestFiletype('dart')
|
||||||
|
call TestFiletype('dhall')
|
||||||
|
call TestFiletype('grub')
|
||||||
|
call TestFiletype('d')
|
||||||
|
call TestFiletype('dcov')
|
||||||
|
call TestFiletype('dd')
|
||||||
|
call TestFiletype('ddoc')
|
||||||
|
call TestFiletype('dsdl')
|
||||||
|
call TestFiletype('Dockerfile')
|
||||||
|
call TestFiletype('yaml.docker-compose')
|
||||||
|
call TestFiletype('elf')
|
||||||
|
call TestFiletype('elixir')
|
||||||
|
call TestFiletype('eelixir')
|
||||||
|
call TestFiletype('elm')
|
||||||
|
call TestFiletype('ember-script')
|
||||||
|
call TestFiletype('emblem')
|
||||||
|
call TestFiletype('erlang')
|
||||||
|
call TestFiletype('fennel')
|
||||||
|
call TestFiletype('ferm')
|
||||||
|
call TestFiletype('fish')
|
||||||
|
call TestFiletype('fbs')
|
||||||
|
call TestFiletype('forth')
|
||||||
|
call TestFiletype('fsharp')
|
||||||
|
call TestFiletype('gdscript3')
|
||||||
|
call TestFiletype('gitconfig')
|
||||||
|
call TestFiletype('gitrebase')
|
||||||
|
call TestFiletype('gitsendemail')
|
||||||
|
call TestFiletype('gitcommit')
|
||||||
|
call TestFiletype('glsl')
|
||||||
|
call TestFiletype('gmpl')
|
||||||
|
call TestFiletype('gnuplot')
|
||||||
|
call TestFiletype('go')
|
||||||
|
call TestFiletype('gomod')
|
||||||
|
call TestFiletype('gohtmltmpl')
|
||||||
|
call TestFiletype('graphql')
|
||||||
|
call TestFiletype('groovy')
|
||||||
|
call TestFiletype('haml')
|
||||||
|
call TestFiletype('mustache')
|
||||||
|
call TestFiletype('haproxy')
|
||||||
|
call TestFiletype('haskell')
|
||||||
|
call TestFiletype('haxe')
|
||||||
|
call TestFiletype('hcl')
|
||||||
|
call TestFiletype('hive')
|
||||||
|
call TestFiletype('html')
|
||||||
|
call TestFiletype('i3config')
|
||||||
|
call TestFiletype('icalendar')
|
||||||
|
call TestFiletype('idris')
|
||||||
|
call TestFiletype('ion')
|
||||||
|
call TestFiletype('javascript')
|
||||||
|
call TestFiletype('flow')
|
||||||
|
call TestFiletype('Jenkinsfile')
|
||||||
|
call TestFiletype('jinja.html')
|
||||||
|
call TestFiletype('jq')
|
||||||
|
call TestFiletype('json5')
|
||||||
|
call TestFiletype('json')
|
||||||
|
call TestFiletype('jsonnet')
|
||||||
|
call TestFiletype('jst')
|
||||||
|
call TestFiletype('javascriptreact')
|
||||||
|
call TestFiletype('julia')
|
||||||
|
call TestFiletype('kotlin')
|
||||||
|
call TestFiletype('ledger')
|
||||||
|
call TestFiletype('less')
|
||||||
|
call TestFiletype('lilypond')
|
||||||
|
call TestFiletype('livescript')
|
||||||
|
call TestFiletype('llvm')
|
||||||
|
call TestFiletype('tablegen')
|
||||||
|
call TestFiletype('log')
|
||||||
|
call TestFiletype('lua')
|
||||||
|
call TestFiletype('m4')
|
||||||
|
call TestFiletype('mako')
|
||||||
|
call TestFiletype('octave')
|
||||||
|
call TestFiletype('mma')
|
||||||
|
call TestFiletype('markdown')
|
||||||
|
call TestFiletype('markdown.mdx')
|
||||||
|
call TestFiletype('meson')
|
||||||
|
call TestFiletype('dosini')
|
||||||
|
call TestFiletype('moon')
|
||||||
|
call TestFiletype('murphi')
|
||||||
|
call TestFiletype('nginx')
|
||||||
|
call TestFiletype('nim')
|
||||||
|
call TestFiletype('nix')
|
||||||
|
call TestFiletype('objc')
|
||||||
|
call TestFiletype('ocaml')
|
||||||
|
call TestFiletype('omake')
|
||||||
|
call TestFiletype('opam')
|
||||||
|
call TestFiletype('oasis')
|
||||||
|
call TestFiletype('dune')
|
||||||
|
call TestFiletype('ocamlbuild_tags')
|
||||||
|
call TestFiletype('ocpbuild')
|
||||||
|
call TestFiletype('ocpbuildroot')
|
||||||
|
call TestFiletype('sexplib')
|
||||||
|
call TestFiletype('opencl')
|
||||||
|
call TestFiletype('perl')
|
||||||
|
call TestFiletype('sql')
|
||||||
|
call TestFiletype('sql')
|
||||||
|
call TestFiletype('cql')
|
||||||
|
call TestFiletype('blade')
|
||||||
|
call TestFiletype('php')
|
||||||
|
call TestFiletype('plantuml')
|
||||||
|
call TestFiletype('pony')
|
||||||
|
call TestFiletype('ps1')
|
||||||
|
call TestFiletype('ps1xml')
|
||||||
|
call TestFiletype('proto')
|
||||||
|
call TestFiletype('pug')
|
||||||
|
call TestFiletype('puppet')
|
||||||
|
call TestFiletype('embeddedpuppet')
|
||||||
|
call TestFiletype('purescript')
|
||||||
|
call TestFiletype('python')
|
||||||
|
call TestFiletype('requirements')
|
||||||
|
call TestFiletype('qmake')
|
||||||
|
call TestFiletype('qml')
|
||||||
|
call TestFiletype('r')
|
||||||
|
call TestFiletype('rhelp')
|
||||||
|
call TestFiletype('racket')
|
||||||
|
call TestFiletype('ragel')
|
||||||
|
call TestFiletype('raku')
|
||||||
|
call TestFiletype('raml')
|
||||||
|
call TestFiletype('razor')
|
||||||
|
call TestFiletype('reason')
|
||||||
|
call TestFiletype('rst')
|
||||||
|
call TestFiletype('ruby')
|
||||||
|
call TestFiletype('eruby')
|
||||||
|
call TestFiletype('ruby')
|
||||||
|
call TestFiletype('brewfile')
|
||||||
|
call TestFiletype('rust')
|
||||||
|
call TestFiletype('scala')
|
||||||
|
call TestFiletype('sbt.scala')
|
||||||
|
call TestFiletype('scss')
|
||||||
|
call TestFiletype('sh')
|
||||||
|
call TestFiletype('zsh')
|
||||||
|
call TestFiletype('slim')
|
||||||
|
call TestFiletype('slime')
|
||||||
|
call TestFiletype('smt2')
|
||||||
|
call TestFiletype('solidity')
|
||||||
|
call TestFiletype('stylus')
|
||||||
|
call TestFiletype('svelte')
|
||||||
|
call TestFiletype('svg')
|
||||||
|
call TestFiletype('swift')
|
||||||
|
call TestFiletype('sxhkdrc')
|
||||||
|
call TestFiletype('systemd')
|
||||||
|
call TestFiletype('terraform')
|
||||||
|
call TestFiletype('textile')
|
||||||
|
call TestFiletype('thrift')
|
||||||
|
call TestFiletype('tmux')
|
||||||
|
call TestFiletype('toml')
|
||||||
|
call TestFiletype('tptp')
|
||||||
|
call TestFiletype('html.twig')
|
||||||
|
call TestFiletype('xml.twig')
|
||||||
|
call TestFiletype('typescript')
|
||||||
|
call TestFiletype('typescriptreact')
|
||||||
|
call TestFiletype('unison')
|
||||||
|
call TestFiletype('v')
|
||||||
|
call TestFiletype('vala')
|
||||||
|
call TestFiletype('vbnet')
|
||||||
|
call TestFiletype('vcl')
|
||||||
|
call TestFiletype('velocity')
|
||||||
|
call TestFiletype('vmasm')
|
||||||
|
call TestFiletype('vue')
|
||||||
|
call TestFiletype('xdc')
|
||||||
|
call TestFiletype('xml')
|
||||||
|
call TestFiletype('xsl')
|
||||||
|
call TestFiletype('yaml.ansible')
|
||||||
|
call TestFiletype('yaml')
|
||||||
|
call TestFiletype('helm')
|
||||||
|
call TestFiletype('help')
|
||||||
|
call TestFiletype('zephir')
|
||||||
|
call TestFiletype('zir')
|
||||||
|
call TestFiletype('zig')
|
||||||
|
call TestFiletype('trasys')
|
||||||
339
syntax/8th.vim
Normal file
339
syntax/8th.vim
Normal file
@@ -0,0 +1,339 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, '8th') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: 8th
|
||||||
|
" Version: 19.01d
|
||||||
|
" Maintainer: Ron Aaron <ron@aaron-tech.com>
|
||||||
|
" URL: https://8th-dev.com/
|
||||||
|
" Filetypes: *.8th
|
||||||
|
" NOTE: You should also have the ftplugin/8th.vim file to set 'isk'
|
||||||
|
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
finish
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
syn clear
|
||||||
|
" Synchronization method
|
||||||
|
syn sync ccomment
|
||||||
|
syn sync maxlines=100
|
||||||
|
syn case match
|
||||||
|
syn match eighthColonName "\S\+" contained
|
||||||
|
syn match eighthColonDef ":\s\+\S\+" contains=eighthColonName
|
||||||
|
|
||||||
|
" new words
|
||||||
|
syn match eighthClasses "\<\S\+:" contained
|
||||||
|
syn match eighthClassWord "\<\S\+:.\+" contains=eighthClasses
|
||||||
|
|
||||||
|
syn keyword eighthEndOfColonDef ; i;
|
||||||
|
syn keyword eighthDefine var var,
|
||||||
|
|
||||||
|
" Built in words
|
||||||
|
com! -nargs=+ Builtin syn keyword eighthBuiltin <args>
|
||||||
|
"Builtin ^ < <# <#> = > - -- ,# ; ;; ! ??? / . .# ' () @ * */ \
|
||||||
|
|
||||||
|
Builtin ! G:! #! G:#! ## G:## #> G:#> #if G:#if ' G:' ( G:( (* G:(* (:) G:(:) (code) G:(code) (getc) G:(getc)
|
||||||
|
Builtin (gets) G:(gets) (interp) G:(interp) (needs) G:(needs) (putc) G:(putc) (puts) G:(puts) (putslim) G:(putslim)
|
||||||
|
Builtin (say) G:(say) (stat) G:(stat) ) G:) +listener G:+listener +ref G:+ref ,# G:,# -- G:-- -----BEGIN G:-----BEGIN
|
||||||
|
Builtin -Inf G:-Inf -Inf? G:-Inf? -listener G:-listener -ref G:-ref -rot G:-rot . G:. .# G:.# .needs G:.needs
|
||||||
|
Builtin .r G:.r .s G:.s .stats G:.stats .ver G:.ver .with G:.with 0; G:0; 2dip G:2dip 2drop G:2drop
|
||||||
|
Builtin 2dup G:2dup 2over G:2over 2swap G:2swap 3drop G:3drop 4drop G:4drop 8thdt? G:8thdt? 8thver? G:8thver?
|
||||||
|
Builtin : G:: ; G:; ;; G:;; ;;; G:;;; ;then G:;then ;with G:;with <# G:<# <#> G:<#> >clip G:>clip >json G:>json
|
||||||
|
Builtin >kind G:>kind >n G:>n >r G:>r >s G:>s ?: G:?: ??? G:??? @ G:@ Inf G:Inf Inf? G:Inf? NaN G:NaN
|
||||||
|
Builtin NaN? G:NaN? SED-CHECK G:SED-CHECK SED: G:SED: SED: G:SED: \ G:\ ` G:` `` G:`` actor: G:actor:
|
||||||
|
Builtin again G:again ahead G:ahead and G:and appname G:appname apropos G:apropos argc G:argc args G:args
|
||||||
|
Builtin array? G:array? assert G:assert base G:base bi G:bi bits G:bits break G:break break? G:break?
|
||||||
|
Builtin build? G:build? buildver? G:buildver? bye G:bye c# G:c# c/does G:c/does case G:case caseof G:caseof
|
||||||
|
Builtin chdir G:chdir clip> G:clip> clone G:clone clone-shallow G:clone-shallow cold G:cold compat-level G:compat-level
|
||||||
|
Builtin compile G:compile compile? G:compile? conflict G:conflict const G:const container? G:container?
|
||||||
|
Builtin cr G:cr curlang G:curlang curry G:curry curry: G:curry: decimal G:decimal defer: G:defer: deg>rad G:deg>rad
|
||||||
|
Builtin depth G:depth die G:die dip G:dip drop G:drop dstack G:dstack dump G:dump dup G:dup dup? G:dup?
|
||||||
|
Builtin else G:else enum: G:enum: eval G:eval eval! G:eval! eval0 G:eval0 execnull G:execnull expect G:expect
|
||||||
|
Builtin extra! G:extra! extra@ G:extra@ false G:false fnv G:fnv fourth G:fourth free G:free func: G:func:
|
||||||
|
Builtin getc G:getc getcwd G:getcwd getenv G:getenv gets G:gets handler G:handler header G:header help G:help
|
||||||
|
Builtin hex G:hex i: G:i: i; G:i; if G:if if; G:if; isa? G:isa? items-used G:items-used jcall G:jcall
|
||||||
|
Builtin jclass G:jclass jmethod G:jmethod json-nesting G:json-nesting json-pretty G:json-pretty json-throw G:json-throw
|
||||||
|
Builtin json> G:json> k32 G:k32 keep G:keep l: G:l: last G:last lib G:lib libbin G:libbin libc G:libc
|
||||||
|
Builtin listener@ G:listener@ literal G:literal locals: G:locals: lock G:lock lock-to G:lock-to locked? G:locked?
|
||||||
|
Builtin log G:log log-async G:log-async log-task G:log-task log-time G:log-time log-time-local G:log-time-local
|
||||||
|
Builtin long-days G:long-days long-months G:long-months loop G:loop loop- G:loop- map? G:map? mark G:mark
|
||||||
|
Builtin mark? G:mark? memfree G:memfree mobile? G:mobile? n# G:n# name>os G:name>os name>sem G:name>sem
|
||||||
|
Builtin ndrop G:ndrop needs G:needs new G:new next-arg G:next-arg nip G:nip noop G:noop not G:not ns G:ns
|
||||||
|
Builtin ns: G:ns: ns>ls G:ns>ls ns>s G:ns>s ns? G:ns? null G:null null; G:null; null? G:null? number? G:number?
|
||||||
|
Builtin off G:off on G:on onexit G:onexit only G:only op! G:op! or G:or os G:os os-names G:os-names
|
||||||
|
Builtin os>long-name G:os>long-name os>name G:os>name over G:over p: G:p: pack G:pack parse G:parse
|
||||||
|
Builtin parsech G:parsech parseln G:parseln parsews G:parsews pick G:pick poke G:poke pool-clear G:pool-clear
|
||||||
|
Builtin prior G:prior private G:private process-args G:process-args prompt G:prompt public G:public
|
||||||
|
Builtin putc G:putc puts G:puts putslim G:putslim quote G:quote r! G:r! r> G:r> r@ G:r@ rad>deg G:rad>deg
|
||||||
|
Builtin rand G:rand rand-pcg G:rand-pcg rand-pcg-seed G:rand-pcg-seed randbuf G:randbuf randbuf-pcg G:randbuf-pcg
|
||||||
|
Builtin rdrop G:rdrop recurse G:recurse recurse-stack G:recurse-stack ref@ G:ref@ reg! G:reg! reg@ G:reg@
|
||||||
|
Builtin regbin@ G:regbin@ remaining-args G:remaining-args repeat G:repeat reset G:reset roll G:roll
|
||||||
|
Builtin rop! G:rop! rot G:rot rpick G:rpick rroll G:rroll rstack G:rstack rswap G:rswap rusage G:rusage
|
||||||
|
Builtin s>ns G:s>ns same? G:same? scriptdir G:scriptdir scriptfile G:scriptfile sem G:sem sem-post G:sem-post
|
||||||
|
Builtin sem-rm G:sem-rm sem-wait G:sem-wait sem-wait? G:sem-wait? sem>name G:sem>name semi-throw G:semi-throw
|
||||||
|
Builtin set-wipe G:set-wipe setenv G:setenv settings! G:settings! settings![] G:settings![] settings@ G:settings@
|
||||||
|
Builtin settings@? G:settings@? settings@[] G:settings@[] sh G:sh sh$ G:sh$ short-days G:short-days
|
||||||
|
Builtin short-months G:short-months sleep G:sleep space G:space stack-check G:stack-check stack-size G:stack-size
|
||||||
|
Builtin step G:step string? G:string? struct: G:struct: swap G:swap syslang G:syslang sysregion G:sysregion
|
||||||
|
Builtin tab-hook G:tab-hook tell-conflict G:tell-conflict tempdir G:tempdir tempfilename G:tempfilename
|
||||||
|
Builtin then G:then third G:third throw G:throw thrownull G:thrownull times G:times tlog G:tlog tri G:tri
|
||||||
|
Builtin true G:true tuck G:tuck type-check G:type-check typeassert G:typeassert unlock G:unlock unpack G:unpack
|
||||||
|
Builtin until G:until until! G:until! var G:var var, G:var, while G:while while! G:while! with: G:with:
|
||||||
|
Builtin words G:words words-like G:words-like words/ G:words/ xchg G:xchg xor G:xor >auth HTTP:>auth
|
||||||
|
Builtin sh I:sh tpush I:tpush trace-word I:trace-word call JSONRPC:call auth-string OAuth:auth-string
|
||||||
|
Builtin gen-nonce OAuth:gen-nonce params OAuth:params call SOAP:call ! a:! + a:+ - a:- 2each a:2each
|
||||||
|
Builtin 2map a:2map 2map+ a:2map+ 2map= a:2map= = a:= >map a:>map @ a:@ @@ a:@@ bsearch a:bsearch clear a:clear
|
||||||
|
Builtin close a:close diff a:diff dot a:dot each a:each each-slice a:each-slice exists? a:exists? filter a:filter
|
||||||
|
Builtin generate a:generate group a:group indexof a:indexof insert a:insert intersect a:intersect join a:join
|
||||||
|
Builtin len a:len map a:map map+ a:map+ map= a:map= mean a:mean mean&variance a:mean&variance new a:new
|
||||||
|
Builtin op a:op op! a:op! op= a:op= open a:open pop a:pop push a:push qsort a:qsort randeach a:randeach
|
||||||
|
Builtin reduce a:reduce reduce+ a:reduce+ rev a:rev shift a:shift shuffle a:shuffle slice a:slice slice+ a:slice+
|
||||||
|
Builtin slide a:slide sort a:sort union a:union when a:when when! a:when! x a:x x-each a:x-each xchg a:xchg
|
||||||
|
Builtin y a:y zip a:zip 8thdir app:8thdir asset app:asset atrun app:atrun atrun app:atrun atrun app:atrun
|
||||||
|
Builtin basedir app:basedir current app:current datadir app:datadir exename app:exename isgui app:isgui
|
||||||
|
Builtin main app:main oncrash app:oncrash orientation app:orientation pid app:pid restart app:restart
|
||||||
|
Builtin resumed app:resumed shared? app:shared? standalone app:standalone subdir app:subdir suspended app:suspended
|
||||||
|
Builtin sysquit app:sysquit (here) asm:(here) >n asm:>n avail asm:avail c, asm:c, here! asm:here! n> asm:n>
|
||||||
|
Builtin used asm:used w, asm:w, ! b:! + b:+ / b:/ = b:= >base64 b:>base64 >hex b:>hex >mpack b:>mpack
|
||||||
|
Builtin @ b:@ append b:append base64> b:base64> bit! b:bit! bit@ b:bit@ clear b:clear compress b:compress
|
||||||
|
Builtin conv b:conv each b:each each-slice b:each-slice expand b:expand fill b:fill getb b:getb hex> b:hex>
|
||||||
|
Builtin len b:len mem> b:mem> move b:move mpack-date b:mpack-date mpack-ignore b:mpack-ignore mpack> b:mpack>
|
||||||
|
Builtin new b:new op b:op rev b:rev search b:search shmem b:shmem slice b:slice splice b:splice ungetb b:ungetb
|
||||||
|
Builtin writable b:writable xor b:xor +block bc:+block .blocks bc:.blocks add-block bc:add-block block-hash bc:block-hash
|
||||||
|
Builtin block@ bc:block@ first-block bc:first-block hash bc:hash last-block bc:last-block load bc:load
|
||||||
|
Builtin new bc:new save bc:save set-sql bc:set-sql validate bc:validate validate-block bc:validate-block
|
||||||
|
Builtin add bloom:add filter bloom:filter in? bloom:in? accept bt:accept ch! bt:ch! ch@ bt:ch@ connect bt:connect
|
||||||
|
Builtin disconnect bt:disconnect err? bt:err? leconnect bt:leconnect lescan bt:lescan listen bt:listen
|
||||||
|
Builtin on? bt:on? read bt:read scan bt:scan service? bt:service? services? bt:services? write bt:write
|
||||||
|
Builtin * c:* * c:* + c:+ + c:+ = c:= = c:= >ri c:>ri >ri c:>ri abs c:abs abs c:abs arg c:arg arg c:arg
|
||||||
|
Builtin conj c:conj conj c:conj im c:im n> c:n> new c:new new c:new re c:re >aes128gcm cr:>aes128gcm
|
||||||
|
Builtin >aes256gcm cr:>aes256gcm >cp cr:>cp >cpe cr:>cpe >decrypt cr:>decrypt >edbox cr:>edbox >encrypt cr:>encrypt
|
||||||
|
Builtin >nbuf cr:>nbuf >rsabox cr:>rsabox >uuid cr:>uuid CBC cr:CBC CFB cr:CFB CTR cr:CTR ECB cr:ECB
|
||||||
|
Builtin GCM cr:GCM OFB cr:OFB aad? cr:aad? aes128box-sig cr:aes128box-sig aes128gcm> cr:aes128gcm>
|
||||||
|
Builtin aes256box-sig cr:aes256box-sig aes256gcm> cr:aes256gcm> aesgcm cr:aesgcm blakehash cr:blakehash
|
||||||
|
Builtin chacha20box-sig cr:chacha20box-sig chachapoly cr:chachapoly cipher! cr:cipher! cipher@ cr:cipher@
|
||||||
|
Builtin cp> cr:cp> cpe> cr:cpe> decrypt cr:decrypt decrypt+ cr:decrypt+ decrypt> cr:decrypt> dh-genkey cr:dh-genkey
|
||||||
|
Builtin dh-secret cr:dh-secret dh-sign cr:dh-sign dh-verify cr:dh-verify ebox-sig cr:ebox-sig ecc-genkey cr:ecc-genkey
|
||||||
|
Builtin ecc-secret cr:ecc-secret ecc-sign cr:ecc-sign ecc-verify cr:ecc-verify edbox-sig cr:edbox-sig
|
||||||
|
Builtin edbox> cr:edbox> encrypt cr:encrypt encrypt+ cr:encrypt+ encrypt> cr:encrypt> ensurekey cr:ensurekey
|
||||||
|
Builtin err? cr:err? gcm-tag-size cr:gcm-tag-size genkey cr:genkey hash cr:hash hash! cr:hash! hash+ cr:hash+
|
||||||
|
Builtin hash>b cr:hash>b hash>s cr:hash>s hash@ cr:hash@ hmac cr:hmac hotp cr:hotp iv? cr:iv? mode cr:mode
|
||||||
|
Builtin mode@ cr:mode@ randkey cr:randkey restore cr:restore root-certs cr:root-certs rsa_decrypt cr:rsa_decrypt
|
||||||
|
Builtin rsa_encrypt cr:rsa_encrypt rsa_sign cr:rsa_sign rsa_verify cr:rsa_verify rsabox-sig cr:rsabox-sig
|
||||||
|
Builtin rsabox> cr:rsabox> rsagenkey cr:rsagenkey save cr:save sbox-sig cr:sbox-sig sha1-hmac cr:sha1-hmac
|
||||||
|
Builtin shard cr:shard tag? cr:tag? totp cr:totp totp-epoch cr:totp-epoch totp-time-step cr:totp-time-step
|
||||||
|
Builtin unshard cr:unshard uuid cr:uuid uuid> cr:uuid> validate-pgp-sig cr:validate-pgp-sig (.hebrew) d:(.hebrew)
|
||||||
|
Builtin (.islamic) d:(.islamic) + d:+ +day d:+day +hour d:+hour +min d:+min +msec d:+msec - d:- .hebrew d:.hebrew
|
||||||
|
Builtin .islamic d:.islamic .time d:.time / d:/ = d:= >fixed d:>fixed >hebepoch d:>hebepoch >msec d:>msec
|
||||||
|
Builtin >unix d:>unix >ymd d:>ymd Adar d:Adar Adar2 d:Adar2 Adar2 d:Adar2 Av d:Av Elul d:Elul Fri d:Fri
|
||||||
|
Builtin Heshvan d:Heshvan Iyar d:Iyar Kislev d:Kislev Mon d:Mon Nissan d:Nissan Sat d:Sat Shevat d:Shevat
|
||||||
|
Builtin Sivan d:Sivan Sun d:Sun Tammuz d:Tammuz Tevet d:Tevet Thu d:Thu Tishrei d:Tishrei Tue d:Tue
|
||||||
|
Builtin Wed d:Wed adjust-dst d:adjust-dst between d:between d. d:d. dawn d:dawn days-in-hebrew-year d:days-in-hebrew-year
|
||||||
|
Builtin displaying-hebrew d:displaying-hebrew do-dawn d:do-dawn do-dusk d:do-dusk do-rise d:do-rise
|
||||||
|
Builtin doy d:doy dst? d:dst? dstquery d:dstquery dstzones? d:dstzones? dusk d:dusk elapsed-timer d:elapsed-timer
|
||||||
|
Builtin elapsed-timer-seconds d:elapsed-timer-seconds first-dow d:first-dow fixed> d:fixed> fixed>dow d:fixed>dow
|
||||||
|
Builtin fixed>hebrew d:fixed>hebrew fixed>islamic d:fixed>islamic format d:format hanukkah d:hanukkah
|
||||||
|
Builtin hebrew-epoch d:hebrew-epoch hebrew>fixed d:hebrew>fixed hebrewtoday d:hebrewtoday hmonth-name d:hmonth-name
|
||||||
|
Builtin islamic.epoch d:islamic.epoch islamic>fixed d:islamic>fixed islamictoday d:islamictoday join d:join
|
||||||
|
Builtin last-day-of-hebrew-month d:last-day-of-hebrew-month last-dow d:last-dow last-month d:last-month
|
||||||
|
Builtin last-week d:last-week last-year d:last-year latitude d:latitude longitude d:longitude longitude d:longitude
|
||||||
|
Builtin msec d:msec msec> d:msec> new d:new next-dow d:next-dow next-month d:next-month next-week d:next-week
|
||||||
|
Builtin next-year d:next-year number>hebrew d:number>hebrew omer d:omer parse d:parse pesach d:pesach
|
||||||
|
Builtin prev-dow d:prev-dow purim d:purim rosh-chodesh? d:rosh-chodesh? rosh-hashanah d:rosh-hashanah
|
||||||
|
Builtin shavuot d:shavuot start-timer d:start-timer sunrise d:sunrise taanit-esther d:taanit-esther
|
||||||
|
Builtin ticks d:ticks ticks/sec d:ticks/sec timer d:timer tisha-beav d:tisha-beav tzadjust d:tzadjust
|
||||||
|
Builtin unix> d:unix> updatetz d:updatetz year@ d:year@ ymd d:ymd ymd> d:ymd> yom-haatsmaut d:yom-haatsmaut
|
||||||
|
Builtin yom-kippur d:yom-kippur add-func db:add-func bind db:bind close db:close col db:col col[] db:col[]
|
||||||
|
Builtin col{} db:col{} err? db:err? errmsg db:errmsg exec db:exec exec-cb db:exec-cb key db:key mysql? db:mysql?
|
||||||
|
Builtin odbc? db:odbc? open db:open open? db:open? prepare db:prepare query db:query query-all db:query-all
|
||||||
|
Builtin rekey db:rekey sqlerrmsg db:sqlerrmsg bp dbg:bp except-task@ dbg:except-task@ go dbg:go line-info dbg:line-info
|
||||||
|
Builtin prompt dbg:prompt stop dbg:stop trace dbg:trace trace-enter dbg:trace-enter trace-leave dbg:trace-leave
|
||||||
|
Builtin abspath f:abspath append f:append associate f:associate atime f:atime canwrite? f:canwrite?
|
||||||
|
Builtin chmod f:chmod close f:close copy f:copy copydir f:copydir create f:create ctime f:ctime dir? f:dir?
|
||||||
|
Builtin dname f:dname eachbuf f:eachbuf eachline f:eachline enssep f:enssep eof? f:eof? err? f:err?
|
||||||
|
Builtin exists? f:exists? flush f:flush fname f:fname getb f:getb getc f:getc getline f:getline getmod f:getmod
|
||||||
|
Builtin glob f:glob glob-nocase f:glob-nocase include f:include launch f:launch link f:link link> f:link>
|
||||||
|
Builtin link? f:link? mkdir f:mkdir mmap f:mmap mmap-range f:mmap-range mmap-range? f:mmap-range? mtime f:mtime
|
||||||
|
Builtin mv f:mv open f:open open-ro f:open-ro popen f:popen print f:print read f:read relpath f:relpath
|
||||||
|
Builtin rglob f:rglob rm f:rm rmdir f:rmdir seek f:seek sep f:sep show f:show size f:size slurp f:slurp
|
||||||
|
Builtin stderr f:stderr stdin f:stdin stdout f:stdout tell f:tell times f:times trash f:trash ungetb f:ungetb
|
||||||
|
Builtin ungetc f:ungetc unzip f:unzip unzip-entry f:unzip-entry watch f:watch write f:write writen f:writen
|
||||||
|
Builtin zip+ f:zip+ zip@ f:zip@ zipentry f:zipentry zipnew f:zipnew zipopen f:zipopen zipsave f:zipsave
|
||||||
|
Builtin bold font:bold face? font:face? glyph-path font:glyph-path glyph-pos font:glyph-pos info font:info
|
||||||
|
Builtin italic font:italic ls font:ls measure font:measure new font:new pixels font:pixels pixels? font:pixels?
|
||||||
|
Builtin points font:points points? font:points? styles font:styles styles? font:styles? underline font:underline
|
||||||
|
Builtin +child g:+child +kind g:+kind +path g:+path -child g:-child /path g:/path >img g:>img >progress g:>progress
|
||||||
|
Builtin add-items g:add-items adjustwidth g:adjustwidth allow-orient g:allow-orient arc g:arc arc2 g:arc2
|
||||||
|
Builtin autohide g:autohide back g:back bezier g:bezier bg g:bg bg? g:bg? bounds g:bounds bounds? g:bounds?
|
||||||
|
Builtin box-label g:box-label btn-font g:btn-font bubble g:bubble button-size g:button-size buttons-visible g:buttons-visible
|
||||||
|
Builtin c-text g:c-text callout g:callout center g:center child g:child clear g:clear clearpath g:clearpath
|
||||||
|
Builtin clr>n g:clr>n coleven g:coleven colordlg g:colordlg colwidth g:colwidth connectededges g:connectededges
|
||||||
|
Builtin contrasting g:contrasting cp g:cp curmouse? g:curmouse? default-font g:default-font deselect-row g:deselect-row
|
||||||
|
Builtin dismiss g:dismiss do g:do draw-fitted-text g:draw-fitted-text draw-text g:draw-text draw-text-at g:draw-text-at
|
||||||
|
Builtin each g:each edit-on-double-click g:edit-on-double-click editable g:editable editdlg g:editdlg
|
||||||
|
Builtin empty-text g:empty-text enable g:enable enabled? g:enabled? fade g:fade fb-files g:fb-files
|
||||||
|
Builtin fcolor g:fcolor fg g:fg fg? g:fg? file-filter g:file-filter file-name g:file-name filedlg g:filedlg
|
||||||
|
Builtin fill g:fill fillall g:fillall fit-text g:fit-text flex! g:flex! focus g:focus fontdlg g:fontdlg
|
||||||
|
Builtin forward g:forward fullscreen g:fullscreen get-lasso-items g:get-lasso-items get-tab g:get-tab
|
||||||
|
Builtin getclr g:getclr getfont g:getfont getimage g:getimage getpath g:getpath getroot g:getroot gradient g:gradient
|
||||||
|
Builtin gui? g:gui? handle g:handle headerheight g:headerheight hide g:hide image g:image image-at g:image-at
|
||||||
|
Builtin invalidate g:invalidate ix? g:ix? justify g:justify keyinfo g:keyinfo l-text g:l-text laf g:laf
|
||||||
|
Builtin laf! g:laf! laf? g:laf? len g:len line-width g:line-width lineto g:lineto list+ g:list+ list- g:list-
|
||||||
|
Builtin loadcontent g:loadcontent localize g:localize m! g:m! m@ g:m@ menu-font g:menu-font menu-update g:menu-update
|
||||||
|
Builtin menuenabled g:menuenabled mouse? g:mouse? mousepos? g:mousepos? moveto g:moveto msgdlg g:msgdlg
|
||||||
|
Builtin multi g:multi name g:name named-skin g:named-skin new g:new new-laf g:new-laf next g:next obj g:obj
|
||||||
|
Builtin on g:on on? g:on? ontop g:ontop oshandle g:oshandle outlinethickness g:outlinethickness panel-size g:panel-size
|
||||||
|
Builtin panel-size? g:panel-size? parent g:parent path g:path path>s g:path>s pie g:pie pix! g:pix!
|
||||||
|
Builtin pop g:pop popmenu g:popmenu pos? g:pos? prev g:prev propval! g:propval! propval@ g:propval@
|
||||||
|
Builtin push g:push qbezier g:qbezier quit g:quit r-text g:r-text readonly g:readonly rect g:rect refresh g:refresh
|
||||||
|
Builtin restore g:restore root g:root root-item-visible g:root-item-visible rotate g:rotate rowheight g:rowheight
|
||||||
|
Builtin rrect g:rrect s>path g:s>path save g:save say g:say scale g:scale scolor g:scolor scrollthickness g:scrollthickness
|
||||||
|
Builtin sectionenable g:sectionenable select! g:select! select@ g:select@ selected-rows g:selected-rows
|
||||||
|
Builtin set-lasso g:set-lasso set-long-press g:set-long-press set-popup-font g:set-popup-font set-range g:set-range
|
||||||
|
Builtin set-swipe g:set-swipe set-value g:set-value setcursor g:setcursor setfont g:setfont setheader g:setheader
|
||||||
|
Builtin sethtml g:sethtml setimage g:setimage setname g:setname setroot g:setroot settab g:settab show g:show
|
||||||
|
Builtin show-line-numbers g:show-line-numbers show-pct g:show-pct showmenu g:showmenu showtooltip g:showtooltip
|
||||||
|
Builtin size g:size size? g:size? skin g:skin skin-class g:skin-class stackix g:stackix state g:state
|
||||||
|
Builtin state? g:state? stepsize g:stepsize stroke g:stroke stroke-fill g:stroke-fill style g:style
|
||||||
|
Builtin tabname g:tabname text g:text text-box-style g:text-box-style text? g:text? textcolor g:textcolor
|
||||||
|
Builtin textsize g:textsize timer! g:timer! timer@ g:timer@ toback g:toback tofront g:tofront toggle-row g:toggle-row
|
||||||
|
Builtin tooltip g:tooltip top g:top transition g:transition translate g:translate tree-open g:tree-open
|
||||||
|
Builtin triangle g:triangle update g:update updateitems g:updateitems url g:url user g:user user! g:user!
|
||||||
|
Builtin vertical g:vertical view g:view visible? g:visible? vpos! g:vpos! vpos@ g:vpos@ waitcursor g:waitcursor
|
||||||
|
Builtin winding g:winding xy g:xy xy? g:xy? +edge gr:+edge +edge+w gr:+edge+w +node gr:+node connect gr:connect
|
||||||
|
Builtin edges gr:edges m! gr:m! m@ gr:m@ neighbors gr:neighbors new gr:new node-edges gr:node-edges
|
||||||
|
Builtin nodes gr:nodes traverse gr:traverse + h:+ clear h:clear len h:len new h:new peek h:peek pop h:pop
|
||||||
|
Builtin push h:push unique h:unique arm? hw:arm? camera hw:camera camera-fmt hw:camera-fmt camera-img hw:camera-img
|
||||||
|
Builtin camera? hw:camera? cpu? hw:cpu? device? hw:device? displays? hw:displays? displaysize? hw:displaysize?
|
||||||
|
Builtin err? hw:err? gpio hw:gpio gpio! hw:gpio! gpio-mmap hw:gpio-mmap gpio@ hw:gpio@ i2c hw:i2c i2c! hw:i2c!
|
||||||
|
Builtin i2c!reg hw:i2c!reg i2c@ hw:i2c@ i2c@reg hw:i2c@reg isround? hw:isround? iswatch? hw:iswatch?
|
||||||
|
Builtin mac? hw:mac? mem? hw:mem? poll hw:poll sensor hw:sensor start hw:start stop hw:stop fetch-full imap:fetch-full
|
||||||
|
Builtin fetch-uid-mail imap:fetch-uid-mail login imap:login new imap:new select-inbox imap:select-inbox
|
||||||
|
Builtin >file img:>file copy img:copy crop img:crop data img:data desat img:desat fill img:fill filter img:filter
|
||||||
|
Builtin flip img:flip from-svg img:from-svg new img:new pix! img:pix! pix@ img:pix@ qr-gen img:qr-gen
|
||||||
|
Builtin qr-parse img:qr-parse rotate img:rotate scale img:scale scroll img:scroll size img:size countries iso:countries
|
||||||
|
Builtin find loc:find sort loc:sort ! m:! !? m:!? + m:+ +? m:+? - m:- @ m:@ @? m:@? @@ m:@@ clear m:clear
|
||||||
|
Builtin data m:data each m:each exists? m:exists? iter m:iter iter-all m:iter-all keys m:keys len m:len
|
||||||
|
Builtin map m:map new m:new op! m:op! open m:open vals m:vals xchg m:xchg ! mat:! * mat:* + mat:+ = mat:=
|
||||||
|
Builtin @ mat:@ col mat:col data mat:data det mat:det dim? mat:dim? get-n mat:get-n ident mat:ident
|
||||||
|
Builtin m. mat:m. minor mat:minor n* mat:n* new mat:new row mat:row same-size? mat:same-size? trans mat:trans
|
||||||
|
Builtin ! n:! * n:* */ n:*/ + n:+ +! n:+! - n:- / n:/ /mod n:/mod 1+ n:1+ 1- n:1- < n:< = n:= > n:>
|
||||||
|
Builtin BIGE n:BIGE BIGPI n:BIGPI E n:E PI n:PI ^ n:^ abs n:abs acos n:acos acos n:acos asin n:asin
|
||||||
|
Builtin asin n:asin atan n:atan atan n:atan atan2 n:atan2 band n:band between n:between bfloat n:bfloat
|
||||||
|
Builtin bic n:bic bint n:bint binv n:binv bnot n:bnot bor n:bor bxor n:bxor ceil n:ceil clamp n:clamp
|
||||||
|
Builtin cmp n:cmp comb n:comb cos n:cos cosd n:cosd exp n:exp expmod n:expmod float n:float floor n:floor
|
||||||
|
Builtin fmod n:fmod frac n:frac gcd n:gcd int n:int invmod n:invmod kind? n:kind? lcm n:lcm ln n:ln
|
||||||
|
Builtin max n:max median n:median min n:min mod n:mod neg n:neg odd? n:odd? perm n:perm prime? n:prime?
|
||||||
|
Builtin quantize n:quantize quantize! n:quantize! r+ n:r+ range n:range rot32l n:rot32l rot32r n:rot32r
|
||||||
|
Builtin round n:round round2 n:round2 running-variance n:running-variance running-variance-finalize n:running-variance-finalize
|
||||||
|
Builtin sgn n:sgn shl n:shl shr n:shr sin n:sin sind n:sind sqr n:sqr sqrt n:sqrt tan n:tan tand n:tand
|
||||||
|
Builtin trunc n:trunc ~= n:~= ! net:! >url net:>url @ net:@ DGRAM net:DGRAM INET4 net:INET4 INET6 net:INET6
|
||||||
|
Builtin PROTO_TCP net:PROTO_TCP PROTO_UDP net:PROTO_UDP STREAM net:STREAM accept net:accept addrinfo>o net:addrinfo>o
|
||||||
|
Builtin again? net:again? alloc-and-read net:alloc-and-read alloc-buf net:alloc-buf bind net:bind browse net:browse
|
||||||
|
Builtin close net:close connect net:connect err>s net:err>s err? net:err? get net:get getaddrinfo net:getaddrinfo
|
||||||
|
Builtin getpeername net:getpeername head net:head ifaces? net:ifaces? listen net:listen net-socket net:net-socket
|
||||||
|
Builtin opts net:opts port-is-ssl? net:port-is-ssl? post net:post proxy! net:proxy! read net:read recvfrom net:recvfrom
|
||||||
|
Builtin s>url net:s>url sendto net:sendto server net:server setsockopt net:setsockopt socket net:socket
|
||||||
|
Builtin tlshello net:tlshello url> net:url> user-agent net:user-agent wait net:wait write net:write
|
||||||
|
Builtin MAX ns:MAX cast ptr:cast len ptr:len pack ptr:pack unpack ptr:unpack unpack_orig ptr:unpack_orig
|
||||||
|
Builtin + q:+ clear q:clear len q:len new q:new notify q:notify overwrite q:overwrite peek q:peek pick q:pick
|
||||||
|
Builtin pop q:pop push q:push shift q:shift size q:size slide q:slide throwing q:throwing wait q:wait
|
||||||
|
Builtin ++match r:++match +/ r:+/ +match r:+match / r:/ @ r:@ err? r:err? len r:len match r:match new r:new
|
||||||
|
Builtin rx r:rx str r:str ! s:! * s:* + s:+ - s:- / s:/ /scripts s:/scripts <+ s:<+ = s:= =ic s:=ic
|
||||||
|
Builtin >base64 s:>base64 >ucs2 s:>ucs2 @ s:@ append s:append base64> s:base64> clear s:clear cmp s:cmp
|
||||||
|
Builtin cmpi s:cmpi compress s:compress days! s:days! each s:each eachline s:eachline expand s:expand
|
||||||
|
Builtin fill s:fill fmt s:fmt gershayim s:gershayim globmatch s:globmatch hexupr s:hexupr insert s:insert
|
||||||
|
Builtin intl s:intl intl! s:intl! lang s:lang lc s:lc len s:len lsub s:lsub ltrim s:ltrim map s:map
|
||||||
|
Builtin months! s:months! new s:new replace s:replace replace! s:replace! rev s:rev rsearch s:rsearch
|
||||||
|
Builtin rsub s:rsub rtrim s:rtrim script? s:script? search s:search size s:size slice s:slice strfmap s:strfmap
|
||||||
|
Builtin strfmt s:strfmt trim s:trim tsub s:tsub uc s:uc ucs2> s:ucs2> utf8? s:utf8? zt s:zt close sio:close
|
||||||
|
Builtin enum sio:enum open sio:open opts! sio:opts! opts@ sio:opts@ read sio:read write sio:write new smtp:new
|
||||||
|
Builtin send smtp:send apply-filter snd:apply-filter devices? snd:devices? end-record snd:end-record
|
||||||
|
Builtin filter snd:filter formats? snd:formats? freq snd:freq gain snd:gain gain? snd:gain? len snd:len
|
||||||
|
Builtin loop snd:loop mix snd:mix new snd:new pause snd:pause play snd:play played snd:played rate snd:rate
|
||||||
|
Builtin record snd:record seek snd:seek stop snd:stop stopall snd:stopall unmix snd:unmix volume snd:volume
|
||||||
|
Builtin volume? snd:volume? + st:+ . st:. clear st:clear len st:len ndrop st:ndrop new st:new op! st:op!
|
||||||
|
Builtin peek st:peek pick st:pick pop st:pop push st:push roll st:roll shift st:shift size st:size
|
||||||
|
Builtin slide st:slide swap st:swap throwing st:throwing >buf struct:>buf arr> struct:arr> buf struct:buf
|
||||||
|
Builtin buf> struct:buf> byte struct:byte double struct:double field! struct:field! field@ struct:field@
|
||||||
|
Builtin float struct:float ignore struct:ignore int struct:int long struct:long struct; struct:struct;
|
||||||
|
Builtin word struct:word ! t:! @ t:@ assign t:assign curtask t:curtask def-queue t:def-queue def-stack t:def-stack
|
||||||
|
Builtin done? t:done? err! t:err! err? t:err? getq t:getq guitask t:guitask handler t:handler kill t:kill
|
||||||
|
Builtin list t:list main t:main name! t:name! name@ t:name@ notify t:notify pop t:pop priority t:priority
|
||||||
|
Builtin push t:push push< t:push< q-notify t:q-notify q-wait t:q-wait qlen t:qlen result t:result task t:task
|
||||||
|
Builtin task-n t:task-n task-stop t:task-stop wait t:wait ! w:! @ w:@ alias: w:alias: cb w:cb deprecate w:deprecate
|
||||||
|
Builtin exec w:exec exec? w:exec? ffifail w:ffifail find w:find forget w:forget is w:is undo w:undo
|
||||||
|
Builtin >s xml:>s >txt xml:>txt parse xml:parse parse-html xml:parse-html parse-stream xml:parse-stream
|
||||||
|
Builtin getmsg[] zmq:getmsg[] sendmsg[] zmq:sendmsg[]
|
||||||
|
" numbers
|
||||||
|
syn keyword eighthMath decimal hex base@ base!
|
||||||
|
syn match eighthInteger '\<-\=[0-9.]*[0-9.]\+\>'
|
||||||
|
" recognize hex and binary numbers, the '$' and '%' notation is for eighth
|
||||||
|
syn match eighthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess
|
||||||
|
syn match eighthInteger '\<\x*\d\x*\>' " *2* --- this order!
|
||||||
|
syn match eighthInteger '\<%[0-1]*[0-1]\+\>'
|
||||||
|
syn match eighthInteger "\<'.\>"
|
||||||
|
|
||||||
|
" Strings
|
||||||
|
syn region eighthString start=+\.\?\"+ skip=+"+ end=+$+
|
||||||
|
syn keyword jsonNull null
|
||||||
|
syn keyword jsonBool /\(true\|false\)/
|
||||||
|
syn region eighthString start=/\<"/ end=/"\>/
|
||||||
|
syn match jsonObjEntry /"\"[^"]\+\"\ze\s*:/
|
||||||
|
|
||||||
|
"syn region jsonObject start=/{/ end=/}/ contained contains=jsonObjEntry,jsonArray,jsonObject, jsonBool, eighthString
|
||||||
|
"syn region jsonArray start=/\[/ end=/\]/ contained contains=jsonArray,jsonObject, jsonBool, eighthString
|
||||||
|
|
||||||
|
" Include files
|
||||||
|
" syn match eighthInclude '\<\(libinclude\|include\|needs\)\s\+\S\+'
|
||||||
|
syn region eighthComment start="\zs\\" end="$" contains=eighthTodo
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
if !exists("did_eighth_syntax_inits")
|
||||||
|
let did_eighth_syntax_inits=1
|
||||||
|
" The default methods for highlighting. Can be overriden later.
|
||||||
|
hi def link eighthTodo Todo
|
||||||
|
hi def link eighthOperators Operator
|
||||||
|
hi def link eighthMath Number
|
||||||
|
hi def link eighthInteger Number
|
||||||
|
hi def link eighthStack Special
|
||||||
|
hi def link eighthFStack Special
|
||||||
|
hi def link eighthSP Special
|
||||||
|
hi def link eighthColonDef Define
|
||||||
|
hi def link eighthColonName Operator
|
||||||
|
hi def link eighthEndOfColonDef Define
|
||||||
|
hi def link eighthDefine Define
|
||||||
|
hi def link eighthDebug Debug
|
||||||
|
hi def link eighthCharOps Character
|
||||||
|
hi def link eighthConversion String
|
||||||
|
hi def link eighthForth Statement
|
||||||
|
hi def link eighthVocs Statement
|
||||||
|
hi def link eighthString String
|
||||||
|
hi def link eighthComment Comment
|
||||||
|
hi def link eighthClassDef Define
|
||||||
|
hi def link eighthEndOfClassDef Define
|
||||||
|
hi def link eighthObjectDef Define
|
||||||
|
hi def link eighthEndOfObjectDef Define
|
||||||
|
hi def link eighthInclude Include
|
||||||
|
hi def link eighthBuiltin Define
|
||||||
|
hi def link eighthClasses Define
|
||||||
|
hi def link eighthClassWord Keyword
|
||||||
|
|
||||||
|
hi def link jsonObject Delimiter
|
||||||
|
hi def link jsonObjEntry Label
|
||||||
|
hi def link jsonArray Special
|
||||||
|
hi def link jsonNull Function
|
||||||
|
hi def link jsonBool Boolean
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:current_syntax = "8th"
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim: ts=8:sw=4:nocindent:smartindent:
|
||||||
|
|
||||||
|
endif
|
||||||
75
syntax/a2ps.vim
Normal file
75
syntax/a2ps.vim
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'a2ps') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: a2ps(1) configuration file
|
||||||
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
|
" Latest Revision: 2006-04-19
|
||||||
|
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
syn keyword a2psPreProc Include
|
||||||
|
\ nextgroup=a2psKeywordColon
|
||||||
|
|
||||||
|
syn keyword a2psMacro UserOption
|
||||||
|
\ nextgroup=a2psKeywordColon
|
||||||
|
|
||||||
|
syn keyword a2psKeyword LibraryPath AppendLibraryPath PrependLibraryPath
|
||||||
|
\ Options Medium Printer UnknownPrinter
|
||||||
|
\ DefaultPrinter OutputFirstLine
|
||||||
|
\ PageLabelFormat Delegation FileCommand
|
||||||
|
\ nextgroup=a2psKeywordColon
|
||||||
|
|
||||||
|
syn match a2psKeywordColon contained display ':'
|
||||||
|
|
||||||
|
syn keyword a2psKeyword Variable nextgroup=a2psVariableColon
|
||||||
|
|
||||||
|
syn match a2psVariableColon contained display ':'
|
||||||
|
\ nextgroup=a2psVariable skipwhite
|
||||||
|
|
||||||
|
syn match a2psVariable contained display '[^ \t:(){}]\+'
|
||||||
|
\ contains=a2psVarPrefix
|
||||||
|
|
||||||
|
syn match a2psVarPrefix contained display
|
||||||
|
\ '\<\%(del\|pro\|ps\|pl\|toc\|user\|\)\ze\.'
|
||||||
|
|
||||||
|
syn match a2psLineCont display '\\$'
|
||||||
|
|
||||||
|
syn match a2psSubst display '$\%(-\=.\=\d\+\)\=\h\d\='
|
||||||
|
syn match a2psSubst display '#[?!]\=\w\d\='
|
||||||
|
syn match a2psSubst display '#{[^}]\+}'
|
||||||
|
|
||||||
|
syn region a2psString display oneline start=+'+ end=+'+
|
||||||
|
\ contains=a2psSubst
|
||||||
|
|
||||||
|
syn region a2psString display oneline start=+"+ end=+"+
|
||||||
|
\ contains=a2psSubst
|
||||||
|
|
||||||
|
syn keyword a2psTodo contained TODO FIXME XXX NOTE
|
||||||
|
|
||||||
|
syn region a2psComment display oneline start='^\s*#' end='$'
|
||||||
|
\ contains=a2psTodo,@Spell
|
||||||
|
|
||||||
|
hi def link a2psTodo Todo
|
||||||
|
hi def link a2psComment Comment
|
||||||
|
hi def link a2psPreProc PreProc
|
||||||
|
hi def link a2psMacro Macro
|
||||||
|
hi def link a2psKeyword Keyword
|
||||||
|
hi def link a2psKeywordColon Delimiter
|
||||||
|
hi def link a2psVariableColon Delimiter
|
||||||
|
hi def link a2psVariable Identifier
|
||||||
|
hi def link a2psVarPrefix Type
|
||||||
|
hi def link a2psLineCont Special
|
||||||
|
hi def link a2psSubst PreProc
|
||||||
|
hi def link a2psString String
|
||||||
|
|
||||||
|
let b:current_syntax = "a2ps"
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
157
syntax/a65.vim
Normal file
157
syntax/a65.vim
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'a65') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: xa 6502 cross assembler
|
||||||
|
" Maintainer: Clemens Kirchgatterer <clemens@1541.org>
|
||||||
|
" Last Change: 2016 Aug 31
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn case ignore
|
||||||
|
|
||||||
|
" Opcodes
|
||||||
|
syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address
|
||||||
|
syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address
|
||||||
|
|
||||||
|
" Addresses
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)"
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)"
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)"
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)"
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)"
|
||||||
|
syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)"
|
||||||
|
syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)"
|
||||||
|
syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)"
|
||||||
|
syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)"
|
||||||
|
syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)"
|
||||||
|
|
||||||
|
" Numbers
|
||||||
|
syn match a65Number "#\=[0-9]*\>"
|
||||||
|
syn match a65Number "#\=$[0-9A-F]*\>"
|
||||||
|
syn match a65Number "#\=&[0-7]*\>"
|
||||||
|
syn match a65Number "#\=%[01]*\>"
|
||||||
|
|
||||||
|
syn case match
|
||||||
|
|
||||||
|
" Types
|
||||||
|
syn match a65Type "\(^\|\s\)\.byt\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.word\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.asc\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.text\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.data\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.bss\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.zero\($\|\s\)"
|
||||||
|
syn match a65Type "\(^\|\s\)\.align\($\|\s\)"
|
||||||
|
|
||||||
|
" Blocks
|
||||||
|
syn match a65Section "\(^\|\s\)\.(\($\|\s\)"
|
||||||
|
syn match a65Section "\(^\|\s\)\.)\($\|\s\)"
|
||||||
|
|
||||||
|
" Strings
|
||||||
|
syn match a65String "\".*\""
|
||||||
|
|
||||||
|
" Programm Counter
|
||||||
|
syn region a65PC start="\*=" end="\>" keepend
|
||||||
|
|
||||||
|
" HI/LO Byte
|
||||||
|
syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend
|
||||||
|
|
||||||
|
" Comments
|
||||||
|
syn keyword a65Todo TODO XXX FIXME BUG contained
|
||||||
|
syn match a65Comment ";.*"hs=s+1 contains=a65Todo
|
||||||
|
syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment
|
||||||
|
|
||||||
|
" Preprocessor
|
||||||
|
syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue
|
||||||
|
syn match a65End excludenl /end$/ contained
|
||||||
|
syn match a65Continue "\\$" contained
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
hi def link a65Section Special
|
||||||
|
hi def link a65Address Special
|
||||||
|
hi def link a65Comment Comment
|
||||||
|
hi def link a65PreProc PreProc
|
||||||
|
hi def link a65Number Number
|
||||||
|
hi def link a65String String
|
||||||
|
hi def link a65Type Statement
|
||||||
|
hi def link a65Opcode Type
|
||||||
|
hi def link a65PC Error
|
||||||
|
hi def link a65Todo Todo
|
||||||
|
hi def link a65HiLo Number
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "a65"
|
||||||
|
|
||||||
|
endif
|
||||||
162
syntax/aap.vim
Normal file
162
syntax/aap.vim
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aap') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: A-A-P recipe
|
||||||
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
|
" Last Change: 2004 Jun 13
|
||||||
|
|
||||||
|
" Quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
syn include @aapPythonScript syntax/python.vim
|
||||||
|
|
||||||
|
syn match aapVariable /$[-+?*="'\\!]*[a-zA-Z0-9_.]*/
|
||||||
|
syn match aapVariable /$[-+?*="'\\!]*([a-zA-Z0-9_.]*)/
|
||||||
|
syn keyword aapTodo contained TODO Todo
|
||||||
|
syn match aapString +'[^']\{-}'+
|
||||||
|
syn match aapString +"[^"]\{-}"+
|
||||||
|
|
||||||
|
syn match aapCommand '^\s*:action\>'
|
||||||
|
syn match aapCommand '^\s*:add\>'
|
||||||
|
syn match aapCommand '^\s*:addall\>'
|
||||||
|
syn match aapCommand '^\s*:asroot\>'
|
||||||
|
syn match aapCommand '^\s*:assertpkg\>'
|
||||||
|
syn match aapCommand '^\s*:attr\>'
|
||||||
|
syn match aapCommand '^\s*:attribute\>'
|
||||||
|
syn match aapCommand '^\s*:autodepend\>'
|
||||||
|
syn match aapCommand '^\s*:buildcheck\>'
|
||||||
|
syn match aapCommand '^\s*:cd\>'
|
||||||
|
syn match aapCommand '^\s*:chdir\>'
|
||||||
|
syn match aapCommand '^\s*:checkin\>'
|
||||||
|
syn match aapCommand '^\s*:checkout\>'
|
||||||
|
syn match aapCommand '^\s*:child\>'
|
||||||
|
syn match aapCommand '^\s*:chmod\>'
|
||||||
|
syn match aapCommand '^\s*:commit\>'
|
||||||
|
syn match aapCommand '^\s*:commitall\>'
|
||||||
|
syn match aapCommand '^\s*:conf\>'
|
||||||
|
syn match aapCommand '^\s*:copy\>'
|
||||||
|
syn match aapCommand '^\s*:del\>'
|
||||||
|
syn match aapCommand '^\s*:deldir\>'
|
||||||
|
syn match aapCommand '^\s*:delete\>'
|
||||||
|
syn match aapCommand '^\s*:delrule\>'
|
||||||
|
syn match aapCommand '^\s*:dll\>'
|
||||||
|
syn match aapCommand '^\s*:do\>'
|
||||||
|
syn match aapCommand '^\s*:error\>'
|
||||||
|
syn match aapCommand '^\s*:execute\>'
|
||||||
|
syn match aapCommand '^\s*:exit\>'
|
||||||
|
syn match aapCommand '^\s*:export\>'
|
||||||
|
syn match aapCommand '^\s*:fetch\>'
|
||||||
|
syn match aapCommand '^\s*:fetchall\>'
|
||||||
|
syn match aapCommand '^\s*:filetype\>'
|
||||||
|
syn match aapCommand '^\s*:finish\>'
|
||||||
|
syn match aapCommand '^\s*:global\>'
|
||||||
|
syn match aapCommand '^\s*:import\>'
|
||||||
|
syn match aapCommand '^\s*:include\>'
|
||||||
|
syn match aapCommand '^\s*:installpkg\>'
|
||||||
|
syn match aapCommand '^\s*:lib\>'
|
||||||
|
syn match aapCommand '^\s*:local\>'
|
||||||
|
syn match aapCommand '^\s*:log\>'
|
||||||
|
syn match aapCommand '^\s*:ltlib\>'
|
||||||
|
syn match aapCommand '^\s*:mkdir\>'
|
||||||
|
syn match aapCommand '^\s*:mkdownload\>'
|
||||||
|
syn match aapCommand '^\s*:move\>'
|
||||||
|
syn match aapCommand '^\s*:pass\>'
|
||||||
|
syn match aapCommand '^\s*:popdir\>'
|
||||||
|
syn match aapCommand '^\s*:produce\>'
|
||||||
|
syn match aapCommand '^\s*:program\>'
|
||||||
|
syn match aapCommand '^\s*:progsearch\>'
|
||||||
|
syn match aapCommand '^\s*:publish\>'
|
||||||
|
syn match aapCommand '^\s*:publishall\>'
|
||||||
|
syn match aapCommand '^\s*:pushdir\>'
|
||||||
|
syn match aapCommand '^\s*:quit\>'
|
||||||
|
syn match aapCommand '^\s*:recipe\>'
|
||||||
|
syn match aapCommand '^\s*:refresh\>'
|
||||||
|
syn match aapCommand '^\s*:remove\>'
|
||||||
|
syn match aapCommand '^\s*:removeall\>'
|
||||||
|
syn match aapCommand '^\s*:require\>'
|
||||||
|
syn match aapCommand '^\s*:revise\>'
|
||||||
|
syn match aapCommand '^\s*:reviseall\>'
|
||||||
|
syn match aapCommand '^\s*:route\>'
|
||||||
|
syn match aapCommand '^\s*:rule\>'
|
||||||
|
syn match aapCommand '^\s*:start\>'
|
||||||
|
syn match aapCommand '^\s*:symlink\>'
|
||||||
|
syn match aapCommand '^\s*:sys\>'
|
||||||
|
syn match aapCommand '^\s*:sysdepend\>'
|
||||||
|
syn match aapCommand '^\s*:syspath\>'
|
||||||
|
syn match aapCommand '^\s*:system\>'
|
||||||
|
syn match aapCommand '^\s*:tag\>'
|
||||||
|
syn match aapCommand '^\s*:tagall\>'
|
||||||
|
syn match aapCommand '^\s*:toolsearch\>'
|
||||||
|
syn match aapCommand '^\s*:totype\>'
|
||||||
|
syn match aapCommand '^\s*:touch\>'
|
||||||
|
syn match aapCommand '^\s*:tree\>'
|
||||||
|
syn match aapCommand '^\s*:unlock\>'
|
||||||
|
syn match aapCommand '^\s*:update\>'
|
||||||
|
syn match aapCommand '^\s*:usetool\>'
|
||||||
|
syn match aapCommand '^\s*:variant\>'
|
||||||
|
syn match aapCommand '^\s*:verscont\>'
|
||||||
|
|
||||||
|
syn match aapCommand '^\s*:print\>' nextgroup=aapPipeEnd
|
||||||
|
syn match aapPipeCmd '\s*:print\>' nextgroup=aapPipeEnd contained
|
||||||
|
syn match aapCommand '^\s*:cat\>' nextgroup=aapPipeEnd
|
||||||
|
syn match aapPipeCmd '\s*:cat\>' nextgroup=aapPipeEnd contained
|
||||||
|
syn match aapCommand '^\s*:syseval\>' nextgroup=aapPipeEnd
|
||||||
|
syn match aapPipeCmd '\s*:syseval\>' nextgroup=aapPipeEnd contained
|
||||||
|
syn match aapPipeCmd '\s*:assign\>' contained
|
||||||
|
syn match aapCommand '^\s*:eval\>' nextgroup=aapPipeEnd
|
||||||
|
syn match aapPipeCmd '\s*:eval\>' nextgroup=aapPipeEndPy contained
|
||||||
|
syn match aapPipeCmd '\s*:tee\>' nextgroup=aapPipeEnd contained
|
||||||
|
syn match aapPipeCmd '\s*:log\>' nextgroup=aapPipeEnd contained
|
||||||
|
syn match aapPipeEnd '[^|]*|' nextgroup=aapPipeCmd contained skipnl
|
||||||
|
syn match aapPipeEndPy '[^|]*|' nextgroup=aapPipeCmd contained skipnl contains=@aapPythonScript
|
||||||
|
syn match aapPipeStart '^\s*|' nextgroup=aapPipeCmd
|
||||||
|
|
||||||
|
"
|
||||||
|
" A Python line starts with @. Can be continued with a trailing backslash.
|
||||||
|
syn region aapPythonRegion start="\s*@" skip='\\$' end=+$+ contains=@aapPythonScript keepend
|
||||||
|
"
|
||||||
|
" A Python block starts with ":python" and continues so long as the indent is
|
||||||
|
" bigger.
|
||||||
|
syn region aapPythonRegion matchgroup=aapCommand start="\z(\s*\):python" skip='\n\z1\s\|\n\s*\n' end=+$+ contains=@aapPythonScript
|
||||||
|
|
||||||
|
" A Python expression is enclosed in backticks.
|
||||||
|
syn region aapPythonRegion start="`" skip="``" end="`" contains=@aapPythonScript
|
||||||
|
|
||||||
|
" TODO: There is something wrong with line continuation.
|
||||||
|
syn match aapComment '#.*' contains=aapTodo
|
||||||
|
syn match aapComment '#.*\(\\\n.*\)' contains=aapTodo
|
||||||
|
|
||||||
|
syn match aapSpecial '$#'
|
||||||
|
syn match aapSpecial '$\$'
|
||||||
|
syn match aapSpecial '$(.)'
|
||||||
|
|
||||||
|
" A heredoc assignment.
|
||||||
|
syn region aapHeredoc start="^\s*\k\+\s*$\=+\=?\=<<\s*\z(\S*\)"hs=e+1 end="^\s*\z1\s*$"he=s-1
|
||||||
|
|
||||||
|
" Syncing is needed for ":python" and "VAR << EOF". Don't use Python syncing
|
||||||
|
syn sync clear
|
||||||
|
syn sync fromstart
|
||||||
|
|
||||||
|
" The default highlighting.
|
||||||
|
hi def link aapTodo Todo
|
||||||
|
hi def link aapString String
|
||||||
|
hi def link aapComment Comment
|
||||||
|
hi def link aapSpecial Special
|
||||||
|
hi def link aapVariable Identifier
|
||||||
|
hi def link aapPipeCmd aapCommand
|
||||||
|
hi def link aapCommand Statement
|
||||||
|
hi def link aapHeredoc Constant
|
||||||
|
|
||||||
|
let b:current_syntax = "aap"
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim: ts=8
|
||||||
|
|
||||||
|
endif
|
||||||
199
syntax/abap.vim
Normal file
199
syntax/abap.vim
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abap') == -1
|
||||||
|
|
||||||
|
" Vim ABAP syntax file
|
||||||
|
" Language: SAP - ABAP/R4
|
||||||
|
" Maintainer: Marius Piedallu van Wyk <lailoken@gmail.com>
|
||||||
|
" Last Change: 2018 Dec 12
|
||||||
|
" Comment: Thanks to EPI-USE Labs for all your assistance. :)
|
||||||
|
|
||||||
|
" Quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Always ignore case
|
||||||
|
syn case ignore
|
||||||
|
|
||||||
|
" Symbol Operators (space delimited)
|
||||||
|
syn match abapSymbolOperator "\W+\W"
|
||||||
|
syn match abapSymbolOperator "\W-\W"
|
||||||
|
syn match abapSymbolOperator "\W/\W"
|
||||||
|
syn match abapSymbolOperator "\W%\W"
|
||||||
|
syn match abapSymbolOperator "\W=\W"
|
||||||
|
syn match abapSymbolOperator "\W<\W"
|
||||||
|
syn match abapSymbolOperator "\W>\W"
|
||||||
|
syn match abapSymbolOperator "\W\*\W"
|
||||||
|
syn match abapSymbolOperator "\W[<>]=\W"
|
||||||
|
syn match abapSymbolOperator "\W<>\W"
|
||||||
|
syn match abapSymbolOperator "\W\*\*\W"
|
||||||
|
syn match abapSymbolOperator "\[\]"
|
||||||
|
syn match abapSymbolOperator "->\*\?"
|
||||||
|
syn match abapSymbolOperator "=>"
|
||||||
|
syn match abapSymbolOperator "[()~:,\.&$]"
|
||||||
|
|
||||||
|
" Literals
|
||||||
|
syn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape
|
||||||
|
syn match abapCharStringEscape contained "''"
|
||||||
|
|
||||||
|
syn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape
|
||||||
|
syn match abapStringEscape contained "``"
|
||||||
|
|
||||||
|
syn match abapNumber "\-\=\<\d\+\>"
|
||||||
|
syn region abapHex matchgroup=abapHex start="X'" end="'"
|
||||||
|
|
||||||
|
setlocal iskeyword=48-57,_,A-Z,a-z,/
|
||||||
|
|
||||||
|
syn match abapNamespace "\</\w\+/"
|
||||||
|
|
||||||
|
" multi-word statements
|
||||||
|
syn match abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>"
|
||||||
|
syn match abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>"
|
||||||
|
syn match abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>"
|
||||||
|
syn match abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>"
|
||||||
|
syn match abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>"
|
||||||
|
syn match abapComplexStatement "\<NO\W\+INTERVALS\>"
|
||||||
|
syn match abapComplexStatement "\<RESPECTING\W\+BLANKS\>"
|
||||||
|
syn match abapComplexStatement "\<SEPARATED\W\+BY\>"
|
||||||
|
syn match abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>"
|
||||||
|
syn match abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>"
|
||||||
|
syn match abapComplexStatement "\<GET\W\+\(TIME\(\W\+STAMP\)\?\(\W\+FIELD\)\?\|PF-STATUS\|BADI\|BIT\|CONNECTION\|CURSOR\|REFERENCE\W\+OF\)\>"
|
||||||
|
syn match abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>"
|
||||||
|
syn match abapComplexStatement "\<REF\W\+TO\>"
|
||||||
|
syn match abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>"
|
||||||
|
syn match abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>"
|
||||||
|
syn match abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>"
|
||||||
|
syn match abapComplexStatement "\<INHERITING\W\+FROM\>"
|
||||||
|
syn match abapComplexStatement "\<\(UP\W\+\)\?TO\>"
|
||||||
|
|
||||||
|
" hyphenated-word statements
|
||||||
|
syn match abapComplexStatement "\<LINE-COUNT\>"
|
||||||
|
syn match abapComplexStatement "\<ADD-CORRESPONDING\>"
|
||||||
|
syn match abapComplexStatement "\<AUTHORITY-CHECK\>"
|
||||||
|
syn match abapComplexStatement "\<BREAK-POINT\>"
|
||||||
|
syn match abapComplexStatement "\<CLASS-DATA\>"
|
||||||
|
syn match abapComplexStatement "\<CLASS-METHODS\>"
|
||||||
|
syn match abapComplexStatement "\<CLASS-METHOD\>"
|
||||||
|
syn match abapComplexStatement "\<DIVIDE-CORRESPONDING\>"
|
||||||
|
syn match abapComplexStatement "\<EDITOR-CALL\>"
|
||||||
|
syn match abapComplexStatement "\<END-OF-DEFINITION\>"
|
||||||
|
syn match abapComplexStatement "\<END-OF-PAGE\>"
|
||||||
|
syn match abapComplexStatement "\<END-OF-SELECTION\>"
|
||||||
|
syn match abapComplexStatement "\<FIELD-GROUPS\>"
|
||||||
|
syn match abapComplexStatement "\<FIELD-SYMBOLS\>"
|
||||||
|
syn match abapComplexStatement "\<FUNCTION-POOL\>"
|
||||||
|
syn match abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>"
|
||||||
|
syn match abapComplexStatement "\<MOVE-CORRESPONDING\>"
|
||||||
|
syn match abapComplexStatement "\<MULTIPLY-CORRESPONDING\>"
|
||||||
|
syn match abapComplexStatement "\<NEW-LINE\>"
|
||||||
|
syn match abapComplexStatement "\<NEW-PAGE\>"
|
||||||
|
syn match abapComplexStatement "\<NEW-SECTION\>"
|
||||||
|
syn match abapComplexStatement "\<PRINT-CONTROL\>"
|
||||||
|
syn match abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>"
|
||||||
|
syn match abapComplexStatement "\<SELECT-OPTIONS\>"
|
||||||
|
syn match abapComplexStatement "\<SELECTION-SCREEN\>"
|
||||||
|
syn match abapComplexStatement "\<START-OF-SELECTION\>"
|
||||||
|
syn match abapComplexStatement "\<SUBTRACT-CORRESPONDING\>"
|
||||||
|
syn match abapComplexStatement "\<SYNTAX-CHECK\>"
|
||||||
|
syn match abapComplexStatement "\<SYNTAX-TRACE\>"
|
||||||
|
syn match abapComplexStatement "\<TOP-OF-PAGE\>"
|
||||||
|
syn match abapComplexStatement "\<TYPE-POOL\>"
|
||||||
|
syn match abapComplexStatement "\<TYPE-POOLS\>"
|
||||||
|
syn match abapComplexStatement "\<LINE-SIZE\>"
|
||||||
|
syn match abapComplexStatement "\<LINE-COUNT\>"
|
||||||
|
syn match abapComplexStatement "\<MESSAGE-ID\>"
|
||||||
|
syn match abapComplexStatement "\<DISPLAY-MODE\>"
|
||||||
|
syn match abapComplexStatement "\<READ\(-ONLY\)\?\>"
|
||||||
|
|
||||||
|
" ABAP statements
|
||||||
|
syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
|
||||||
|
syn keyword abapStatement BACK
|
||||||
|
syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
|
||||||
|
syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO
|
||||||
|
syn keyword abapStatement ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT
|
||||||
|
syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION
|
||||||
|
syn keyword abapStatement GENERATE
|
||||||
|
syn keyword abapStatement HIDE
|
||||||
|
syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION
|
||||||
|
syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP
|
||||||
|
syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY
|
||||||
|
syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS
|
||||||
|
syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT
|
||||||
|
syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
|
||||||
|
syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS
|
||||||
|
syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES
|
||||||
|
syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE
|
||||||
|
syn keyword abapStatement WHEN WHILE WINDOW WRITE
|
||||||
|
|
||||||
|
" More statemets
|
||||||
|
syn keyword abapStatement LINES
|
||||||
|
syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE
|
||||||
|
syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE
|
||||||
|
syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING
|
||||||
|
syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
|
||||||
|
syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
|
||||||
|
syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
|
||||||
|
syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
|
||||||
|
|
||||||
|
" Special ABAP specific tables:
|
||||||
|
syn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
|
||||||
|
syn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement
|
||||||
|
syn match abapField "-\w\+"ms=s+1
|
||||||
|
|
||||||
|
" Pointer
|
||||||
|
syn match abapSpecial "<\w\+>"
|
||||||
|
|
||||||
|
" Abap common constants:
|
||||||
|
syn keyword abapSpecial TRUE FALSE NULL SPACE
|
||||||
|
|
||||||
|
" Includes
|
||||||
|
syn region abapInclude start="include" end="." contains=abapComment
|
||||||
|
|
||||||
|
" Types
|
||||||
|
syn keyword abapTypes c n i int8 p f d t x string xstring decfloat16 decfloat34
|
||||||
|
|
||||||
|
" Atritmitic operators
|
||||||
|
syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
|
||||||
|
syn keyword abapOperator cosh sinh tanh exp log log10 sqrt
|
||||||
|
|
||||||
|
" String operators
|
||||||
|
syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen
|
||||||
|
|
||||||
|
syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
|
||||||
|
|
||||||
|
" An error? Not strictly... but cannot think of reason this is intended.
|
||||||
|
syn match abapError "\.\."
|
||||||
|
|
||||||
|
" Comments
|
||||||
|
syn region abapComment start="^\*" end="$" contains=abapTodo
|
||||||
|
syn match abapComment "\".*" contains=abapTodo
|
||||||
|
syn keyword abapTodo contained TODO NOTE
|
||||||
|
syn match abapTodo "\#EC\W\+\w\+"
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
hi def link abapError Error
|
||||||
|
hi def link abapComment Comment
|
||||||
|
hi def link abapInclude Include
|
||||||
|
hi def link abapStatement Statement
|
||||||
|
hi def link abapComplexStatement Statement
|
||||||
|
hi def link abapSpecial Special
|
||||||
|
hi def link abapNamespace Special
|
||||||
|
hi def link abapSpecialTables Special
|
||||||
|
hi def link abapSymbolOperator abapOperator
|
||||||
|
hi def link abapOperator Operator
|
||||||
|
hi def link abapCharString String
|
||||||
|
hi def link abapString String
|
||||||
|
hi def link abapFloat Float
|
||||||
|
hi def link abapTypes Type
|
||||||
|
hi def link abapSymbol Structure
|
||||||
|
hi def link abapStructure Structure
|
||||||
|
hi def link abapField Variable
|
||||||
|
hi def link abapNumber Number
|
||||||
|
hi def link abapHex Number
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "abap"
|
||||||
|
|
||||||
|
" vim: ts=8 sw=2
|
||||||
|
endif
|
||||||
39
syntax/abaqus.vim
Normal file
39
syntax/abaqus.vim
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abaqus') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: Abaqus finite element input file (www.hks.com)
|
||||||
|
" Maintainer: Carl Osterwisch <osterwischc@asme.org>
|
||||||
|
" Last Change: 2002 Feb 24
|
||||||
|
" Remark: Huge improvement in folding performance--see filetype plugin
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Abaqus comment lines
|
||||||
|
syn match abaqusComment "^\*\*.*$"
|
||||||
|
|
||||||
|
" Abaqus keyword lines
|
||||||
|
syn match abaqusKeywordLine "^\*\h.*" contains=abaqusKeyword,abaqusParameter,abaqusValue display
|
||||||
|
syn match abaqusKeyword "^\*\h[^,]*" contained display
|
||||||
|
syn match abaqusParameter ",[^,=]\+"lc=1 contained display
|
||||||
|
syn match abaqusValue "=\s*[^,]*"lc=1 contained display
|
||||||
|
|
||||||
|
" Illegal syntax
|
||||||
|
syn match abaqusBadLine "^\s\+\*.*" display
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
" The default methods for highlighting. Can be overridden later
|
||||||
|
hi def link abaqusComment Comment
|
||||||
|
hi def link abaqusKeyword Statement
|
||||||
|
hi def link abaqusParameter Identifier
|
||||||
|
hi def link abaqusValue Constant
|
||||||
|
hi def link abaqusBadLine Error
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "abaqus"
|
||||||
|
|
||||||
|
endif
|
||||||
55
syntax/abc.vim
Normal file
55
syntax/abc.vim
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abc') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: abc music notation language
|
||||||
|
" Maintainer: James Allwright <J.R.Allwright@westminster.ac.uk>
|
||||||
|
" URL: http://perun.hscs.wmin.ac.uk/~jra/vim/syntax/abc.vim
|
||||||
|
" Last Change: 27th April 2001
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" tags
|
||||||
|
syn region abcGuitarChord start=+"[A-G]+ end=+"+ contained
|
||||||
|
syn match abcNote "z[1-9]*[0-9]*" contained
|
||||||
|
syn match abcNote "z[1-9]*[0-9]*/[248]\=" contained
|
||||||
|
syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*" contained
|
||||||
|
syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*/[248]\=" contained
|
||||||
|
syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*" contained
|
||||||
|
syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*/[248]\=" contained
|
||||||
|
syn match abcBar "|" contained
|
||||||
|
syn match abcBar "[:|][:|]" contained
|
||||||
|
syn match abcBar ":|2" contained
|
||||||
|
syn match abcBar "|1" contained
|
||||||
|
syn match abcBar "\[[12]" contained
|
||||||
|
syn match abcTuple "([1-9]\+:\=[0-9]*:\=[0-9]*" contained
|
||||||
|
syn match abcBroken "<\|<<\|<<<\|>\|>>\|>>>" contained
|
||||||
|
syn match abcTie "-"
|
||||||
|
syn match abcHeadField "^[A-EGHIK-TVWXZ]:.*$" contained
|
||||||
|
syn match abcBodyField "^[KLMPQWVw]:.*$" contained
|
||||||
|
syn region abcHeader start="^X:" end="^K:.*$" contained contains=abcHeadField,abcComment keepend
|
||||||
|
syn region abcTune start="^X:" end="^ *$" contains=abcHeader,abcComment,abcBar,abcNote,abcBodyField,abcGuitarChord,abcTuple,abcBroken,abcTie
|
||||||
|
syn match abcComment "%.*$"
|
||||||
|
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
hi def link abcComment Comment
|
||||||
|
hi def link abcHeadField Type
|
||||||
|
hi def link abcBodyField Special
|
||||||
|
hi def link abcBar Statement
|
||||||
|
hi def link abcTuple Statement
|
||||||
|
hi def link abcBroken Statement
|
||||||
|
hi def link abcTie Statement
|
||||||
|
hi def link abcGuitarChord Identifier
|
||||||
|
hi def link abcNote Constant
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "abc"
|
||||||
|
|
||||||
|
" vim: ts=4
|
||||||
|
|
||||||
|
endif
|
||||||
165
syntax/abel.vim
Normal file
165
syntax/abel.vim
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'abel') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: ABEL
|
||||||
|
" Maintainer: John Cook <johncook3@gmail.com>
|
||||||
|
" Last Change: 2011 Dec 27
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" this language is oblivious to case
|
||||||
|
syn case ignore
|
||||||
|
|
||||||
|
" A bunch of keywords
|
||||||
|
syn keyword abelHeader module title device options
|
||||||
|
syn keyword abelSection declarations equations test_vectors end
|
||||||
|
syn keyword abelDeclaration state truth_table state_diagram property
|
||||||
|
syn keyword abelType pin node attribute constant macro library
|
||||||
|
|
||||||
|
syn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained
|
||||||
|
syn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained
|
||||||
|
|
||||||
|
syn keyword abelStatement when then else if with endwith case endcase
|
||||||
|
syn keyword abelStatement fuses expr trace
|
||||||
|
|
||||||
|
" option to omit obsolete statements
|
||||||
|
if exists("abel_obsolete_ok")
|
||||||
|
syn keyword abelStatement enable flag in
|
||||||
|
else
|
||||||
|
syn keyword abelError enable flag in
|
||||||
|
endif
|
||||||
|
|
||||||
|
" directives
|
||||||
|
syn match abelDirective "@alternate"
|
||||||
|
syn match abelDirective "@standard"
|
||||||
|
syn match abelDirective "@const"
|
||||||
|
syn match abelDirective "@dcset"
|
||||||
|
syn match abelDirective "@include"
|
||||||
|
syn match abelDirective "@page"
|
||||||
|
syn match abelDirective "@radix"
|
||||||
|
syn match abelDirective "@repeat"
|
||||||
|
syn match abelDirective "@irp"
|
||||||
|
syn match abelDirective "@expr"
|
||||||
|
syn match abelDirective "@if"
|
||||||
|
syn match abelDirective "@ifb"
|
||||||
|
syn match abelDirective "@ifnb"
|
||||||
|
syn match abelDirective "@ifdef"
|
||||||
|
syn match abelDirective "@ifndef"
|
||||||
|
syn match abelDirective "@ifiden"
|
||||||
|
syn match abelDirective "@ifniden"
|
||||||
|
|
||||||
|
syn keyword abelTodo contained TODO XXX FIXME
|
||||||
|
|
||||||
|
" wrap up type identifiers to differentiate them from normal strings
|
||||||
|
syn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend
|
||||||
|
syn match abelTypeIdChar "[,']" contained
|
||||||
|
syn match abelTypeIdEnd ";" contained
|
||||||
|
|
||||||
|
" string contstants and special characters within them
|
||||||
|
syn match abelSpecial contained "\\['\\]"
|
||||||
|
syn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial
|
||||||
|
|
||||||
|
" valid integer number formats (decimal, binary, octal, hex)
|
||||||
|
syn match abelNumber "\<[-+]\=[0-9]\+\>"
|
||||||
|
syn match abelNumber "\^d[0-9]\+\>"
|
||||||
|
syn match abelNumber "\^b[01]\+\>"
|
||||||
|
syn match abelNumber "\^o[0-7]\+\>"
|
||||||
|
syn match abelNumber "\^h[0-9a-f]\+\>"
|
||||||
|
|
||||||
|
" special characters
|
||||||
|
" (define these after abelOperator so ?= overrides ?)
|
||||||
|
syn match abelSpecialChar "[\[\](){},;:?]"
|
||||||
|
|
||||||
|
" operators
|
||||||
|
syn match abelLogicalOperator "[!#&$]"
|
||||||
|
syn match abelRangeOperator "\.\."
|
||||||
|
syn match abelAlternateOperator "[/*+]"
|
||||||
|
syn match abelAlternateOperator ":[+*]:"
|
||||||
|
syn match abelArithmeticOperator "[-%]"
|
||||||
|
syn match abelArithmeticOperator "<<"
|
||||||
|
syn match abelArithmeticOperator ">>"
|
||||||
|
syn match abelRelationalOperator "[<>!=]="
|
||||||
|
syn match abelRelationalOperator "[<>]"
|
||||||
|
syn match abelAssignmentOperator "[:?]\=="
|
||||||
|
syn match abelAssignmentOperator "?:="
|
||||||
|
syn match abelTruthTableOperator "->"
|
||||||
|
|
||||||
|
" signal extensions
|
||||||
|
syn match abelExtension "\.aclr\>"
|
||||||
|
syn match abelExtension "\.aset\>"
|
||||||
|
syn match abelExtension "\.clk\>"
|
||||||
|
syn match abelExtension "\.clr\>"
|
||||||
|
syn match abelExtension "\.com\>"
|
||||||
|
syn match abelExtension "\.fb\>"
|
||||||
|
syn match abelExtension "\.[co]e\>"
|
||||||
|
syn match abelExtension "\.l[eh]\>"
|
||||||
|
syn match abelExtension "\.fc\>"
|
||||||
|
syn match abelExtension "\.pin\>"
|
||||||
|
syn match abelExtension "\.set\>"
|
||||||
|
syn match abelExtension "\.[djksrtq]\>"
|
||||||
|
syn match abelExtension "\.pr\>"
|
||||||
|
syn match abelExtension "\.re\>"
|
||||||
|
syn match abelExtension "\.a[pr]\>"
|
||||||
|
syn match abelExtension "\.s[pr]\>"
|
||||||
|
|
||||||
|
" special constants
|
||||||
|
syn match abelConstant "\.[ckudfpxz]\."
|
||||||
|
syn match abelConstant "\.sv[2-9]\."
|
||||||
|
|
||||||
|
" one-line comments
|
||||||
|
syn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo
|
||||||
|
" option to prevent C++ style comments
|
||||||
|
if !exists("abel_cpp_comments_illegal")
|
||||||
|
syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn sync minlines=1
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
" The default highlighting.
|
||||||
|
hi def link abelHeader abelStatement
|
||||||
|
hi def link abelSection abelStatement
|
||||||
|
hi def link abelDeclaration abelStatement
|
||||||
|
hi def link abelLogicalOperator abelOperator
|
||||||
|
hi def link abelRangeOperator abelOperator
|
||||||
|
hi def link abelAlternateOperator abelOperator
|
||||||
|
hi def link abelArithmeticOperator abelOperator
|
||||||
|
hi def link abelRelationalOperator abelOperator
|
||||||
|
hi def link abelAssignmentOperator abelOperator
|
||||||
|
hi def link abelTruthTableOperator abelOperator
|
||||||
|
hi def link abelSpecifier abelStatement
|
||||||
|
hi def link abelOperator abelStatement
|
||||||
|
hi def link abelStatement Statement
|
||||||
|
hi def link abelIdentifier Identifier
|
||||||
|
hi def link abelTypeId abelType
|
||||||
|
hi def link abelTypeIdChar abelType
|
||||||
|
hi def link abelType Type
|
||||||
|
hi def link abelNumber abelString
|
||||||
|
hi def link abelString String
|
||||||
|
hi def link abelConstant Constant
|
||||||
|
hi def link abelComment Comment
|
||||||
|
hi def link abelExtension abelSpecial
|
||||||
|
hi def link abelSpecialChar abelSpecial
|
||||||
|
hi def link abelTypeIdEnd abelSpecial
|
||||||
|
hi def link abelSpecial Special
|
||||||
|
hi def link abelDirective PreProc
|
||||||
|
hi def link abelTodo Todo
|
||||||
|
hi def link abelError Error
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "abel"
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim:ts=8
|
||||||
|
|
||||||
|
endif
|
||||||
114
syntax/acedb.vim
Normal file
114
syntax/acedb.vim
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'acedb') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: AceDB model files
|
||||||
|
" Maintainer: Stewart Morris (Stewart.Morris@ed.ac.uk)
|
||||||
|
" Last change: Thu Apr 26 10:38:01 BST 2001
|
||||||
|
" URL: http://www.ed.ac.uk/~swmorris/vim/acedb.vim
|
||||||
|
|
||||||
|
" Syntax file to handle all $ACEDB/wspec/*.wrm files, primarily models.wrm
|
||||||
|
" AceDB software is available from http://www.acedb.org
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn keyword acedbXref XREF
|
||||||
|
syn keyword acedbModifier UNIQUE REPEAT
|
||||||
|
|
||||||
|
syn case ignore
|
||||||
|
syn keyword acedbModifier Constraints
|
||||||
|
syn keyword acedbType DateType Int Text Float
|
||||||
|
|
||||||
|
" Magic tags from: http://genome.cornell.edu/acedocs/magic/summary.html
|
||||||
|
syn keyword acedbMagic pick_me_to_call No_cache Non_graphic Title
|
||||||
|
syn keyword acedbMagic Flipped Centre Extent View Default_view
|
||||||
|
syn keyword acedbMagic From_map Minimal_view Main_Marker Map Includes
|
||||||
|
syn keyword acedbMagic Mapping_data More_data Position Ends Left Right
|
||||||
|
syn keyword acedbMagic Multi_Position Multi_Ends With Error Relative
|
||||||
|
syn keyword acedbMagic Min Anchor Gmap Grid_map Grid Submenus Cambridge
|
||||||
|
syn keyword acedbMagic No_buttons Columns Colour Surround_colour Tag
|
||||||
|
syn keyword acedbMagic Scale_unit Cursor Cursor_on Cursor_unit
|
||||||
|
syn keyword acedbMagic Locator Magnification Projection_lines_on
|
||||||
|
syn keyword acedbMagic Marker_points Marker_intervals Contigs
|
||||||
|
syn keyword acedbMagic Physical_genes Two_point Multi_point Likelihood
|
||||||
|
syn keyword acedbMagic Point_query Point_yellow Point_width
|
||||||
|
syn keyword acedbMagic Point_pne Point_pe Point_nne Point_ne
|
||||||
|
syn keyword acedbMagic Derived_tags DT_query DT_width DT_no_duplicates
|
||||||
|
syn keyword acedbMagic RH_data RH_query RH_spacing RH_show_all
|
||||||
|
syn keyword acedbMagic Names_on Width Symbol Colours Pne Pe Nne pMap
|
||||||
|
syn keyword acedbMagic Sequence Gridded FingerPrint In_Situ Cosmid_grid
|
||||||
|
syn keyword acedbMagic Layout Lines_at Space_at No_stagger A1_labelling
|
||||||
|
syn keyword acedbMagic DNA Structure From Source Source_Exons
|
||||||
|
syn keyword acedbMagic Coding CDS Transcript Assembly_tags Allele
|
||||||
|
syn keyword acedbMagic Display Colour Frame_sensitive Strand_sensitive
|
||||||
|
syn keyword acedbMagic Score_bounds Percent Bumpable Width Symbol
|
||||||
|
syn keyword acedbMagic Blixem_N Address E_mail Paper Reference Title
|
||||||
|
syn keyword acedbMagic Point_1 Point_2 Calculation Full One_recombinant
|
||||||
|
syn keyword acedbMagic Tested Selected_trans Backcross Back_one
|
||||||
|
syn keyword acedbMagic Dom_semi Dom_let Direct Complex_mixed Calc
|
||||||
|
syn keyword acedbMagic Calc_upper_conf Item_1 Item_2 Results A_non_B
|
||||||
|
syn keyword acedbMagic Score Score_by_offset Score_by_width
|
||||||
|
syn keyword acedbMagic Right_priority Blastn Blixem Blixem_X
|
||||||
|
syn keyword acedbMagic Journal Year Volume Page Author
|
||||||
|
syn keyword acedbMagic Selected One_all Recs_all One_let
|
||||||
|
syn keyword acedbMagic Sex_full Sex_one Sex_cis Dom_one Dom_selected
|
||||||
|
syn keyword acedbMagic Calc_distance Calc_lower_conf Canon_for_cosmid
|
||||||
|
syn keyword acedbMagic Reversed_physical Points Positive Negative
|
||||||
|
syn keyword acedbMagic Point_error_scale Point_segregate_ordered
|
||||||
|
syn keyword acedbMagic Point_symbol Interval_JTM Interval_RD
|
||||||
|
syn keyword acedbMagic EMBL_feature Homol Feature
|
||||||
|
syn keyword acedbMagic DT_tag Spacer Spacer_colour Spacer_width
|
||||||
|
syn keyword acedbMagic RH_positive RH_negative RH_contradictory Query
|
||||||
|
syn keyword acedbMagic Clone Y_remark PCR_remark Hybridizes_to
|
||||||
|
syn keyword acedbMagic Row Virtual_row Mixed In_pool Subpool B_non_A
|
||||||
|
syn keyword acedbMagic Interval_SRK Point_show_marginal Subsequence
|
||||||
|
syn keyword acedbMagic Visible Properties Transposon
|
||||||
|
|
||||||
|
syn match acedbClass "^?\w\+\|^#\w\+"
|
||||||
|
syn match acedbComment "//.*"
|
||||||
|
syn region acedbComment start="/\*" end="\*/"
|
||||||
|
syn match acedbComment "^#\W.*"
|
||||||
|
syn match acedbHelp "^\*\*\w\+$"
|
||||||
|
syn match acedbTag "[^^]?\w\+\|[^^]#\w\+"
|
||||||
|
syn match acedbBlock "//#.\+#$"
|
||||||
|
syn match acedbOption "^_[DVH]\S\+"
|
||||||
|
syn match acedbFlag "\s\+-\h\+"
|
||||||
|
syn match acedbSubclass "^Class"
|
||||||
|
syn match acedbSubtag "^Visible\|^Is_a_subclass_of\|^Filter\|^Hidden"
|
||||||
|
syn match acedbNumber "\<\d\+\>"
|
||||||
|
syn match acedbNumber "\<\d\+\.\d\+\>"
|
||||||
|
syn match acedbHyb "\<Positive_\w\+\>\|\<Negative\w\+\>"
|
||||||
|
syn region acedbString start=/"/ end=/"/ skip=/\\"/ oneline
|
||||||
|
|
||||||
|
" Rest of syntax highlighting rules start here
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
hi def link acedbMagic Special
|
||||||
|
hi def link acedbHyb Special
|
||||||
|
hi def link acedbType Type
|
||||||
|
hi def link acedbOption Type
|
||||||
|
hi def link acedbSubclass Type
|
||||||
|
hi def link acedbSubtag Include
|
||||||
|
hi def link acedbFlag Include
|
||||||
|
hi def link acedbTag Include
|
||||||
|
hi def link acedbClass Todo
|
||||||
|
hi def link acedbHelp Todo
|
||||||
|
hi def link acedbXref Identifier
|
||||||
|
hi def link acedbModifier Label
|
||||||
|
hi def link acedbComment Comment
|
||||||
|
hi def link acedbBlock ModeMsg
|
||||||
|
hi def link acedbNumber Number
|
||||||
|
hi def link acedbString String
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "acedb"
|
||||||
|
|
||||||
|
" The structure of the model.wrm file is sensitive to mixed tab and space
|
||||||
|
" indentation and assumes tabs are 8 so...
|
||||||
|
se ts=8
|
||||||
|
|
||||||
|
endif
|
||||||
372
syntax/ada.vim
Normal file
372
syntax/ada.vim
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ada') == -1
|
||||||
|
|
||||||
|
"----------------------------------------------------------------------------
|
||||||
|
" Description: Vim Ada syntax file
|
||||||
|
" Language: Ada (2005)
|
||||||
|
" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
|
||||||
|
" Copyright: Copyright (C) 2006 Martin Krischik
|
||||||
|
" Maintainer: Martin Krischik
|
||||||
|
" David A. Wheeler <dwheeler@dwheeler.com>
|
||||||
|
" Simon Bradley <simon.bradley@pitechnology.com>
|
||||||
|
" Contributors: Preben Randhol.
|
||||||
|
" $Author: krischik $
|
||||||
|
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
|
||||||
|
" Version: 4.6
|
||||||
|
" $Revision: 887 $
|
||||||
|
" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $
|
||||||
|
" http://www.dwheeler.com/vim
|
||||||
|
" History: 24.05.2006 MK Unified Headers
|
||||||
|
" 26.05.2006 MK ' should not be in iskeyword.
|
||||||
|
" 16.07.2006 MK Ada-Mode as vim-ball
|
||||||
|
" 02.10.2006 MK Better folding.
|
||||||
|
" 15.10.2006 MK Bram's suggestion for runtime integration
|
||||||
|
" 05.11.2006 MK Spell check for comments and strings only
|
||||||
|
" 05.11.2006 MK Bram suggested to save on spaces
|
||||||
|
" Help Page: help ft-ada-syntax
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" The formal spec of Ada 2005 (ARM) is the "Ada 2005 Reference Manual".
|
||||||
|
" For more Ada 2005 info, see http://www.gnuada.org and http://www.adapower.com.
|
||||||
|
"
|
||||||
|
" This vim syntax file works on vim 7.0 only and makes use of most of Voim 7.0
|
||||||
|
" advanced features.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if exists("b:current_syntax") || version < 700
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let s:keepcpo= &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let b:current_syntax = "ada"
|
||||||
|
|
||||||
|
" Section: Ada is entirely case-insensitive. {{{1
|
||||||
|
"
|
||||||
|
syntax case ignore
|
||||||
|
|
||||||
|
" Section: Highlighting commands {{{1
|
||||||
|
"
|
||||||
|
" There are 72 reserved words in total in Ada2005. Some keywords are
|
||||||
|
" used in more than one way. For example:
|
||||||
|
" 1. "end" is a general keyword, but "end if" ends a Conditional.
|
||||||
|
" 2. "then" is a conditional, but "and then" is an operator.
|
||||||
|
"
|
||||||
|
for b:Item in g:ada#Keywords
|
||||||
|
" Standard Exceptions (including I/O).
|
||||||
|
" We'll highlight the standard exceptions, similar to vim's Python mode.
|
||||||
|
" It's possible to redefine the standard exceptions as something else,
|
||||||
|
" but doing so is very bad practice, so simply highlighting them makes sense.
|
||||||
|
if b:Item['kind'] == "x"
|
||||||
|
execute "syntax keyword adaException " . b:Item['word']
|
||||||
|
endif
|
||||||
|
if b:Item['kind'] == "a"
|
||||||
|
execute 'syntax match adaAttribute "\V' . b:Item['word'] . '"'
|
||||||
|
endif
|
||||||
|
" We don't normally highlight types in package Standard
|
||||||
|
" (Integer, Character, Float, etc.). I don't think it looks good
|
||||||
|
" with the other type keywords, and many Ada programs define
|
||||||
|
" so many of their own types that it looks inconsistent.
|
||||||
|
" However, if you want this highlighting, turn on "ada_standard_types".
|
||||||
|
" For package Standard's definition, see ARM section A.1.
|
||||||
|
if b:Item['kind'] == "t" && exists ("g:ada_standard_types")
|
||||||
|
execute "syntax keyword adaBuiltinType " . b:Item['word']
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Section: others {{{1
|
||||||
|
"
|
||||||
|
syntax keyword adaLabel others
|
||||||
|
|
||||||
|
" Section: Operatoren {{{1
|
||||||
|
"
|
||||||
|
syntax keyword adaOperator abs mod not rem xor
|
||||||
|
syntax match adaOperator "\<and\>"
|
||||||
|
syntax match adaOperator "\<and\s\+then\>"
|
||||||
|
syntax match adaOperator "\<or\>"
|
||||||
|
syntax match adaOperator "\<or\s\+else\>"
|
||||||
|
syntax match adaOperator "[-+*/<>&]"
|
||||||
|
syntax keyword adaOperator **
|
||||||
|
syntax match adaOperator "[/<>]="
|
||||||
|
syntax keyword adaOperator =>
|
||||||
|
syntax match adaOperator "\.\."
|
||||||
|
syntax match adaOperator "="
|
||||||
|
|
||||||
|
" Section: <> {{{1
|
||||||
|
"
|
||||||
|
" Handle the box, <>, specially:
|
||||||
|
"
|
||||||
|
syntax keyword adaSpecial <>
|
||||||
|
|
||||||
|
" Section: rainbow color {{{1
|
||||||
|
"
|
||||||
|
if exists("g:ada_rainbow_color")
|
||||||
|
syntax match adaSpecial "[:;.,]"
|
||||||
|
call rainbow_parenthsis#LoadRound ()
|
||||||
|
call rainbow_parenthsis#Activate ()
|
||||||
|
else
|
||||||
|
syntax match adaSpecial "[:;().,]"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: := {{{1
|
||||||
|
"
|
||||||
|
" We won't map "adaAssignment" by default, but we need to map ":=" to
|
||||||
|
" something or the "=" inside it will be mislabelled as an operator.
|
||||||
|
" Note that in Ada, assignment (:=) is not considered an operator.
|
||||||
|
"
|
||||||
|
syntax match adaAssignment ":="
|
||||||
|
|
||||||
|
" Section: Numbers, including floating point, exponents, and alternate bases. {{{1
|
||||||
|
"
|
||||||
|
syntax match adaNumber "\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>"
|
||||||
|
syntax match adaNumber "\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\="
|
||||||
|
|
||||||
|
" Section: Identify leading numeric signs {{{1
|
||||||
|
"
|
||||||
|
" In "A-5" the "-" is an operator, " but in "A:=-5" the "-" is a sign. This
|
||||||
|
" handles "A3+-5" (etc.) correctly. " This assumes that if you put a
|
||||||
|
" don't put a space after +/- when it's used " as an operator, you won't
|
||||||
|
" put a space before it either -- which is true " in code I've seen.
|
||||||
|
"
|
||||||
|
syntax match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1
|
||||||
|
|
||||||
|
" Section: Labels for the goto statement. {{{1
|
||||||
|
"
|
||||||
|
syntax region adaLabel start="<<" end=">>"
|
||||||
|
|
||||||
|
" Section: Boolean Constants {{{1
|
||||||
|
" Boolean Constants.
|
||||||
|
syntax keyword adaBoolean true false
|
||||||
|
|
||||||
|
" Section: Warn C/C++ {{{1
|
||||||
|
"
|
||||||
|
" Warn people who try to use C/C++ notation erroneously:
|
||||||
|
"
|
||||||
|
syntax match adaError "//"
|
||||||
|
syntax match adaError "/\*"
|
||||||
|
syntax match adaError "=="
|
||||||
|
|
||||||
|
|
||||||
|
" Section: Space Errors {{{1
|
||||||
|
"
|
||||||
|
if exists("g:ada_space_errors")
|
||||||
|
if !exists("g:ada_no_trail_space_error")
|
||||||
|
syntax match adaSpaceError excludenl "\s\+$"
|
||||||
|
endif
|
||||||
|
if !exists("g:ada_no_tab_space_error")
|
||||||
|
syntax match adaSpaceError " \+\t"me=e-1
|
||||||
|
endif
|
||||||
|
if !exists("g:ada_all_tab_usage")
|
||||||
|
syntax match adaSpecial "\t"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: end {{{1
|
||||||
|
" Unless special ("end loop", "end if", etc.), "end" marks the end of a
|
||||||
|
" begin, package, task etc. Assiging it to adaEnd.
|
||||||
|
syntax match adaEnd /\<end\>/
|
||||||
|
|
||||||
|
syntax keyword adaPreproc pragma
|
||||||
|
|
||||||
|
syntax keyword adaRepeat exit for loop reverse while
|
||||||
|
syntax match adaRepeat "\<end\s\+loop\>"
|
||||||
|
|
||||||
|
syntax keyword adaStatement accept delay goto raise requeue return
|
||||||
|
syntax keyword adaStatement terminate
|
||||||
|
syntax match adaStatement "\<abort\>"
|
||||||
|
|
||||||
|
" Section: Handle Ada's record keywords. {{{1
|
||||||
|
"
|
||||||
|
" 'record' usually starts a structure, but "with null record;" does not,
|
||||||
|
" and 'end record;' ends a structure. The ordering here is critical -
|
||||||
|
" 'record;' matches a "with null record", so make it a keyword (this can
|
||||||
|
" match when the 'with' or 'null' is on a previous line).
|
||||||
|
" We see the "end" in "end record" before the word record, so we match that
|
||||||
|
" pattern as adaStructure (and it won't match the "record;" pattern).
|
||||||
|
"
|
||||||
|
syntax match adaStructure "\<record\>" contains=adaRecord
|
||||||
|
syntax match adaStructure "\<end\s\+record\>" contains=adaRecord
|
||||||
|
syntax match adaKeyword "\<record;"me=e-1
|
||||||
|
|
||||||
|
" Section: type classes {{{1
|
||||||
|
"
|
||||||
|
syntax keyword adaStorageClass abstract access aliased array at constant delta
|
||||||
|
syntax keyword adaStorageClass digits limited of private range tagged
|
||||||
|
syntax keyword adaStorageClass interface synchronized
|
||||||
|
syntax keyword adaTypedef subtype type
|
||||||
|
|
||||||
|
" Section: Conditionals {{{1
|
||||||
|
"
|
||||||
|
" "abort" after "then" is a conditional of its own.
|
||||||
|
"
|
||||||
|
syntax match adaConditional "\<then\>"
|
||||||
|
syntax match adaConditional "\<then\s\+abort\>"
|
||||||
|
syntax match adaConditional "\<else\>"
|
||||||
|
syntax match adaConditional "\<end\s\+if\>"
|
||||||
|
syntax match adaConditional "\<end\s\+case\>"
|
||||||
|
syntax match adaConditional "\<end\s\+select\>"
|
||||||
|
syntax keyword adaConditional if case select
|
||||||
|
syntax keyword adaConditional elsif when
|
||||||
|
|
||||||
|
" Section: other keywords {{{1
|
||||||
|
syntax match adaKeyword "\<is\>" contains=adaRecord
|
||||||
|
syntax keyword adaKeyword all do exception in new null out
|
||||||
|
syntax keyword adaKeyword separate until overriding
|
||||||
|
|
||||||
|
" Section: begin keywords {{{1
|
||||||
|
"
|
||||||
|
" These keywords begin various constructs, and you _might_ want to
|
||||||
|
" highlight them differently.
|
||||||
|
"
|
||||||
|
syntax keyword adaBegin begin body declare entry generic
|
||||||
|
syntax keyword adaBegin protected renames task
|
||||||
|
|
||||||
|
syntax match adaBegin "\<function\>" contains=adaFunction
|
||||||
|
syntax match adaBegin "\<procedure\>" contains=adaProcedure
|
||||||
|
syntax match adaBegin "\<package\>" contains=adaPackage
|
||||||
|
|
||||||
|
if exists("ada_with_gnat_project_files")
|
||||||
|
syntax keyword adaBegin project
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: with, use {{{1
|
||||||
|
"
|
||||||
|
if exists("ada_withuse_ordinary")
|
||||||
|
" Don't be fancy. Display "with" and "use" as ordinary keywords in all cases.
|
||||||
|
syntax keyword adaKeyword with use
|
||||||
|
else
|
||||||
|
" Highlight "with" and "use" clauses like C's "#include" when they're used
|
||||||
|
" to reference other compilation units; otherwise they're ordinary keywords.
|
||||||
|
" If we have vim 6.0 or later, we'll use its advanced pattern-matching
|
||||||
|
" capabilities so that we won't match leading spaces.
|
||||||
|
syntax match adaKeyword "\<with\>"
|
||||||
|
syntax match adaKeyword "\<use\>"
|
||||||
|
syntax match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
|
||||||
|
syntax match adaSemiWith ";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
|
||||||
|
syntax match adaInc "\<with\>" contained contains=NONE
|
||||||
|
syntax match adaInc "\<with\s\+type\>" contained contains=NONE
|
||||||
|
syntax match adaInc "\<use\>" contained contains=NONE
|
||||||
|
" Recognize "with null record" as a keyword (even the "record").
|
||||||
|
syntax match adaKeyword "\<with\s\+null\s\+record\>"
|
||||||
|
" Consider generic formal parameters of subprograms and packages as keywords.
|
||||||
|
syntax match adaKeyword ";\s*\zswith\s\+\(function\|procedure\|package\)\>"
|
||||||
|
syntax match adaKeyword "^\s*\zswith\s\+\(function\|procedure\|package\)\>"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: String and character constants. {{{1
|
||||||
|
"
|
||||||
|
syntax region adaString contains=@Spell start=+"+ skip=+""+ end=+"+
|
||||||
|
syntax match adaCharacter "'.'"
|
||||||
|
|
||||||
|
" Section: Todo (only highlighted in comments) {{{1
|
||||||
|
"
|
||||||
|
syntax keyword adaTodo contained TODO FIXME XXX NOTE
|
||||||
|
|
||||||
|
" Section: Comments. {{{1
|
||||||
|
"
|
||||||
|
syntax region adaComment
|
||||||
|
\ oneline
|
||||||
|
\ contains=adaTodo,adaLineError,@Spell
|
||||||
|
\ start="--"
|
||||||
|
\ end="$"
|
||||||
|
|
||||||
|
" Section: line errors {{{1
|
||||||
|
"
|
||||||
|
" Note: Line errors have become quite slow with Vim 7.0
|
||||||
|
"
|
||||||
|
if exists("g:ada_line_errors")
|
||||||
|
syntax match adaLineError "\(^.\{79}\)\@<=." contains=ALL containedin=ALL
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: syntax folding {{{1
|
||||||
|
"
|
||||||
|
" Syntax folding is very tricky - for now I still suggest to use
|
||||||
|
" indent folding
|
||||||
|
"
|
||||||
|
if exists("g:ada_folding") && g:ada_folding[0] == 's'
|
||||||
|
if stridx (g:ada_folding, 'p') >= 0
|
||||||
|
syntax region adaPackage
|
||||||
|
\ start="\(\<package\s\+body\>\|\<package\>\)\s*\z(\k*\)"
|
||||||
|
\ end="end\s\+\z1\s*;"
|
||||||
|
\ keepend extend transparent fold contains=ALL
|
||||||
|
endif
|
||||||
|
if stridx (g:ada_folding, 'f') >= 0
|
||||||
|
syntax region adaProcedure
|
||||||
|
\ start="\<procedure\>\s*\z(\k*\)"
|
||||||
|
\ end="\<end\>\s\+\z1\s*;"
|
||||||
|
\ keepend extend transparent fold contains=ALL
|
||||||
|
syntax region adaFunction
|
||||||
|
\ start="\<procedure\>\s*\z(\k*\)"
|
||||||
|
\ end="end\s\+\z1\s*;"
|
||||||
|
\ keepend extend transparent fold contains=ALL
|
||||||
|
endif
|
||||||
|
if stridx (g:ada_folding, 'f') >= 0
|
||||||
|
syntax region adaRecord
|
||||||
|
\ start="\<is\s\+record\>"
|
||||||
|
\ end="\<end\s\+record\>"
|
||||||
|
\ keepend extend transparent fold contains=ALL
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Section: The default methods for highlighting. Can be overridden later. {{{1
|
||||||
|
"
|
||||||
|
highlight def link adaCharacter Character
|
||||||
|
highlight def link adaComment Comment
|
||||||
|
highlight def link adaConditional Conditional
|
||||||
|
highlight def link adaKeyword Keyword
|
||||||
|
highlight def link adaLabel Label
|
||||||
|
highlight def link adaNumber Number
|
||||||
|
highlight def link adaSign Number
|
||||||
|
highlight def link adaOperator Operator
|
||||||
|
highlight def link adaPreproc PreProc
|
||||||
|
highlight def link adaRepeat Repeat
|
||||||
|
highlight def link adaSpecial Special
|
||||||
|
highlight def link adaStatement Statement
|
||||||
|
highlight def link adaString String
|
||||||
|
highlight def link adaStructure Structure
|
||||||
|
highlight def link adaTodo Todo
|
||||||
|
highlight def link adaType Type
|
||||||
|
highlight def link adaTypedef Typedef
|
||||||
|
highlight def link adaStorageClass StorageClass
|
||||||
|
highlight def link adaBoolean Boolean
|
||||||
|
highlight def link adaException Exception
|
||||||
|
highlight def link adaAttribute Tag
|
||||||
|
highlight def link adaInc Include
|
||||||
|
highlight def link adaError Error
|
||||||
|
highlight def link adaSpaceError Error
|
||||||
|
highlight def link adaLineError Error
|
||||||
|
highlight def link adaBuiltinType Type
|
||||||
|
highlight def link adaAssignment Special
|
||||||
|
|
||||||
|
" Subsection: Begin, End {{{2
|
||||||
|
"
|
||||||
|
if exists ("ada_begin_preproc")
|
||||||
|
" This is the old default display:
|
||||||
|
highlight def link adaBegin PreProc
|
||||||
|
highlight def link adaEnd PreProc
|
||||||
|
else
|
||||||
|
" This is the new default display:
|
||||||
|
highlight def link adaBegin Keyword
|
||||||
|
highlight def link adaEnd Keyword
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
" Section: sync {{{1
|
||||||
|
"
|
||||||
|
" We don't need to look backwards to highlight correctly;
|
||||||
|
" this speeds things up greatly.
|
||||||
|
syntax sync minlines=1 maxlines=1
|
||||||
|
|
||||||
|
let &cpo = s:keepcpo
|
||||||
|
unlet s:keepcpo
|
||||||
|
|
||||||
|
finish " 1}}}
|
||||||
|
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
" Copyright (C) 2006 Martin Krischik
|
||||||
|
"
|
||||||
|
" Vim is Charityware - see ":help license" or uganda.txt for licence details.
|
||||||
|
"------------------------------------------------------------------------------
|
||||||
|
"vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
|
||||||
|
"vim: foldmethod=marker
|
||||||
|
|
||||||
|
endif
|
||||||
85
syntax/ahdl.vim
Normal file
85
syntax/ahdl.vim
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ahdl') == -1
|
||||||
|
|
||||||
|
" Vim syn file
|
||||||
|
" Language: Altera AHDL
|
||||||
|
" Maintainer: John Cook <john.cook@kla-tencor.com>
|
||||||
|
" Last Change: 2001 Apr 25
|
||||||
|
|
||||||
|
" quit when a syntax file was already loaded
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
"this language is oblivious to case.
|
||||||
|
syn case ignore
|
||||||
|
|
||||||
|
" a bunch of keywords
|
||||||
|
syn keyword ahdlKeyword assert begin bidir bits buried case clique
|
||||||
|
syn keyword ahdlKeyword connected_pins constant defaults define design
|
||||||
|
syn keyword ahdlKeyword device else elsif end for function generate
|
||||||
|
syn keyword ahdlKeyword gnd help_id if in include input is machine
|
||||||
|
syn keyword ahdlKeyword node of options others output parameters
|
||||||
|
syn keyword ahdlKeyword returns states subdesign table then title to
|
||||||
|
syn keyword ahdlKeyword tri_state_node variable vcc when with
|
||||||
|
|
||||||
|
" a bunch of types
|
||||||
|
syn keyword ahdlIdentifier carry cascade dffe dff exp global
|
||||||
|
syn keyword ahdlIdentifier jkffe jkff latch lcell mcell memory opendrn
|
||||||
|
syn keyword ahdlIdentifier soft srffe srff tffe tff tri wire x
|
||||||
|
|
||||||
|
syn keyword ahdlMegafunction lpm_and lpm_bustri lpm_clshift lpm_constant
|
||||||
|
syn keyword ahdlMegafunction lpm_decode lpm_inv lpm_mux lpm_or lpm_xor
|
||||||
|
syn keyword ahdlMegafunction busmux mux
|
||||||
|
|
||||||
|
syn keyword ahdlMegafunction divide lpm_abs lpm_add_sub lpm_compare
|
||||||
|
syn keyword ahdlMegafunction lpm_counter lpm_mult
|
||||||
|
|
||||||
|
syn keyword ahdlMegafunction altdpram csfifo dcfifo scfifo csdpram lpm_ff
|
||||||
|
syn keyword ahdlMegafunction lpm_latch lpm_shiftreg lpm_ram_dq lpm_ram_io
|
||||||
|
syn keyword ahdlMegafunction lpm_rom lpm_dff lpm_tff clklock pll ntsc
|
||||||
|
|
||||||
|
syn keyword ahdlTodo contained TODO
|
||||||
|
|
||||||
|
" String contstants
|
||||||
|
syn region ahdlString start=+"+ skip=+\\"+ end=+"+
|
||||||
|
|
||||||
|
" valid integer number formats (decimal, binary, octal, hex)
|
||||||
|
syn match ahdlNumber '\<\d\+\>'
|
||||||
|
syn match ahdlNumber '\<b"\(0\|1\|x\)\+"'
|
||||||
|
syn match ahdlNumber '\<\(o\|q\)"\o\+"'
|
||||||
|
syn match ahdlNumber '\<\(h\|x\)"\x\+"'
|
||||||
|
|
||||||
|
" operators
|
||||||
|
syn match ahdlOperator "[!&#$+\-<>=?:\^]"
|
||||||
|
syn keyword ahdlOperator not and nand or nor xor xnor
|
||||||
|
syn keyword ahdlOperator mod div log2 used ceil floor
|
||||||
|
|
||||||
|
" one line and multi-line comments
|
||||||
|
" (define these after ahdlOperator so -- overrides -)
|
||||||
|
syn match ahdlComment "--.*" contains=ahdlNumber,ahdlTodo
|
||||||
|
syn region ahdlComment start="%" end="%" contains=ahdlNumber,ahdlTodo
|
||||||
|
|
||||||
|
" other special characters
|
||||||
|
syn match ahdlSpecialChar "[\[\]().,;]"
|
||||||
|
|
||||||
|
syn sync minlines=1
|
||||||
|
|
||||||
|
" Define the default highlighting.
|
||||||
|
" Only when an item doesn't have highlighting yet
|
||||||
|
|
||||||
|
" The default highlighting.
|
||||||
|
hi def link ahdlNumber ahdlString
|
||||||
|
hi def link ahdlMegafunction ahdlIdentifier
|
||||||
|
hi def link ahdlSpecialChar SpecialChar
|
||||||
|
hi def link ahdlKeyword Statement
|
||||||
|
hi def link ahdlString String
|
||||||
|
hi def link ahdlComment Comment
|
||||||
|
hi def link ahdlIdentifier Identifier
|
||||||
|
hi def link ahdlOperator Operator
|
||||||
|
hi def link ahdlTodo Todo
|
||||||
|
|
||||||
|
|
||||||
|
let b:current_syntax = "ahdl"
|
||||||
|
" vim:ts=8
|
||||||
|
|
||||||
|
endif
|
||||||
27
syntax/aidl.vim
Normal file
27
syntax/aidl.vim
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aidl') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: aidl (Android Interface Definition Language)
|
||||||
|
" https://developer.android.com/guide/components/aidl
|
||||||
|
" Maintainer: Dominique Pelle <dominique.pelle@tomtom.com>
|
||||||
|
" LastChange: 2020/07/25
|
||||||
|
|
||||||
|
" Quit when a syntax file was already loaded.
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
source <sfile>:p:h/java.vim
|
||||||
|
|
||||||
|
syn keyword aidlParamDir in out inout
|
||||||
|
syn keyword aidlKeyword oneway parcelable
|
||||||
|
|
||||||
|
" Needed for the 'in', 'out', 'inout' keywords to be highlighted.
|
||||||
|
syn cluster javaTop add=aidlParamDir
|
||||||
|
|
||||||
|
hi def link aidlParamDir StorageClass
|
||||||
|
hi def link aidlKeyword Keyword
|
||||||
|
|
||||||
|
let b:current_syntax = "aidl"
|
||||||
|
|
||||||
|
endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user