mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7972e8eea1 | ||
|
|
6ed481e463 | ||
|
|
c1e1870a3d | ||
|
|
f0d6ecff07 | ||
|
|
15e5df246e | ||
|
|
94ababe91f | ||
|
|
080b8cdc60 | ||
|
|
e47af23f64 | ||
|
|
8f5134aef8 | ||
|
|
be8d039e02 | ||
|
|
38ce8e9cb6 | ||
|
|
55ad5a982a | ||
|
|
b2055afaa7 | ||
|
|
63a175357a |
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -18,4 +18,4 @@ jobs:
|
||||
vim --version
|
||||
- uses: actions/checkout@v2
|
||||
- name: Run Tests
|
||||
run: scripts/test
|
||||
run: make test
|
||||
|
||||
7
Makefile
Normal file
7
Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
.PHONY: all
|
||||
|
||||
all:
|
||||
@ scripts/build
|
||||
|
||||
test:
|
||||
@ scripts/test
|
||||
74
README.md
74
README.md
@@ -7,7 +7,7 @@ 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.
|
||||
|
||||
- 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-->155<!--/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.
|
||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||
@@ -57,20 +57,20 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [caddyfile](https://github.com/isobit/vim-caddyfile) (syntax, indent, ftplugin)
|
||||
- [carp](https://github.com/hellerve/carp-vim) (syntax)
|
||||
- [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin)
|
||||
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin)
|
||||
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, doc, autoload, ftplugin)
|
||||
- [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent)
|
||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, compiler, indent, autoload, ftplugin)
|
||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, doc, compiler, autoload, ftplugin)
|
||||
- [cql](https://github.com/elubow/cql-vim) (syntax)
|
||||
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin)
|
||||
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, doc, compiler, ftplugin)
|
||||
- [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin)
|
||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, autoload, ftplugin)
|
||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, doc, autoload, ftplugin)
|
||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin)
|
||||
- [cue](https://github.com/mgrabovsky/vim-cuesheet) (syntax)
|
||||
- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin)
|
||||
- [dhall](https://github.com/vmchale/dhall-vim) (syntax, ftplugin)
|
||||
- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, doc, autoload, ftplugin)
|
||||
- [dhall](https://github.com/vmchale/dhall-vim) (syntax, doc, ftplugin)
|
||||
- [dlang](https://github.com/JesseKPhillips/d.vim) (syntax, indent)
|
||||
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin)
|
||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin)
|
||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, doc, compiler, autoload, ftplugin)
|
||||
- [elm](https://github.com/andys8/vim-elm-syntax) (syntax, indent)
|
||||
- [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin)
|
||||
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
|
||||
@@ -79,19 +79,19 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [ferm](https://github.com/vim-scripts/ferm.vim) (syntax)
|
||||
- [fish](https://github.com/georgewitteman/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
|
||||
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax)
|
||||
- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent)
|
||||
- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent, doc, autoload)
|
||||
- [gdscript](https://github.com/calviken/vim-gdscript3) (syntax, indent)
|
||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
|
||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, doc, ftplugin)
|
||||
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent)
|
||||
- [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax)
|
||||
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
|
||||
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
|
||||
- [go](https://github.com/fatih/vim-go) (syntax, indent, doc, compiler)
|
||||
- [gradle](https://github.com/tfnico/vim-gradle) (compiler)
|
||||
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after)
|
||||
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after, doc)
|
||||
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
|
||||
- [handlebars](https://github.com/sheerun/vim-mustache-handlebars) (syntax, indent, ftplugin)
|
||||
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax)
|
||||
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin)
|
||||
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, doc, ftplugin)
|
||||
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax)
|
||||
- [hcl](https://github.com/b4b4r07/vim-hcl) (syntax, indent, ftplugin)
|
||||
- [helm](https://github.com/towolf/vim-helm) (syntax)
|
||||
@@ -99,7 +99,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
|
||||
- [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin)
|
||||
- [icalendar](https://github.com/chutzpah/icalendar.vim) (syntax)
|
||||
- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, ftplugin)
|
||||
- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, doc, ftplugin)
|
||||
- [ion](https://github.com/vmchale/ion-vim) (syntax, ftplugin)
|
||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftplugin, extras)
|
||||
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent)
|
||||
@@ -107,60 +107,60 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [jq](https://github.com/vito-c/jq.vim) (syntax, ftplugin)
|
||||
- [json5](https://github.com/GutenYe/json5.vim) (syntax)
|
||||
- [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin)
|
||||
- [jsonnet](https://github.com/google/vim-jsonnet) (syntax, autoload, ftplugin)
|
||||
- [jsonnet](https://github.com/google/vim-jsonnet) (syntax, doc, autoload, ftplugin)
|
||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
|
||||
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after)
|
||||
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin)
|
||||
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after, doc)
|
||||
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, doc, autoload, ftplugin)
|
||||
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
|
||||
- [ledger](https://github.com/ledger/vim-ledger) (syntax, compiler, indent)
|
||||
- [ledger](https://github.com/ledger/vim-ledger) (syntax, indent, doc, compiler, autoload)
|
||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
|
||||
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (syntax, indent, compiler, ftplugin)
|
||||
- [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
|
||||
- [llvm](https://github.com/rhysd/vim-llvm) (syntax, indent, ftplugin)
|
||||
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax)
|
||||
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax, doc)
|
||||
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
|
||||
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
|
||||
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, ftplugin)
|
||||
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, doc, ftplugin)
|
||||
- [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin)
|
||||
- [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax)
|
||||
- [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin)
|
||||
- [moonscript](https://github.com/leafo/moonscript-vim) (syntax, indent, ftplugin)
|
||||
- [nginx](https://github.com/chr4/nginx.vim) (syntax, indent, ftplugin)
|
||||
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent)
|
||||
- [nim](https://github.com/zah/nim.vim) (syntax, indent, compiler, autoload)
|
||||
- [nix](https://github.com/LnL7/vim-nix) (syntax, indent, compiler, ftplugin)
|
||||
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
||||
- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, compiler, ftplugin)
|
||||
- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, doc, compiler, ftplugin)
|
||||
- [octave](https://github.com/McSinyx/vim-octave) (syntax, indent)
|
||||
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin)
|
||||
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin)
|
||||
- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent)
|
||||
- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent, doc)
|
||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
||||
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin)
|
||||
- [pony](https://github.com/jakwings/vim-pony) (syntax, indent, autoload, ftplugin)
|
||||
- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, compiler, ftplugin)
|
||||
- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, doc, compiler, ftplugin)
|
||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent)
|
||||
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin)
|
||||
- [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin, ctags)
|
||||
- [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin)
|
||||
- [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload)
|
||||
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent)
|
||||
- [python](https://github.com/vim-python/python-syntax) (syntax)
|
||||
- [python](https://github.com/vim-python/python-syntax) (syntax, doc)
|
||||
- [qmake](https://github.com/artoj/qmake-syntax-vim) (syntax)
|
||||
- [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin)
|
||||
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax)
|
||||
- [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, ftplugin)
|
||||
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
|
||||
- [raku](https://github.com/Raku/vim-raku) (syntax, indent, ftplugin)
|
||||
- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin)
|
||||
- [raml](https://github.com/IN3D/vim-raml) (syntax, doc, ftplugin)
|
||||
- [razor](https://github.com/adamclerk/vim-razor) (syntax, indent, ftplugin)
|
||||
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent)
|
||||
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent, doc)
|
||||
- [requirements](https://github.com/raimon49/requirements.txt.vim) (syntax, autoload)
|
||||
- [rspec](https://github.com/keith/rspec.vim) (syntax)
|
||||
- [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, indent, autoload, ftplugin)
|
||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin)
|
||||
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ctags)
|
||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, doc, compiler, autoload, ftplugin)
|
||||
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, doc, compiler, autoload, ftplugin, ctags)
|
||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax)
|
||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ctags)
|
||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, doc, compiler, ftplugin, ctags)
|
||||
- [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, indent, ftplugin)
|
||||
- [sh](https://github.com/arzg/vim-sh) (syntax)
|
||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftplugin)
|
||||
@@ -175,8 +175,8 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [swift](https://github.com/keith/swift.vim) (syntax, indent, compiler, ftplugin, ctags)
|
||||
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax)
|
||||
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax, ftplugin)
|
||||
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, autoload, ftplugin)
|
||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin)
|
||||
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, doc, autoload, ftplugin)
|
||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, doc, ftplugin)
|
||||
- [thrift](https://github.com/solarnz/thrift.vim) (syntax)
|
||||
- [tmux](https://github.com/ericpruitt/tmux.vim) (syntax, ftplugin)
|
||||
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin)
|
||||
@@ -189,7 +189,6 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
||||
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax)
|
||||
- [velocity](https://github.com/lepture/vim-velocity) (syntax, indent)
|
||||
- [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin)
|
||||
- [vue](https://github.com/posva/vim-vue) (syntax, indent, ftplugin)
|
||||
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) (syntax)
|
||||
- [xml](https://github.com/amadeus/vim-xml) (syntax)
|
||||
@@ -203,26 +202,27 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
|
||||
## 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
|
||||
|
||||
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:
|
||||
|
||||
```viml
|
||||
" ~/.vimrc, declare this variable before polyglot is loaded
|
||||
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.
|
||||
|
||||
## Contributing
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
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
|
||||
2706
doc/vim-go.txt
Normal file
2706
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
|
||||
@@ -63,13 +63,13 @@ if index(g:polyglot_disabled, 'applescript') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'arduino') == -1
|
||||
au BufNewFile,BufRead *.ino set ft=arduino
|
||||
au BufNewFile,BufRead *.ino setf arduino
|
||||
au BufNewFile,BufRead *.pde set ft=arduino
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'asciidoc') == -1
|
||||
au BufNewFile,BufRead *.adoc set ft=asciidoc
|
||||
au BufNewFile,BufRead *.asc setf asciidoc
|
||||
au BufNewFile,BufRead *.asc set ft=asciidoc
|
||||
au BufNewFile,BufRead *.asciidoc set ft=asciidoc
|
||||
endif
|
||||
|
||||
@@ -85,19 +85,18 @@ if index(g:polyglot_disabled, 'c/c++') == -1
|
||||
au BufNewFile,BufRead *.idc set ft=c
|
||||
au BufNewFile,BufRead *.c++ set ft=cpp
|
||||
au BufNewFile,BufRead *.cc set ft=cpp
|
||||
au BufNewFile,BufRead *.cp setf cpp
|
||||
au BufNewFile,BufRead *.cp set ft=cpp
|
||||
au BufNewFile,BufRead *.cpp set ft=cpp
|
||||
au BufNewFile,BufRead *.cxx set ft=cpp
|
||||
au BufNewFile,BufRead *.h setf cpp
|
||||
au BufNewFile,BufRead *.h++ set ft=cpp
|
||||
au BufNewFile,BufRead *.hh setf cpp
|
||||
au BufNewFile,BufRead *.hh set ft=cpp
|
||||
au BufNewFile,BufRead *.hpp set ft=cpp
|
||||
au BufNewFile,BufRead *.hxx set ft=cpp
|
||||
au BufNewFile,BufRead *.inc setf cpp
|
||||
au BufNewFile,BufRead *.inl set ft=cpp
|
||||
au BufNewFile,BufRead *.ino set ft=cpp
|
||||
au BufNewFile,BufRead *.ino setf cpp
|
||||
au BufNewFile,BufRead *.ipp set ft=cpp
|
||||
au BufNewFile,BufRead *.re setf cpp
|
||||
au BufNewFile,BufRead *.tcc set ft=cpp
|
||||
au BufNewFile,BufRead *.tpp set ft=cpp
|
||||
endif
|
||||
@@ -122,7 +121,10 @@ if index(g:polyglot_disabled, 'clojure') == -1
|
||||
au BufNewFile,BufRead *.cljs.hl set ft=clojure
|
||||
au BufNewFile,BufRead *.cljscm set ft=clojure
|
||||
au BufNewFile,BufRead *.cljx set ft=clojure
|
||||
au BufNewFile,BufRead *.edn set ft=clojure
|
||||
au BufNewFile,BufRead *.hic set ft=clojure
|
||||
au BufNewFile,BufRead build.boot set ft=clojure
|
||||
au BufNewFile,BufRead profile.boot set ft=clojure
|
||||
au BufNewFile,BufRead riemann.config set ft=clojure
|
||||
endif
|
||||
|
||||
@@ -134,9 +136,8 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'coffee-script') == -1
|
||||
au BufNewFile,BufRead *._coffee set ft=coffee
|
||||
au BufNewFile,BufRead *.cake setf coffee
|
||||
au BufNewFile,BufRead *.cake set ft=coffee
|
||||
au BufNewFile,BufRead *.cjsx set ft=coffee
|
||||
au BufNewFile,BufRead *.ck set ft=coffee
|
||||
au BufNewFile,BufRead *.coffee set ft=coffee
|
||||
au BufNewFile,BufRead *.coffeekup set ft=coffee
|
||||
au BufNewFile,BufRead *.iced set ft=coffee
|
||||
@@ -163,7 +164,6 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'csv') == -1
|
||||
au BufNewFile,BufRead *.csv set ft=csv
|
||||
au BufNewFile,BufRead *.dat set ft=csv
|
||||
au BufNewFile,BufRead *.tab set ft=csv
|
||||
au BufNewFile,BufRead *.tsv set ft=csv
|
||||
endif
|
||||
@@ -187,7 +187,7 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'dlang') == -1
|
||||
au BufNewFile,BufRead *.d setf d
|
||||
au BufNewFile,BufRead *.di set ft=d
|
||||
au BufNewFile,BufRead *.di setf d
|
||||
au BufNewFile,BufRead *.lst set ft=dcov
|
||||
au BufNewFile,BufRead *.dd set ft=dd
|
||||
au BufNewFile,BufRead *.ddoc set ft=ddoc
|
||||
@@ -209,8 +209,8 @@ if index(g:polyglot_disabled, 'elixir') == -1
|
||||
au BufNewFile,BufRead *.ex set ft=elixir
|
||||
au BufNewFile,BufRead *.exs set ft=elixir
|
||||
au BufNewFile,BufRead mix.lock set ft=elixir
|
||||
au BufNewFile,BufRead *.eex set ft=elixir
|
||||
au BufNewFile,BufRead *.leex set ft=elixir
|
||||
au BufNewFile,BufRead *.eex set ft=eelixir
|
||||
au BufNewFile,BufRead *.leex set ft=eelixir
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'elm') == -1
|
||||
@@ -223,6 +223,7 @@ if index(g:polyglot_disabled, 'emberscript') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'emblem') == -1
|
||||
au BufNewFile,BufRead *.em set ft=emblem
|
||||
au BufNewFile,BufRead *.emblem set ft=emblem
|
||||
endif
|
||||
|
||||
@@ -266,7 +267,7 @@ if index(g:polyglot_disabled, 'fsharp') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'gdscript') == -1
|
||||
au BufNewFile,BufRead *.gd setf gdscript3
|
||||
au BufNewFile,BufRead *.gd set ft=gdscript3
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'git') == -1
|
||||
@@ -276,13 +277,9 @@ if index(g:polyglot_disabled, 'git') == -1
|
||||
au BufNewFile,BufRead */.config/git/config set ft=gitconfig
|
||||
au BufNewFile,BufRead {.,}gitconfig set ft=gitconfig
|
||||
au BufNewFile,BufRead {.,}gitmodules set ft=gitconfig
|
||||
au BufNewFile,BufRead gitconfig set ft=gitconfig
|
||||
au BufNewFile,BufRead git-rebase-todo set ft=gitrebase
|
||||
au BufNewFile,BufRead {.,}gitsendemail.* set ft=gitsendemail
|
||||
au BufNewFile,BufRead COMMIT_EDIT_MSG set ft=gitcommit
|
||||
au BufNewFile,BufRead MERGE_MSG set ft=gitcommit
|
||||
au BufNewFile,BufRead MSG set ft=gitcommit
|
||||
au BufNewFile,BufRead TAG_EDIT_MSG set ft=gitcommit
|
||||
au BufNewFile,BufRead *.git/{,modules/**/,worktrees/*/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG set ft=gitcommit
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'glsl') == -1
|
||||
@@ -300,7 +297,7 @@ if index(g:polyglot_disabled, 'glsl') == -1
|
||||
au BufNewFile,BufRead *.glslv set ft=glsl
|
||||
au BufNewFile,BufRead *.gs setf glsl
|
||||
au BufNewFile,BufRead *.gshader set ft=glsl
|
||||
au BufNewFile,BufRead *.shader setf glsl
|
||||
au BufNewFile,BufRead *.shader set ft=glsl
|
||||
au BufNewFile,BufRead *.tesc set ft=glsl
|
||||
au BufNewFile,BufRead *.tese set ft=glsl
|
||||
au BufNewFile,BufRead *.vert set ft=glsl
|
||||
@@ -347,15 +344,19 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'handlebars') == -1
|
||||
au BufNewFile,BufRead *.handlebars set ft=mustache
|
||||
au BufNewFile,BufRead *.hb set ft=mustache
|
||||
au BufNewFile,BufRead *.hbs set ft=mustache
|
||||
au BufNewFile,BufRead *.hdbs set ft=mustache
|
||||
au BufNewFile,BufRead *.hjs set ft=mustache
|
||||
au BufNewFile,BufRead *.hogan set ft=mustache
|
||||
au BufNewFile,BufRead *.hulk set ft=mustache
|
||||
au BufNewFile,BufRead *.mustache set ft=mustache
|
||||
au BufNewFile,BufRead *.njk set ft=mustache
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'haproxy') == -1
|
||||
au BufNewFile,BufRead *.cfg setf haproxy
|
||||
au BufNewFile,BufRead *.cfg set ft=haproxy
|
||||
au BufNewFile,BufRead haproxy*.c* set ft=haproxy
|
||||
au BufNewFile,BufRead haproxy.cfg set ft=haproxy
|
||||
endif
|
||||
|
||||
@@ -373,19 +374,16 @@ if index(g:polyglot_disabled, 'haxe') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'hcl') == -1
|
||||
au BufNewFile,BufRead *.hcl set ft=hcl
|
||||
au BufNewFile,BufRead *.hcl setf hcl
|
||||
au BufNewFile,BufRead *.nomad set ft=hcl
|
||||
au BufNewFile,BufRead *.tf set ft=hcl
|
||||
au BufNewFile,BufRead *.tfvars set ft=hcl
|
||||
au BufNewFile,BufRead *.workflow setf hcl
|
||||
au BufNewFile,BufRead Appfile set ft=hcl
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'hive') == -1
|
||||
au BufNewFile,BufRead *.hql set ft=hive
|
||||
au BufNewFile,BufRead *.q setf hive
|
||||
au BufNewFile,BufRead *.hql set ft=hive
|
||||
au BufNewFile,BufRead *.q setf hive
|
||||
au BufNewFile,BufRead *.q set ft=hive
|
||||
au BufNewFile,BufRead *.ql set ft=hive
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'html5') == -1
|
||||
@@ -393,7 +391,7 @@ if index(g:polyglot_disabled, 'html5') == -1
|
||||
au BufNewFile,BufRead *.html set ft=html
|
||||
au BufNewFile,BufRead *.html.hl set ft=html
|
||||
au BufNewFile,BufRead *.inc setf html
|
||||
au BufNewFile,BufRead *.st setf html
|
||||
au BufNewFile,BufRead *.st set ft=html
|
||||
au BufNewFile,BufRead *.xht set ft=html
|
||||
au BufNewFile,BufRead *.xhtml set ft=html
|
||||
endif
|
||||
@@ -401,6 +399,8 @@ endif
|
||||
if index(g:polyglot_disabled, 'i3') == -1
|
||||
au BufNewFile,BufRead *.i3.config set ft=i3config
|
||||
au BufNewFile,BufRead *.i3config set ft=i3config
|
||||
au BufNewFile,BufRead {.,}i3.config set ft=i3config
|
||||
au BufNewFile,BufRead {.,}i3config set ft=i3config
|
||||
au BufNewFile,BufRead i3.config set ft=i3config
|
||||
au BufNewFile,BufRead i3config set ft=i3config
|
||||
endif
|
||||
@@ -449,6 +449,7 @@ endif
|
||||
if index(g:polyglot_disabled, 'jenkins') == -1
|
||||
au BufNewFile,BufRead *.Jenkinsfile set ft=Jenkinsfile
|
||||
au BufNewFile,BufRead *.jenkinsfile set ft=Jenkinsfile
|
||||
au BufNewFile,BufRead Jenkinsfile set ft=Jenkinsfile
|
||||
au BufNewFile,BufRead Jenkinsfile* set ft=Jenkinsfile
|
||||
endif
|
||||
|
||||
@@ -473,7 +474,7 @@ if index(g:polyglot_disabled, 'json') == -1
|
||||
au BufNewFile,BufRead *.geojson set ft=json
|
||||
au BufNewFile,BufRead *.gltf set ft=json
|
||||
au BufNewFile,BufRead *.har set ft=json
|
||||
au BufNewFile,BufRead *.ice setf json
|
||||
au BufNewFile,BufRead *.ice set ft=json
|
||||
au BufNewFile,BufRead *.json set ft=json
|
||||
au BufNewFile,BufRead *.jsonl set ft=json
|
||||
au BufNewFile,BufRead *.jsonp set ft=json
|
||||
@@ -484,7 +485,7 @@ if index(g:polyglot_disabled, 'json') == -1
|
||||
au BufNewFile,BufRead *.topojson set ft=json
|
||||
au BufNewFile,BufRead *.webapp set ft=json
|
||||
au BufNewFile,BufRead *.webmanifest set ft=json
|
||||
au BufNewFile,BufRead *.yy setf json
|
||||
au BufNewFile,BufRead *.yy set ft=json
|
||||
au BufNewFile,BufRead *.yyp set ft=json
|
||||
au BufNewFile,BufRead {.,}arcconfig set ft=json
|
||||
au BufNewFile,BufRead {.,}htmlhintrc set ft=json
|
||||
@@ -501,10 +502,8 @@ if index(g:polyglot_disabled, 'jsonnet') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'jst') == -1
|
||||
au BufNewFile,BufRead *.djs set ft=jst
|
||||
au BufNewFile,BufRead *.ect set ft=jst
|
||||
au BufNewFile,BufRead *.ejs set ft=jst
|
||||
au BufNewFile,BufRead *.hamljs set ft=jst
|
||||
au BufNewFile,BufRead *.jst set ft=jst
|
||||
endif
|
||||
|
||||
@@ -539,7 +538,7 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'livescript') == -1
|
||||
au BufNewFile,BufRead *._ls set ft=livescript
|
||||
au BufNewFile,BufRead *.ls setf livescript
|
||||
au BufNewFile,BufRead *.ls set ft=livescript
|
||||
au BufNewFile,BufRead Slakefile set ft=livescript
|
||||
endif
|
||||
|
||||
@@ -566,8 +565,12 @@ if index(g:polyglot_disabled, 'lua') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'mako') == -1
|
||||
au BufNewFile *.*.mako execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype au BufReadPre *.*mako execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype au BufNewFile,BufRead *.mako set ft=mako
|
||||
au BufNewFile *.*.mao execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype au BufReadPre *.*mao execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype au BufNewFile,BufRead *.mao set ft=mako
|
||||
au BufNewFile *.*.mako execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype
|
||||
au BufReadPre *.*mako execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype
|
||||
au BufNewFile,BufRead *.mako set ft=mako
|
||||
au BufNewFile *.*.mao execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype
|
||||
au BufReadPre *.*mao execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype
|
||||
au BufNewFile,BufRead *.mao set ft=mako
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'mathematica') == -1
|
||||
@@ -576,15 +579,16 @@ if index(g:polyglot_disabled, 'mathematica') == -1
|
||||
au BufNewFile,BufRead *.ma set ft=mma
|
||||
au BufNewFile,BufRead *.mathematica set ft=mma
|
||||
au BufNewFile,BufRead *.mt set ft=mma
|
||||
au BufNewFile,BufRead *.nb setf mma
|
||||
au BufNewFile,BufRead *.nb set ft=mma
|
||||
au BufNewFile,BufRead *.nbp set ft=mma
|
||||
au BufNewFile,BufRead *.wl set ft=mma
|
||||
au BufNewFile,BufRead *.wls set ft=mma
|
||||
au BufNewFile,BufRead *.wlt set ft=mma
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'markdown') == -1
|
||||
au BufNewFile,BufRead *.markdown set ft=markdown
|
||||
au BufNewFile,BufRead *.md setf markdown
|
||||
au BufNewFile,BufRead *.md set ft=markdown
|
||||
au BufNewFile,BufRead *.mdown set ft=markdown
|
||||
au BufNewFile,BufRead *.mdwn set ft=markdown
|
||||
au BufNewFile,BufRead *.mkd set ft=markdown
|
||||
@@ -612,7 +616,7 @@ endif
|
||||
if index(g:polyglot_disabled, 'nginx') == -1
|
||||
au BufNewFile,BufRead *.nginx set ft=nginx
|
||||
au BufNewFile,BufRead *.nginxconf set ft=nginx
|
||||
au BufNewFile,BufRead *.vhost setf nginx
|
||||
au BufNewFile,BufRead *.vhost set ft=nginx
|
||||
au BufNewFile,BufRead */etc/nginx/* set ft=nginx
|
||||
au BufNewFile,BufRead */nginx/*.conf set ft=nginx
|
||||
au BufNewFile,BufRead */usr/local/nginx/conf/* set ft=nginx
|
||||
@@ -652,14 +656,23 @@ if index(g:polyglot_disabled, 'ocaml') == -1
|
||||
au BufNewFile,BufRead *.mlp set ft=ocaml
|
||||
au BufNewFile,BufRead *.mlt set ft=ocaml
|
||||
au BufNewFile,BufRead *.mly set ft=ocaml
|
||||
au BufNewFile,BufRead {.,}ocamlinit set ft=ocaml
|
||||
au BufNewFile,BufRead *.om set ft=omake
|
||||
au BufNewFile,BufRead OMakefile set ft=omake
|
||||
au BufNewFile,BufRead OMakeroot set ft=omake
|
||||
au BufNewFile,BufRead Omakeroot.in set ft=omake
|
||||
au BufNewFile,BufRead OMakeroot.in set ft=omake
|
||||
au BufNewFile,BufRead *.opam set ft=opam
|
||||
au BufNewFile,BufRead *.opam.template set ft=opam
|
||||
au BufNewFile,BufRead opam set ft=opam
|
||||
au BufNewFile,BufRead _oasis set ft=oasis
|
||||
au BufNewFile,BufRead dune set ft=dune
|
||||
au BufNewFile,BufRead dune-project set ft=dune
|
||||
au BufNewFile,BufRead dune-workspace set ft=dune
|
||||
au BufNewFile,BufRead jbuild set ft=dune
|
||||
au BufNewFile,BufRead _tags set ft=ocamlbuild_tags
|
||||
au BufNewFile,BufRead *.ocp set ft=ocpbuild
|
||||
au BufNewFile,BufRead *.root set ft=ocpbuildroot
|
||||
au BufNewFile,BufRead *.sexp set ft=sexplib
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'octave') == -1
|
||||
@@ -667,7 +680,7 @@ if index(g:polyglot_disabled, 'octave') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'opencl') == -1
|
||||
au BufNewFile,BufRead *.cl setf opencl
|
||||
au BufNewFile,BufRead *.cl set ft=opencl
|
||||
au BufNewFile,BufRead *.opencl set ft=opencl
|
||||
endif
|
||||
|
||||
@@ -690,7 +703,7 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'sql') == -1
|
||||
au BufNewFile,BufRead *.bdy set ft=sql
|
||||
au BufNewFile,BufRead *.ddl setf sql
|
||||
au BufNewFile,BufRead *.ddl set ft=sql
|
||||
au BufNewFile,BufRead *.fnc set ft=sql
|
||||
au BufNewFile,BufRead *.pck set ft=sql
|
||||
au BufNewFile,BufRead *.pkb set ft=sql
|
||||
@@ -698,9 +711,9 @@ if index(g:polyglot_disabled, 'sql') == -1
|
||||
au BufNewFile,BufRead *.plb set ft=sql
|
||||
au BufNewFile,BufRead *.pls set ft=sql
|
||||
au BufNewFile,BufRead *.plsql set ft=sql
|
||||
au BufNewFile,BufRead *.prc setf sql
|
||||
au BufNewFile,BufRead *.prc set ft=sql
|
||||
au BufNewFile,BufRead *.spc set ft=sql
|
||||
au BufNewFile,BufRead *.sql setf sql
|
||||
au BufNewFile,BufRead *.sql set ft=sql
|
||||
au BufNewFile,BufRead *.tpb set ft=sql
|
||||
au BufNewFile,BufRead *.tps set ft=sql
|
||||
au BufNewFile,BufRead *.trg set ft=sql
|
||||
@@ -720,7 +733,7 @@ if index(g:polyglot_disabled, 'php') == -1
|
||||
au BufNewFile,BufRead *.ctp set ft=php
|
||||
au BufNewFile,BufRead *.fcgi setf php
|
||||
au BufNewFile,BufRead *.inc setf php
|
||||
au BufNewFile,BufRead *.php setf php
|
||||
au BufNewFile,BufRead *.php set ft=php
|
||||
au BufNewFile,BufRead *.php3 set ft=php
|
||||
au BufNewFile,BufRead *.php4 set ft=php
|
||||
au BufNewFile,BufRead *.php5 set ft=php
|
||||
@@ -754,7 +767,7 @@ if index(g:polyglot_disabled, 'powershell') == -1
|
||||
au BufNewFile,BufRead *.psd1 set ft=powershell
|
||||
au BufNewFile,BufRead *.psm1 set ft=powershell
|
||||
au BufNewFile,BufRead *.pssc set ft=powershell
|
||||
au BufNewFile,BufRead *.ps1xml set ft=ps1xml
|
||||
au BufNewFile,BufRead *.ps1xml setf ps1xml
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'protobuf') == -1
|
||||
@@ -767,7 +780,7 @@ if index(g:polyglot_disabled, 'pug') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'puppet') == -1
|
||||
au BufNewFile,BufRead *.pp setf puppet
|
||||
au BufNewFile,BufRead *.pp set ft=puppet
|
||||
au BufNewFile,BufRead Modulefile set ft=puppet
|
||||
au BufNewFile,BufRead *.epp set ft=embeddedpuppet
|
||||
endif
|
||||
@@ -789,7 +802,7 @@ if index(g:polyglot_disabled, 'python') == -1
|
||||
au BufNewFile,BufRead *.pyp set ft=python
|
||||
au BufNewFile,BufRead *.pyt set ft=python
|
||||
au BufNewFile,BufRead *.pyw set ft=python
|
||||
au BufNewFile,BufRead *.rpy setf python
|
||||
au BufNewFile,BufRead *.rpy set ft=python
|
||||
au BufNewFile,BufRead *.smk set ft=python
|
||||
au BufNewFile,BufRead *.spec setf python
|
||||
au BufNewFile,BufRead *.tac set ft=python
|
||||
@@ -818,7 +831,7 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'qmake') == -1
|
||||
au BufNewFile,BufRead *.pri set ft=qmake
|
||||
au BufNewFile,BufRead *.pro setf qmake
|
||||
au BufNewFile,BufRead *.pro set ft=qmake
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'qml') == -1
|
||||
@@ -828,9 +841,9 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'r-lang') == -1
|
||||
au BufNewFile,BufRead *.S set ft=r
|
||||
au BufNewFile,BufRead *.r setf r
|
||||
au BufNewFile,BufRead *.r set ft=r
|
||||
au BufNewFile,BufRead *.rsx set ft=r
|
||||
au BufNewFile,BufRead *.s setf r
|
||||
au BufNewFile,BufRead *.s set ft=r
|
||||
au BufNewFile,BufRead {.,}Rprofile set ft=r
|
||||
au BufNewFile,BufRead expr-dist set ft=r
|
||||
au BufNewFile,BufRead *.rd set ft=rhelp
|
||||
@@ -877,7 +890,7 @@ if index(g:polyglot_disabled, 'razor') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'reason') == -1
|
||||
au BufNewFile,BufRead *.re setf reason
|
||||
au BufNewFile,BufRead *.re set ft=reason
|
||||
au BufNewFile,BufRead *.rei set ft=reason
|
||||
endif
|
||||
|
||||
@@ -916,9 +929,12 @@ if index(g:polyglot_disabled, 'ruby') == -1
|
||||
au BufNewFile,BufRead *.spec setf ruby
|
||||
au BufNewFile,BufRead *.thor set ft=ruby
|
||||
au BufNewFile,BufRead *.watchr set ft=ruby
|
||||
au BufNewFile,BufRead {.,}Brewfile set ft=ruby
|
||||
au BufNewFile,BufRead {.,}Guardfile set ft=ruby
|
||||
au BufNewFile,BufRead {.,}autotest set ft=ruby
|
||||
au BufNewFile,BufRead {.,}irbrc set ft=ruby
|
||||
au BufNewFile,BufRead {.,}pryrc set ft=ruby
|
||||
au BufNewFile,BufRead {.,}simplecov set ft=ruby
|
||||
au BufNewFile,BufRead Appraisals set ft=ruby
|
||||
au BufNewFile,BufRead Berksfile set ft=ruby
|
||||
au BufNewFile,BufRead Buildfile set ft=ruby
|
||||
@@ -941,7 +957,9 @@ if index(g:polyglot_disabled, 'ruby') == -1
|
||||
au BufNewFile,BufRead Snapfile set ft=ruby
|
||||
au BufNewFile,BufRead Thorfile set ft=ruby
|
||||
au BufNewFile,BufRead Vagrantfile set ft=ruby
|
||||
au BufNewFile,BufRead [Rr]akefile* set ft=ruby
|
||||
au BufNewFile,BufRead buildfile set ft=ruby
|
||||
au BufNewFile,BufRead vagrantfile set ft=ruby
|
||||
au BufNewFile,BufRead *.erb set ft=eruby
|
||||
au BufNewFile,BufRead *.erb.deface set ft=eruby
|
||||
au BufNewFile,BufRead *.rhtml set ft=eruby
|
||||
@@ -959,13 +977,13 @@ if index(g:polyglot_disabled, 'brewfile') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'rust') == -1
|
||||
au BufNewFile,BufRead *.rs setf rust
|
||||
au BufNewFile,BufRead *.rs set ft=rust
|
||||
au BufNewFile,BufRead *.rs.in set ft=rust
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'scala') == -1
|
||||
au BufNewFile,BufRead *.kojo set ft=scala
|
||||
au BufNewFile,BufRead *.sc setf scala
|
||||
au BufNewFile,BufRead *.sc set ft=scala
|
||||
au BufNewFile,BufRead *.scala set ft=scala
|
||||
endif
|
||||
|
||||
@@ -982,6 +1000,7 @@ if index(g:polyglot_disabled, 'sh') == -1
|
||||
au BufNewFile,BufRead *.bats set ft=sh
|
||||
au BufNewFile,BufRead *.cgi setf sh
|
||||
au BufNewFile,BufRead *.command set ft=sh
|
||||
au BufNewFile,BufRead *.env set ft=sh
|
||||
au BufNewFile,BufRead *.fcgi setf sh
|
||||
au BufNewFile,BufRead *.ksh set ft=sh
|
||||
au BufNewFile,BufRead *.sh set ft=sh
|
||||
@@ -994,6 +1013,9 @@ if index(g:polyglot_disabled, 'sh') == -1
|
||||
au BufNewFile,BufRead {.,}bash_profile set ft=sh
|
||||
au BufNewFile,BufRead {.,}bashrc set ft=sh
|
||||
au BufNewFile,BufRead {.,}cshrc set ft=sh
|
||||
au BufNewFile,BufRead {.,}env set ft=sh
|
||||
au BufNewFile,BufRead {.,}env.example set ft=sh
|
||||
au BufNewFile,BufRead {.,}flaskenv set ft=sh
|
||||
au BufNewFile,BufRead {.,}login set ft=sh
|
||||
au BufNewFile,BufRead {.,}profile set ft=sh
|
||||
au BufNewFile,BufRead 9fs set ft=sh
|
||||
@@ -1057,6 +1079,7 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'sxhkd') == -1
|
||||
au BufNewFile,BufRead *.sxhkdrc set ft=sxhkdrc
|
||||
au BufNewFile,BufRead sxhkdrc set ft=sxhkdrc
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'systemd') == -1
|
||||
@@ -1071,7 +1094,7 @@ if index(g:polyglot_disabled, 'systemd') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'terraform') == -1
|
||||
au BufNewFile,BufRead *.hcl set ft=terraform
|
||||
au BufNewFile,BufRead *.hcl setf terraform
|
||||
au BufNewFile,BufRead *.tf set ft=terraform
|
||||
au BufNewFile,BufRead *.tfvars set ft=terraform
|
||||
au BufNewFile,BufRead *.workflow setf terraform
|
||||
@@ -1111,8 +1134,8 @@ if index(g:polyglot_disabled, 'twig') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'typescript') == -1
|
||||
au BufNewFile,BufRead *.ts setf typescript
|
||||
au BufNewFile,BufRead *.tsx setf typescriptreact
|
||||
au BufNewFile,BufRead *.ts set ft=typescript
|
||||
au BufNewFile,BufRead *.tsx set ft=typescriptreact
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'unison') == -1
|
||||
@@ -1121,7 +1144,7 @@ if index(g:polyglot_disabled, 'unison') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'v') == -1
|
||||
au BufNewFile,BufRead *.v setf v
|
||||
au BufNewFile,BufRead *.v set ft=v
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'vala') == -1
|
||||
@@ -1139,13 +1162,6 @@ if index(g:polyglot_disabled, 'vcl') == -1
|
||||
au BufNewFile,BufRead *.vcl set ft=vcl
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'vifm') == -1
|
||||
au BufNewFile,BufRead *.vifm set ft=vifm
|
||||
au BufNewFile,BufRead *vifm/colors/* set ft=vifm
|
||||
au BufNewFile,BufRead vifmrc set ft=vifm
|
||||
au BufNewFile,BufRead vifm.rename* set ft=vifm-rename
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'velocity') == -1
|
||||
au BufNewFile,BufRead *.vm set ft=velocity
|
||||
endif
|
||||
@@ -1185,7 +1201,7 @@ if index(g:polyglot_disabled, 'xml') == -1
|
||||
au BufNewFile,BufRead *.fsproj set ft=xml
|
||||
au BufNewFile,BufRead *.fxml set ft=xml
|
||||
au BufNewFile,BufRead *.glade set ft=xml
|
||||
au BufNewFile,BufRead *.gml setf xml
|
||||
au BufNewFile,BufRead *.gml set ft=xml
|
||||
au BufNewFile,BufRead *.gmx set ft=xml
|
||||
au BufNewFile,BufRead *.grxml set ft=xml
|
||||
au BufNewFile,BufRead *.iml set ft=xml
|
||||
@@ -1196,11 +1212,11 @@ if index(g:polyglot_disabled, 'xml') == -1
|
||||
au BufNewFile,BufRead *.launch set ft=xml
|
||||
au BufNewFile,BufRead *.mdpolicy set ft=xml
|
||||
au BufNewFile,BufRead *.mjml set ft=xml
|
||||
au BufNewFile,BufRead *.mm setf xml
|
||||
au BufNewFile,BufRead *.mm set ft=xml
|
||||
au BufNewFile,BufRead *.mod setf xml
|
||||
au BufNewFile,BufRead *.mxml set ft=xml
|
||||
au BufNewFile,BufRead *.natvis set ft=xml
|
||||
au BufNewFile,BufRead *.ncl setf xml
|
||||
au BufNewFile,BufRead *.ncl set ft=xml
|
||||
au BufNewFile,BufRead *.ndproj set ft=xml
|
||||
au BufNewFile,BufRead *.nproj set ft=xml
|
||||
au BufNewFile,BufRead *.nuspec set ft=xml
|
||||
@@ -1210,13 +1226,13 @@ if index(g:polyglot_disabled, 'xml') == -1
|
||||
au BufNewFile,BufRead *.pluginspec setf xml
|
||||
au BufNewFile,BufRead *.proj set ft=xml
|
||||
au BufNewFile,BufRead *.props set ft=xml
|
||||
au BufNewFile,BufRead *.ps1xml set ft=xml
|
||||
au BufNewFile,BufRead *.ps1xml setf xml
|
||||
au BufNewFile,BufRead *.psc1 set ft=xml
|
||||
au BufNewFile,BufRead *.pt set ft=xml
|
||||
au BufNewFile,BufRead *.rdf set ft=xml
|
||||
au BufNewFile,BufRead *.resx set ft=xml
|
||||
au BufNewFile,BufRead *.rss set ft=xml
|
||||
au BufNewFile,BufRead *.sch setf xml
|
||||
au BufNewFile,BufRead *.sch set ft=xml
|
||||
au BufNewFile,BufRead *.scxml set ft=xml
|
||||
au BufNewFile,BufRead *.sfproj set ft=xml
|
||||
au BufNewFile,BufRead *.shproj set ft=xml
|
||||
@@ -1293,18 +1309,16 @@ if index(g:polyglot_disabled, 'yaml') == -1
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'ansible') == -1
|
||||
au BufNewFile,BufRead *.asl set ft=yaml.ansible
|
||||
au BufNewFile,BufRead *.dsl set ft=yaml.ansible
|
||||
au BufNewFile,BufRead group_vars/* set ft=yaml.ansible
|
||||
au BufNewFile,BufRead handlers.*.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead handlers.*.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead host_vars/* set ft=yaml.ansible
|
||||
au BufNewFile,BufRead local.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead main.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead playbook.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead requirements.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead roles.*.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead site.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead tasks.*.ya?ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead local.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead main.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead playbook.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead requirements.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead roles.*.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead site.y{a,}ml set ft=yaml.ansible
|
||||
au BufNewFile,BufRead tasks.*.y{a,}ml set ft=yaml.ansible
|
||||
endif
|
||||
|
||||
if index(g:polyglot_disabled, 'helm') == -1
|
||||
@@ -1318,8 +1332,8 @@ endif
|
||||
|
||||
if index(g:polyglot_disabled, 'zig') == -1
|
||||
au BufNewFile,BufRead *.zig set ft=zig
|
||||
au BufNewFile,BufRead *.zir set ft=zig
|
||||
au BufNewFile,BufRead *.zir set ft=zir
|
||||
au BufNewFile,BufRead *.zir setf zig
|
||||
au BufNewFile,BufRead *.zir setf zir
|
||||
endif
|
||||
|
||||
" restore Vi compatibility settings
|
||||
|
||||
@@ -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
|
||||
174
packages.yaml
174
packages.yaml
@@ -47,6 +47,9 @@ filetypes:
|
||||
linguist: C
|
||||
- name: cpp
|
||||
linguist: C++
|
||||
ignored_extensions:
|
||||
# conflicts with more popular reason, remove after heuristics work
|
||||
- re
|
||||
---
|
||||
name: c++11
|
||||
remote: octol/vim-cpp-enhanced-highlight
|
||||
@@ -72,6 +75,11 @@ remote: guns/vim-clojure-static
|
||||
filetypes:
|
||||
- name: clojure
|
||||
linguist: Clojure
|
||||
extra_extensions:
|
||||
- edn
|
||||
extra_filenames:
|
||||
- build.boot
|
||||
- profile.boot
|
||||
---
|
||||
name: cmake
|
||||
remote: pboettch/vim-cmake-syntax
|
||||
@@ -81,16 +89,27 @@ filetypes:
|
||||
---
|
||||
name: coffee-script
|
||||
remote: kchmck/vim-coffee-script
|
||||
dirs: :noafter
|
||||
ignored_dirs:
|
||||
# Don't slow down html and haml files
|
||||
- after
|
||||
filetypes:
|
||||
- name: coffee
|
||||
linguist: CoffeeScript
|
||||
extra_extensions:
|
||||
# 17 results: https://github.com/search?q=extension%3Acoffeekup+html&type=Code
|
||||
- coffeekup
|
||||
ignored_extensions:
|
||||
# Used by C#
|
||||
- csx
|
||||
# Used by Chuck
|
||||
- ck
|
||||
ignored_filenames:
|
||||
# Probably mistake
|
||||
- '*Cakefile'
|
||||
- name: litcoffee
|
||||
linguist: Literate CoffeeScript
|
||||
extra_extensions:
|
||||
# ? results: https://github.com/search?q=extension%3Acoffee.md+require&type=Code (probably search is broken)
|
||||
- coffee.md
|
||||
---
|
||||
name: cjsx
|
||||
@@ -125,8 +144,10 @@ filetypes:
|
||||
linguist: CSV
|
||||
extra_extensions:
|
||||
- tsv
|
||||
- dat
|
||||
- tab
|
||||
ignored_extensions:
|
||||
# This is definitely not csv-only, maybe re-enable when heuristics done
|
||||
- dat
|
||||
---
|
||||
name: cucumber
|
||||
remote: tpope/vim-cucumber
|
||||
@@ -134,6 +155,7 @@ filetypes:
|
||||
- name: cucumber
|
||||
linguist: Gherkin
|
||||
extra_extensions:
|
||||
# https://github.com/search?q=extension%3Astory+when&type=Code
|
||||
- story
|
||||
---
|
||||
name: cue
|
||||
@@ -192,13 +214,17 @@ filetypes:
|
||||
filenames:
|
||||
- 'docker-compose*.yaml'
|
||||
- 'docker-compose*.yml'
|
||||
ignored_filenames:
|
||||
# Probably mistakes?
|
||||
- 'docker-compose*.yaml*'
|
||||
- 'docker-compose*.yml*'
|
||||
---
|
||||
name: elixir
|
||||
remote: elixir-lang/vim-elixir
|
||||
filetypes:
|
||||
- name: elixir
|
||||
linguist: Elixir
|
||||
- name: elixir
|
||||
- name: eelixir
|
||||
linguist: HTML+EEX
|
||||
extra_extensions:
|
||||
- leex
|
||||
@@ -221,6 +247,8 @@ filetypes:
|
||||
- name: emblem
|
||||
extensions:
|
||||
- emblem
|
||||
extra_extensions:
|
||||
- em
|
||||
---
|
||||
name: erlang
|
||||
remote: vim-erlang/vim-erlang-runtime
|
||||
@@ -262,7 +290,8 @@ filetypes:
|
||||
---
|
||||
name: fsharp
|
||||
remote: ionide/Ionide-vim
|
||||
dirs: :basic
|
||||
ignored_dirs:
|
||||
- ftplugin
|
||||
filetypes:
|
||||
- name: fsharp
|
||||
linguist: F#
|
||||
@@ -283,7 +312,7 @@ filetypes:
|
||||
- "*.git/config"
|
||||
- "*/.config/git/config"
|
||||
- "*.git/modules/**/config"
|
||||
- gitconfig
|
||||
- '.gitmodules'
|
||||
- name: gitrebase
|
||||
filenames:
|
||||
- git-rebase-todo
|
||||
@@ -292,14 +321,13 @@ filetypes:
|
||||
- ".gitsendemail.*"
|
||||
- name: gitcommit
|
||||
filenames:
|
||||
- COMMIT_EDIT_MSG
|
||||
- TAG_EDIT_MSG
|
||||
- MERGE_MSG
|
||||
- MSG
|
||||
- '*.git/{,modules/**/,worktrees/*/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG'
|
||||
---
|
||||
name: glsl
|
||||
remote: tikhomirov/vim-glsl
|
||||
dirs: :noafter
|
||||
ignored_dirs:
|
||||
# don't slow down html and haml files
|
||||
- after
|
||||
filetypes:
|
||||
- name: glsl
|
||||
linguist: GLSL
|
||||
@@ -321,7 +349,11 @@ filetypes:
|
||||
---
|
||||
name: go
|
||||
remote: fatih/vim-go
|
||||
dirs: :go
|
||||
ignored_dirs:
|
||||
- autoload
|
||||
- ftplugin
|
||||
extra_dirs:
|
||||
- autoload/go/config.vim
|
||||
filetypes:
|
||||
- name: go
|
||||
linguist: Go
|
||||
@@ -364,12 +396,17 @@ filetypes:
|
||||
- hjs
|
||||
- mustache
|
||||
- njk
|
||||
- hogan
|
||||
- hdbs
|
||||
- hb
|
||||
---
|
||||
name: haproxy
|
||||
remote: CH-DanReif/haproxy.vim
|
||||
filetypes:
|
||||
- name: haproxy
|
||||
linguist: HAProxy
|
||||
extra_filenames:
|
||||
- 'haproxy*.c*'
|
||||
---
|
||||
name: haskell
|
||||
remote: neovimhaskell/haskell-vim
|
||||
@@ -395,14 +432,18 @@ filetypes:
|
||||
- nomad
|
||||
extra_filenames:
|
||||
- Appfile
|
||||
ignored_extensions:
|
||||
# handled by vim-terraform
|
||||
- tf
|
||||
- tfvars
|
||||
---
|
||||
name: hive
|
||||
remote: zebradil/hive.vim
|
||||
filetypes:
|
||||
- name: hive
|
||||
linguist: HiveQL
|
||||
- name: hive
|
||||
linguist: HiveQL
|
||||
extra_extensions:
|
||||
- ql
|
||||
---
|
||||
name: html5
|
||||
remote: othree/html5.vim
|
||||
@@ -417,6 +458,8 @@ filetypes:
|
||||
filenames:
|
||||
- i3.config
|
||||
- i3config
|
||||
- .i3.config
|
||||
- .i3config
|
||||
extensions:
|
||||
- i3.config
|
||||
- i3config
|
||||
@@ -468,6 +511,7 @@ filetypes:
|
||||
- jenkinsfile
|
||||
- Jenkinsfile
|
||||
filenames:
|
||||
- Jenkinsfile
|
||||
- Jenkinsfile*
|
||||
---
|
||||
name: jinja
|
||||
@@ -488,6 +532,8 @@ filetypes:
|
||||
linguist: JSONiq
|
||||
extra_filenames:
|
||||
- ".jqrc"
|
||||
ignored_filenames:
|
||||
- ".jqrc*"
|
||||
---
|
||||
name: json5
|
||||
remote: GutenYe/json5.vim
|
||||
@@ -517,9 +563,11 @@ filetypes:
|
||||
linguist: EJS
|
||||
extra_extensions:
|
||||
- jst
|
||||
- ect
|
||||
ignored_extensions:
|
||||
# I haven't found reference to them
|
||||
- djs
|
||||
- hamljs
|
||||
- ect
|
||||
---
|
||||
name: jsx
|
||||
remote: MaxMEllon/vim-jsx-pretty
|
||||
@@ -542,7 +590,8 @@ filetypes:
|
||||
---
|
||||
name: ledger
|
||||
remote: ledger/vim-ledger
|
||||
dirs: :basic
|
||||
ignored_dirs:
|
||||
- ftplugin
|
||||
filetypes:
|
||||
- name: ledger
|
||||
extensions:
|
||||
@@ -552,7 +601,9 @@ filetypes:
|
||||
---
|
||||
name: less
|
||||
remote: groenewege/vim-less
|
||||
dirs: :noafter
|
||||
ignored_dirs:
|
||||
# We don't want to slow down .html files
|
||||
- after
|
||||
filetypes:
|
||||
- name: less
|
||||
linguist: Less
|
||||
@@ -605,16 +656,21 @@ remote: voldikss/vim-mma
|
||||
filetypes:
|
||||
- name: mma
|
||||
linguist: Mathematica
|
||||
extra_extensions:
|
||||
- wls
|
||||
---
|
||||
name: markdown
|
||||
remote: plasticboy/vim-markdown
|
||||
dirs: :noafter
|
||||
ignored_dirs:
|
||||
# Disable slow folding config
|
||||
- after
|
||||
filetypes:
|
||||
- name: markdown
|
||||
linguist: Markdown
|
||||
ignored_extensions:
|
||||
# Handled by mdx extension
|
||||
- mdx
|
||||
- '{md,mdx,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx}'
|
||||
---
|
||||
name: mdx
|
||||
remote: jxnblk/vim-mdx-js
|
||||
@@ -655,7 +711,8 @@ filetypes:
|
||||
---
|
||||
name: nim
|
||||
remote: zah/nim.vim
|
||||
dirs: :basic
|
||||
ignored_dirs:
|
||||
- ftplugin
|
||||
filetypes:
|
||||
- name: nim
|
||||
linguist: Nim
|
||||
@@ -683,13 +740,15 @@ filetypes:
|
||||
- mlip
|
||||
- mli.cppo
|
||||
- ml.cppo
|
||||
extra_filenames:
|
||||
- .ocamlinit
|
||||
- name: omake
|
||||
extensions:
|
||||
- om
|
||||
filenames:
|
||||
- OMakefile
|
||||
- OMakeroot
|
||||
- Omakeroot.in
|
||||
- OMakeroot.in
|
||||
- name: opam
|
||||
extensions:
|
||||
- opam
|
||||
@@ -699,6 +758,24 @@ filetypes:
|
||||
- name: oasis
|
||||
filenames:
|
||||
- _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
|
||||
remote: McSinyx/vim-octave
|
||||
@@ -727,6 +804,8 @@ filetypes:
|
||||
ignored_extensions:
|
||||
# Handled by cql plugin
|
||||
- cql
|
||||
# Handled by pgsql plugin
|
||||
- pgsql
|
||||
---
|
||||
name: pgsql
|
||||
remote: lifepillar/pgsql.vim
|
||||
@@ -815,6 +894,8 @@ remote: vim-python/python-syntax
|
||||
filetypes:
|
||||
- name: python
|
||||
linguist: Python
|
||||
ignored_filenames:
|
||||
- 'lit.*cfg'
|
||||
---
|
||||
name: python-indent
|
||||
remote: Vimjas/vim-python-pep8-indent
|
||||
@@ -836,6 +917,10 @@ filetypes:
|
||||
- '*requirements.{txt,in}'
|
||||
- '*require.{txt,in}'
|
||||
- 'constraints.{txt,in}'
|
||||
ignored_extensions:
|
||||
# Probaly a bug in plugin
|
||||
- txt
|
||||
- in
|
||||
---
|
||||
name: qmake
|
||||
remote: artoj/qmake-syntax-vim
|
||||
@@ -851,7 +936,8 @@ filetypes:
|
||||
---
|
||||
name: r-lang
|
||||
remote: vim-scripts/R.vim
|
||||
dirs: :basic
|
||||
ignored_dirs:
|
||||
- ftplugin
|
||||
filetypes:
|
||||
- name: r
|
||||
linguist: R
|
||||
@@ -932,9 +1018,18 @@ filetypes:
|
||||
- Cheffile
|
||||
- KitchenSink
|
||||
- Routefile
|
||||
- .Guardfile
|
||||
- .Brewfile
|
||||
- vagrantfile
|
||||
- .simplecov
|
||||
- '[Rr]akefile*'
|
||||
ignored_filenames:
|
||||
# Handled by brewfile extension
|
||||
- Brewfile
|
||||
- rakefile
|
||||
- routefile
|
||||
- thorfile
|
||||
- rantfile
|
||||
- name: eruby
|
||||
linguist: HTML+ERB
|
||||
extra_extensions:
|
||||
@@ -1085,6 +1180,8 @@ filetypes:
|
||||
- name: sxhkdrc
|
||||
extensions:
|
||||
- sxhkdrc
|
||||
filenames:
|
||||
- sxhkdrc
|
||||
---
|
||||
name: systemd
|
||||
remote: wgwoods/vim-systemd-syntax
|
||||
@@ -1152,6 +1249,9 @@ filetypes:
|
||||
linguist: Twig
|
||||
ignored_extensions:
|
||||
- xml.twig
|
||||
ignored_extensions:
|
||||
# already covered by .twig
|
||||
- html.twig
|
||||
- name: xml.twig
|
||||
extensions:
|
||||
- xml.twig
|
||||
@@ -1199,19 +1299,6 @@ filetypes:
|
||||
- name: 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
|
||||
remote: lepture/vim-velocity
|
||||
filetypes:
|
||||
@@ -1259,26 +1346,25 @@ filetypes:
|
||||
extra_filenames:
|
||||
- fish_history
|
||||
- fish_read_history
|
||||
ignored_filenames:
|
||||
- '~/.config/fish/fish_{read_,}history'
|
||||
# Ansible needs to be after YAML
|
||||
---
|
||||
name: ansible
|
||||
remote: pearofducks/ansible-vim
|
||||
filetypes:
|
||||
- name: yaml.ansible
|
||||
extensions:
|
||||
- asl
|
||||
- dsl
|
||||
filenames:
|
||||
- playbook.ya?ml
|
||||
- site.ya?ml
|
||||
- main.ya?ml
|
||||
- local.ya?ml
|
||||
- requirements.ya?ml
|
||||
- "playbook.y{a,}ml"
|
||||
- "site.y{a,}ml"
|
||||
- "main.y{a,}ml"
|
||||
- "local.y{a,}ml"
|
||||
- "requirements.y{a,}ml"
|
||||
- 'tasks.*.y{a,}ml'
|
||||
- 'roles.*.y{a,}ml'
|
||||
- 'handlers.*.y{a,}ml'
|
||||
- 'group_vars/*'
|
||||
- 'host_vars/*'
|
||||
- 'tasks.*.ya?ml'
|
||||
- 'roles.*.ya?ml'
|
||||
- 'handlers.*.ya?ml'
|
||||
# Helm needs to be after YAML
|
||||
---
|
||||
name: helm
|
||||
|
||||
153
scripts/build
153
scripts/build
@@ -5,6 +5,7 @@ require 'open3'
|
||||
require 'yaml'
|
||||
require 'fileutils'
|
||||
require 'set'
|
||||
require 'json'
|
||||
|
||||
Dir.chdir(File.dirname(__dir__))
|
||||
|
||||
@@ -13,13 +14,9 @@ PACKAGES = YAML.load_stream(File.read('packages.yaml'))
|
||||
BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master'
|
||||
|
||||
DIRS = {
|
||||
default: %w(syntax indent compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin),
|
||||
all: %w(syntax indent compiler autoload ftplugin after extras ctags),
|
||||
basic: %w(syntax compiler indent after/syntax after/indent),
|
||||
syntax: %w(syntax indent after/syntax after/indent),
|
||||
noafter: %w(syntax compiler indent autoload ftplugin),
|
||||
javascript: %w(syntax indent compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin extras),
|
||||
go: %w(autoload/go/config.vim syntax compiler indent after/syntax after/indent)
|
||||
default: %w(syntax indent doc compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin),
|
||||
all: %w(syntax indent compiler autoload ftplugin after extras ctags doc),
|
||||
syntax: %w(syntax indent after/syntax after/indent)
|
||||
}
|
||||
|
||||
def parallel(*procs)
|
||||
@@ -102,7 +99,7 @@ def parse_remote(remote)
|
||||
end
|
||||
|
||||
def copy_file(package, src, dest)
|
||||
return unless [".vim", ".ctags", ".vital"].include?(File.extname(src))
|
||||
return unless [".vim", ".ctags", ".vital", ".txt"].include?(File.extname(src))
|
||||
FileUtils.mkdir_p(File.dirname(dest))
|
||||
name = package.fetch("name")
|
||||
|
||||
@@ -159,7 +156,10 @@ def extract
|
||||
dir = "tmp/" + repo.split('/')[1]
|
||||
subdirs = []
|
||||
dirs = DIRS.fetch(package.fetch("dirs", "default").to_sym)
|
||||
dirs -= package.fetch("ignored_dirs", [])
|
||||
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 + "/" : ""}"
|
||||
@@ -251,9 +251,15 @@ def generate_ftdetect
|
||||
|
||||
EOS
|
||||
|
||||
ambiguous_extensions = languages.flat_map { |_, v| v["extensions"] || [] }
|
||||
.group_by(&:itself).transform_values(&:count)
|
||||
.select { |a, b| b > 1 }.keys.map { |a| a[1..] }.to_set
|
||||
ambiguous_extensions = PACKAGES.flat_map { |e| e["filetypes"] }.flat_map do |e|
|
||||
if e["linguist"]
|
||||
((languages[e["linguist"]]["extensions"] || []).map { |e| e[1..-1] } | e.fetch("extra_extensions", [])) - e.fetch("ignored_extensions", [])
|
||||
else
|
||||
e.fetch("extensions", [])
|
||||
end
|
||||
end.group_by(&:itself).transform_values(&:count).select { |a, b| b > 1 }.keys.to_set
|
||||
|
||||
expected_filetypes = detect_filetypes
|
||||
|
||||
for package in PACKAGES
|
||||
name = package.fetch("name")
|
||||
@@ -266,8 +272,9 @@ def generate_ftdetect
|
||||
filetypes = package["filetypes"] or raise "Unknown filetype for: #{package["name"]}"
|
||||
|
||||
for filetype in filetypes
|
||||
name = filetype.fetch("name")
|
||||
syntax = filetype["syntax"] ? " syntax=#{filetype["syntax"]}" : ""
|
||||
set_command = package.fetch("custom_set", "set ft=#{filetype.fetch("name")}#{syntax}")
|
||||
set_command = package.fetch("custom_set", "set ft=#{name}#{syntax}")
|
||||
|
||||
linguist = filetype["linguist"] ? languages.fetch(filetype["linguist"]) : {}
|
||||
extensions = filetype["extensions"] || linguist.fetch("extensions", []).map { |e| e[1..] }
|
||||
@@ -276,11 +283,21 @@ def generate_ftdetect
|
||||
filenames = filetype["filenames"] || linguist.fetch("filenames", [])
|
||||
filenames = (filenames | filetype.fetch("extra_filenames", [])) - filetype.fetch("ignored_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 expand_all(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
|
||||
outer_filetype = filetype["outer_filetype"]
|
||||
if outer_filetype
|
||||
output << " au BufNewFile *.*.#{extension} execute \"do BufNewFile filetypedetect \" . expand(\"<afile>:r\") | #{outer_filetype}"
|
||||
output << " au BufReadPre *.*#{extension} execute \"do BufRead 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}\n"
|
||||
end
|
||||
|
||||
if ambiguous_extensions.include?(extension)
|
||||
@@ -306,12 +323,118 @@ def generate_ftdetect
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
EOS
|
||||
|
||||
# filetypes = detect_filetypes
|
||||
#
|
||||
# for filetype in filetypes
|
||||
#
|
||||
# end
|
||||
|
||||
File.write('ftdetect/polyglot.vim', output)
|
||||
end
|
||||
|
||||
def generate_tests
|
||||
output = <<~EOS
|
||||
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
|
||||
|
||||
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: b.select { |x| !x.match(/^\*\.[^\/]+$/) }
|
||||
}]
|
||||
}]
|
||||
end
|
||||
|
||||
download
|
||||
extract
|
||||
generate_ftdetect
|
||||
generate_tests
|
||||
puts(" Bye! Have a wonderful time!")
|
||||
FileUtils.rm_rf("tmp")
|
||||
|
||||
24
scripts/test
24
scripts/test
@@ -2,18 +2,12 @@
|
||||
|
||||
set -e
|
||||
|
||||
vim -N --startuptime /dev/stdout -u <(
|
||||
echo "filetype plugin indent on"
|
||||
echo "syntax enable"
|
||||
echo "let &rtp='$PWD,'.&rtp"
|
||||
cat ftdetect/polyglot.vim | grep -E 'set ft=[a-z-]+' -o | sort | uniq | awk -F '=' '{ print $2 }' | while read ft; do
|
||||
echo "try"
|
||||
echo " enew"
|
||||
echo " set ft=$ft"
|
||||
echo "catch"
|
||||
echo " echo v:exception"
|
||||
echo " exec ':cq!'"
|
||||
echo "endtry"
|
||||
done
|
||||
echo "exec ':q!'"
|
||||
)
|
||||
vim --clean -N --cmd "
|
||||
filetype plugin indent on
|
||||
syntax enable
|
||||
let &rtp='$PWD,'.&rtp
|
||||
source ftdetect/polyglot.vim
|
||||
source scripts/test_extensions.vim
|
||||
source scripts/test_filetypes.vim
|
||||
exec ':q!'
|
||||
"
|
||||
|
||||
16
scripts/test_extensions.vim
Normal file
16
scripts/test_extensions.vim
Normal file
@@ -0,0 +1,16 @@
|
||||
function! TestExtension(filetype, filename, content)
|
||||
try
|
||||
exec "e " . a:filename
|
||||
exec "if &filetype != '" . a:filetype . "' \nthrow &filetype\nendif"
|
||||
catch
|
||||
echo 'Filename "' . a:filename . '" does not resolve to extension "' . a:filetype . '"'
|
||||
echo ' instead received: "' . v:exception . '"'
|
||||
exec ':cq!'
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
call TestExtension('blade', 'test.blade.php', '')
|
||||
call TestExtension('yaml.ansible', 'playbook.yml', '')
|
||||
call TestExtension('yaml.ansible', 'host_vars/foobar', '')
|
||||
call TestExtension('yaml.ansible', 'handlers.foo.yaml', '')
|
||||
call TestExtension('yaml.ansible', 'requirements.yaml', '')
|
||||
193
scripts/test_filetypes.vim
Normal file
193
scripts/test_filetypes.vim
Normal file
@@ -0,0 +1,193 @@
|
||||
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('asl')
|
||||
call TestFiletype('apiblueprint')
|
||||
call TestFiletype('applescript')
|
||||
call TestFiletype('arduino')
|
||||
call TestFiletype('asciidoc')
|
||||
call TestFiletype('autohotkey')
|
||||
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('d')
|
||||
call TestFiletype('dcov')
|
||||
call TestFiletype('dd')
|
||||
call TestFiletype('ddoc')
|
||||
call TestFiletype('dsdl')
|
||||
call TestFiletype('Dockerfile')
|
||||
call TestFiletype('yaml.docker-compose')
|
||||
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('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('mako')
|
||||
call TestFiletype('mma')
|
||||
call TestFiletype('markdown')
|
||||
call TestFiletype('markdown.mdx')
|
||||
call TestFiletype('meson')
|
||||
call TestFiletype('dosini')
|
||||
call TestFiletype('moon')
|
||||
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('octave')
|
||||
call TestFiletype('opencl')
|
||||
call TestFiletype('perl')
|
||||
call TestFiletype('sql')
|
||||
call TestFiletype('sql')
|
||||
call TestFiletype('cql')
|
||||
call TestFiletype('php')
|
||||
call TestFiletype('blade')
|
||||
call TestFiletype('plantuml')
|
||||
call TestFiletype('pony')
|
||||
call TestFiletype('powershell')
|
||||
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('vue')
|
||||
call TestFiletype('xdc')
|
||||
call TestFiletype('xml')
|
||||
call TestFiletype('xsl')
|
||||
call TestFiletype('yaml')
|
||||
call TestFiletype('yaml.ansible')
|
||||
call TestFiletype('helm')
|
||||
call TestFiletype('zephir')
|
||||
call TestFiletype('zig')
|
||||
call TestFiletype('zir')
|
||||
485
syntax/vifm.vim
485
syntax/vifm.vim
@@ -1,485 +0,0 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
||||
|
||||
" vifm syntax file
|
||||
" Maintainer: xaizek <xaizek@posteo.net>
|
||||
" Last Change: August 8, 2020
|
||||
" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:current_syntax = 'vifm'
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" General commands
|
||||
syntax keyword vifmCommand contained
|
||||
\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
|
||||
\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
|
||||
\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
|
||||
\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d]
|
||||
\ qa[ll] q[uit] redr[aw] reg[isters] regular rename restart restore rlink
|
||||
\ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
|
||||
\ tabm[ove] tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr
|
||||
\ trashes tree session sync undol[ist] ve[rsion] vie[w] vifm vs[plit]
|
||||
\ winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
|
||||
\ nextgroup=vifmArgs
|
||||
syntax keyword vifmCommandCN contained
|
||||
\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
|
||||
\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
|
||||
\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
|
||||
\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d]
|
||||
\ qa[ll] q[uit] redr[aw] reg[isters] regular rename restart restore rlink
|
||||
\ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
|
||||
\ tabm[ove] tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr
|
||||
\ trashes tree session sync undol[ist] ve[rsion] vie[w] vifm vs[plit]
|
||||
\ winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
|
||||
\ nextgroup=vifmArgsCN
|
||||
|
||||
" commands that might be prepended to a command without changing everything else
|
||||
syntax keyword vifmPrefixCommands contained windo winrun
|
||||
|
||||
" Map commands
|
||||
syntax keyword vifmMap contained dm[ap] dn[oremap] du[nmap] map mm[ap]
|
||||
\ mn[oremap] mu[nmap] nm[ap] nn[oremap] no[remap] nun[map] qm[ap] qn[oremap]
|
||||
\ qun[map] unm[ap] vm[ap] vn[oremap] vu[nmap]
|
||||
\ skipwhite nextgroup=vifmMapArgs
|
||||
syntax keyword vifmCMapAbbr contained ca[bbrev] cm[ap] cnorea[bbrev] cno[remap]
|
||||
\ cuna[bbrev] cu[nmap]
|
||||
\ skipwhite nextgroup=vifmCMapArgs
|
||||
|
||||
" Other commands
|
||||
syntax keyword vifmAutocmdCommand contained au[tocmd] nextgroup=vifmAutoEvent
|
||||
syntax keyword vifmCdCommand contained cd
|
||||
syntax keyword vifmCmdCommand contained com[mand] nextgroup=vifmCmdCommandName
|
||||
syntax keyword vifmColoCommand contained colo[rscheme]
|
||||
syntax keyword vifmHiCommand contained hi[ghlight]
|
||||
syntax keyword vifmInvertCommand contained invert
|
||||
syntax keyword vifmLetCommand contained let
|
||||
syntax keyword vifmUnletCommand contained unl[et]
|
||||
syntax keyword vifmSetCommand contained se[t] setl[ocal] setg[lobal]
|
||||
syntax keyword vifmSoCommand contained so[urce]
|
||||
syntax keyword vifmMarkCommand contained ma[rk]
|
||||
syntax keyword vifmFtCommand contained filet[ype] filex[type] filev[iewer]
|
||||
syntax keyword vifmExprCommand contained if ec[ho] elsei[f] exe[cute]
|
||||
syntax keyword vifmNormalCommand contained norm[al]
|
||||
\ nextgroup=vifmColonSubcommand
|
||||
syntax match vifmPatternCommands contained /\<\(filter\(!\|\>\)\|select\(!\|\>\)\|unselect\>\)/ skipwhite
|
||||
\ nextgroup=vifmPattern
|
||||
|
||||
" List of event names for autocommands (case insensitive)
|
||||
syntax case ignore
|
||||
syntax keyword vifmAutoEvent contained DirEnter nextgroup=vifmStatementC
|
||||
syntax case match
|
||||
|
||||
" Builtin functions
|
||||
syntax match vifmBuiltinFunction
|
||||
\ '\(chooseopt\|expand\|executable\|extcached\|filetype\|fnameescape\|getpanetype\|has\|layoutis\|paneisat\|system\|tabpagenr\|term\)\ze('
|
||||
|
||||
" Operators
|
||||
syntax match vifmOperator "\(==\|!=\|>=\?\|<=\?\|\.\|-\|+\|&&\|||\)" skipwhite
|
||||
|
||||
" Highlight groups
|
||||
syntax keyword vifmHiArgs contained cterm ctermfg ctermbg
|
||||
syntax case ignore
|
||||
syntax keyword vifmHiGroups contained WildMenu Border Win CmdLine CurrLine
|
||||
\ OtherLine Directory Link Socket Device Executable Selected BrokenLink
|
||||
\ TopLine TopLineSel StatusLine JobLine SuggestBox Fifo ErrorMsg CmpMismatch
|
||||
\ AuxWin OtherWin TabLine TabLineSel TabNr TabNrSel HardLink LineNr OddLine
|
||||
\ User1 User2 User3 User4 User5 User6 User7 User8 User9
|
||||
syntax keyword vifmHiStyles contained
|
||||
\ bold underline reverse inverse standout italic none
|
||||
syntax keyword vifmHiColors contained black red green yellow blue magenta cyan
|
||||
\ white default lightblack lightred lightgreen lightyellow lightblue
|
||||
\ lightmagenta lightcyan lightwhite Grey0 NavyBlue DarkBlue Blue3 Blue3_2
|
||||
\ Blue1 DarkGreen DeepSkyBlue4 DeepSkyBlue4_2 DeepSkyBlue4_3 DodgerBlue3
|
||||
\ DodgerBlue2 Green4 SpringGreen4 Turquoise4 DeepSkyBlue3 DeepSkyBlue3_2
|
||||
\ DodgerBlue1 Green3 SpringGreen3 DarkCyan LightSeaGreen DeepSkyBlue2
|
||||
\ DeepSkyBlue1 Green3_2 SpringGreen3_2 SpringGreen2 Cyan3 DarkTurquoise
|
||||
\ Turquoise2 Green1 SpringGreen2_2 SpringGreen1 MediumSpringGreen Cyan2
|
||||
\ Cyan1 DarkRed DeepPink4 Purple4 Purple4_2 Purple3 BlueViolet Orange4
|
||||
\ Grey37 MediumPurple4 SlateBlue3 SlateBlue3_2 RoyalBlue1 Chartreuse4
|
||||
\ DarkSeaGreen4 PaleTurquoise4 SteelBlue SteelBlue3 CornflowerBlue
|
||||
\ Chartreuse3 DarkSeaGreen4_2 CadetBlue CadetBlue_2 SkyBlue3 SteelBlue1
|
||||
\ Chartreuse3_2 PaleGreen3 SeaGreen3 Aquamarine3 MediumTurquoise
|
||||
\ SteelBlue1_2 Chartreuse2 SeaGreen2 SeaGreen1 SeaGreen1_2 Aquamarine1
|
||||
\ DarkSlateGray2 DarkRed_2 DeepPink4_2 DarkMagenta DarkMagenta_2 DarkViolet
|
||||
\ Purple Orange4_2 LightPink4 Plum4 MediumPurple3 MediumPurple3_2 SlateBlue1
|
||||
\ Yellow4 Wheat4 Grey53 LightSlateGrey MediumPurple LightSlateBlue Yellow4_2
|
||||
\ DarkOliveGreen3 DarkSeaGreen LightSkyBlue3 LightSkyBlue3_2 SkyBlue2
|
||||
\ Chartreuse2_2 DarkOliveGreen3_2 PaleGreen3_2 DarkSeaGreen3 DarkSlateGray3
|
||||
\ SkyBlue1 Chartreuse1 LightGreen_2 LightGreen_3 PaleGreen1 Aquamarine1_2
|
||||
\ DarkSlateGray1 Red3 DeepPink4_3 MediumVioletRed Magenta3 DarkViolet_2
|
||||
\ Purple_2 DarkOrange3 IndianRed HotPink3 MediumOrchid3 MediumOrchid
|
||||
\ MediumPurple2 DarkGoldenrod LightSalmon3 RosyBrown Grey63 MediumPurple2_2
|
||||
\ MediumPurple1 Gold3 DarkKhaki NavajoWhite3 Grey69 LightSteelBlue3
|
||||
\ LightSteelBlue Yellow3 DarkOliveGreen3_3 DarkSeaGreen3_2 DarkSeaGreen2
|
||||
\ LightCyan3 LightSkyBlue1 GreenYellow DarkOliveGreen2 PaleGreen1_2
|
||||
\ DarkSeaGreen2_2 DarkSeaGreen1 PaleTurquoise1 Red3_2 DeepPink3 DeepPink3_2
|
||||
\ Magenta3_2 Magenta3_3 Magenta2 DarkOrange3_2 IndianRed_2 HotPink3_2
|
||||
\ HotPink2 Orchid MediumOrchid1 Orange3 LightSalmon3_2 LightPink3 Pink3
|
||||
\ Plum3 Violet Gold3_2 LightGoldenrod3 Tan MistyRose3 Thistle3 Plum2
|
||||
\ Yellow3_2 Khaki3 LightGoldenrod2 LightYellow3 Grey84 LightSteelBlue1
|
||||
\ Yellow2 DarkOliveGreen1 DarkOliveGreen1_2 DarkSeaGreen1_2 Honeydew2
|
||||
\ LightCyan1 Red1 DeepPink2 DeepPink1 DeepPink1_2 Magenta2_2 Magenta1
|
||||
\ OrangeRed1 IndianRed1 IndianRed1_2 HotPink HotPink_2 MediumOrchid1_2
|
||||
\ DarkOrange Salmon1 LightCoral PaleVioletRed1 Orchid2 Orchid1 Orange1
|
||||
\ SandyBrown LightSalmon1 LightPink1 Pink1 Plum1 Gold1 LightGoldenrod2_2
|
||||
\ LightGoldenrod2_3 NavajoWhite1 MistyRose1 Thistle1 Yellow1 LightGoldenrod1
|
||||
\ Khaki1 Wheat1 Cornsilk1 Grey100 Grey3 Grey7 Grey11 Grey15 Grey19 Grey23
|
||||
\ Grey27 Grey30 Grey35 Grey39 Grey42 Grey46 Grey50 Grey54 Grey58 Grey62
|
||||
\ Grey66 Grey70 Grey74 Grey78 Grey82 Grey85 Grey89 Grey93
|
||||
|
||||
syntax case match
|
||||
|
||||
" Options
|
||||
syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd
|
||||
\ chaselinks classify columns co confirm cf cpoptions cpo cvoptions
|
||||
\ deleteprg dotdirs dotfiles dirsize fastrun fillchars fcs findprg
|
||||
\ followlinks fusehome gdefault grepprg histcursor history hi hlsearch hls
|
||||
\ iec ignorecase ic iooptions incsearch is laststatus lines locateprg ls
|
||||
\ lsoptions lsview mediaprg milleroptions millerview mintimeoutlen number nu
|
||||
\ numberwidth nuw previewprg quickview relativenumber rnu rulerformat ruf
|
||||
\ runexec scrollbind scb scrolloff sessionoptions ssop so sort sortgroups
|
||||
\ sortorder sortnumbers shell sh shellflagcmd shcf shortmess shm showtabline
|
||||
\ stal sizefmt slowfs smartcase scs statusline stl suggestoptions syncregs
|
||||
\ syscalls tablabel tabscope tabstop timefmt timeoutlen title tm trash
|
||||
\ trashdir ts tuioptions to undolevels ul vicmd viewcolumns vifminfo vimhelp
|
||||
\ vixcmd wildmenu wmnu wildstyle wordchars wrap wrapscan ws
|
||||
|
||||
" Disabled boolean options
|
||||
syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles
|
||||
\ nofastrun nofollowlinks nohlsearch nohls noiec noignorecase noic
|
||||
\ noincsearch nois nolaststatus nols nolsview nomillerview nonumber nonu
|
||||
\ noquickview norelativenumber nornu noscrollbind noscb norunexec
|
||||
\ nosmartcase noscs nosortnumbers nosyscalls notitle notrash novimhelp
|
||||
\ nowildmenu nowmnu nowrap nowrapscan nows
|
||||
|
||||
" Inverted boolean options
|
||||
syntax keyword vifmOption contained invautochpos invcf invchaselinks invdotfiles
|
||||
\ invfastrun invfollowlinks invhlsearch invhls inviec invignorecase invic
|
||||
\ invincsearch invis invlaststatus invls invlsview invmillerview invnumber
|
||||
\ invnu invquickview invrelativenumber invrnu invscrollbind invscb
|
||||
\ invrunexec invsmartcase invscs invsortnumbers invsyscalls invtitle
|
||||
\ invtrash invvimhelp invwildmenu invwmnu invwrap invwrapscan invws
|
||||
|
||||
" Expressions
|
||||
syntax region vifmStatement start='^\(\s\|:\)*'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
|
||||
\ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
|
||||
\,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
|
||||
\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
|
||||
\,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommandSt,vifmPrefixCommands
|
||||
\,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands
|
||||
" Contained statement with highlighting of angle-brace notation.
|
||||
syntax region vifmStatementCN start='\(\s\|:\)*'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained
|
||||
\ contains=vifmCommandCN,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
|
||||
\,vifmFtCommandStN,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
|
||||
\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
|
||||
\,vifmNotation,vifmCdCommandStN,vifmSetN,vifmArgument,vifmSoCommand
|
||||
\,vifmSoCommandStN,vifmInvertCommand,vifmInvertCommandStN,vifmPrefixCommands
|
||||
\,vifmLetCN
|
||||
" Contained statement without highlighting of angle-brace notation.
|
||||
syntax region vifmStatementC start='\(\s\|:\)*'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained
|
||||
\ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
|
||||
\,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
|
||||
\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
|
||||
\,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommand,vifmSoCommandSt
|
||||
\,vifmInvertCommand,vifmInvertCommandSt,vifmPrefixCommands
|
||||
\,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands,vifmLetC,vifmUnletC
|
||||
syntax region vifmCmdCommandSt start='^\(\s\|:\)*com\%[mand]\>'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
|
||||
\ contains=vifmCmdCommand,vifmComment,vifmInlineComment,vifmNotComment
|
||||
syntax region vifmCmdCommandName contained start='!\?\s\+[a-zA-Z]\+' end='\ze\s'
|
||||
\ skip='\(\s*\\\)\|\(\s*".*$\)'
|
||||
\ nextgroup=vifmCmdArgs
|
||||
syntax region vifmCmdArgs start='\(\s*\n\s*\\\)\?\s*\S\+'
|
||||
\ end='\s' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
|
||||
\ contained
|
||||
\ contains=vifmColonSubcommand,vifmComment
|
||||
syntax region vifmColoCommandSt start='^\(\s\|:\)*colo\%[rscheme]\>' end='$'
|
||||
\ keepend oneline contains=vifmColoCommand
|
||||
syntax region vifmInvertCommandSt start='\(\s\|:\)*invert\>' end='$\||'
|
||||
\ keepend oneline contains=vifmInvertCommand
|
||||
syntax region vifmInvertCommandStN start='\(\s\|:\)*invert\>' end='$\||'
|
||||
\ contained keepend oneline contains=vifmInvertCommand,vifmNotation
|
||||
syntax region vifmSoCommandSt start='\(\s\|:\)*so\%[urce]\>' end='$\||'
|
||||
\ keepend oneline contains=vifmSoCommand,vifmEnvVar,vifmStringInExpr
|
||||
syntax region vifmSoCommandStN start='\(\s\|:\)*so\%[urce]\>' end='$\||'
|
||||
\ contained keepend oneline
|
||||
\ contains=vifmSoCommand,vifmEnvVar,vifmNotation,vifmStringInExpr
|
||||
syntax region vifmMarkCommandSt start='^\(\s\|:\)*ma\%[rk]\>' end='$' keepend
|
||||
\ oneline contains=vifmMarkCommand
|
||||
syntax region vifmCdCommandSt start='\(\s\|:\)*cd\>' end='$\||' keepend oneline
|
||||
\ contains=vifmCdCommand,vifmEnvVar,vifmStringInExpr
|
||||
" Highlight for :cd command with highlighting of angle-brace notation.
|
||||
syntax region vifmCdCommandStN start='\(\s\|:\)*cd\>' end='$\||' keepend oneline
|
||||
\ contained
|
||||
\ contains=vifmCdCommand,vifmEnvVar,vifmNotation,vifmStringInExpr
|
||||
syntax region vifmFtCommandSt start='\(\s\|:\)*file[tvx]'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
|
||||
\ contains=vifmFtCommand,vifmComment,vifmFtBeginning
|
||||
syntax region vifmFtCommandStN start='\(\s\|:\)*file[tvx]'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\|\(<[cC][rR]>\)' keepend
|
||||
\ contains=vifmComment,vifmNotation,vifmFtBeginning
|
||||
syntax region vifmMapSt start='^\(\s\|:\)*\(map\|mm\%[ap]\|mn\%[oremap]\|mu\%[nmap]\|nm\%[ap]\|nn\%[oremap]\|no\%[remap]\|nun\%[map]\|qm\%[ap]\|qn\%[oremap]\|qun\%[map]\|unm\%[ap]\|vm\%[ap]\|vn\%[oremap]\|vu\%[nmap]\)'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
|
||||
\ contains=vifmMap
|
||||
syntax region vifmCMapSt
|
||||
\ start='^\(\s\|:\)*\(cm\%[ap]\|cno\%[remap]\|cu\%[nmap]\)'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
|
||||
\ contains=vifmCMapAbbr
|
||||
syntax region vifmExprCommandSt
|
||||
\ start='\<\(if\|ec\%[ho]\|elsei\%[f]\|exe\%[cute]\)\>'
|
||||
\ end='$\||'
|
||||
\ contains=vifmExprCommand,vifmString,vifmStringInExpr,vifmBuiltinFunction
|
||||
\,vifmOperator,vifmEnvVar,vifmNumber
|
||||
syntax region vifmNormalCommandSt start='\(\s\|:\)*norm\%[al]\>' end='$' keepend
|
||||
\ oneline
|
||||
\ contains=vifmNormalCommand,vifmComment
|
||||
syntax region vifmExecute start='!' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmNotation,vifmComment
|
||||
syntax region vifmMapArgs start='\ze\S\+'
|
||||
\ end='\ze.' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
|
||||
\ contained
|
||||
\ nextgroup=vifmMapArgList
|
||||
syntax region vifmCMapArgs start='\S\+'
|
||||
\ end='\n\s*\\' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
|
||||
\ contained
|
||||
\ contains=vifmMapLhs,vifmMapCRhs
|
||||
syntax region vifmMapLhs start='\S\+'
|
||||
\ end='\ze\s' skip='\(\s*\\\)\|\(\s*".*$\)'
|
||||
\ contained
|
||||
\ contains=vifmNotation,vifmComment
|
||||
\ nextgroup=vifmMapRhs
|
||||
syntax region vifmMapRhs start='.'
|
||||
\ end='\ze<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)'
|
||||
\ contained keepend
|
||||
\ contains=vifmNotation,vifmComment,vifmColonSubcommandN
|
||||
\ nextgroup=vifmMapRhs
|
||||
syntax region vifmMapCRhs start='\s'
|
||||
\ end='<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)'
|
||||
\ contained keepend
|
||||
\ contains=vifmNotation,vifmComment,vifmSubcommandN
|
||||
syntax region vifmColonSubcommand start='\s*\(\s*\n\s*\\\)\?:\s*\S\+'
|
||||
\ end='$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)'
|
||||
\ contained
|
||||
\ contains=vifmStatementC
|
||||
" Contained sub command with highlighting of angle-brace notation.
|
||||
syntax region vifmColonSubcommandN start='\s*\(\s*\n\s*\\\)\?:\s*\S\+'
|
||||
\ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend
|
||||
\ contained
|
||||
\ contains=vifmStatementCN
|
||||
syntax region vifmSubcommandN start='\s*\(\s*\n\s*\\\)\?:\?\s*\S\+'
|
||||
\ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend
|
||||
\ contained
|
||||
\ contains=vifmStatementCN
|
||||
" Non-empty pattern or form [!][{]{*.ext,*.e}[}], [!][/]/regex/[/][iI] or
|
||||
" <mime-type-globs>, possibly multi-line.
|
||||
" [!]/regexp/[iI]+
|
||||
syntax region vifmPattern contained
|
||||
\ start='!\?/\ze\(\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+/'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='/[iI]*\ze\s\|/\ze\S\+\s' keepend
|
||||
\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
|
||||
" [!]//regexp//[iI]+
|
||||
syntax region vifmPattern contained
|
||||
\ start='!\?//\ze\(/[^/]\|\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+//'
|
||||
\ skip='/[^/]\|\(\n\s*\\\)\|\(\n\s*".*$\)' end='//[iI]*' keepend
|
||||
\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
|
||||
" [!]{regexp}
|
||||
syntax region vifmPattern contained
|
||||
\ start='!\?{[^}]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}' keepend
|
||||
\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
|
||||
" [!]{{regexp}}
|
||||
syntax region vifmPattern contained
|
||||
\ start='!\?{{\ze.\{-}}}' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}}' keepend
|
||||
\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
|
||||
" [!]<regexp>
|
||||
syntax region vifmPattern contained
|
||||
\ start='!\?<[^>]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='>' keepend
|
||||
\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
|
||||
syntax match vifmNotPattern contained '!\?\({{}}\|\<//\>\|////\)'
|
||||
syntax region vifmHi
|
||||
\ start='^\(\s\|:\)*\<hi\%[ghlight]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
|
||||
\ end='$' keepend
|
||||
\ contains=vifmHiCommand,vifmHiArgs,vifmHiGroups,vifmHiStyles,vifmHiColors
|
||||
\,vifmNumber,vifmComment,vifmInlineComment,vifmNotComment,vifmHiClear
|
||||
\,vifmPattern
|
||||
syntax region vifmFtBeginning contained
|
||||
\ start='\<\(filet\%[ype]\|filext\%[ype]\|filev\%[iewer]\)\>\s\+\S'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
|
||||
\ end='\s' keepend
|
||||
\ contains=vifmFtCommand,vifmPattern
|
||||
|
||||
" common highlight for :command arguments without highlighting of angle-bracket
|
||||
" notation
|
||||
syntax region vifmArgs start='!\?\zs\(\s*\S\+\|[^a-zA-Z]\)'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='|\|$'
|
||||
\ contained
|
||||
\ contains=vifmStringInExpr
|
||||
" common highlight for :command arguments with highlighting of angle-bracket
|
||||
" notation
|
||||
syntax region vifmArgsCN start='!\?\zs\(\s*\S\+\|[^a-zA-Z]\)'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='|\|$'
|
||||
\ contained
|
||||
\ contains=vifmStringInExpr,vifmNotation
|
||||
|
||||
syntax region vifmSet
|
||||
\ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
|
||||
\,vifmSetAssignNS,vifmComment,vifmInlineComment,vifmNotComment
|
||||
syntax region vifmSetN
|
||||
\ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
|
||||
\,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation
|
||||
syntax region vifmSet2 contained
|
||||
\ start='^\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
|
||||
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
|
||||
\,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation
|
||||
|
||||
" Highlight for =value part of :set arguments of form option=value
|
||||
|
||||
" For single quoted string (check that it starts with =')
|
||||
syntax region vifmSetAssignSQS contained
|
||||
\ start="='" skip=+\\\\\|\\'+ end=+'+ keepend
|
||||
\ contains=vifmString
|
||||
" For double quoted string (check that it starts with =")
|
||||
syntax region vifmSetAssignDQS contained
|
||||
\ start='="' skip=+\\\\\|\\"+ end=+"+ keepend
|
||||
\ contains=vifmString
|
||||
" For not strings (check that it doesn't start with either =' or =")
|
||||
syntax region vifmSetAssignNS contained
|
||||
\ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$'
|
||||
\ extend
|
||||
\ contains=vifmNumber,vifmComment,vifmInlineComment
|
||||
" For not strings (check that it doesn't start with either =' or =")
|
||||
syntax region vifmSetAssignNSN contained
|
||||
\ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$'
|
||||
\ extend
|
||||
\ contains=vifmNumber,vifmComment,vifmInlineComment,vifmNotation
|
||||
|
||||
" :let command with highlighting of angle-brace notation.
|
||||
syntax region vifmLet
|
||||
\ start='^\(\s\|:\)*\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
|
||||
\,vifmInlineComment,vifmNotComment
|
||||
" Contained :let command without highlighting of angle-brace notation.
|
||||
syntax region vifmLetC
|
||||
\ start='\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
|
||||
\ keepend
|
||||
\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
|
||||
\,vifmInlineComment,vifmNotComment,vifmBuiltinFunction
|
||||
" Contained :let command with highlighting of angle-brace notation.
|
||||
syntax region vifmLetCN
|
||||
\ start='\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
|
||||
\ keepend
|
||||
\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
|
||||
\,vifmInlineComment,vifmNotComment,vifmBuiltinFunction,vifmNotation
|
||||
syntax region vifmUnlet
|
||||
\ start='^\(\s\|:\)*\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
|
||||
\ keepend
|
||||
\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
|
||||
syntax region vifmUnletC
|
||||
\ start='\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
|
||||
\ keepend
|
||||
\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
|
||||
syntax region vifmString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+
|
||||
syntax region vifmString contained start=+='+hs=s+1 skip=+\\\\\|\\'+ end=+'+
|
||||
syntax region vifmStringInExpr contained start=+=\@<="+hs=s+1 skip=+\\\\\|\\"+
|
||||
\ end=+"+
|
||||
syntax region vifmStringInExpr contained start=+=\@<='+hs=s+1
|
||||
\ skip=+\\\\\|\\'\|''+ end=+'+
|
||||
syntax region vifmStringInExpr contained start=+[.( ]"+hs=s+1 skip=+\\\\\|\\"+
|
||||
\ end=+"+
|
||||
syntax region vifmStringInExpr contained start=+[.( ]'+hs=s+1
|
||||
\ skip=+\\\\\|\\'\|''+ end=+'+
|
||||
syntax region vifmArgument contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syntax region vifmArgument contained start=+'+ skip=+\\\\\|\\'\|''+ end=+'+
|
||||
syntax match vifmEnvVar contained /\$[0-9a-zA-Z_]\+/
|
||||
syntax match vifmNumber contained /\d\+/
|
||||
|
||||
" Optional map arguments right after command name
|
||||
syntax match vifmMapArgList '\(<\(silent\|wait\)>\s*\)*' contained
|
||||
\ nextgroup=vifmMapLhs
|
||||
|
||||
" Ange-bracket notation
|
||||
syntax case ignore
|
||||
syntax match vifmNotation '<\(esc\|cr\|space\|del\|nop\|\(s-\)\?tab\|home\|end\|left\|right\|up\|down\|bs\|delete\|insert\|pageup\|pagedown\|\([acms]-\)\?f\d\{1,2\}\|c-s-[a-z[\]^_]\|s-c-[a-z[\]^_]\|c-[a-z[\]^_@]\|[am]-c-[a-z]\|c-[am]-[a-z]\|[am]-[a-z]\)>'
|
||||
syntax case match
|
||||
|
||||
" Whole line comment
|
||||
syntax region vifmComment contained contains=@Spell start='^\(\s\|:\)*"' end='$'
|
||||
" Comment at the end of a line
|
||||
syntax match vifmInlineComment contained contains=@Spell '\s"[^"]*$'
|
||||
" This prevents highlighting non-first line of multi-line command
|
||||
syntax match vifmNotComment contained '\s"[^"]*\(\n\s*\(\\\|"\)\)\@='
|
||||
|
||||
" Empty line
|
||||
syntax match vifmEmpty /^\s*$/
|
||||
|
||||
" :highlight clear
|
||||
syntax match vifmHiClear contained /\s*\<clear\>\s*/
|
||||
|
||||
" Check spelling only in syntax elements marked with @Spell
|
||||
syntax spell notoplevel
|
||||
|
||||
" Highlight
|
||||
highlight link vifmAutocmdCommand Statement
|
||||
highlight link vifmPatternCommands Statement
|
||||
highlight link vifmComment Comment
|
||||
highlight link vifmInlineComment Comment
|
||||
highlight link vifmCommand Statement
|
||||
highlight link vifmCommandCN Statement
|
||||
highlight link vifmPrefixCommands Statement
|
||||
highlight link vifmCdCommand Statement
|
||||
highlight link vifmCmdCommand Statement
|
||||
highlight link vifmColoCommand Statement
|
||||
highlight link vifmHiCommand Statement
|
||||
highlight link vifmHiClear Statement
|
||||
highlight link vifmInvertCommand Statement
|
||||
highlight link vifmMarkCommand Statement
|
||||
highlight link vifmFtCommand Statement
|
||||
highlight link vifmExprCommand Statement
|
||||
highlight link vifmNormalCommand Statement
|
||||
highlight link vifmLetCommand Statement
|
||||
highlight link vifmUnletCommand Statement
|
||||
highlight link vifmSetCommand Statement
|
||||
highlight link vifmSoCommand Statement
|
||||
highlight link vifmBuiltinFunction Function
|
||||
highlight link vifmOperator Operator
|
||||
highlight link vifmMap Statement
|
||||
highlight link vifmCMapAbbr Statement
|
||||
highlight link vifmHiArgs Type
|
||||
highlight link vifmAutoEvent Type
|
||||
highlight link vifmHiGroups Identifier
|
||||
highlight link vifmPattern String
|
||||
highlight link vifmHiStyles PreProc
|
||||
highlight link vifmHiColors Special
|
||||
highlight link vifmOption PreProc
|
||||
highlight link vifmNotation Special
|
||||
highlight link vifmMapArgList Special
|
||||
highlight link vifmString String
|
||||
highlight link vifmStringInExpr String
|
||||
highlight link vifmEnvVar PreProc
|
||||
highlight link vifmNumber Number
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user