mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
122 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8cd62b9eab | ||
|
|
93e3f020a9 | ||
|
|
81ccd02032 | ||
|
|
2ae1aab49b | ||
|
|
554ae93ef1 | ||
|
|
7a29850ae9 | ||
|
|
c200e7a0c5 | ||
|
|
5529a5e8e2 | ||
|
|
905031eb95 | ||
|
|
76d23a21e6 | ||
|
|
5dd1a7e839 | ||
|
|
bc098370c1 | ||
|
|
b07b46bc0c | ||
|
|
b0823d2068 | ||
|
|
b4a6290b42 | ||
|
|
c324a086b2 | ||
|
|
2bde381723 | ||
|
|
61390f5885 | ||
|
|
f8a0fb37bf | ||
|
|
13fe6ad758 | ||
|
|
78427e4c22 | ||
|
|
829ab22723 | ||
|
|
a8d08c8a49 | ||
|
|
7679a92627 | ||
|
|
ad44c4f7a3 | ||
|
|
3c56c1c7cd | ||
|
|
d4e83d706f | ||
|
|
c47dc02849 | ||
|
|
841cb535df | ||
|
|
e5b26a7308 | ||
|
|
b4b054ebf5 | ||
|
|
08ea94e011 | ||
|
|
ba7a783c7f | ||
|
|
f58692a641 | ||
|
|
0dc7696c89 | ||
|
|
5658b62b7a | ||
|
|
938a2f1667 | ||
|
|
303b3f1b43 | ||
|
|
bf84973173 | ||
|
|
89728a486d | ||
|
|
ae3a0d72cc | ||
|
|
3475a2df67 | ||
|
|
ac42e00864 | ||
|
|
0293cf8346 | ||
|
|
8c139a4546 | ||
|
|
47a036761a | ||
|
|
d2c90dad0a | ||
|
|
7ac92eac0f | ||
|
|
7800dae776 | ||
|
|
a39c9013cc | ||
|
|
25d2786cae | ||
|
|
1f1e821192 | ||
|
|
ae882e85f8 | ||
|
|
aec5e42bdb | ||
|
|
a0c79360ed | ||
|
|
2d3b20bc68 | ||
|
|
a6b0efd530 | ||
|
|
0de043adbc | ||
|
|
67fcbd2a86 | ||
|
|
c925c92217 | ||
|
|
852d25b307 | ||
|
|
4d8ff4eabc | ||
|
|
d6bc08610b | ||
|
|
c154d82557 | ||
|
|
cf1e53bc39 | ||
|
|
92ab75408d | ||
|
|
f977779693 | ||
|
|
4033ac02d0 | ||
|
|
9ab9275f66 | ||
|
|
1c80c4bb08 | ||
|
|
548653cafe | ||
|
|
ee6b1ea157 | ||
|
|
12db3dafc5 | ||
|
|
d1e95cbc98 | ||
|
|
7ffa793f19 | ||
|
|
4203435c48 | ||
|
|
271b63d717 | ||
|
|
acd7ce5950 | ||
|
|
f24fecc338 | ||
|
|
23913e0598 | ||
|
|
1c21231175 | ||
|
|
4541e98466 | ||
|
|
6cd2d5417d | ||
|
|
b7a30b1f1a | ||
|
|
6745c49110 | ||
|
|
1a97304cf6 | ||
|
|
d8eaa50aed | ||
|
|
8e26e6e963 | ||
|
|
676e9dd82e | ||
|
|
23af3f70da | ||
|
|
b79385fecc | ||
|
|
03dd22587a | ||
|
|
bbc6be1099 | ||
|
|
7f2e366334 | ||
|
|
04f868b94a | ||
|
|
4071c094c6 | ||
|
|
617b01a5b6 | ||
|
|
bd35da8e9c | ||
|
|
91da1ec2a5 | ||
|
|
964107c604 | ||
|
|
c0560d6199 | ||
|
|
15db2d7120 | ||
|
|
4935f02217 | ||
|
|
438d222b95 | ||
|
|
90b24287de | ||
|
|
5f1223fbc5 | ||
|
|
a59f644d49 | ||
|
|
33dd4b2741 | ||
|
|
d6866fcced | ||
|
|
7208e89a13 | ||
|
|
56a815be94 | ||
|
|
45273d44d4 | ||
|
|
e961fa8037 | ||
|
|
1b61c48d46 | ||
|
|
8f483aee0f | ||
|
|
b36260d015 | ||
|
|
6c198a3ca9 | ||
|
|
a4c9223257 | ||
|
|
d681cb59d3 | ||
|
|
0b50acdddf | ||
|
|
daa6fc6958 | ||
|
|
610f4c5701 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,6 +1,5 @@
|
|||||||
.gitignore export-ignore
|
.gitignore export-ignore
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
build export-ignore
|
|
||||||
README.md export-ignore
|
README.md export-ignore
|
||||||
/spec export-ignore
|
/spec export-ignore
|
||||||
Gemfile export-ignore
|
Gemfile export-ignore
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
language: ruby
|
language: ruby
|
||||||
rvm:
|
rvm:
|
||||||
- 1.9.3
|
- 1.9.3
|
||||||
before_install: sudo apt-get install vim-gtk
|
sudo: false
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- vim-gtk
|
||||||
before_script:
|
before_script:
|
||||||
- "export DISPLAY=:99.0"
|
- "export DISPLAY=:99.0"
|
||||||
- "sh -e /etc/init.d/xvfb start"
|
- "sh -e /etc/init.d/xvfb start"
|
||||||
|
|||||||
114
README.md
114
README.md
@@ -1,78 +1,130 @@
|
|||||||
# vim-polyglot [![Build Status][travis-img-url]][travis-url]
|
# vim-polyglot [![Build Status][travis-img-url]][travis-url]
|
||||||
|
|
||||||
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.png
|
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
|
||||||
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
|
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
|
||||||
|
|
||||||
A collection of language packs for Vim.
|
A collection of language packs for Vim.
|
||||||
|
|
||||||
One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
||||||
|
|
||||||
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
||||||
- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.
|
- It **installs and updates 70+ times faster** than 70+ packages it consist of.
|
||||||
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).
|
- Solid syntax and indentation support. Only the best language packs.
|
||||||
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.
|
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||||
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).
|
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||||
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.
|
- Each build is tested by automated vimrunner script on CI. See `spec` directory.
|
||||||
|
|
||||||
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
|
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Install pathogen, Vundle or NeoBundle package manager.
|
1. Install [Pathogen](https://github.com/tpope/vim-pathogen), [Vundle](https://github.com/VundleVim/Vundle.vim), [NeoBundle](https://github.com/Shougo/neobundle.vim), or [Plug](https://github.com/junegunn/vim-plug) package manager for Vim.
|
||||||
2. Use this repository as submodule or package.
|
2. Use this repository as submodule or package.
|
||||||
|
|
||||||
Optionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory.
|
Optionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory.
|
||||||
|
|
||||||
## Language packs
|
## Language packs
|
||||||
|
|
||||||
|
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
|
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
|
||||||
|
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
||||||
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
|
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
|
||||||
|
- [cjsx](https://github.com/mtscout6/vim-cjsx) (ftdetect, syntax, ftplugin)
|
||||||
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
|
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin, ftdetect)
|
||||||
|
- [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||||
|
- [cql](https://github.com/elubow/cql-vim) (syntax, ftdetect)
|
||||||
|
- [css](https://github.com/JulesWang/css.vim) (syntax)
|
||||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
|
- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||||
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
|
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
|
||||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
|
- [elm](https://github.com/lambdatoast/elm.vim) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||||
|
- [emberscript](https://github.com/heartsentwined/vim-ember-script) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [emblem](https://github.com/heartsentwined/vim-emblem) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent, ftdetect)
|
||||||
|
- [fish](https://github.com/dag/vim-fish) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
|
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent, ftdetect)
|
||||||
|
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent, ftdetect)
|
||||||
|
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
|
||||||
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, ftplugin, ftdetect)
|
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
|
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload)
|
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax, ftdetect)
|
||||||
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
|
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
|
||||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
|
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect)
|
||||||
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
|
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [json](https://github.com/sheerun/vim-json) (syntax, indent, ftdetect)
|
||||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
||||||
|
- [jsx](https://github.com/mxw/vim-jsx) (ftdetect, after)
|
||||||
|
- [julia](https://github.com/dcjones/julia-minimalist-vim) (syntax, indent, ftdetect)
|
||||||
|
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftdetect)
|
||||||
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
||||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
||||||
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
|
- [nginx](https://github.com/nginx/nginx) (syntax, indent, ftdetect)
|
||||||
|
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent, ftdetect)
|
||||||
|
- [nix](https://github.com/spwhitt/vim-nix) (syntax, ftplugin, ftdetect)
|
||||||
|
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
||||||
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
||||||
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
|
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
|
||||||
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)
|
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)
|
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [pgsql](https://github.com/exu/pgsql.vim) (syntax, ftdetect)
|
||||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
||||||
- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect)
|
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, ftplugin, ftdetect)
|
||||||
|
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
||||||
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)
|
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [puppet](https://github.com/voxpupuli/vim-puppet) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [purescript](https://github.com/raichoo/purescript-vim) (syntax, indent, ftdetect)
|
||||||
|
- [python](https://github.com/mitsuhiko/vim-python-combined) (syntax, indent)
|
||||||
|
- [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
||||||
|
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
|
||||||
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
||||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [rust](https://github.com/wting/rust.vim) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
||||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
|
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
||||||
|
- [solidity](https://github.com/ethereum/vim-solidity) (syntax, indent, ftdetect)
|
||||||
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [systemd](https://github.com/kurayama/systemd-vim-syntax) (syntax, ftdetect)
|
||||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)
|
- [thrift](https://github.com/solarnz/thrift.vim) (syntax, ftdetect)
|
||||||
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
|
- [tmux](https://github.com/tejr/vim-tmux) (syntax, ftdetect)
|
||||||
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)
|
- [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)
|
||||||
|
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin, ftdetect)
|
||||||
|
- [twig](https://github.com/evidens/vim-twig) (syntax, ftplugin)
|
||||||
|
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
|
- [vala](https://github.com/tkztmk/vim-vala) (syntax, indent, ftdetect)
|
||||||
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
||||||
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
|
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax, ftdetect)
|
||||||
|
- [vm](https://github.com/lepture/vim-velocity) (syntax, indent, ftdetect)
|
||||||
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
||||||
- [css-color](https://github.com/gorodinskiy/vim-coloresque) (syntax)
|
- [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin)
|
||||||
|
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
|
||||||
|
|
||||||
|
## Disabling a language pack
|
||||||
|
|
||||||
|
Individual language packs can be disabled by setting `g:polyglot_disabled`.
|
||||||
|
|
||||||
|
```viml
|
||||||
|
" ~/.vimrc
|
||||||
|
let g:polyglot_disabled = ['css']
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that disabiling 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.
|
||||||
|
|
||||||
|
## Updating
|
||||||
|
|
||||||
|
You can either wait for new patch release with updates or run the `./build` script by yourself.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
@@ -83,7 +135,3 @@ Feel free to add your language, and send pull-request.
|
|||||||
## License
|
## License
|
||||||
|
|
||||||
See linked repositories for detailed license information.
|
See linked repositories for detailed license information.
|
||||||
|
|
||||||
|
|
||||||
[](https://bitdeli.com/free "Bitdeli Badge")
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,6 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
|
||||||
|
|
||||||
autocmd BufReadPost,BufNewFile *_spec.rb set syntax=rspec
|
autocmd BufReadPost,BufNewFile *_spec.rb set syntax=rspec
|
||||||
autocmd BufReadPost,BufNewFile *_spec.rb setlocal commentstring=#\ %s
|
autocmd BufReadPost,BufNewFile *_spec.rb setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
7
after/ftplugin/cabal.vim
Normal file
7
after/ftplugin/cabal.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
|
|
||||||
|
setlocal comments=s1fl:{-,mb:-,ex:-},:--
|
||||||
|
setlocal iskeyword+=-,.,*
|
||||||
|
setlocal commentstring=--\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
9
after/ftplugin/coffee.vim
Normal file
9
after/ftplugin/coffee.vim
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cjsx') == -1
|
||||||
|
|
||||||
|
if exists("loaded_matchit")
|
||||||
|
let b:match_ignorecase = 0
|
||||||
|
let b:match_words = '(:),\[:\],{:},<:>,' .
|
||||||
|
\ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
" Vim ftplugin file
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
" Language: Haskell
|
|
||||||
" Maintainer: Tristan Ravitch
|
setlocal comments=s1fl:{-,mb:-,ex:-},:--
|
||||||
|
setlocal iskeyword+='
|
||||||
|
|
||||||
" I don't fully understand what the vim-default ftplugin does, but I do know
|
endif
|
||||||
" that the three-part comment entry really messes up this indenter (I also
|
|
||||||
" hate the leading '-'s it puts in on each line). Disable it here.
|
|
||||||
setlocal comments&
|
|
||||||
setlocal comments=:--
|
|
||||||
|
|||||||
21
after/ftplugin/jsx.vim
Normal file
21
after/ftplugin/jsx.vim
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsx') == -1
|
||||||
|
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Vim ftplugin file
|
||||||
|
"
|
||||||
|
" Language: JSX (JavaScript)
|
||||||
|
" Maintainer: Max Wang <mxawng@gmail.com>
|
||||||
|
" Depends: pangloss/vim-javascript
|
||||||
|
"
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
" modified from html.vim
|
||||||
|
if exists("loaded_matchit")
|
||||||
|
let b:match_ignorecase = 0
|
||||||
|
let b:match_words = '(:),\[:\],{:},<:>,' .
|
||||||
|
\ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal suffixesadd+=.jsx
|
||||||
|
|
||||||
|
endif
|
||||||
20
after/ftplugin/puppet.vim
Normal file
20
after/ftplugin/puppet.vim
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
|
||||||
|
|
||||||
|
if !exists('g:puppet_align_hashes')
|
||||||
|
let g:puppet_align_hashes = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:puppet_align_hashes && exists(':Tabularize')
|
||||||
|
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>a
|
||||||
|
function! s:puppetalign()
|
||||||
|
let p = '^\s*\w+\s*[=+]>.*$'
|
||||||
|
let column = strlen(substitute(getline('.')[0:col('.')],'\([^=]\|=[^>]\)','','g'))
|
||||||
|
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=>\s*\zs.*'))
|
||||||
|
Tabularize /=>/l1
|
||||||
|
normal! 0
|
||||||
|
echo repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position)
|
||||||
|
call search(repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
11
after/ftplugin/yaml.vim
Normal file
11
after/ftplugin/yaml.vim
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yaml') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: Yaml
|
||||||
|
" Author: Henrique Barcelos
|
||||||
|
" Date: 2014-10-08
|
||||||
|
" URL: https://github.com/hjpbarcelos
|
||||||
|
setlocal autoindent sw=2 ts=2 expandtab
|
||||||
|
" vim:set sw=2:
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -31,3 +33,5 @@ function! GetCoffeeHtmlIndent(curlinenum)
|
|||||||
" Otherwise use html indenting.
|
" Otherwise use html indenting.
|
||||||
exec 'return ' s:htmlIndentExpr
|
exec 'return ' s:htmlIndentExpr
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
95
after/indent/jsx.vim
Normal file
95
after/indent/jsx.vim
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsx') == -1
|
||||||
|
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Vim indent file
|
||||||
|
"
|
||||||
|
" Language: JSX (JavaScript)
|
||||||
|
" Maintainer: Max Wang <mxawng@gmail.com>
|
||||||
|
" Depends: pangloss/vim-javascript
|
||||||
|
"
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
" Prologue; load in XML indentation.
|
||||||
|
if exists('b:did_indent')
|
||||||
|
let s:did_indent=b:did_indent
|
||||||
|
unlet b:did_indent
|
||||||
|
endif
|
||||||
|
exe 'runtime! indent/xml.vim'
|
||||||
|
if exists('s:did_indent')
|
||||||
|
let b:did_indent=s:did_indent
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal indentexpr=GetJsxIndent()
|
||||||
|
|
||||||
|
" JS indentkeys
|
||||||
|
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
|
||||||
|
" XML indentkeys
|
||||||
|
setlocal indentkeys+=*<Return>,<>>,<<>,/
|
||||||
|
|
||||||
|
" Multiline end tag regex (line beginning with '>' or '/>')
|
||||||
|
let s:endtag = '^\s*\/\?>\s*;\='
|
||||||
|
|
||||||
|
" Get all syntax types at the beginning of a given line.
|
||||||
|
fu! SynSOL(lnum)
|
||||||
|
return map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Get all syntax types at the end of a given line.
|
||||||
|
fu! SynEOL(lnum)
|
||||||
|
let lnum = prevnonblank(a:lnum)
|
||||||
|
let col = strlen(getline(lnum))
|
||||||
|
return map(synstack(lnum, col), 'synIDattr(v:val, "name")')
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Check if a syntax attribute is XMLish.
|
||||||
|
fu! SynAttrXMLish(synattr)
|
||||||
|
return a:synattr =~ "^xml" || a:synattr =~ "^jsx"
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Check if a synstack is XMLish (i.e., has an XMLish last attribute).
|
||||||
|
fu! SynXMLish(syns)
|
||||||
|
return SynAttrXMLish(get(a:syns, -1))
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Check if a synstack has any XMLish attribute.
|
||||||
|
fu! SynXMLishAny(syns)
|
||||||
|
for synattr in a:syns
|
||||||
|
if SynAttrXMLish(synattr)
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return 0
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Check if a synstack denotes the end of a JSX block.
|
||||||
|
fu! SynJSXBlockEnd(syns)
|
||||||
|
return get(a:syns, -1) == 'jsBraces' && SynAttrXMLish(get(a:syns, -2))
|
||||||
|
endfu
|
||||||
|
|
||||||
|
" Cleverly mix JS and XML indentation.
|
||||||
|
fu! GetJsxIndent()
|
||||||
|
let cursyn = SynSOL(v:lnum)
|
||||||
|
let prevsyn = SynEOL(v:lnum - 1)
|
||||||
|
|
||||||
|
" Use XML indenting if the syntax at the end of the previous line was either
|
||||||
|
" JSX or was the closing brace of a jsBlock whose parent syntax was JSX.
|
||||||
|
if (SynXMLish(prevsyn) || SynJSXBlockEnd(prevsyn)) && SynXMLishAny(cursyn)
|
||||||
|
let ind = XmlIndentGet(v:lnum, 0)
|
||||||
|
|
||||||
|
" Align '/>' and '>' with '<' for multiline tags.
|
||||||
|
if getline(v:lnum) =~? s:endtag
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Then correct the indentation of any JSX following '/>' or '>'.
|
||||||
|
if getline(v:lnum - 1) =~? s:endtag
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let ind = GetJavascriptIndent()
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfu
|
||||||
|
|
||||||
|
endif
|
||||||
97
after/indent/objc.vim
Normal file
97
after/indent/objc.vim
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: Objective-C
|
||||||
|
" Maintainer: Bjorn Winckler <bjorn.winckler@gmail.com>
|
||||||
|
" Last Change: 2012 Jan 01
|
||||||
|
|
||||||
|
" Ensure 'cpo' is set to Vim default values and restore later
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
"if exists("b:did_indent")
|
||||||
|
" finish
|
||||||
|
"endif
|
||||||
|
"let b:did_indent = 1
|
||||||
|
"setlocal cindent
|
||||||
|
|
||||||
|
setl indentkeys=0{,0},:,0#,!^F,o,O,e,<:>
|
||||||
|
|
||||||
|
setlocal indentexpr=GetObjCIndentImproved()
|
||||||
|
|
||||||
|
" Top level statements which should not be indented, and which should not
|
||||||
|
" cause next (non-blank) line to be indented either.
|
||||||
|
let s:topLev = '^\s*@\%(class\|end\|implementation\|interface\|protocol\|\)\>'
|
||||||
|
|
||||||
|
function! GetObjCIndentImproved()
|
||||||
|
" NOTE: Ignore leading white space to avoid having to deal with space vs.
|
||||||
|
" tab issues. Rely on the indent() function instead.
|
||||||
|
let thisLine = substitute(getline(v:lnum), '^\s*', '', '')
|
||||||
|
|
||||||
|
if thisLine =~# s:topLev || getline(prevnonblank(v:lnum - 1)) =~# s:topLev
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If current line looks like an argument to a message dispatch, then line
|
||||||
|
" up colon with previous line. This will indent the second line so that
|
||||||
|
" the colons line up in
|
||||||
|
"
|
||||||
|
" [obj firstParameter:value
|
||||||
|
" paramB:value2];
|
||||||
|
"
|
||||||
|
" but it will not line up colons in
|
||||||
|
"
|
||||||
|
" if ([obj something:here])
|
||||||
|
" [obj other:here];
|
||||||
|
"
|
||||||
|
let thisColon = match(thisLine, '^\s*\K\k*\zs:')
|
||||||
|
if thisColon > 0
|
||||||
|
let prevLine = substitute(getline(v:lnum - 1), '^\s*', '', '')
|
||||||
|
let prevColon = match(prevLine, ':')
|
||||||
|
if prevColon > 0
|
||||||
|
" Try to align colons, always making sure line is indented at least
|
||||||
|
" one shiftwidth more than the indentation at the beginning of the
|
||||||
|
" message. Avoids situations like this:
|
||||||
|
"
|
||||||
|
" if ([obj a:x
|
||||||
|
" aLongParameter:y])
|
||||||
|
"
|
||||||
|
let [lnum,lcol] = searchpairpos('\[', '', '\]', 'b', 0,
|
||||||
|
\ max([1, v:lnum - 10]))
|
||||||
|
let minInd = &sw + (lnum > 0 ? indent(lnum) : 0)
|
||||||
|
let alignedInd = indent(v:lnum - 1) + prevColon - thisColon
|
||||||
|
return alignedInd > minInd ? alignedInd : minInd
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let prevLnum = v:lnum - 1
|
||||||
|
let ind = indent(prevLnum)
|
||||||
|
|
||||||
|
" Indent one shiftwidth after opening block, e.g.:
|
||||||
|
"
|
||||||
|
" call_func_with_block(param, ^{
|
||||||
|
" do_stuff();
|
||||||
|
" });
|
||||||
|
"
|
||||||
|
let blockPat = '\^\s*\(([^)]*)\)\?\s*{$'
|
||||||
|
if thisLine =~ '^}'
|
||||||
|
norm '^%'
|
||||||
|
if getline(".") =~ blockPat
|
||||||
|
return indent(".")
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if getline(prevLnum) =~ blockPat
|
||||||
|
return ind + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
return cindent(v:lnum)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Restore 'cpo' options
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
endif
|
||||||
296
after/syntax/c.vim
Normal file
296
after/syntax/c.vim
Normal file
@@ -0,0 +1,296 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: C Additions
|
||||||
|
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||||
|
" Contributor: Mikhail Wolfson <mywolfson@gmail.com>
|
||||||
|
" URL: http://www.haeggblad.com
|
||||||
|
" Last Change: 6 Sep 2014
|
||||||
|
" Version: 0.3
|
||||||
|
" Changelog:
|
||||||
|
" 0.3 - integration of aftersyntaxc.vim
|
||||||
|
" 0.2 - Cleanup
|
||||||
|
" 0.1 - initial version.
|
||||||
|
"
|
||||||
|
" Syntax highlighting for functions in C.
|
||||||
|
"
|
||||||
|
" Based on:
|
||||||
|
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Highlight function names.
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||||
|
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
||||||
|
hi def link cCustomFunc Function
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Source: aftersyntaxc.vim
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Common ANSI-standard functions
|
||||||
|
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
|
||||||
|
syn keyword cAnsiFunction main typeof
|
||||||
|
syn keyword cAnsiFunction open close read write lseek dup dup2
|
||||||
|
syn keyword cAnsiFunction fcntl ioctl
|
||||||
|
syn keyword cAnsiFunction wctrans towctrans towupper
|
||||||
|
syn keyword cAnsiFunction towlower wctype iswctype
|
||||||
|
syn keyword cAnsiFunction iswxdigit iswupper iswspace
|
||||||
|
syn keyword cAnsiFunction iswpunct iswprint iswlower
|
||||||
|
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
|
||||||
|
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
|
||||||
|
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
|
||||||
|
syn keyword cAnsiFunction mbrlen mbsinit wctob
|
||||||
|
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
|
||||||
|
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
|
||||||
|
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
|
||||||
|
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
|
||||||
|
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
|
||||||
|
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
|
||||||
|
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
|
||||||
|
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
|
||||||
|
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
|
||||||
|
syn keyword cAnsiFunction wcstol wcstold wcstof
|
||||||
|
syn keyword cAnsiFunction wcstod ungetwc putwchar
|
||||||
|
syn keyword cAnsiFunction putwc getwchar getwc
|
||||||
|
syn keyword cAnsiFunction fwide fputws fputwc
|
||||||
|
syn keyword cAnsiFunction fgetws fgetwc wscanf
|
||||||
|
syn keyword cAnsiFunction wprintf vwscanf vwprintf
|
||||||
|
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
|
||||||
|
syn keyword cAnsiFunction vfwprintf swscanf swprintf
|
||||||
|
syn keyword cAnsiFunction fwscanf fwprintf zonetime
|
||||||
|
syn keyword cAnsiFunction strfxtime strftime localtime
|
||||||
|
syn keyword cAnsiFunction gmtime ctime asctime
|
||||||
|
syn keyword cAnsiFunction time mkxtime mktime
|
||||||
|
syn keyword cAnsiFunction difftime clock strlen
|
||||||
|
syn keyword cAnsiFunction strerror memset strtok
|
||||||
|
syn keyword cAnsiFunction strstr strspn strrchr
|
||||||
|
syn keyword cAnsiFunction strpbrk strcspn strchr
|
||||||
|
syn keyword cAnsiFunction memchr strxfrm strncmp
|
||||||
|
syn keyword cAnsiFunction strcoll strcmp memcmp
|
||||||
|
syn keyword cAnsiFunction strncat strcat strncpy
|
||||||
|
syn keyword cAnsiFunction strcpy memmove memcpy
|
||||||
|
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
|
||||||
|
syn keyword cAnsiFunction mbtowc mblen lldiv
|
||||||
|
syn keyword cAnsiFunction ldiv div llabs
|
||||||
|
syn keyword cAnsiFunction labs abs qsort
|
||||||
|
"syn keyword cAnsiFunction bsearch system getenv
|
||||||
|
syn keyword cAnsiFunction bsearch getenv
|
||||||
|
syn keyword cAnsiFunction exit atexit abort
|
||||||
|
syn keyword cAnsiFunction realloc malloc free
|
||||||
|
syn keyword cAnsiFunction calloc srand rand
|
||||||
|
syn keyword cAnsiFunction strtoull strtoul strtoll
|
||||||
|
syn keyword cAnsiFunction strtol strtold strtof
|
||||||
|
syn keyword cAnsiFunction strtod atoll atol
|
||||||
|
syn keyword cAnsiFunction atoi atof perror
|
||||||
|
syn keyword cAnsiFunction ferror feof clearerr
|
||||||
|
syn keyword cAnsiFunction rewind ftell fsetpos
|
||||||
|
syn keyword cAnsiFunction fseek fgetpos fwrite
|
||||||
|
syn keyword cAnsiFunction fread ungetc puts
|
||||||
|
syn keyword cAnsiFunction putchar putc gets
|
||||||
|
syn keyword cAnsiFunction getchar getc fputs
|
||||||
|
syn keyword cAnsiFunction fputc fgets fgetc
|
||||||
|
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
|
||||||
|
syn keyword cAnsiFunction vscanf vprintf vfscanf
|
||||||
|
syn keyword cAnsiFunction vfprintf sscanf sprintf
|
||||||
|
syn keyword cAnsiFunction snprintf scanf printf
|
||||||
|
syn keyword cAnsiFunction fscanf fprintf setvbuf
|
||||||
|
syn keyword cAnsiFunction setbuf freopen fopen
|
||||||
|
syn keyword cAnsiFunction fflush fclose tmpnam
|
||||||
|
syn keyword cAnsiFunction tmpfile rename remove
|
||||||
|
syn keyword cAnsiFunction offsetof va_start va_end
|
||||||
|
syn keyword cAnsiFunction va_copy va_arg raise signal
|
||||||
|
syn keyword cAnsiFunction longjmp setjmp isunordered
|
||||||
|
syn keyword cAnsiFunction islessgreater islessequal isless
|
||||||
|
syn keyword cAnsiFunction isgreaterequal isgreater fmal
|
||||||
|
syn keyword cAnsiFunction fmaf fma fminl
|
||||||
|
syn keyword cAnsiFunction fminf fmin fmaxl
|
||||||
|
syn keyword cAnsiFunction fmaxf fmax fdiml
|
||||||
|
syn keyword cAnsiFunction fdimf fdim nextafterxl
|
||||||
|
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
|
||||||
|
syn keyword cAnsiFunction nextafterf nextafter nanl
|
||||||
|
syn keyword cAnsiFunction nanf nan copysignl
|
||||||
|
syn keyword cAnsiFunction copysignf copysign remquol
|
||||||
|
syn keyword cAnsiFunction remquof remquo remainderl
|
||||||
|
syn keyword cAnsiFunction remainderf remainder fmodl
|
||||||
|
syn keyword cAnsiFunction fmodf fmod truncl
|
||||||
|
syn keyword cAnsiFunction truncf trunc llroundl
|
||||||
|
syn keyword cAnsiFunction llroundf llround lroundl
|
||||||
|
syn keyword cAnsiFunction lroundf lround roundl
|
||||||
|
syn keyword cAnsiFunction roundf round llrintl
|
||||||
|
syn keyword cAnsiFunction llrintf llrint lrintl
|
||||||
|
syn keyword cAnsiFunction lrintf lrint rintl
|
||||||
|
syn keyword cAnsiFunction rintf rint nearbyintl
|
||||||
|
syn keyword cAnsiFunction nearbyintf nearbyint floorl
|
||||||
|
syn keyword cAnsiFunction floorf floor ceill
|
||||||
|
syn keyword cAnsiFunction ceilf ceil tgammal
|
||||||
|
syn keyword cAnsiFunction tgammaf tgamma lgammal
|
||||||
|
syn keyword cAnsiFunction lgammaf lgamma erfcl
|
||||||
|
syn keyword cAnsiFunction erfcf erfc erfl
|
||||||
|
syn keyword cAnsiFunction erff erf sqrtl
|
||||||
|
syn keyword cAnsiFunction sqrtf sqrt powl
|
||||||
|
syn keyword cAnsiFunction powf pow hypotl
|
||||||
|
syn keyword cAnsiFunction hypotf hypot fabsl
|
||||||
|
syn keyword cAnsiFunction fabsf fabs cbrtl
|
||||||
|
syn keyword cAnsiFunction cbrtf cbrt scalblnl
|
||||||
|
syn keyword cAnsiFunction scalblnf scalbln scalbnl
|
||||||
|
syn keyword cAnsiFunction scalbnf scalbn modfl
|
||||||
|
syn keyword cAnsiFunction modff modf logbl
|
||||||
|
syn keyword cAnsiFunction logbf logb log2l
|
||||||
|
syn keyword cAnsiFunction log2f log2 log1pl
|
||||||
|
syn keyword cAnsiFunction log1pf log1p log10l
|
||||||
|
syn keyword cAnsiFunction log10f log10 logl
|
||||||
|
syn keyword cAnsiFunction logf log ldexpl
|
||||||
|
syn keyword cAnsiFunction ldexpf ldexp ilogbl
|
||||||
|
syn keyword cAnsiFunction ilogbf ilogb frexpl
|
||||||
|
syn keyword cAnsiFunction frexpf frexp expm1l
|
||||||
|
syn keyword cAnsiFunction expm1f expm1 exp2l
|
||||||
|
syn keyword cAnsiFunction exp2f exp2 expl
|
||||||
|
syn keyword cAnsiFunction expf exp tanhl
|
||||||
|
syn keyword cAnsiFunction tanhf tanh sinhl
|
||||||
|
syn keyword cAnsiFunction sinhf sinh coshl
|
||||||
|
syn keyword cAnsiFunction coshf cosh atanhl
|
||||||
|
syn keyword cAnsiFunction atanhf atanh asinhl
|
||||||
|
syn keyword cAnsiFunction asinhf asinh acoshl
|
||||||
|
syn keyword cAnsiFunction acoshf acosh tanl
|
||||||
|
syn keyword cAnsiFunction tanf tan sinl
|
||||||
|
syn keyword cAnsiFunction sinf sin cosl
|
||||||
|
syn keyword cAnsiFunction cosf cos atan2l
|
||||||
|
syn keyword cAnsiFunction atan2f atan2 atanl
|
||||||
|
syn keyword cAnsiFunction atanf atan asinl
|
||||||
|
syn keyword cAnsiFunction asinf asin acosl
|
||||||
|
syn keyword cAnsiFunction acosf acos signbit
|
||||||
|
syn keyword cAnsiFunction isnormal isnan isinf
|
||||||
|
syn keyword cAnsiFunction isfinite fpclassify localeconv
|
||||||
|
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
|
||||||
|
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
|
||||||
|
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
|
||||||
|
syn keyword cAnsiFunction fesetround fegetround fetestexcept
|
||||||
|
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
|
||||||
|
syn keyword cAnsiFunction feclearexcept toupper tolower
|
||||||
|
syn keyword cAnsiFunction isxdigit isupper isspace
|
||||||
|
syn keyword cAnsiFunction ispunct isprint islower
|
||||||
|
syn keyword cAnsiFunction isgraph isdigit iscntrl
|
||||||
|
syn keyword cAnsiFunction isalpha isalnum creall
|
||||||
|
syn keyword cAnsiFunction crealf creal cprojl
|
||||||
|
syn keyword cAnsiFunction cprojf cproj conjl
|
||||||
|
syn keyword cAnsiFunction conjf conj cimagl
|
||||||
|
syn keyword cAnsiFunction cimagf cimag cargl
|
||||||
|
syn keyword cAnsiFunction cargf carg csqrtl
|
||||||
|
syn keyword cAnsiFunction csqrtf csqrt cpowl
|
||||||
|
syn keyword cAnsiFunction cpowf cpow cabsl
|
||||||
|
syn keyword cAnsiFunction cabsf cabs clogl
|
||||||
|
syn keyword cAnsiFunction clogf clog cexpl
|
||||||
|
syn keyword cAnsiFunction cexpf cexp ctanhl
|
||||||
|
syn keyword cAnsiFunction ctanhf ctanh csinhl
|
||||||
|
syn keyword cAnsiFunction csinhf csinh ccoshl
|
||||||
|
syn keyword cAnsiFunction ccoshf ccosh catanhl
|
||||||
|
syn keyword cAnsiFunction catanhf catanh casinhl
|
||||||
|
syn keyword cAnsiFunction casinhf casinh cacoshl
|
||||||
|
syn keyword cAnsiFunction cacoshf cacosh ctanl
|
||||||
|
syn keyword cAnsiFunction ctanf ctan csinl
|
||||||
|
syn keyword cAnsiFunction csinf csin ccosl
|
||||||
|
syn keyword cAnsiFunction ccosf ccos catanl
|
||||||
|
syn keyword cAnsiFunction catanf catan casinl
|
||||||
|
syn keyword cAnsiFunction casinf casin cacosl
|
||||||
|
syn keyword cAnsiFunction cacosf cacos assert
|
||||||
|
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
|
||||||
|
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
|
||||||
|
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
|
||||||
|
|
||||||
|
" Common ANSI-standard Names
|
||||||
|
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
|
||||||
|
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
|
||||||
|
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
|
||||||
|
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
|
||||||
|
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
|
||||||
|
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
|
||||||
|
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
|
||||||
|
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
|
||||||
|
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
|
||||||
|
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
|
||||||
|
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
|
||||||
|
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
|
||||||
|
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
|
||||||
|
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
|
||||||
|
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
|
||||||
|
|
||||||
|
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
|
||||||
|
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
|
||||||
|
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
|
||||||
|
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
|
||||||
|
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
|
||||||
|
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
|
||||||
|
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
|
||||||
|
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
|
||||||
|
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
|
||||||
|
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
|
||||||
|
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
|
||||||
|
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
|
||||||
|
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
|
||||||
|
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
|
||||||
|
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
|
||||||
|
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
|
||||||
|
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
|
||||||
|
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
|
||||||
|
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
|
||||||
|
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
|
||||||
|
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
|
||||||
|
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
|
||||||
|
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
|
||||||
|
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
|
||||||
|
|
||||||
|
syn keyword cAnsiName errno environ
|
||||||
|
|
||||||
|
syn keyword cAnsiName STDC CX_LIMITED_RANGE
|
||||||
|
syn keyword cAnsiName STDC FENV_ACCESS
|
||||||
|
syn keyword cAnsiName STDC FP_CONTRACT
|
||||||
|
|
||||||
|
syn keyword cAnsiName and bitor not_eq xor
|
||||||
|
syn keyword cAnsiName and_eq compl or xor_eq
|
||||||
|
syn keyword cAnsiName bitand not or_eq
|
||||||
|
|
||||||
|
hi def link cAnsiFunction cFunction
|
||||||
|
hi def link cAnsiName cIdentifier
|
||||||
|
hi def link cFunction Function
|
||||||
|
hi def link cIdentifier Identifier
|
||||||
|
|
||||||
|
" Booleans
|
||||||
|
syn keyword cBoolean true false TRUE FALSE
|
||||||
|
hi def link cBoolean Boolean
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Additional optional highlighting
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Operators
|
||||||
|
"syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
||||||
|
"syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
||||||
|
"syn match cOperator "[.!~*&%<>^|=,+-]"
|
||||||
|
"syn match cOperator "/[^/*=]"me=e-1
|
||||||
|
"syn match cOperator "/$"
|
||||||
|
"syn match cOperator "&&\|||"
|
||||||
|
"syn match cOperator "[][]"
|
||||||
|
"
|
||||||
|
"" Preprocs
|
||||||
|
"syn keyword cDefined defined contained containedin=cDefine
|
||||||
|
"hi def link cDefined cDefine
|
||||||
|
|
||||||
|
"" Functions
|
||||||
|
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||||
|
"syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
|
||||||
|
"
|
||||||
|
"hi def link cUserFunction cFunction
|
||||||
|
"hi def link cUserFunctionPointer cFunction
|
||||||
|
"
|
||||||
|
"" Delimiters
|
||||||
|
"syn match cDelimiter "[();\\]"
|
||||||
|
"" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
"syn match cBraces display "[{}]"
|
||||||
|
|
||||||
|
" Links
|
||||||
|
"hi def link cDelimiter Delimiter
|
||||||
|
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
"hi def link cBraces Delimiter
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,20 +1,31 @@
|
|||||||
" This file describes a very basic syntax for TomDoc comments in a
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cjsx') == -1
|
||||||
" CoffeeScript file.
|
|
||||||
"
|
if exists('b:current_syntax')
|
||||||
" For more information on TomDoc, check it out here: http://tomdoc.org/
|
let s:current_syntax=b:current_syntax
|
||||||
"
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
syn keyword tomdocKeywords Returns containedin=coffeeComment contained
|
if exists('s:current_syntax')
|
||||||
syn keyword tomdocKeywords Throws containedin=coffeeComment contained
|
let b:current_syntax=s:current_syntax
|
||||||
syn keyword tomdocKeywords Examples containedin=coffeeComment contained
|
endif
|
||||||
syn keyword tomdocKeywords Signature containedin=coffeeComment contained
|
|
||||||
|
|
||||||
syn match tomdocArguments +\s*[A-Za-z0-9_\-&\*:]*\(\s*- \)+he=e-3 containedin=coffeeComment contained
|
syn match cjsxEntity contained "&[^; \t]*;" contains=cjsxEntityPunct
|
||||||
|
syn match cjsxEntityPunct contained "[&.;]"
|
||||||
|
|
||||||
syn match tomdocDescriptions +\s*Public:+he=e-1 containedin=coffeeComment contained
|
syn match cjsxAttribProperty /[A-Za-z_][A-Za-z0-9_-]*/ contained
|
||||||
syn match tomdocDescriptions +\s*Internal:+he=e-1 containedin=coffeeComment contained
|
syn region cjsxAttrib start=/\s[A-Za-z_][A-Za-z0-9_-]/hs=s+1 end=/=/ end=/\s[A-Za-z_]/me=e-2 end=+[/>]+me=e-1 contained contains=cjsxAttribProperty
|
||||||
syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=coffeeComment contained
|
|
||||||
|
|
||||||
hi default link tomdocDescriptions String
|
syn region cjsxBody start=+[^/]>+ms=s+2 start=/>/ms=s+1 end=+<\/+me=e-2 contained contains=cjsxElement,coffeeCurlies,cjsxEntity
|
||||||
hi default link tomdocKeywords String
|
|
||||||
hi default link tomdocArguments HELP
|
syn region cjsxElement start=/<@\=[A-Za-z_][A-Za-z0-9-_\.]*/ end=/\/>/ end=/<\/@\=[A-Za-z_][A-Za-z0-9-_\.]*>/ contains=cjsxOpenTag,cjsxBody,coffeeCurlies,coffeeString,cjsxAttrib,coffeeNumber,coffeeFloat
|
||||||
|
|
||||||
|
syn cluster coffeeAll add=cjsxElement
|
||||||
|
|
||||||
|
" The default highlighting.
|
||||||
|
hi def link cjsxElement Function
|
||||||
|
hi def link cjsxTagName Function
|
||||||
|
hi def link cjsxEntity Statement
|
||||||
|
hi def link cjsxEntityPunct Type
|
||||||
|
hi def link cjsxAttribProperty Type
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
|
||||||
|
|
||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: C++ Additions
|
" Language: C++ Additions
|
||||||
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||||
" URL: http://www.haeggblad.com
|
" URL: http://www.haeggblad.com
|
||||||
" Last Change: 26 Jan 2014
|
" Last Change: 21 Sep 2014
|
||||||
" Version: 0.2
|
" Version: 0.5
|
||||||
" Changelog:
|
" Changelog:
|
||||||
" 0.1 - initial version.
|
" 0.1 - initial version.
|
||||||
" 0.2 - C++14
|
" 0.2 - C++14
|
||||||
|
" 0.3 - Incorporate lastest changes from Mizuchi/STL-Syntax
|
||||||
|
" 0.4 - Add template function highlight
|
||||||
|
" 0.5 - Redo template function highlight to be more robust. Add options.
|
||||||
"
|
"
|
||||||
" Additional Vim syntax highlighting for C++ (including C++11)
|
" Additional Vim syntax highlighting for C++ (including C++11/14)
|
||||||
"
|
"
|
||||||
" This file contains additional syntax highlighting that I use for my C++11
|
" This file contains additional syntax highlighting that I use for C++11/14
|
||||||
" development in Vim. Compared to the standard syntax highlighting for C++ it
|
" development in Vim. Compared to the standard syntax highlighting for C++ it
|
||||||
" adds highlighting of (user defined) functions and the containers and types
|
" adds highlighting of (user defined) functions and the containers and types
|
||||||
" in the standard library / boost.
|
" in the standard library / boost.
|
||||||
@@ -28,21 +33,69 @@
|
|||||||
" Based on the discussion in:
|
" Based on the discussion in:
|
||||||
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
|
||||||
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
|
||||||
syn match cCustomScope "::"
|
|
||||||
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
|
|
||||||
|
|
||||||
|
" Functions
|
||||||
|
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||||
|
syn match cCustomFunc "\w\+\s*(\@="
|
||||||
hi def link cCustomFunc Function
|
hi def link cCustomFunc Function
|
||||||
|
|
||||||
" Uncomment this to also highlight 'class::' and 'namespace::'
|
" Class and namespace scope
|
||||||
"hi def link cCustomClass Function
|
if exists('g:cpp_class_scope_highlight') && g:cpp_class_scope_highlight
|
||||||
|
syn match cCustomScope "::"
|
||||||
|
syn match cCustomClass "\w\+\s*::"
|
||||||
|
\contains=cCustomScope
|
||||||
|
" hi def link cCustomClass Function " disabled for now
|
||||||
|
syn match cCustomClass "\<\u\w*\s*\>"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Template functions
|
||||||
|
if exists('g:cpp_experimental_template_highlight') && g:cpp_experimental_template_highlight
|
||||||
|
|
||||||
|
syn match cCustomAngleBracketStart "<\_[^;()]\{-}>" contained
|
||||||
|
\contains=cCustomAngleBracketStart, cCustomAngleBracketEnd
|
||||||
|
hi def link cCustomAngleBracketStart cCustomAngleBracketContent
|
||||||
|
|
||||||
|
syn match cCustomAngleBracketEnd ">\_[^<>;()]\{-}>" contained
|
||||||
|
\contains=cCustomAngleBracketEnd
|
||||||
|
hi def link cCustomAngleBracketEnd cCustomAngleBracketContent
|
||||||
|
|
||||||
|
syn match cCustomTemplateFunc "\<\l\w*\s*<\_[^;()]\{-}>(\@="hs=s,he=e-1
|
||||||
|
\contains=cCustomAngleBracketStart
|
||||||
|
hi def link cCustomTemplateFunc cCustomFunc
|
||||||
|
|
||||||
|
syn match cCustomTemplateClass "\<\w\+\s*<\_[^;()]\{-}>"
|
||||||
|
\contains=cCustomAngleBracketStart,cCustomTemplateFunc
|
||||||
|
hi def link cCustomTemplateClass cCustomClass
|
||||||
|
|
||||||
|
|
||||||
|
" Remove 'template' from cppStructure and use a custom match
|
||||||
|
syn clear cppStructure
|
||||||
|
syn keyword cppStructure class typename namespace
|
||||||
|
|
||||||
|
syn match cCustomTemplate "\<template\>"
|
||||||
|
hi def link cCustomTemplate cppStructure
|
||||||
|
syn match cTemplateDeclare "\<template\_s*<\_[^;()]\{-}>"
|
||||||
|
\contains=cppStructure,cCustomTemplate,cCustomAngleBracketStart
|
||||||
|
|
||||||
|
" Remove 'operator' from cppStructure and use a custom match
|
||||||
|
syn clear cppOperator
|
||||||
|
syn keyword cppOperator typeid
|
||||||
|
syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
|
||||||
|
|
||||||
|
syn match cCustomOperator "\<operator\>"
|
||||||
|
hi def link cCustomOperator cppStructure
|
||||||
|
syn match cTemplateOperatorDeclare "\<operator\_s*<\_[^;()]\{-}>[<>]=\?"
|
||||||
|
\contains=cppOperator,cCustomOperator,cCustomAngleBracketStart
|
||||||
|
endif
|
||||||
|
|
||||||
" Alternative syntax that is used in:
|
" Alternative syntax that is used in:
|
||||||
" http://www.vim.org/scripts/script.php?script_id=3064
|
" http://www.vim.org/scripts/script.php?script_id=3064
|
||||||
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||||
"hi def link cCustomFunc Function
|
"hi def link cCustomFunc Function
|
||||||
|
|
||||||
|
" Cluster for all the stdlib functions defined below
|
||||||
|
syn cluster cppSTLgroup contains=cppSTLfunction,cppSTLfunctional,cppSTLconstant,cppSTLnamespace,cppSTLtype,cppSTLexception,cppSTLiterator,cppSTLiterator_tagcppSTLenumcppSTLioscppSTLcast
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
" Standard library types and functions.
|
" Standard library types and functions.
|
||||||
"
|
"
|
||||||
@@ -54,6 +107,10 @@ hi def link cCustomFunc Function
|
|||||||
" http://www.vim.org/scripts/script.php?script_id=1640
|
" http://www.vim.org/scripts/script.php?script_id=1640
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
syntax keyword cppSTLconstant badbit
|
syntax keyword cppSTLconstant badbit
|
||||||
|
syntax keyword cppSTLconstant cerr
|
||||||
|
syntax keyword cppSTLconstant cin
|
||||||
|
syntax keyword cppSTLconstant clog
|
||||||
|
syntax keyword cppSTLconstant cout
|
||||||
syntax keyword cppSTLconstant digits
|
syntax keyword cppSTLconstant digits
|
||||||
syntax keyword cppSTLconstant digits10
|
syntax keyword cppSTLconstant digits10
|
||||||
syntax keyword cppSTLconstant eofbit
|
syntax keyword cppSTLconstant eofbit
|
||||||
@@ -82,6 +139,10 @@ syntax keyword cppSTLconstant radix
|
|||||||
syntax keyword cppSTLconstant round_style
|
syntax keyword cppSTLconstant round_style
|
||||||
syntax keyword cppSTLconstant tinyness_before
|
syntax keyword cppSTLconstant tinyness_before
|
||||||
syntax keyword cppSTLconstant traps
|
syntax keyword cppSTLconstant traps
|
||||||
|
syntax keyword cppSTLconstant wcerr
|
||||||
|
syntax keyword cppSTLconstant wcin
|
||||||
|
syntax keyword cppSTLconstant wclog
|
||||||
|
syntax keyword cppSTLconstant wcout
|
||||||
syntax keyword cppSTLexception bad_alloc
|
syntax keyword cppSTLexception bad_alloc
|
||||||
syntax keyword cppSTLexception bad_array_new_length
|
syntax keyword cppSTLexception bad_array_new_length
|
||||||
syntax keyword cppSTLexception bad_exception
|
syntax keyword cppSTLexception bad_exception
|
||||||
@@ -145,7 +206,7 @@ syntax keyword cppSTLfunction back
|
|||||||
syntax keyword cppSTLfunction back_inserter
|
syntax keyword cppSTLfunction back_inserter
|
||||||
syntax keyword cppSTLfunction bad
|
syntax keyword cppSTLfunction bad
|
||||||
syntax keyword cppSTLfunction beg
|
syntax keyword cppSTLfunction beg
|
||||||
syntax keyword cppSTLfunction begin
|
"syntax keyword cppSTLfunction begin
|
||||||
syntax keyword cppSTLfunction binary_compose
|
syntax keyword cppSTLfunction binary_compose
|
||||||
syntax keyword cppSTLfunction binary_negate
|
syntax keyword cppSTLfunction binary_negate
|
||||||
syntax keyword cppSTLfunction binary_search
|
syntax keyword cppSTLfunction binary_search
|
||||||
@@ -157,12 +218,9 @@ syntax keyword cppSTLfunction bsearch
|
|||||||
syntax keyword cppSTLfunction calloc
|
syntax keyword cppSTLfunction calloc
|
||||||
syntax keyword cppSTLfunction capacity
|
syntax keyword cppSTLfunction capacity
|
||||||
syntax keyword cppSTLfunction ceil
|
syntax keyword cppSTLfunction ceil
|
||||||
syntax keyword cppSTLfunction cerr
|
|
||||||
syntax keyword cppSTLfunction cin
|
|
||||||
syntax keyword cppSTLfunction clear
|
syntax keyword cppSTLfunction clear
|
||||||
syntax keyword cppSTLfunction clearerr
|
syntax keyword cppSTLfunction clearerr
|
||||||
syntax keyword cppSTLfunction clock
|
syntax keyword cppSTLfunction clock
|
||||||
syntax keyword cppSTLfunction clog
|
|
||||||
syntax keyword cppSTLfunction close
|
syntax keyword cppSTLfunction close
|
||||||
syntax keyword cppSTLfunction compare
|
syntax keyword cppSTLfunction compare
|
||||||
syntax keyword cppSTLfunction conj
|
syntax keyword cppSTLfunction conj
|
||||||
@@ -173,17 +231,16 @@ syntax keyword cppSTLfunction cos
|
|||||||
syntax keyword cppSTLfunction cosh
|
syntax keyword cppSTLfunction cosh
|
||||||
syntax keyword cppSTLfunction count
|
syntax keyword cppSTLfunction count
|
||||||
syntax keyword cppSTLfunction count_if
|
syntax keyword cppSTLfunction count_if
|
||||||
syntax keyword cppSTLfunction cout
|
|
||||||
syntax keyword cppSTLfunction c_str
|
syntax keyword cppSTLfunction c_str
|
||||||
syntax keyword cppSTLfunction ctime
|
syntax keyword cppSTLfunction ctime
|
||||||
syntax keyword cppSTLfunction data
|
"syntax keyword cppSTLfunction data
|
||||||
syntax keyword cppSTLfunction denorm_min
|
syntax keyword cppSTLfunction denorm_min
|
||||||
syntax keyword cppSTLfunction destroy
|
syntax keyword cppSTLfunction destroy
|
||||||
syntax keyword cppSTLfunction difftime
|
syntax keyword cppSTLfunction difftime
|
||||||
syntax keyword cppSTLfunction distance
|
syntax keyword cppSTLfunction distance
|
||||||
syntax keyword cppSTLfunction div
|
syntax keyword cppSTLfunction div
|
||||||
syntax keyword cppSTLfunction empty
|
syntax keyword cppSTLfunction empty
|
||||||
syntax keyword cppSTLfunction end
|
"syntax keyword cppSTLfunction end
|
||||||
syntax keyword cppSTLfunction eof
|
syntax keyword cppSTLfunction eof
|
||||||
syntax keyword cppSTLfunction epsilon
|
syntax keyword cppSTLfunction epsilon
|
||||||
syntax keyword cppSTLfunction equal
|
syntax keyword cppSTLfunction equal
|
||||||
@@ -314,7 +371,7 @@ syntax keyword cppSTLfunction norm
|
|||||||
syntax keyword cppSTLfunction not1
|
syntax keyword cppSTLfunction not1
|
||||||
syntax keyword cppSTLfunction not2
|
syntax keyword cppSTLfunction not2
|
||||||
syntax keyword cppSTLfunction nth_element
|
syntax keyword cppSTLfunction nth_element
|
||||||
syntax keyword cppSTLfunction numeric_limits
|
syntax keyword cppSTLtype numeric_limits
|
||||||
syntax keyword cppSTLfunction open
|
syntax keyword cppSTLfunction open
|
||||||
syntax keyword cppSTLfunction partial_sort
|
syntax keyword cppSTLfunction partial_sort
|
||||||
syntax keyword cppSTLfunction partial_sort_copy
|
syntax keyword cppSTLfunction partial_sort_copy
|
||||||
@@ -396,7 +453,7 @@ syntax keyword cppSTLfunction signal
|
|||||||
syntax keyword cppSTLfunction signaling_NaN
|
syntax keyword cppSTLfunction signaling_NaN
|
||||||
syntax keyword cppSTLfunction sin
|
syntax keyword cppSTLfunction sin
|
||||||
syntax keyword cppSTLfunction sinh
|
syntax keyword cppSTLfunction sinh
|
||||||
syntax keyword cppSTLfunction size
|
"syntax keyword cppSTLfunction size
|
||||||
syntax keyword cppSTLfunction sort
|
syntax keyword cppSTLfunction sort
|
||||||
syntax keyword cppSTLfunction sort_heap
|
syntax keyword cppSTLfunction sort_heap
|
||||||
syntax keyword cppSTLfunction splice
|
syntax keyword cppSTLfunction splice
|
||||||
@@ -426,9 +483,9 @@ syntax keyword cppSTLfunction strspn
|
|||||||
syntax keyword cppSTLfunction strstr
|
syntax keyword cppSTLfunction strstr
|
||||||
syntax keyword cppSTLfunction strtod
|
syntax keyword cppSTLfunction strtod
|
||||||
syntax keyword cppSTLfunction strtof
|
syntax keyword cppSTLfunction strtof
|
||||||
syntax keyword cppSTLfunction strtold
|
|
||||||
syntax keyword cppSTLfunction strtok
|
syntax keyword cppSTLfunction strtok
|
||||||
syntax keyword cppSTLfunction strtol
|
syntax keyword cppSTLfunction strtol
|
||||||
|
syntax keyword cppSTLfunction strtold
|
||||||
syntax keyword cppSTLfunction strtoll
|
syntax keyword cppSTLfunction strtoll
|
||||||
syntax keyword cppSTLfunction strtoul
|
syntax keyword cppSTLfunction strtoul
|
||||||
syntax keyword cppSTLfunction strxfrm
|
syntax keyword cppSTLfunction strxfrm
|
||||||
@@ -438,13 +495,13 @@ syntax keyword cppSTLfunction swap_ranges
|
|||||||
syntax keyword cppSTLfunction swprintf
|
syntax keyword cppSTLfunction swprintf
|
||||||
syntax keyword cppSTLfunction swscanf
|
syntax keyword cppSTLfunction swscanf
|
||||||
syntax keyword cppSTLfunction sync_with_stdio
|
syntax keyword cppSTLfunction sync_with_stdio
|
||||||
syntax keyword cppSTLfunction system
|
"syntax keyword cppSTLfunction system
|
||||||
syntax keyword cppSTLfunction tan
|
syntax keyword cppSTLfunction tan
|
||||||
syntax keyword cppSTLfunction tanh
|
syntax keyword cppSTLfunction tanh
|
||||||
syntax keyword cppSTLfunction tellg
|
syntax keyword cppSTLfunction tellg
|
||||||
syntax keyword cppSTLfunction tellp
|
syntax keyword cppSTLfunction tellp
|
||||||
syntax keyword cppSTLfunction test
|
"syntax keyword cppSTLfunction test
|
||||||
syntax keyword cppSTLfunction time
|
"syntax keyword cppSTLfunction time
|
||||||
syntax keyword cppSTLfunction tmpfile
|
syntax keyword cppSTLfunction tmpfile
|
||||||
syntax keyword cppSTLfunction tmpnam
|
syntax keyword cppSTLfunction tmpnam
|
||||||
syntax keyword cppSTLfunction tolower
|
syntax keyword cppSTLfunction tolower
|
||||||
@@ -466,7 +523,6 @@ syntax keyword cppSTLfunction unique_copy
|
|||||||
syntax keyword cppSTLfunction unsetf
|
syntax keyword cppSTLfunction unsetf
|
||||||
syntax keyword cppSTLfunction upper_bound
|
syntax keyword cppSTLfunction upper_bound
|
||||||
syntax keyword cppSTLfunction va_arg
|
syntax keyword cppSTLfunction va_arg
|
||||||
syntax keyword cppSTLfunction va_arg
|
|
||||||
syntax keyword cppSTLfunction va_copy
|
syntax keyword cppSTLfunction va_copy
|
||||||
syntax keyword cppSTLfunction va_end
|
syntax keyword cppSTLfunction va_end
|
||||||
syntax keyword cppSTLfunction value_comp
|
syntax keyword cppSTLfunction value_comp
|
||||||
@@ -543,12 +599,18 @@ syntax keyword cppSTLnamespace rel_ops
|
|||||||
syntax keyword cppSTLnamespace std
|
syntax keyword cppSTLnamespace std
|
||||||
syntax keyword cppSTLtype allocator
|
syntax keyword cppSTLtype allocator
|
||||||
syntax keyword cppSTLtype auto_ptr
|
syntax keyword cppSTLtype auto_ptr
|
||||||
|
syntax keyword cppSTLtype basic_filebuf
|
||||||
syntax keyword cppSTLtype basic_fstream
|
syntax keyword cppSTLtype basic_fstream
|
||||||
syntax keyword cppSTLtype basic_ifstream
|
syntax keyword cppSTLtype basic_ifstream
|
||||||
|
syntax keyword cppSTLtype basic_iostream
|
||||||
|
syntax keyword cppSTLtype basic_istream
|
||||||
syntax keyword cppSTLtype basic_istringstream
|
syntax keyword cppSTLtype basic_istringstream
|
||||||
syntax keyword cppSTLtype basic_ofstream
|
syntax keyword cppSTLtype basic_ofstream
|
||||||
|
syntax keyword cppSTLtype basic_ostream
|
||||||
syntax keyword cppSTLtype basic_ostringstream
|
syntax keyword cppSTLtype basic_ostringstream
|
||||||
|
syntax keyword cppSTLtype basic_streambuf
|
||||||
syntax keyword cppSTLtype basic_string
|
syntax keyword cppSTLtype basic_string
|
||||||
|
syntax keyword cppSTLtype basic_stringbuf
|
||||||
syntax keyword cppSTLtype basic_stringstream
|
syntax keyword cppSTLtype basic_stringstream
|
||||||
syntax keyword cppSTLtype binary_compose
|
syntax keyword cppSTLtype binary_compose
|
||||||
syntax keyword cppSTLtype binder1st
|
syntax keyword cppSTLtype binder1st
|
||||||
@@ -577,7 +639,11 @@ syntax keyword cppSTLtype ifstream
|
|||||||
syntax keyword cppSTLtype imaxdiv_t
|
syntax keyword cppSTLtype imaxdiv_t
|
||||||
syntax keyword cppSTLtype indirect_array
|
syntax keyword cppSTLtype indirect_array
|
||||||
syntax keyword cppSTLtype int_type
|
syntax keyword cppSTLtype int_type
|
||||||
|
syntax keyword cppSTLtype ios_base
|
||||||
|
syntax keyword cppSTLtype iostream
|
||||||
|
syntax keyword cppSTLtype istream
|
||||||
syntax keyword cppSTLtype istringstream
|
syntax keyword cppSTLtype istringstream
|
||||||
|
syntax keyword cppSTLtype istrstream
|
||||||
syntax keyword cppSTLtype iterator_traits
|
syntax keyword cppSTLtype iterator_traits
|
||||||
syntax keyword cppSTLtype key_compare
|
syntax keyword cppSTLtype key_compare
|
||||||
syntax keyword cppSTLtype key_type
|
syntax keyword cppSTLtype key_type
|
||||||
@@ -598,6 +664,7 @@ syntax keyword cppSTLtype off_type
|
|||||||
syntax keyword cppSTLtype ofstream
|
syntax keyword cppSTLtype ofstream
|
||||||
syntax keyword cppSTLtype ostream
|
syntax keyword cppSTLtype ostream
|
||||||
syntax keyword cppSTLtype ostringstream
|
syntax keyword cppSTLtype ostringstream
|
||||||
|
syntax keyword cppSTLtype ostrstream
|
||||||
syntax keyword cppSTLtype pair
|
syntax keyword cppSTLtype pair
|
||||||
syntax keyword cppSTLtype pointer
|
syntax keyword cppSTLtype pointer
|
||||||
syntax keyword cppSTLtype pointer_to_binary_function
|
syntax keyword cppSTLtype pointer_to_binary_function
|
||||||
@@ -614,9 +681,12 @@ syntax keyword cppSTLtype size_type
|
|||||||
syntax keyword cppSTLtype slice_array
|
syntax keyword cppSTLtype slice_array
|
||||||
syntax keyword cppSTLtype stack
|
syntax keyword cppSTLtype stack
|
||||||
syntax keyword cppSTLtype stream
|
syntax keyword cppSTLtype stream
|
||||||
|
syntax keyword cppSTLtype streambuf
|
||||||
syntax keyword cppSTLtype string
|
syntax keyword cppSTLtype string
|
||||||
syntax keyword cppSTLtype stringbuf
|
syntax keyword cppSTLtype stringbuf
|
||||||
syntax keyword cppSTLtype stringstream
|
syntax keyword cppSTLtype stringstream
|
||||||
|
syntax keyword cppSTLtype strstream
|
||||||
|
syntax keyword cppSTLtype strstreambuf
|
||||||
syntax keyword cppSTLtype temporary_buffer
|
syntax keyword cppSTLtype temporary_buffer
|
||||||
syntax keyword cppSTLtype test_type
|
syntax keyword cppSTLtype test_type
|
||||||
syntax keyword cppSTLtype time_t
|
syntax keyword cppSTLtype time_t
|
||||||
@@ -631,11 +701,16 @@ syntax keyword cppSTLtype valarray
|
|||||||
syntax keyword cppSTLtype value_compare
|
syntax keyword cppSTLtype value_compare
|
||||||
syntax keyword cppSTLtype value_type
|
syntax keyword cppSTLtype value_type
|
||||||
syntax keyword cppSTLtype vector
|
syntax keyword cppSTLtype vector
|
||||||
|
syntax keyword cppSTLtype wfilebuf
|
||||||
syntax keyword cppSTLtype wfstream
|
syntax keyword cppSTLtype wfstream
|
||||||
syntax keyword cppSTLtype wifstream
|
syntax keyword cppSTLtype wifstream
|
||||||
|
syntax keyword cppSTLtype wiostream
|
||||||
|
syntax keyword cppSTLtype wistream
|
||||||
syntax keyword cppSTLtype wistringstream
|
syntax keyword cppSTLtype wistringstream
|
||||||
syntax keyword cppSTLtype wofstream
|
syntax keyword cppSTLtype wofstream
|
||||||
|
syntax keyword cppSTLtype wostream
|
||||||
syntax keyword cppSTLtype wostringstream
|
syntax keyword cppSTLtype wostringstream
|
||||||
|
syntax keyword cppSTLtype wstreambuf
|
||||||
syntax keyword cppSTLtype wstring
|
syntax keyword cppSTLtype wstring
|
||||||
syntax keyword cppSTLtype wstringbuf
|
syntax keyword cppSTLtype wstringbuf
|
||||||
syntax keyword cppSTLtype wstringstream
|
syntax keyword cppSTLtype wstringstream
|
||||||
@@ -721,6 +796,7 @@ syntax keyword cppSTLconstant WCHAR_MAX
|
|||||||
if !exists("cpp_no_cpp11")
|
if !exists("cpp_no_cpp11")
|
||||||
syntax keyword cppSTLtype nullptr_t max_align_t
|
syntax keyword cppSTLtype nullptr_t max_align_t
|
||||||
syntax keyword cppSTLtype type_index
|
syntax keyword cppSTLtype type_index
|
||||||
|
syntax keyword cppSTLconstant nullptr
|
||||||
|
|
||||||
" type_traits
|
" type_traits
|
||||||
syntax keyword cppSTLtype is_void
|
syntax keyword cppSTLtype is_void
|
||||||
@@ -810,6 +886,10 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype integral_constant
|
syntax keyword cppSTLtype integral_constant
|
||||||
syntax keyword cppSTLtype true_type
|
syntax keyword cppSTLtype true_type
|
||||||
syntax keyword cppSTLtype false_type
|
syntax keyword cppSTLtype false_type
|
||||||
|
syntax keyword cppSTLfunction declval
|
||||||
|
|
||||||
|
syntax keyword cppSTLconstant piecewise_construct
|
||||||
|
syntax keyword cppSTLtype piecewise_construct_t
|
||||||
|
|
||||||
" memory
|
" memory
|
||||||
syntax keyword cppSTLtype unique_ptr
|
syntax keyword cppSTLtype unique_ptr
|
||||||
@@ -834,6 +914,12 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype pointer_traits
|
syntax keyword cppSTLtype pointer_traits
|
||||||
syntax keyword cppSTLfunction addressof
|
syntax keyword cppSTLfunction addressof
|
||||||
syntax keyword cppSTLfunction align
|
syntax keyword cppSTLfunction align
|
||||||
|
syntax keyword cppSTLfunction make_shared
|
||||||
|
syntax keyword cppSTLfunction allocate_shared
|
||||||
|
syntax keyword cppSTLcast static_pointer_cast
|
||||||
|
syntax keyword cppSTLcast dynamic_pointer_cast
|
||||||
|
syntax keyword cppSTLcast const_pointer_cast
|
||||||
|
syntax keyword cppSTLfunction get_deleter
|
||||||
|
|
||||||
" function object
|
" function object
|
||||||
syntax keyword cppSTLfunction bind
|
syntax keyword cppSTLfunction bind
|
||||||
@@ -859,6 +945,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction quick_exit
|
syntax keyword cppSTLfunction quick_exit
|
||||||
syntax keyword cppSTLfunction _Exit
|
syntax keyword cppSTLfunction _Exit
|
||||||
syntax keyword cppSTLfunction at_quick_exit
|
syntax keyword cppSTLfunction at_quick_exit
|
||||||
|
syntax keyword cppSTLfunction forward
|
||||||
|
|
||||||
" date and time
|
" date and time
|
||||||
syntax keyword cppSTLnamespace chrono
|
syntax keyword cppSTLnamespace chrono
|
||||||
@@ -867,6 +954,8 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype steady_clock
|
syntax keyword cppSTLtype steady_clock
|
||||||
syntax keyword cppSTLtype high_resolution_clock
|
syntax keyword cppSTLtype high_resolution_clock
|
||||||
syntax keyword cppSTLtype time_point
|
syntax keyword cppSTLtype time_point
|
||||||
|
syntax keyword cppSTLcast duration_cast
|
||||||
|
syntax keyword cppSTLcast time_point_cast
|
||||||
|
|
||||||
" tuple
|
" tuple
|
||||||
syntax keyword cppSTLtype tuple
|
syntax keyword cppSTLtype tuple
|
||||||
@@ -925,6 +1014,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction copy_if
|
syntax keyword cppSTLfunction copy_if
|
||||||
syntax keyword cppSTLfunction copy_n
|
syntax keyword cppSTLfunction copy_n
|
||||||
syntax keyword cppSTLfunction move
|
syntax keyword cppSTLfunction move
|
||||||
|
syntax keyword cppSTLfunction move_if_noexcept
|
||||||
syntax keyword cppSTLfunction move_backward
|
syntax keyword cppSTLfunction move_backward
|
||||||
syntax keyword cppSTLfunction shuffle
|
syntax keyword cppSTLfunction shuffle
|
||||||
syntax keyword cppSTLfunction is_partitioned
|
syntax keyword cppSTLfunction is_partitioned
|
||||||
@@ -999,7 +1089,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLconstant FLT_EVAL_METHOD
|
syntax keyword cppSTLconstant FLT_EVAL_METHOD
|
||||||
|
|
||||||
" complex
|
" complex
|
||||||
syntax keyword cppSTLfunction proj
|
"syntax keyword cppSTLfunction proj
|
||||||
|
|
||||||
" random
|
" random
|
||||||
syntax keyword cppSTLtype linear_congruential_engine
|
syntax keyword cppSTLtype linear_congruential_engine
|
||||||
@@ -1148,6 +1238,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
|
|
||||||
" thread
|
" thread
|
||||||
syntax keyword cppSTLtype thread
|
syntax keyword cppSTLtype thread
|
||||||
|
syntax keyword cppSTLnamespace this_thread
|
||||||
syntax keyword cppSTLfunction yield
|
syntax keyword cppSTLfunction yield
|
||||||
syntax keyword cppSTLfunction get_id
|
syntax keyword cppSTLfunction get_id
|
||||||
syntax keyword cppSTLfunction sleep_for
|
syntax keyword cppSTLfunction sleep_for
|
||||||
@@ -1249,24 +1340,42 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction wcstoimax
|
syntax keyword cppSTLfunction wcstoimax
|
||||||
syntax keyword cppSTLfunction wcstoumax
|
syntax keyword cppSTLfunction wcstoumax
|
||||||
|
|
||||||
|
syntax keyword cppSTLtype nanoseconds
|
||||||
|
syntax keyword cppSTLtype microseconds
|
||||||
|
syntax keyword cppSTLtype milliseconds
|
||||||
|
syntax keyword cppSTLtype seconds
|
||||||
|
syntax keyword cppSTLtype minutes
|
||||||
|
syntax keyword cppSTLtype hours
|
||||||
|
|
||||||
|
"raw string literals
|
||||||
|
syntax region cppRawString matchgroup=cppRawDelimiter start=@\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(@ end=/)\z1"/ contains=@Spell
|
||||||
|
|
||||||
|
syn match cNumber "0b[01]\+"
|
||||||
endif " C++11
|
endif " C++11
|
||||||
|
|
||||||
if !exists("cpp_no_cpp14")
|
if !exists("cpp_no_cpp14")
|
||||||
|
|
||||||
"optional
|
|
||||||
syntax keyword cppSTLtype optional
|
|
||||||
"syntax keyword cppSTLfunction value
|
|
||||||
syntax keyword cppSTLfunction value_or
|
|
||||||
syntax keyword cppSTLfunction make_optional
|
|
||||||
|
|
||||||
"dynarray
|
"dynarray
|
||||||
syntax keyword cppSTLtype dynarray
|
syntax keyword cppSTLtype dynarray
|
||||||
|
|
||||||
"thread
|
"thread
|
||||||
syntax keyword cppSTLtype shared_mutex
|
syntax keyword cppSTLtype shared_mutex
|
||||||
syntax keyword cppSTLtype shared_lock
|
syntax keyword cppSTLtype shared_lock
|
||||||
|
|
||||||
|
"memory
|
||||||
|
syntax keyword cppSTLfunction make_unique
|
||||||
endif " C++14
|
endif " C++14
|
||||||
|
|
||||||
|
if !exists("cpp_no_boost")
|
||||||
|
"optional is not a part of C++14 anymore
|
||||||
|
syntax keyword cppSTLtype optional
|
||||||
|
"syntax keyword cppSTLfunction value
|
||||||
|
syntax keyword cppSTLfunction value_or
|
||||||
|
syntax keyword cppSTLfunction make_optional
|
||||||
|
|
||||||
|
syntax keyword cppSTLnamespace boost
|
||||||
|
syntax keyword cppSTLcast lexical_cast
|
||||||
|
endif " Boost
|
||||||
|
|
||||||
" Default highlighting
|
" Default highlighting
|
||||||
if version >= 508 || !exists("did_cpp_syntax_inits")
|
if version >= 508 || !exists("did_cpp_syntax_inits")
|
||||||
if version < 508
|
if version < 508
|
||||||
@@ -1276,15 +1385,19 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
|
|||||||
command -nargs=+ HiLink hi def link <args>
|
command -nargs=+ HiLink hi def link <args>
|
||||||
endif
|
endif
|
||||||
HiLink cppSTLfunction Function
|
HiLink cppSTLfunction Function
|
||||||
HiLink cppSTLfunctional Type
|
HiLink cppSTLfunctional Typedef
|
||||||
HiLink cppSTLconstant Constant
|
HiLink cppSTLconstant Constant
|
||||||
HiLink cppSTLnamespace Constant
|
HiLink cppSTLnamespace Constant
|
||||||
HiLink cppSTLtype Type
|
HiLink cppSTLtype Typedef
|
||||||
HiLink cppSTLexception Type
|
HiLink cppSTLexception Exception
|
||||||
HiLink cppSTLiterator Type
|
HiLink cppSTLiterator Typedef
|
||||||
HiLink cppSTLiterator_tag Type
|
HiLink cppSTLiterator_tag Typedef
|
||||||
HiLink cppSTLenum Type
|
HiLink cppSTLenum Typedef
|
||||||
HiLink cppSTLios Function
|
HiLink cppSTLios Function
|
||||||
|
HiLink cppSTLcast Statement " be consistent with official syntax
|
||||||
|
HiLink cppRawString String
|
||||||
|
HiLink cppRawDelimiter Delimiter
|
||||||
delcommand HiLink
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,632 +0,0 @@
|
|||||||
" Name: Coloresque
|
|
||||||
" Language: color preview in vim
|
|
||||||
" Author: Gorodinskii Konstantin <gor.konstantin@gmail.com>
|
|
||||||
" Licence: Vim license
|
|
||||||
" Version: 0.9.5
|
|
||||||
" based on
|
|
||||||
" https://github.com/ap/vim-css-color
|
|
||||||
" https://github.com/lilydjwg/colorizer
|
|
||||||
" vim:et:ts=2 sw=2 sts=2
|
|
||||||
|
|
||||||
let s:hex={}
|
|
||||||
let b:matchescache = {}
|
|
||||||
let b:color_pattern = {}
|
|
||||||
|
|
||||||
let w:colorDictRegExp=''
|
|
||||||
for i in range(0, 255)
|
|
||||||
let s:hex[ printf( '%02x', i ) ] = i
|
|
||||||
endfor
|
|
||||||
|
|
||||||
let s:black = '#000000'
|
|
||||||
let s:white = '#ffffff'
|
|
||||||
|
|
||||||
function! s:FGForBG(color)
|
|
||||||
" pick suitable text color given a background color
|
|
||||||
let color = tolower(a:color)
|
|
||||||
let r = s:hex[color[0:1]]
|
|
||||||
let g = s:hex[color[2:3]]
|
|
||||||
let b = s:hex[color[4:5]]
|
|
||||||
return r*30 + g*59 + b*11 > 12000 ? s:black : s:white
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let s:color_prefix = 'gui'
|
|
||||||
let s:fg_color_calc = 'let color = "#" . toupper(a:color)'
|
|
||||||
|
|
||||||
function! s:RestoreColors()
|
|
||||||
for part in keys(b:color_pattern)
|
|
||||||
|
|
||||||
"if b:color_pattern[part]=="ffffff"
|
|
||||||
"echoe part
|
|
||||||
"endif
|
|
||||||
|
|
||||||
call s:MatchColorValue(b:color_pattern[part], part)
|
|
||||||
"echoe color
|
|
||||||
"echoe b:color_pattern[color]
|
|
||||||
"let group = 'cssColor' . tolower(strpart(b:color_pattern[part]["color"], 1))
|
|
||||||
""exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
|
|
||||||
"exe 'syn cluster cssColors add='.group
|
|
||||||
"exe 'hi' group s:color_prefix.'bg='.b:color_pattern[part]["bg"] s:color_prefix.'fg='.b:color_pattern[part]["fg"]
|
|
||||||
|
|
||||||
"if !exists('b:matchescache')
|
|
||||||
"let b:matchescache={}
|
|
||||||
"endif
|
|
||||||
|
|
||||||
"let b:matchescache[part] = matchadd(group, part, -1)
|
|
||||||
endfor
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:MatchColorValue(color, part)
|
|
||||||
if ! len(a:color) | return | endif
|
|
||||||
|
|
||||||
let group = 'cssColor' . tolower(a:color)
|
|
||||||
|
|
||||||
if !exists('b:color_pattern[a:part]')
|
|
||||||
exe s:fg_color_calc
|
|
||||||
exe 'syn cluster cssColors add='.group
|
|
||||||
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
|
|
||||||
let b:color_pattern[a:part] = a:color
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('b:matchescache')
|
|
||||||
let b:matchescache = {}
|
|
||||||
elseif !exists('b:matchescache[a:part]')
|
|
||||||
let b:matchescache[a:part] = matchadd(group, a:part, -1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
"call add(w:matchescache, matchadd(group, a:part, -1))
|
|
||||||
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:HexForRGBValue(r,g,b)
|
|
||||||
" Convert 80% -> 204, 100% -> 255, etc.
|
|
||||||
let rgb = map( [a:r,a:g,a:b], 'v:val =~ "%$" ? ( 255 * v:val ) / 100 : v:val' )
|
|
||||||
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:HexForHSLValue(h,s,l)
|
|
||||||
" Convert 80% -> 0.8, 100% -> 1.0, etc.
|
|
||||||
let [s,l] = map( [a:s, a:l], 'v:val =~ "%$" ? v:val / 100.0 : str2float(v:val)' )
|
|
||||||
" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color
|
|
||||||
let hh = ( a:h % 360 ) / 360.0
|
|
||||||
let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s
|
|
||||||
let m1 = l * 2 - m2
|
|
||||||
let rgb = []
|
|
||||||
for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]
|
|
||||||
let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h
|
|
||||||
let v =
|
|
||||||
\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :
|
|
||||||
\ h * 2 < 1 ? m2 :
|
|
||||||
\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :
|
|
||||||
\ m1
|
|
||||||
if v > 1.0 | return '' | endif
|
|
||||||
let rgb += [ float2nr( 255 * v ) ]
|
|
||||||
endfor
|
|
||||||
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:ClearMatches()
|
|
||||||
call clearmatches()
|
|
||||||
|
|
||||||
if !exists('b:matchescache')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
"for i in values(b:matchescache)
|
|
||||||
"call matchdelete(i)
|
|
||||||
"endfor
|
|
||||||
unlet b:matchescache
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:VimCssInit(update)
|
|
||||||
|
|
||||||
if a:update==1
|
|
||||||
call s:ClearMatches()
|
|
||||||
endif
|
|
||||||
:set isk+=-
|
|
||||||
:set isk+=#
|
|
||||||
:set isk+=.
|
|
||||||
|
|
||||||
if len(keys(b:color_pattern))>0
|
|
||||||
call s:RestoreColors()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
"let b:matchescache = {}
|
|
||||||
|
|
||||||
call s:AdditionalColors()
|
|
||||||
|
|
||||||
"for i in range(1, line("$"))
|
|
||||||
call s:PreviewCSSColor(join(getline(1,'$'), "\n"))
|
|
||||||
"endfor
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:AdditionalColors()
|
|
||||||
"if exists('&b:colorDictRegExp')&&b:colorDictRegExp!=''
|
|
||||||
"return
|
|
||||||
"endif
|
|
||||||
|
|
||||||
" w3c Colors
|
|
||||||
" plus extra colors
|
|
||||||
let w:colorDict = {
|
|
||||||
\'black': '#000000',
|
|
||||||
\'red': '#ff0000',
|
|
||||||
\'silver': '#c0c0c0',
|
|
||||||
\'gray': '#808080',
|
|
||||||
\'white': '#ffffff',
|
|
||||||
\'maroon': '#800000',
|
|
||||||
\'purple': '#800080',
|
|
||||||
\'fuchsia': '#ff00ff',
|
|
||||||
\'green': '#008000',
|
|
||||||
\'lime': '#00ff00',
|
|
||||||
\'olive': '#808000',
|
|
||||||
\'yellow': '#ffff00',
|
|
||||||
\'navy': '#000080',
|
|
||||||
\'blue': '#0000ff',
|
|
||||||
\'teal': '#008080',
|
|
||||||
\'aqua': '#00ffff',
|
|
||||||
\'aliceblue': '#f0f8ff',
|
|
||||||
\'antiquewhite': '#faebd7',
|
|
||||||
\'aquamarine': '#7fffd4',
|
|
||||||
\'azure': '#f0ffff',
|
|
||||||
\'beige': '#f5f5dc',
|
|
||||||
\'bisque': '#ffe4c4',
|
|
||||||
\'blanchedalmond': '#ffebcd',
|
|
||||||
\'blueviolet': '#8a2be2',
|
|
||||||
\'brown': '#a52a2a',
|
|
||||||
\'burlywood': '#deb887',
|
|
||||||
\'cadetblue': '#5f9ea0',
|
|
||||||
\'chartreuse': '#7fff00',
|
|
||||||
\'chocolate': '#d2691e',
|
|
||||||
\'coral': '#ff7f50',
|
|
||||||
\'cornflowerblue': '#6495ed',
|
|
||||||
\'cornsilk': '#fff8dc',
|
|
||||||
\'crimson': '#dc143c',
|
|
||||||
\'cyan': '#00ffff',
|
|
||||||
\'darkblue': '#00008b',
|
|
||||||
\'darkcyan': '#008b8b',
|
|
||||||
\'darkgoldenrod': '#b8860b',
|
|
||||||
\'darkgray': '#a9a9a9',
|
|
||||||
\'darkgreen': '#006400',
|
|
||||||
\'darkgrey': '#a9a9a9',
|
|
||||||
\'darkkhaki': '#bdb76b',
|
|
||||||
\'darkmagenta': '#8b008b',
|
|
||||||
\'darkolivegreen': '#556b2f',
|
|
||||||
\'darkorchid': '#9932cc',
|
|
||||||
\'darkred': '#8b0000',
|
|
||||||
\'darksalmon': '#e9967a',
|
|
||||||
\'darkseagreen': '#8fbc8f',
|
|
||||||
\'darkslateblue': '#483d8b',
|
|
||||||
\'darkslategray': '#2f4f4f',
|
|
||||||
\'darkslategrey': '#2f4f4f',
|
|
||||||
\'darkturquoise': '#00ced1',
|
|
||||||
\'darkviolet': '#9400d3',
|
|
||||||
\'darkorange': '#ff8c00',
|
|
||||||
\'deeppink': '#ff1493',
|
|
||||||
\'deepskyblue': '#00bfff',
|
|
||||||
\'dimgray': '#696969',
|
|
||||||
\'dimgrey': '#696969',
|
|
||||||
\'dodgerblue': '#1e90ff',
|
|
||||||
\'firebrick': '#b22222',
|
|
||||||
\'floralwhite': '#fffaf0',
|
|
||||||
\'forestgreen': '#228b22',
|
|
||||||
\'gainsboro': '#dcdcdc',
|
|
||||||
\'ghostwhite': '#f8f8ff',
|
|
||||||
\'gold': '#ffd700',
|
|
||||||
\'goldenrod': '#daa520',
|
|
||||||
\'greenyellow': '#adff2f',
|
|
||||||
\'grey': '#808080',
|
|
||||||
\'honeydew': '#f0fff0',
|
|
||||||
\'hotpink': '#ff69b4',
|
|
||||||
\'indianred': '#cd5c5c',
|
|
||||||
\'indigo': '#4b0082',
|
|
||||||
\'ivory': '#fffff0',
|
|
||||||
\'khaki': '#f0e68c',
|
|
||||||
\'lavender': '#e6e6fa',
|
|
||||||
\'lavenderblush': '#fff0f5',
|
|
||||||
\'lawngreen': '#7cfc00',
|
|
||||||
\'lemonchiffon': '#fffacd',
|
|
||||||
\'lightblue': '#add8e6',
|
|
||||||
\'lightcoral': '#f08080',
|
|
||||||
\'lightcyan': '#e0ffff',
|
|
||||||
\'lightgoldenrodyellow': '#fafad2',
|
|
||||||
\'lightgray': '#d3d3d3',
|
|
||||||
\'lightgreen': '#90ee90',
|
|
||||||
\'lightgrey': '#d3d3d3',
|
|
||||||
\'lightpink': '#ffb6c1',
|
|
||||||
\'lightsalmon': '#ffa07a',
|
|
||||||
\'lightseagreen': '#20b2aa',
|
|
||||||
\'lightskyblue': '#87cefa',
|
|
||||||
\'lightslategray': '#778899',
|
|
||||||
\'lightslategrey': '#778899',
|
|
||||||
\'lightsteelblue': '#b0c4de',
|
|
||||||
\'lightyellow': '#ffffe0',
|
|
||||||
\'limegreen': '#32cd32',
|
|
||||||
\'linen': '#faf0e6',
|
|
||||||
\'magenta': '#ff00ff',
|
|
||||||
\'mediumaquamarine': '#66cdaa',
|
|
||||||
\'mediumblue': '#0000cd',
|
|
||||||
\'mediumorchid': '#ba55d3',
|
|
||||||
\'mediumpurple': '#9370d8',
|
|
||||||
\'mediumseagreen': '#3cb371',
|
|
||||||
\'mediumslateblue': '#7b68ee',
|
|
||||||
\'mediumspringgreen': '#00fa9a',
|
|
||||||
\'mediumturquoise': '#48d1cc',
|
|
||||||
\'mediumvioletred': '#c71585',
|
|
||||||
\'midnightblue': '#191970',
|
|
||||||
\'mintcream': '#f5fffa',
|
|
||||||
\'mistyrose': '#ffe4e1',
|
|
||||||
\'moccasin': '#ffe4b5',
|
|
||||||
\'navajowhite': '#ffdead',
|
|
||||||
\'oldlace': '#fdf5e6',
|
|
||||||
\'olivedrab': '#6b8e23',
|
|
||||||
\'orange': '#ffa500',
|
|
||||||
\'orangered': '#ff4500',
|
|
||||||
\'orchid': '#da70d6',
|
|
||||||
\'palegoldenrod': '#eee8aa',
|
|
||||||
\'palegreen': '#98fb98',
|
|
||||||
\'paleturquoise': '#afeeee',
|
|
||||||
\'palevioletred': '#d87093',
|
|
||||||
\'papayawhip': '#ffefd5',
|
|
||||||
\'peachpuff': '#ffdab9',
|
|
||||||
\'peru': '#cd853f',
|
|
||||||
\'pink': '#ffc0cb',
|
|
||||||
\'plum': '#dda0dd',
|
|
||||||
\'powderblue': '#b0e0e6',
|
|
||||||
\'rosybrown': '#bc8f8f',
|
|
||||||
\'royalblue': '#4169e1',
|
|
||||||
\'saddlebrown': '#8b4513',
|
|
||||||
\'salmon': '#fa8072',
|
|
||||||
\'sandybrown': '#f4a460',
|
|
||||||
\'seagreen': '#2e8b57',
|
|
||||||
\'seashell': '#fff5ee',
|
|
||||||
\'sienna': '#a0522d',
|
|
||||||
\'skyblue': '#87ceeb',
|
|
||||||
\'slateblue': '#6a5acd',
|
|
||||||
\'slategray': '#708090',
|
|
||||||
\'slategrey': '#708090',
|
|
||||||
\'snow': '#fffafa',
|
|
||||||
\'springgreen': '#00ff7f',
|
|
||||||
\'steelblue': '#4682b4',
|
|
||||||
\'tan': '#d2b48c',
|
|
||||||
\'thistle': '#d8bfd8',
|
|
||||||
\'tomato': '#ff6347',
|
|
||||||
\'turquoise': '#40e0d0',
|
|
||||||
\'violet': '#ee82ee',
|
|
||||||
\'wheat': '#f5deb3',
|
|
||||||
\'whitesmoke': '#f5f5f5',
|
|
||||||
\'yellowgreen': '#9acd32'
|
|
||||||
\}
|
|
||||||
|
|
||||||
"let w:colorDictRegExp = '\('
|
|
||||||
for _color in keys(w:colorDict)
|
|
||||||
"let w:colorDictRegExp.='\<'._color.'\>\|'
|
|
||||||
call s:MatchColorValue(strpart(w:colorDict[tolower(_color)], 1), '\<\c'._color.'\>')
|
|
||||||
endfor
|
|
||||||
"let w:colorDictRegExp=strpart(w:colorDictRegExp, 0, len(w:colorDictRegExp)-2).'\)\c'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:ProcessByLine(w)
|
|
||||||
call s:PreviewCSSColor(getline(a:w))
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:PreviewCSSColor(str)
|
|
||||||
"if !exists('&w:colorDictRegExp')
|
|
||||||
"endif
|
|
||||||
|
|
||||||
let line=a:str "getline(a:w)
|
|
||||||
let colorexps = {
|
|
||||||
\ 'hex' : '#[0-9A-Fa-f]\{3\}\>\|#[0-9A-Fa-f]\{6\}\>',
|
|
||||||
\ 'rgba' : 'rgba\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)',
|
|
||||||
\ 'hsla' : 'hsla\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)'
|
|
||||||
\ }
|
|
||||||
"\ 'color': w:colorDictRegExp
|
|
||||||
|
|
||||||
"let foundcolor=''
|
|
||||||
|
|
||||||
for exp in keys(colorexps)
|
|
||||||
let place=0
|
|
||||||
|
|
||||||
if exists("foundcolor")
|
|
||||||
unlet foundcolor
|
|
||||||
endif
|
|
||||||
|
|
||||||
while 1
|
|
||||||
if exp=='rgba'||exp=='hsla'
|
|
||||||
let foundcolor = matchlist(a:str, colorexps[exp], place)
|
|
||||||
else
|
|
||||||
let foundcolor = matchstr(a:str, colorexps[exp], place)
|
|
||||||
endif
|
|
||||||
|
|
||||||
let place = matchend(a:str, colorexps[exp], place)
|
|
||||||
|
|
||||||
if empty(foundcolor)
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exp=='hex'
|
|
||||||
let part = foundcolor.'\>'
|
|
||||||
else
|
|
||||||
let part = foundcolor[0]
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exp=='hex'
|
|
||||||
if len(foundcolor) == 4
|
|
||||||
let foundcolor = substitute(foundcolor, '[[:xdigit:]]', '&&', 'g')
|
|
||||||
endif
|
|
||||||
call s:MatchColorValue(strpart(foundcolor, 1), part)
|
|
||||||
elseif exp=='rgba'
|
|
||||||
"TODO get rid of duplicated variables
|
|
||||||
call s:MatchColorValue(s:HexForRGBValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)
|
|
||||||
elseif exp=='hsla'
|
|
||||||
call s:MatchColorValue(s:HexForHSLValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
endfor
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if has("gui_running") || &t_Co==256
|
|
||||||
" HACK modify cssDefinition to add @cssColors to its contains
|
|
||||||
redir => cssdef
|
|
||||||
silent! syn list cssDefinition
|
|
||||||
redir END
|
|
||||||
if len( cssdef )
|
|
||||||
for out in split( cssdef, "\n" )
|
|
||||||
if out !~ '^cssDefinition ' | continue | endif
|
|
||||||
let out = substitute( out, ' \+xxx \+', ' ', '' )
|
|
||||||
let out = substitute( out, ' contains=\zs', '@cssColors,', '' )
|
|
||||||
exe 'syn region' out
|
|
||||||
endfor
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ! has('gui_running')
|
|
||||||
|
|
||||||
let s:black = 0
|
|
||||||
let s:white = 15
|
|
||||||
|
|
||||||
let s:color_prefix = 'cterm'
|
|
||||||
let s:fg_color_calc = 'let color = s:XTermColorForRGB(a:color)'
|
|
||||||
|
|
||||||
" preset 16 vt100 colors
|
|
||||||
let s:xtermcolor = [
|
|
||||||
\ [ 0x00, 0x00, 0x00, 0 ],
|
|
||||||
\ [ 0xCD, 0x00, 0x00, 1 ],
|
|
||||||
\ [ 0x00, 0xCD, 0x00, 2 ],
|
|
||||||
\ [ 0xCD, 0xCD, 0x00, 3 ],
|
|
||||||
\ [ 0x00, 0x00, 0xEE, 4 ],
|
|
||||||
\ [ 0xCD, 0x00, 0xCD, 5 ],
|
|
||||||
\ [ 0x00, 0xCD, 0xCD, 6 ],
|
|
||||||
\ [ 0xE5, 0xE5, 0xE5, 7 ],
|
|
||||||
\ [ 0x7F, 0x7F, 0x7F, 8 ],
|
|
||||||
\ [ 0xFF, 0x00, 0x00, 9 ],
|
|
||||||
\ [ 0x00, 0xFF, 0x00, 10 ],
|
|
||||||
\ [ 0xFF, 0xFF, 0x00, 11 ],
|
|
||||||
\ [ 0x5C, 0x5C, 0xFF, 12 ],
|
|
||||||
\ [ 0xFF, 0x00, 0xFF, 13 ],
|
|
||||||
\ [ 0x00, 0xFF, 0xFF, 14 ],
|
|
||||||
\ [ 0xFF, 0xFF, 0xFF, 15 ]]
|
|
||||||
" grayscale ramp
|
|
||||||
" (value is 8+10*lum for lum in 0..23)
|
|
||||||
let s:xtermcolor += [
|
|
||||||
\ [ 0x08, 0x08, 0x08, 232 ],
|
|
||||||
\ [ 0x12, 0x12, 0x12, 233 ],
|
|
||||||
\ [ 0x1C, 0x1C, 0x1C, 234 ],
|
|
||||||
\ [ 0x26, 0x26, 0x26, 235 ],
|
|
||||||
\ [ 0x30, 0x30, 0x30, 236 ],
|
|
||||||
\ [ 0x3A, 0x3A, 0x3A, 237 ],
|
|
||||||
\ [ 0x44, 0x44, 0x44, 238 ],
|
|
||||||
\ [ 0x4E, 0x4E, 0x4E, 239 ],
|
|
||||||
\ [ 0x58, 0x58, 0x58, 240 ],
|
|
||||||
\ [ 0x62, 0x62, 0x62, 241 ],
|
|
||||||
\ [ 0x6C, 0x6C, 0x6C, 242 ],
|
|
||||||
\ [ 0x76, 0x76, 0x76, 243 ],
|
|
||||||
\ [ 0x80, 0x80, 0x80, 244 ],
|
|
||||||
\ [ 0x8A, 0x8A, 0x8A, 245 ],
|
|
||||||
\ [ 0x94, 0x94, 0x94, 246 ],
|
|
||||||
\ [ 0x9E, 0x9E, 0x9E, 247 ],
|
|
||||||
\ [ 0xA8, 0xA8, 0xA8, 248 ],
|
|
||||||
\ [ 0xB2, 0xB2, 0xB2, 249 ],
|
|
||||||
\ [ 0xBC, 0xBC, 0xBC, 250 ],
|
|
||||||
\ [ 0xC6, 0xC6, 0xC6, 251 ],
|
|
||||||
\ [ 0xD0, 0xD0, 0xD0, 252 ],
|
|
||||||
\ [ 0xDA, 0xDA, 0xDA, 253 ],
|
|
||||||
\ [ 0xE4, 0xE4, 0xE4, 254 ],
|
|
||||||
\ [ 0xEE, 0xEE, 0xEE, 255 ]]
|
|
||||||
|
|
||||||
" the 6 values used in the xterm color cube
|
|
||||||
" 0 95 135 175 215 255
|
|
||||||
let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
|
|
||||||
|
|
||||||
" 0..255 mapped to 0..5 based on the color cube values
|
|
||||||
let s:xvquant = repeat([0],48)
|
|
||||||
\ + repeat([1],68)
|
|
||||||
\ + repeat([2],40)
|
|
||||||
\ + repeat([3],40)
|
|
||||||
\ + repeat([4],40)
|
|
||||||
\ + repeat([5],20)
|
|
||||||
" tweak the mapping for the exact matches (0 and 1 already correct)
|
|
||||||
let s:xvquant[s:cubergb[2]] = 2
|
|
||||||
let s:xvquant[s:cubergb[3]] = 3
|
|
||||||
let s:xvquant[s:cubergb[4]] = 4
|
|
||||||
let s:xvquant[s:cubergb[5]] = 5
|
|
||||||
|
|
||||||
" selects the nearest xterm color for a rgb value like #FF0000
|
|
||||||
function! s:XTermColorForRGB(color)
|
|
||||||
let best_match=0
|
|
||||||
let smallest_distance = 10000000000
|
|
||||||
let color = tolower(a:color)
|
|
||||||
let r = s:hex[color[0:1]]
|
|
||||||
let g = s:hex[color[2:3]]
|
|
||||||
let b = s:hex[color[4:5]]
|
|
||||||
|
|
||||||
let vr = s:xvquant[r]
|
|
||||||
let vg = s:xvquant[g]
|
|
||||||
let vb = s:xvquant[b]
|
|
||||||
let cidx = vr * 36 + vg * 6 + vb + 16
|
|
||||||
let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]
|
|
||||||
|
|
||||||
for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor
|
|
||||||
let dr = tr - r
|
|
||||||
let dg = tg - g
|
|
||||||
let db = tb - b
|
|
||||||
let distance = dr*dr + dg*dg + db*db
|
|
||||||
if distance == 0 | return idx | endif
|
|
||||||
if distance > smallest_distance | continue | endif
|
|
||||||
let smallest_distance = distance
|
|
||||||
let best_match = idx
|
|
||||||
endfor
|
|
||||||
return best_match
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
hi cssColor000000 guibg=#000000 guifg=#FFFFFF ctermbg=16 ctermfg=231 | syn cluster cssColors add=cssColor000000
|
|
||||||
hi cssColor000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor000080
|
|
||||||
hi cssColor00008b guibg=#00008B guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor00008b
|
|
||||||
hi cssColor0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000cd
|
|
||||||
hi cssColor0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000ff
|
|
||||||
hi cssColor006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor006400
|
|
||||||
hi cssColor008000 guibg=#008000 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor008000
|
|
||||||
hi cssColor008080 guibg=#008080 guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008080
|
|
||||||
hi cssColor008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008b8b
|
|
||||||
hi cssColor00bfff guibg=#00BFFF guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00bfff
|
|
||||||
hi cssColor00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ced1
|
|
||||||
hi cssColor00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00fa9a
|
|
||||||
hi cssColor00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10 ctermfg=16 | syn cluster cssColors add=cssColor00ff00
|
|
||||||
hi cssColor00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ff7f
|
|
||||||
hi cssColor00ffff guibg=#00FFFF guifg=#000000 ctermbg=51 ctermfg=16 | syn cluster cssColors add=cssColor00ffff
|
|
||||||
hi cssColor191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231 | syn cluster cssColors add=cssColor191970
|
|
||||||
hi cssColor1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor1e90ff
|
|
||||||
hi cssColor20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37 ctermfg=16 | syn cluster cssColors add=cssColor20b2aa
|
|
||||||
hi cssColor228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor228b22
|
|
||||||
hi cssColor2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor2e8b57
|
|
||||||
hi cssColor2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor2f4f4f
|
|
||||||
hi cssColor32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2 ctermfg=16 | syn cluster cssColors add=cssColor32cd32
|
|
||||||
hi cssColor3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71 ctermfg=16 | syn cluster cssColors add=cssColor3cb371
|
|
||||||
hi cssColor40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor40e0d0
|
|
||||||
hi cssColor4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor4169e1
|
|
||||||
hi cssColor4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67 ctermfg=231 | syn cluster cssColors add=cssColor4682b4
|
|
||||||
hi cssColor483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor483d8b
|
|
||||||
hi cssColor48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor48d1cc
|
|
||||||
hi cssColor4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor4b0082
|
|
||||||
hi cssColor556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231 | syn cluster cssColors add=cssColor556b2f
|
|
||||||
hi cssColor5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73 ctermfg=16 | syn cluster cssColors add=cssColor5f9ea0
|
|
||||||
hi cssColor6495ed guibg=#6495ED guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor6495ed
|
|
||||||
hi cssColor66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79 ctermfg=16 | syn cluster cssColors add=cssColor66cdaa
|
|
||||||
hi cssColor696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231 | syn cluster cssColors add=cssColor696969
|
|
||||||
hi cssColor6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor6a5acd
|
|
||||||
hi cssColor6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231 | syn cluster cssColors add=cssColor6b8e23
|
|
||||||
hi cssColor708090 guibg=#708090 guifg=#000000 ctermbg=66 ctermfg=16 | syn cluster cssColors add=cssColor708090
|
|
||||||
hi cssColor778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16 | syn cluster cssColors add=cssColor778899
|
|
||||||
hi cssColor7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor7b68ee
|
|
||||||
hi cssColor7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7cfc00
|
|
||||||
hi cssColor7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7fff00
|
|
||||||
hi cssColor7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16 | syn cluster cssColors add=cssColor7fffd4
|
|
||||||
hi cssColor800000 guibg=#800000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor800000
|
|
||||||
hi cssColor800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor800080
|
|
||||||
hi cssColor808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor808000
|
|
||||||
hi cssColor808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16 | syn cluster cssColors add=cssColor808080
|
|
||||||
hi cssColor87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87ceeb
|
|
||||||
hi cssColor87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87cefa
|
|
||||||
hi cssColor8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor8a2be2
|
|
||||||
hi cssColor8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor8b0000
|
|
||||||
hi cssColor8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor8b008b
|
|
||||||
hi cssColor8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94 ctermfg=231 | syn cluster cssColors add=cssColor8b4513
|
|
||||||
hi cssColor8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16 | syn cluster cssColors add=cssColor8fbc8f
|
|
||||||
hi cssColor90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColor90ee90
|
|
||||||
hi cssColor9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor9370d8
|
|
||||||
hi cssColor9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9400d3
|
|
||||||
hi cssColor98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColor98fb98
|
|
||||||
hi cssColor9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9932cc
|
|
||||||
hi cssColor9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor9acd32
|
|
||||||
hi cssColora0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231 | syn cluster cssColors add=cssColora0522d
|
|
||||||
hi cssColora52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColora52a2a
|
|
||||||
hi cssColora9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16 | syn cluster cssColors add=cssColora9a9a9
|
|
||||||
hi cssColoradd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColoradd8e6
|
|
||||||
hi cssColoradff2f guibg=#ADFF2F guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColoradff2f
|
|
||||||
hi cssColorafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16 | syn cluster cssColors add=cssColorafeeee
|
|
||||||
hi cssColorb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0c4de
|
|
||||||
hi cssColorb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0e0e6
|
|
||||||
hi cssColorb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColorb22222
|
|
||||||
hi cssColorb8860b guibg=#B8860B guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorb8860b
|
|
||||||
hi cssColorba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5 ctermfg=16 | syn cluster cssColors add=cssColorba55d3
|
|
||||||
hi cssColorbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16 | syn cluster cssColors add=cssColorbc8f8f
|
|
||||||
hi cssColorbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16 | syn cluster cssColors add=cssColorbdb76b
|
|
||||||
hi cssColorc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColorc0c0c0
|
|
||||||
hi cssColorc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorc71585
|
|
||||||
hi cssColorcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16 | syn cluster cssColors add=cssColorcd5c5c
|
|
||||||
hi cssColorcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16 | syn cluster cssColors add=cssColorcd853f
|
|
||||||
hi cssColord2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16 | syn cluster cssColors add=cssColord2691e
|
|
||||||
hi cssColord2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColord2b48c
|
|
||||||
hi cssColord3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord3d3d3
|
|
||||||
hi cssColord87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16 | syn cluster cssColors add=cssColord87093
|
|
||||||
hi cssColord8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord8bfd8
|
|
||||||
hi cssColorda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColorda70d6
|
|
||||||
hi cssColordaa520 guibg=#DAA520 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColordaa520
|
|
||||||
hi cssColordc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231 | syn cluster cssColors add=cssColordc143c
|
|
||||||
hi cssColordcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16 | syn cluster cssColors add=cssColordcdcdc
|
|
||||||
hi cssColordda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16 | syn cluster cssColors add=cssColordda0dd
|
|
||||||
hi cssColordeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColordeb887
|
|
||||||
hi cssColore0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16 | syn cluster cssColors add=cssColore0ffff
|
|
||||||
hi cssColore6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColore6e6fa
|
|
||||||
hi cssColore9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16 | syn cluster cssColors add=cssColore9967a
|
|
||||||
hi cssColoree82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16 | syn cluster cssColors add=cssColoree82ee
|
|
||||||
hi cssColoreee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColoreee8aa
|
|
||||||
hi cssColorf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16 | syn cluster cssColors add=cssColorf08080
|
|
||||||
hi cssColorf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16 | syn cluster cssColors add=cssColorf0e68c
|
|
||||||
hi cssColorf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0f8ff
|
|
||||||
hi cssColorf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf0fff0
|
|
||||||
hi cssColorf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0ffff
|
|
||||||
hi cssColorf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16 | syn cluster cssColors add=cssColorf4a460
|
|
||||||
hi cssColorf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorf5deb3
|
|
||||||
hi cssColorf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5dc
|
|
||||||
hi cssColorf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5f5
|
|
||||||
hi cssColorf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf5fffa
|
|
||||||
hi cssColorf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf8f8ff
|
|
||||||
hi cssColorfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorfa8072
|
|
||||||
hi cssColorfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorfaebd7
|
|
||||||
hi cssColorfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfaf0e6
|
|
||||||
hi cssColorfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfafad2
|
|
||||||
hi cssColorfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfdf5e6
|
|
||||||
hi cssColorff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231 | syn cluster cssColors add=cssColorff0000
|
|
||||||
hi cssColorff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13 ctermfg=231 | syn cluster cssColors add=cssColorff00ff
|
|
||||||
hi cssColorff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorff1493
|
|
||||||
hi cssColorff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9 ctermfg=231 | syn cluster cssColors add=cssColorff4500
|
|
||||||
hi cssColorff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16 | syn cluster cssColors add=cssColorff6347
|
|
||||||
hi cssColorff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16 | syn cluster cssColors add=cssColorff69b4
|
|
||||||
hi cssColorff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorff7f50
|
|
||||||
hi cssColorff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorff8c00
|
|
||||||
hi cssColorffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16 | syn cluster cssColors add=cssColorffa07a
|
|
||||||
hi cssColorffa500 guibg=#FFA500 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorffa500
|
|
||||||
hi cssColorffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16 | syn cluster cssColors add=cssColorffb6c1
|
|
||||||
hi cssColorffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16 | syn cluster cssColors add=cssColorffc0cb
|
|
||||||
hi cssColorffd700 guibg=#FFD700 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffd700
|
|
||||||
hi cssColorffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdab9
|
|
||||||
hi cssColorffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdead
|
|
||||||
hi cssColorffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffe4b5
|
|
||||||
hi cssColorffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4c4
|
|
||||||
hi cssColorffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4e1
|
|
||||||
hi cssColorffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorffebcd
|
|
||||||
hi cssColorffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffefd5
|
|
||||||
hi cssColorfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfff0f5
|
|
||||||
hi cssColorfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff5ee
|
|
||||||
hi cssColorfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff8dc
|
|
||||||
hi cssColorfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfffacd
|
|
||||||
hi cssColorfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffaf0
|
|
||||||
hi cssColorfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffafa
|
|
||||||
hi cssColorffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffff00
|
|
||||||
hi cssColorffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffffe0
|
|
||||||
hi cssColorfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffff0
|
|
||||||
hi cssColorffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16 | syn cluster cssColors add=cssColorffffff
|
|
||||||
|
|
||||||
"call s:VimCssInit(1)
|
|
||||||
|
|
||||||
":augroup css
|
|
||||||
"au!
|
|
||||||
autocmd CursorMovedI <buffer> silent call s:ProcessByLine('.')
|
|
||||||
autocmd ColorScheme <buffer> silent call s:VimCssInit(1)
|
|
||||||
autocmd BufEnter <buffer> silent call s:VimCssInit(1)
|
|
||||||
":augroup END
|
|
||||||
|
|
||||||
"autocmd CursorMoved <buffer> silent call s:ProcessByLine('.')
|
|
||||||
endif
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Sven Felix Oberquelle <Svelix.Github@gmail.com>
|
" Maintainer: Sven Felix Oberquelle <Svelix.Github@gmail.com>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
@@ -11,3 +13,5 @@ syn region hamlCoffeescriptFilter matchgroup=hamlFilter
|
|||||||
\ end="^\%(\z1 \| *$\)\@!"
|
\ end="^\%(\z1 \| *$\)\@!"
|
||||||
\ contains=@hamlCoffeeScript,hamlInterpolation
|
\ contains=@hamlCoffeeScript,hamlInterpolation
|
||||||
\ keepend
|
\ keepend
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,8 +1,18 @@
|
|||||||
let b:current_syntax = ''
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
|
||||||
unlet b:current_syntax
|
|
||||||
|
" Extends standard help syntax with highlighting of Scala code.
|
||||||
|
"
|
||||||
|
" Place code between !sc! and !/sc! delimiters. These will be hidden if Vim is
|
||||||
|
" built with conceal support.
|
||||||
|
|
||||||
|
unlet! b:current_syntax
|
||||||
|
|
||||||
syntax include @ScalaCode syntax/scala.vim
|
syntax include @ScalaCode syntax/scala.vim
|
||||||
|
|
||||||
if has('conceal')
|
if has('conceal')
|
||||||
syntax region rgnScala matchgroup=Ignore concealends start='!sc!' end='!/sc!' contains=@ScalaCode
|
syntax region rgnScala matchgroup=Ignore concealends start='!sc!' end='!/sc!' contains=@ScalaCode
|
||||||
else
|
else
|
||||||
syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode
|
syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -9,4 +11,48 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
|
|||||||
\ end=#</script>#me=s-1 keepend
|
\ end=#</script>#me=s-1 keepend
|
||||||
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
|
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
|
||||||
\ containedin=htmlHead
|
\ containedin=htmlHead
|
||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'glsl') == -1
|
||||||
|
|
||||||
|
" Language: OpenGL Shading Language
|
||||||
|
" Maintainer: Sergey Tikhomirov <sergey@tikhomirov.io>
|
||||||
|
|
||||||
|
syn include @GLSL syntax/glsl.vim
|
||||||
|
syn region ShaderScript
|
||||||
|
\ start="<script [^>]*type=\('\|\"\)x-shader/x-\(vertex\|fragment\)\('\|\"\)[^>]*>"
|
||||||
|
\ keepend
|
||||||
|
\ end="</script>"me=s-1
|
||||||
|
\ contains=@GLSL,htmlScriptTag,@htmlPreproc
|
||||||
|
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'less') == -1
|
||||||
|
|
||||||
|
if !exists("g:less_html_style_tags")
|
||||||
|
let g:less_html_style_tags = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !g:less_html_style_tags
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Unset (but preserve) so that less will run.
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
let s:pre_less_cur_syn = b:current_syntax
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Inspired by code from github.com/kchmck/vim-coffee-script
|
||||||
|
" and the html syntax file included with vim 7.4.
|
||||||
|
|
||||||
|
syn include @htmlLess syntax/less.vim
|
||||||
|
|
||||||
|
" We have to explicitly add to htmlHead (containedin) as that region specifies 'contains'.
|
||||||
|
syn region lessStyle start=+<style [^>]*type *=[^>]*text/less[^>]*>+ keepend end=+</style>+ contains=@htmlLess,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc containedin=htmlHead
|
||||||
|
|
||||||
|
" Reset since 'less' isn't really the current_syntax.
|
||||||
|
if exists("s:pre_less_cur_syn")
|
||||||
|
let b:current_syntax = s:pre_less_cur_syn
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
65
after/syntax/jsx.vim
Normal file
65
after/syntax/jsx.vim
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsx') == -1
|
||||||
|
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Vim syntax file
|
||||||
|
"
|
||||||
|
" Language: JSX (JavaScript)
|
||||||
|
" Maintainer: Max Wang <mxawng@gmail.com>
|
||||||
|
" Depends: pangloss/vim-javascript
|
||||||
|
"
|
||||||
|
" CREDITS: Inspired by Facebook.
|
||||||
|
"
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
" Prologue; load in XML syntax.
|
||||||
|
if exists('b:current_syntax')
|
||||||
|
let s:current_syntax=b:current_syntax
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
syn include @XMLSyntax syntax/xml.vim
|
||||||
|
if exists('s:current_syntax')
|
||||||
|
let b:current_syntax=s:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Officially, vim-jsx depends on the pangloss/vim-javascript syntax package
|
||||||
|
" (and is tested against it exclusively). However, in practice, we make some
|
||||||
|
" effort towards compatibility with other packages.
|
||||||
|
"
|
||||||
|
" These are the plugin-to-syntax-element correspondences:
|
||||||
|
"
|
||||||
|
" - pangloss/vim-javascript: jsBlock, jsExpression
|
||||||
|
" - jelera/vim-javascript-syntax: javascriptBlock
|
||||||
|
" - othree/yajs.vim: javascriptNoReserved
|
||||||
|
|
||||||
|
|
||||||
|
" JSX attributes should color as JS. Note the trivial end pattern; we let
|
||||||
|
" jsBlock take care of ending the region.
|
||||||
|
syn region xmlString contained start=+{+ end=++ contains=jsBlock,javascriptBlock
|
||||||
|
|
||||||
|
" JSX child blocks behave just like JSX attributes, except that (a) they are
|
||||||
|
" syntactically distinct, and (b) they need the syn-extend argument, or else
|
||||||
|
" nested XML end-tag patterns may end the outer jsxRegion.
|
||||||
|
syn region jsxChild contained start=+{+ end=++ contains=jsBlock,javascriptBlock
|
||||||
|
\ extend
|
||||||
|
|
||||||
|
" Highlight JSX regions as XML; recursively match.
|
||||||
|
"
|
||||||
|
" Note that we prohibit JSX tags from having a < or word character immediately
|
||||||
|
" preceding it, to avoid conflicts with, respectively, the left shift operator
|
||||||
|
" and generic Flow type annotations (http://flowtype.org/).
|
||||||
|
syn region jsxRegion
|
||||||
|
\ contains=@XMLSyntax,jsxRegion,jsxChild,jsBlock,javascriptBlock
|
||||||
|
\ start=+\%(<\|\w\)\@<!<\z([a-zA-Z][a-zA-Z0-9:\-.]*\)+
|
||||||
|
\ skip=+<!--\_.\{-}-->+
|
||||||
|
\ end=+</\z1\_\s\{-}>+
|
||||||
|
\ end=+/>+
|
||||||
|
\ keepend
|
||||||
|
\ extend
|
||||||
|
|
||||||
|
" Add jsxRegion to the lowest-level JS syntax cluster.
|
||||||
|
syn cluster jsExpression add=jsxRegion
|
||||||
|
|
||||||
|
" Allow jsxRegion to contain reserved words.
|
||||||
|
syn cluster javascriptNoReserved add=jsxRegion
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1 +0,0 @@
|
|||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
23
after/syntax/objc.vim
Normal file
23
after/syntax/objc.vim
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1
|
||||||
|
|
||||||
|
" ARC type modifiers
|
||||||
|
syn keyword objcTypeModifier __bridge __bridge_retained __bridge_transfer __autoreleasing __strong __weak __unsafe_unretained
|
||||||
|
|
||||||
|
" Block modifiers
|
||||||
|
syn keyword objcTypeModifier __block
|
||||||
|
|
||||||
|
" Remote messaging modifiers
|
||||||
|
syn keyword objcTypeModifier byref
|
||||||
|
|
||||||
|
" Property keywords - these are only highlighted inside '@property (...)'
|
||||||
|
syn keyword objcPropertyAttribute contained getter setter readwrite readonly strong weak copy assign retain nonatomic
|
||||||
|
syn match objcProperty display "^\s*@property\>\s*([^)]*)" contains=objcPropertyAttribute
|
||||||
|
|
||||||
|
" The @property directive must be defined after objcProperty or it won't be
|
||||||
|
" highlighted
|
||||||
|
syn match objcDirective "@property\|@synthesize\|@dynamic\|@package"
|
||||||
|
|
||||||
|
" Highlight property attributes as if they were type modifiers
|
||||||
|
hi def link objcPropertyAttribute objcTypeModifier
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
|
||||||
|
|
||||||
"
|
"
|
||||||
" An rspec syntax file
|
" An rspec syntax file
|
||||||
" Originally from http://www.vim.org/scripts/script.php?script_id=2286
|
" Originally from http://www.vim.org/scripts/script.php?script_id=2286
|
||||||
@@ -30,3 +32,5 @@ syntax keyword rspecMessageExpectation advise any_args any_number_of_times anyth
|
|||||||
highlight link rspecMessageExpectation Function
|
highlight link rspecMessageExpectation Function
|
||||||
|
|
||||||
let b:current_syntax = 'rspec'
|
let b:current_syntax = 'rspec'
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,23 +1,5 @@
|
|||||||
" This file describes a very basic syntax for TomDoc comments in a Ruby file.
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yard') == -1
|
||||||
"
|
|
||||||
" For more information on TomDoc, check it out here: http://tomdoc.org/
|
|
||||||
"
|
|
||||||
|
|
||||||
syn keyword tomdocKeywords Returns containedin=rubyComment contained
|
|
||||||
syn keyword tomdocKeywords Yields containedin=rubyComment contained
|
|
||||||
syn keyword tomdocKeywords Raises containedin=rubyComment contained
|
|
||||||
syn keyword tomdocKeywords Examples containedin=rubyComment contained
|
|
||||||
syn keyword tomdocKeywords Signature containedin=rubyComment contained
|
|
||||||
|
|
||||||
syn match tomdocArguments +\s*[A-Za-z0-9_\-&\*:]*\(\s*- \)+he=e-3 containedin=rubyComment contained
|
|
||||||
|
|
||||||
syn match tomdocDescriptions +\s*Public:+he=e-1 containedin=rubyComment contained
|
|
||||||
syn match tomdocDescriptions +\s*Internal:+he=e-1 containedin=rubyComment contained
|
|
||||||
syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=rubyComment contained
|
|
||||||
|
|
||||||
hi default link tomdocDescriptions String
|
|
||||||
hi default link tomdocKeywords String
|
|
||||||
hi default link tomdocArguments HELP
|
|
||||||
" Ruby syntax extensions for highlighting YARD documentation.
|
" Ruby syntax extensions for highlighting YARD documentation.
|
||||||
"
|
"
|
||||||
" Author: Joel Holdbrooks <https://github.com/noprompt>
|
" Author: Joel Holdbrooks <https://github.com/noprompt>
|
||||||
@@ -144,3 +126,5 @@ hi def link yardParametricType yardComment
|
|||||||
hi def link yardArrow yardComment
|
hi def link yardArrow yardComment
|
||||||
hi def link yardHashAngle yardComment
|
hi def link yardHashAngle yardComment
|
||||||
hi def link yardHashCurly yardComment
|
hi def link yardHashCurly yardComment
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
if !exists('g:rust_conceal') || !has('conceal') || &enc != 'utf-8'
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
|
if !exists('g:rust_conceal') || g:rust_conceal == 0 || !has('conceal') || &enc != 'utf-8'
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" For those who don't want to see `::`...
|
" For those who don't want to see `::`...
|
||||||
if exists('g:rust_conceal_mod_path')
|
if exists('g:rust_conceal_mod_path') && g:rust_conceal_mod_path != 0
|
||||||
syn match rustNiceOperator "::" conceal cchar=ㆍ
|
syn match rustNiceOperator "::" conceal cchar=ㆍ
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -18,7 +20,7 @@ syn match rustNiceOperator "=>" contains=rustFatRightArrowHead,rustFatRightArrow
|
|||||||
syn match rustNiceOperator /\<\@!_\(_*\>\)\@=/ conceal cchar=′
|
syn match rustNiceOperator /\<\@!_\(_*\>\)\@=/ conceal cchar=′
|
||||||
|
|
||||||
" For those who don't want to see `pub`...
|
" For those who don't want to see `pub`...
|
||||||
if exists('g:rust_conceal_pub')
|
if exists('g:rust_conceal_pub') && g:rust_conceal_pub != 0
|
||||||
syn match rustPublicSigil contained "pu" conceal cchar=*
|
syn match rustPublicSigil contained "pu" conceal cchar=*
|
||||||
syn match rustPublicRest contained "b" conceal cchar=
|
syn match rustPublicRest contained "b" conceal cchar=
|
||||||
syn match rustNiceOperator "pub " contains=rustPublicSigil,rustPublicRest
|
syn match rustNiceOperator "pub " contains=rustPublicSigil,rustPublicRest
|
||||||
@@ -26,8 +28,8 @@ endif
|
|||||||
|
|
||||||
hi link rustNiceOperator Operator
|
hi link rustNiceOperator Operator
|
||||||
|
|
||||||
if !exists('g:rust_conceal_mod_path')
|
if !exists('g:rust_conceal_mod_path') && g:rust_conceal_mod_path != 0
|
||||||
hi! link Conceal Operator
|
hi! link Conceal Operator
|
||||||
endif
|
endif
|
||||||
|
|
||||||
setlocal conceallevel=2
|
endif
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'latex') == -1
|
||||||
|
|
||||||
" adds support for cleverref package
|
" adds support for cleverref package
|
||||||
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
||||||
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
|
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
@@ -5,5 +7,7 @@ syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)re
|
|||||||
|
|
||||||
" adds support for listings package
|
" adds support for listings package
|
||||||
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
|
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
|
||||||
syn region texZone start="\\lstinputlisting" end="{\s*[a-zA-Z/.0-9_^]\+\s*}"
|
syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
||||||
syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
syn include syntax/css/vim-coloresque.vim
|
|
||||||
64
after/syntax/yaml.vim
Normal file
64
after/syntax/yaml.vim
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yaml') == -1
|
||||||
|
|
||||||
|
" To make this file do stuff, add something like the following (without the
|
||||||
|
" leading ") to your ~/.vimrc:
|
||||||
|
" au BufNewFile,BufRead *.yaml,*.yml so ~/src/PyYaml/YAML.vim
|
||||||
|
|
||||||
|
" Vim syntax/macro file
|
||||||
|
" Language: YAML
|
||||||
|
" Author: Igor Vergeichik <iverg@mail.ru>
|
||||||
|
" Sponsor: Tom Sawyer <transami@transami.net>
|
||||||
|
" Stayven: Ryan King <jking@panoptic.com>
|
||||||
|
" Copyright (c) 2002 Tom Saywer
|
||||||
|
|
||||||
|
" Add an item to a gangly list:
|
||||||
|
"map , o<bs><bs><bs><bs>-<esc>o
|
||||||
|
" Convert to Canonical form:
|
||||||
|
"map \c :%!python -c 'from yaml.redump import redump; import sys; print redump(sys.stdin.read()).rstrip()'
|
||||||
|
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
endif
|
||||||
|
syntax clear
|
||||||
|
|
||||||
|
syn match yamlDelimiter "[:,-]"
|
||||||
|
syn match yamlBlock "[\[\]\{\}\|\>]"
|
||||||
|
syn match yamlOperator "[?^+-]\|=>"
|
||||||
|
|
||||||
|
syn region yamlComment start="\#" end="$"
|
||||||
|
syn match yamlIndicator "#YAML:\S\+"
|
||||||
|
|
||||||
|
syn region yamlString start="'" end="'" skip="\\'"
|
||||||
|
syn region yamlString start='"' end='"' skip='\\"' contains=yamlEscape
|
||||||
|
syn match yamlEscape +\\[abfnrtv'"\\]+ contained
|
||||||
|
syn match yamlEscape "\\\o\o\=\o\=" contained
|
||||||
|
syn match yamlEscape "\\x\x\+" contained
|
||||||
|
|
||||||
|
syn match yamlType "!\S\+"
|
||||||
|
|
||||||
|
syn keyword yamlConstant NULL Null null NONE None none NIL Nil nil
|
||||||
|
syn keyword yamlConstant TRUE True true YES Yes yes ON On on
|
||||||
|
syn keyword yamlConstant FALSE False false NO No no OFF Off off
|
||||||
|
|
||||||
|
syn match yamlKey "\w\+\ze\s*:"
|
||||||
|
syn match yamlAnchor "&\S\+"
|
||||||
|
syn match yamlAlias "*\S\+"
|
||||||
|
|
||||||
|
" Setupt the hilighting links
|
||||||
|
|
||||||
|
hi link yamlConstant Keyword
|
||||||
|
hi link yamlIndicator PreCondit
|
||||||
|
hi link yamlAnchor Function
|
||||||
|
hi link yamlAlias Function
|
||||||
|
hi link yamlKey Identifier
|
||||||
|
hi link yamlType Type
|
||||||
|
|
||||||
|
hi link yamlComment Comment
|
||||||
|
hi link yamlBlock Operator
|
||||||
|
hi link yamlOperator Operator
|
||||||
|
hi link yamlDelimiter Delimiter
|
||||||
|
hi link yamlString String
|
||||||
|
hi link yamlEscape Special
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -52,3 +54,5 @@ function! coffee#CoffeeSetUpErrorFormat()
|
|||||||
\%f:%l:%c:\ error:\ %m,
|
\%f:%l:%c:\ error:\ %m,
|
||||||
\%-G%.%#
|
\%-G%.%#
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
332
autoload/crystal_lang.vim
Normal file
332
autoload/crystal_lang.vim
Normal file
@@ -0,0 +1,332 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
let s:V = vital#of('crystal')
|
||||||
|
let s:P = s:V.import('Process')
|
||||||
|
let s:J = s:V.import('Web.JSON')
|
||||||
|
let s:C = s:V.import('ColorEcho')
|
||||||
|
|
||||||
|
function! s:echo_error(msg, ...) abort
|
||||||
|
echohl ErrorMsg
|
||||||
|
if a:0 == 0
|
||||||
|
echomsg a:msg
|
||||||
|
else
|
||||||
|
echomsg call('printf', [a:msg] + a:000)
|
||||||
|
endif
|
||||||
|
echohl None
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:run_cmd(cmd) abort
|
||||||
|
if !executable(g:crystal_compiler_command)
|
||||||
|
throw "vim-crystal: Error: '" . g:crystal_compiler_command . "' command is not found."
|
||||||
|
endif
|
||||||
|
return s:P.system(a:cmd)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:find_root_by_spec(d) abort
|
||||||
|
let dir = finddir('spec', a:d . ';')
|
||||||
|
if dir ==# ''
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Note: ':h:h' for {root}/spec/ -> {root}/spec -> {root}
|
||||||
|
return fnamemodify(dir, ':p:h:h')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#entrypoint_for(file_path) abort
|
||||||
|
let parent_dir = fnamemodify(a:file_path, ':p:h')
|
||||||
|
let root_dir = s:find_root_by_spec(parent_dir)
|
||||||
|
if root_dir ==# ''
|
||||||
|
" No spec diretory found. No need to make temporary file
|
||||||
|
return a:file_path
|
||||||
|
endif
|
||||||
|
|
||||||
|
let temp_name = root_dir . '/__vim-crystal-temporary-entrypoint-' . fnamemodify(a:file_path, ':t')
|
||||||
|
let contents = [
|
||||||
|
\ 'require "spec"',
|
||||||
|
\ 'require "./spec/**"',
|
||||||
|
\ printf('require "./%s"', fnamemodify(a:file_path, ':p')[strlen(root_dir)+1 : ])
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
let result = writefile(contents, temp_name)
|
||||||
|
if result == -1
|
||||||
|
" Note: When writefile() failed
|
||||||
|
return a:file_path
|
||||||
|
endif
|
||||||
|
|
||||||
|
return temp_name
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#tool(name, file, pos, option_str) abort
|
||||||
|
let entrypoint = crystal_lang#entrypoint_for(a:file)
|
||||||
|
let cmd = printf(
|
||||||
|
\ '%s tool %s --no-color %s --cursor %s:%d:%d %s',
|
||||||
|
\ g:crystal_compiler_command,
|
||||||
|
\ a:name,
|
||||||
|
\ a:option_str,
|
||||||
|
\ a:file,
|
||||||
|
\ a:pos[1],
|
||||||
|
\ a:pos[2],
|
||||||
|
\ entrypoint
|
||||||
|
\ )
|
||||||
|
|
||||||
|
try
|
||||||
|
let output = s:run_cmd(cmd)
|
||||||
|
return {'failed': s:P.get_last_status(), 'output': output}
|
||||||
|
finally
|
||||||
|
" Note:
|
||||||
|
" If the entry point is temporary file, delete it finally.
|
||||||
|
if a:file !=# entrypoint
|
||||||
|
call delete(entrypoint)
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" `pos` is assumed a returned value from getpos()
|
||||||
|
function! crystal_lang#impl(file, pos, option_str) abort
|
||||||
|
return crystal_lang#tool('implementations', a:file, a:pos, a:option_str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:jump_to_impl(impl) abort
|
||||||
|
execute 'edit' a:impl.filename
|
||||||
|
call cursor(a:impl.line, a:impl.column)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#jump_to_definition(file, pos) abort
|
||||||
|
echo 'analyzing definitions under cursor...'
|
||||||
|
|
||||||
|
let cmd_result = crystal_lang#impl(a:file, a:pos, '--format json')
|
||||||
|
if cmd_result.failed
|
||||||
|
return s:echo_error(cmd_result.output)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let impl = s:J.decode(cmd_result.output)
|
||||||
|
if impl.status !=# 'ok'
|
||||||
|
return s:echo_error(impl.message)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if len(impl.implementations) == 1
|
||||||
|
call s:jump_to_impl(impl.implementations[0])
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let message = "Multiple definitions detected. Choose a number\n\n"
|
||||||
|
for idx in range(len(impl.implementations))
|
||||||
|
let i = impl.implementations[idx]
|
||||||
|
let message .= printf("[%d] %s:%d:%d\n", idx, i.filename, i.line, i.column)
|
||||||
|
endfor
|
||||||
|
let message .= "\n"
|
||||||
|
let idx = str2nr(input(message, "\n> "))
|
||||||
|
call s:jump_to_impl(impl.implementations[idx])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#context(file, pos, option_str) abort
|
||||||
|
return crystal_lang#tool('context', a:file, a:pos, a:option_str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#type_hierarchy(file, option_str) abort
|
||||||
|
let cmd = printf(
|
||||||
|
\ '%s tool hierarchy --no-color %s %s',
|
||||||
|
\ g:crystal_compiler_command,
|
||||||
|
\ a:option_str,
|
||||||
|
\ a:file
|
||||||
|
\ )
|
||||||
|
|
||||||
|
return s:run_cmd(cmd)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:find_completion_start() abort
|
||||||
|
let c = col('.')
|
||||||
|
if c <= 1
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let line = getline('.')[:c-2]
|
||||||
|
return match(line, '\w\+$')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#complete(findstart, base) abort
|
||||||
|
if a:findstart
|
||||||
|
echom 'find start'
|
||||||
|
return s:find_completion_start()
|
||||||
|
endif
|
||||||
|
|
||||||
|
let cmd_result = crystal_lang#context(expand('%'), getpos('.'), '--format json')
|
||||||
|
if cmd_result.failed
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let contexts = s:J.decode(cmd_result.output)
|
||||||
|
if contexts.status !=# 'ok'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let candidates = []
|
||||||
|
|
||||||
|
for c in contexts.contexts
|
||||||
|
for [name, desc] in items(c)
|
||||||
|
let candidates += [{
|
||||||
|
\ 'word': name,
|
||||||
|
\ 'menu': ': ' . desc . ' [var]',
|
||||||
|
\ }]
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return candidates
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#get_spec_switched_path(absolute_path) abort
|
||||||
|
let base = fnamemodify(a:absolute_path, ':t:r')
|
||||||
|
|
||||||
|
" TODO: Make cleverer
|
||||||
|
if base =~# '_spec$'
|
||||||
|
let parent = fnamemodify(substitute(a:absolute_path, '/spec/', '/src/', ''), ':h')
|
||||||
|
return parent . '/' . matchstr(base, '.\+\ze_spec$') . '.cr'
|
||||||
|
else
|
||||||
|
let parent = fnamemodify(substitute(a:absolute_path, '/src/', '/spec/', ''), ':h')
|
||||||
|
return parent . '/' . base . '_spec.cr'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#switch_spec_file(...) abort
|
||||||
|
let path = a:0 == 0 ? expand('%:p') : fnamemodify(a:1, ':p')
|
||||||
|
if path !~# '.cr$'
|
||||||
|
return s:echo_error('Not crystal source file: ' . path)
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute 'edit!' crystal_lang#get_spec_switched_path(path)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:run_spec(root, path, ...) abort
|
||||||
|
" Note:
|
||||||
|
" `crystal spec` can't understand absolute path.
|
||||||
|
let cmd = printf(
|
||||||
|
\ '%s spec %s%s',
|
||||||
|
\ g:crystal_compiler_command,
|
||||||
|
\ a:path,
|
||||||
|
\ a:0 == 0 ? '' : (':' . a:1)
|
||||||
|
\ )
|
||||||
|
|
||||||
|
let saved_cwd = getcwd()
|
||||||
|
let cd = haslocaldir() ? 'lcd' : 'cd'
|
||||||
|
try
|
||||||
|
execute cd a:root
|
||||||
|
call s:C.echo(s:run_cmd(cmd))
|
||||||
|
finally
|
||||||
|
execute cd saved_cwd
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#run_all_spec(...) abort
|
||||||
|
let path = a:0 == 0 ? expand('%:p:h') : a:1
|
||||||
|
let root_path = s:find_root_by_spec(path)
|
||||||
|
if root_path ==# ''
|
||||||
|
return s:echo_error("'spec' directory is not found")
|
||||||
|
endif
|
||||||
|
call s:run_spec(root_path, 'spec')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#run_current_spec(...) abort
|
||||||
|
" /foo/bar/src/poyo.cr
|
||||||
|
let path = a:0 == 0 ? expand('%:p') : fnamemodify(a:1, ':p')
|
||||||
|
if path !~# '.cr$'
|
||||||
|
return s:echo_error('Not crystal source file: ' . path)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" /foo/bar/src
|
||||||
|
let source_dir = fnamemodify(path, ':h')
|
||||||
|
|
||||||
|
" /foo/bar
|
||||||
|
let root_dir = s:find_root_by_spec(source_dir)
|
||||||
|
if root_dir ==# ''
|
||||||
|
return s:echo_error("'spec' directory is not found")
|
||||||
|
endif
|
||||||
|
|
||||||
|
" src
|
||||||
|
let rel_path = source_dir[strlen(root_dir)+1 : ]
|
||||||
|
|
||||||
|
if path =~# '_spec.cr$'
|
||||||
|
call s:run_spec(root_dir, path[strlen(root_dir)+1 : ], line('.'))
|
||||||
|
else
|
||||||
|
let spec_path = substitute(rel_path, '^src', 'spec', '') . '/' . fnamemodify(path, ':t:r') . '_spec.cr'
|
||||||
|
if !filereadable(root_dir . '/' . spec_path)
|
||||||
|
return s:echo_error('Error: Could not find a spec source corresponding to ' . path)
|
||||||
|
endif
|
||||||
|
call s:run_spec(root_dir, spec_path)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#format_string(code, ...) abort
|
||||||
|
let cmd = printf(
|
||||||
|
\ '%s tool format --no-color %s -',
|
||||||
|
\ g:crystal_compiler_command,
|
||||||
|
\ get(a:, 1, '')
|
||||||
|
\ )
|
||||||
|
let output = s:P.system(cmd, a:code)
|
||||||
|
if s:P.get_last_status()
|
||||||
|
throw 'vim-crystal: Error on formatting: ' . output
|
||||||
|
endif
|
||||||
|
return output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_saved_states() abort
|
||||||
|
let result = {}
|
||||||
|
let fname = bufname('%')
|
||||||
|
let current_winnr = winnr()
|
||||||
|
for i in range(1, winnr('$'))
|
||||||
|
let bufnr = winbufnr(i)
|
||||||
|
if bufnr == -1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
if bufname(bufnr) ==# fname
|
||||||
|
execute i 'wincmd w'
|
||||||
|
let result[i] = {
|
||||||
|
\ 'pos': getpos('.'),
|
||||||
|
\ 'screen': winsaveview()
|
||||||
|
\ }
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
execute current_winnr 'wincmd w'
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! crystal_lang#format(option_str) abort
|
||||||
|
if !executable(g:crystal_compiler_command)
|
||||||
|
" Finish command silently
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let formatted = crystal_lang#format_string(join(getline(1, '$'), "\n"), a:option_str)
|
||||||
|
let formatted = substitute(formatted, '\n$', '', '')
|
||||||
|
|
||||||
|
let sel_save = &l:selection
|
||||||
|
let ve_save = &virtualedit
|
||||||
|
let &l:selection = 'inclusive'
|
||||||
|
let &virtualedit = ''
|
||||||
|
let [save_g_reg, save_g_regtype] = [getreg('g'), getregtype('g')]
|
||||||
|
let windows_save = s:get_saved_states()
|
||||||
|
|
||||||
|
try
|
||||||
|
call setreg('g', formatted, 'v')
|
||||||
|
silent normal! ggvG$"gp
|
||||||
|
finally
|
||||||
|
call setreg('g', save_g_reg, save_g_regtype)
|
||||||
|
let &l:selection = sel_save
|
||||||
|
let &virtualedit = ve_save
|
||||||
|
let winnr = winnr()
|
||||||
|
for winnr in keys(windows_save)
|
||||||
|
let w = windows_save[winnr]
|
||||||
|
execute winnr 'wincmd w'
|
||||||
|
call setpos('.', w.pos)
|
||||||
|
call winrestview(w.screen)
|
||||||
|
endfor
|
||||||
|
execute winnr 'wincmd w'
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
endif
|
||||||
70
autoload/dart.vim
Normal file
70
autoload/dart.vim
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
|
||||||
|
|
||||||
|
|
||||||
|
function! s:error(text) abort
|
||||||
|
echohl Error
|
||||||
|
echomsg printf('[dart-vim-plugin] %s', a:text)
|
||||||
|
echohl None
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:cexpr(errorformat, joined_lines) abort
|
||||||
|
let temp_errorfomat = &errorformat
|
||||||
|
try
|
||||||
|
let &errorformat = a:errorformat
|
||||||
|
cexpr a:joined_lines
|
||||||
|
copen
|
||||||
|
finally
|
||||||
|
let &errorformat = temp_errorfomat
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! dart#fmt(q_args) abort
|
||||||
|
if executable('dartfmt')
|
||||||
|
let path = expand('%:p:gs:\:/:')
|
||||||
|
if filereadable(path)
|
||||||
|
let joined_lines = system(printf('dartfmt %s %s', a:q_args, shellescape(path)))
|
||||||
|
if 0 == v:shell_error
|
||||||
|
silent % delete _
|
||||||
|
silent put=joined_lines
|
||||||
|
silent 1 delete _
|
||||||
|
else
|
||||||
|
call s:cexpr('line %l\, column %c of %f: %m', joined_lines)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
call s:error(printf('cannot read a file: "%s"', path))
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
call s:error('cannot execute binary file: dartfmt')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! dart#analyzer(q_args) abort
|
||||||
|
if executable('dartanalyzer')
|
||||||
|
let path = expand('%:p:gs:\:/:')
|
||||||
|
if filereadable(path)
|
||||||
|
let joined_lines = system(printf('dartanalyzer %s %s', a:q_args, shellescape(path)))
|
||||||
|
call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines)
|
||||||
|
else
|
||||||
|
call s:error(printf('cannot read a file: "%s"', path))
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
call s:error('cannot execute binary file: dartanalyzer')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! dart#tojs(q_args) abort
|
||||||
|
if executable('dart2js')
|
||||||
|
let path = expand('%:p:gs:\:/:')
|
||||||
|
if filereadable(path)
|
||||||
|
let joined_lines = system(printf('dart2js %s %s', a:q_args, shellescape(path)))
|
||||||
|
call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines)
|
||||||
|
else
|
||||||
|
call s:error(printf('cannot read a file: "%s"', path))
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
call s:error('cannot execute binary file: dartanalyzer')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
12
autoload/elm/io.vim
Normal file
12
autoload/elm/io.vim
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
|
||||||
|
|
||||||
|
" System IO
|
||||||
|
|
||||||
|
" Craft a system command and run it, returning the output.
|
||||||
|
function! elm#io#system(program, args)
|
||||||
|
let cmd ="which " . a:program . " && " . a:program . " " . a:args
|
||||||
|
return system(cmd)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Vim omni-completion script
|
|
||||||
" Author: Oscar Hellström
|
|
||||||
" Email: oscar@oscarh.net
|
|
||||||
" Version: 2010-08-10
|
|
||||||
" Contributors: kTT (http://github.com/kTT)
|
|
||||||
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
" Patterns for completions {{{1
|
|
||||||
let s:erlangLocalFuncBeg = '\(\<[0-9A-Za-z_-]*\|\s*\)$'
|
|
||||||
let s:erlangExternalFuncBeg = '\<[0-9A-Za-z_-]\+:[0-9A-Za-z_-]*$'
|
|
||||||
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
|
||||||
let s:erlangCompletionPath = expand('<sfile>:p:h') . '/erlang_completion.erl'
|
|
||||||
|
|
||||||
if !exists('g:erlangCompletionGrep')
|
|
||||||
let g:erlangCompletionGrep = 'grep'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangManSuffix')
|
|
||||||
let g:erlangManSuffix = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangManPath')
|
|
||||||
let g:erlangManPath = '/usr/lib/erlang/man'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangCompletionDisplayDoc')
|
|
||||||
let g:erlangCompletionDisplayDoc = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Main function for completion {{{1
|
|
||||||
function! erlangcomplete#Complete(findstart, base)
|
|
||||||
" 0) Init {{{2
|
|
||||||
let lnum = line('.')
|
|
||||||
let column = col('.')
|
|
||||||
let line = strpart(getline('.'), 0, column - 1)
|
|
||||||
|
|
||||||
" 1) First, check if completion is impossible {{{2
|
|
||||||
if line =~ '[^~\\]%'
|
|
||||||
return -1
|
|
||||||
endif
|
|
||||||
|
|
||||||
"echo "line[col - 1]:" . line[column - 1] . " line[col - 2]:" . line[column - 2] . "\n" . line . "\n"
|
|
||||||
|
|
||||||
" 2) Check if the char to the left of us are part of a function call {{{2
|
|
||||||
"
|
|
||||||
" Nothing interesting is written at the char just before the cursor
|
|
||||||
" This means _anything_ could be started here
|
|
||||||
" In this case, keyword completion should probably be used,
|
|
||||||
" for now we'll only try and complete local functions.
|
|
||||||
" TODO: Examine if we can stare Identifiers end complete on them
|
|
||||||
" Is this worth it? Is /completion/ of a "blank" wanted? Can we consider (
|
|
||||||
" interesting and check if we are in a function call etc.?
|
|
||||||
if line[column - 2] !~ '[0-9A-Za-z:_-]'
|
|
||||||
if a:findstart
|
|
||||||
return column
|
|
||||||
else
|
|
||||||
return s:erlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
" 3) Function in external module {{{2
|
|
||||||
if line =~ s:erlangExternalFuncBeg
|
|
||||||
let delimiter = match(line, ':[0-9A-Za-z_-]*$') + 1
|
|
||||||
if a:findstart
|
|
||||||
return delimiter
|
|
||||||
else
|
|
||||||
let module = matchstr(line[:-2], '\<\k*\>$')
|
|
||||||
return s:erlangFindExternalFunc(module, a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 4) Local function {{{2
|
|
||||||
if line =~ s:erlangLocalFuncBeg
|
|
||||||
let funcstart = match(line, ':\@<![0-9A-Za-z_-]*$')
|
|
||||||
if a:findstart
|
|
||||||
return funcstart
|
|
||||||
else
|
|
||||||
return s:erlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 5) Unhandled situation {{{2
|
|
||||||
if a:findstart
|
|
||||||
return -1
|
|
||||||
else
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Auxiliary functions for completion {{{1
|
|
||||||
" Find the next non-blank line {{{2
|
|
||||||
function s:erlangFindNextNonBlank(lnum)
|
|
||||||
let lnum = nextnonblank(a:lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
while line =~ s:ErlangBlankLine && 0 != lnum
|
|
||||||
let lnum = nextnonblank(lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return lnum
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" vim: foldmethod=marker:
|
|
||||||
" Find external function names {{{2
|
|
||||||
function s:erlangFindExternalFunc(module, base)
|
|
||||||
" If it's a local module, try to compile it
|
|
||||||
if filereadable(a:module . '.erl') && !filereadable(a:module . '.beam')
|
|
||||||
silent execute '!erlc' a:module . '.erl' '>/dev/null' '2>/dev/null'
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
let functions = system(s:erlangCompletionPath . ' ' . a:module)
|
|
||||||
for element in sort(split(functions, '\n'))
|
|
||||||
if match(element, a:base) == 0
|
|
||||||
let function_name = matchstr(element, a:base . '\w\+')
|
|
||||||
let number_of_args = matchstr(element, '\d\+', len(function_name))
|
|
||||||
let number_of_comma = max([number_of_args - 1, 0])
|
|
||||||
let file_path = g:erlangManPath . '/man?/' . a:module . '\.?' . g:erlangManSuffix
|
|
||||||
" [:-2] cutting some weird characters at the end
|
|
||||||
" becouse grep doesn't support multilines, we have to filter
|
|
||||||
" first by .B and next by looking via function name
|
|
||||||
" if someone have better idea, please change it
|
|
||||||
let description = ''
|
|
||||||
" Don't look man pages if the module is present in the current directory
|
|
||||||
if g:erlangCompletionDisplayDoc != 0 && !filereadable(a:module . '.erl')
|
|
||||||
let system_command = g:erlangCompletionGrep . ' -A 1 "\.B" ' . file_path . ' | grep -EZo "\<' .
|
|
||||||
\ function_name . '\>\((\w+, ){' . number_of_comma . '}[^),]*\) -> .*"'
|
|
||||||
let description = system(system_command)
|
|
||||||
let description = description[:-2]
|
|
||||||
endif
|
|
||||||
if description == ''
|
|
||||||
let description = element " if function doesn't have description e.g. lists:rmerge, put rmerge/2 instead
|
|
||||||
endif
|
|
||||||
let field = {'word': function_name . '(', 'abbr': description, 'kind': 'f', 'dup': 1} " always duplicate functions
|
|
||||||
call complete_add(field)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Find local function names {{{2
|
|
||||||
function s:erlangFindLocalFunc(base)
|
|
||||||
" begin at line 1
|
|
||||||
let lnum = s:erlangFindNextNonBlank(1)
|
|
||||||
if "" == a:base
|
|
||||||
let base = '\w' " used to match against word symbol
|
|
||||||
else
|
|
||||||
let base = a:base
|
|
||||||
endif
|
|
||||||
while 0 != lnum && !complete_check()
|
|
||||||
let line = getline(lnum)
|
|
||||||
let function_name = matchstr(line, '^' . base . '[0-9A-Za-z_-]\+(\@=')
|
|
||||||
if function_name != ""
|
|
||||||
call complete_add(function_name)
|
|
||||||
endif
|
|
||||||
let lnum = s:erlangFindNextNonBlank(lnum)
|
|
||||||
endwhile
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
70
autoload/fish.vim
Normal file
70
autoload/fish.vim
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
|
||||||
|
|
||||||
|
function! fish#Indent()
|
||||||
|
let l:prevlnum = prevnonblank(v:lnum - 1)
|
||||||
|
if l:prevlnum ==# 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let l:indent = 0
|
||||||
|
let l:prevline = getline(l:prevlnum)
|
||||||
|
if l:prevline =~# '\v^\s*switch>'
|
||||||
|
let l:indent = &shiftwidth * 2
|
||||||
|
elseif l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case)>'
|
||||||
|
let l:indent = &shiftwidth
|
||||||
|
endif
|
||||||
|
let l:line = getline(v:lnum)
|
||||||
|
if l:line =~# '\v^\s*end>'
|
||||||
|
return indent(v:lnum) - (l:indent ==# 0 ? &shiftwidth : l:indent)
|
||||||
|
elseif l:line =~# '\v^\s*%(case|else)>'
|
||||||
|
return indent(v:lnum) - &shiftwidth
|
||||||
|
endif
|
||||||
|
return indent(l:prevlnum) + l:indent
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fish#Format()
|
||||||
|
if mode() =~# '\v^%(i|R)$'
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
let l:command = v:lnum.','.(v:lnum+v:count-1).'!fish_indent'
|
||||||
|
echo l:command
|
||||||
|
execute l:command
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fish#Fold()
|
||||||
|
let l:line = getline(v:lnum)
|
||||||
|
if l:line =~# '\v^\s*%(begin|if|while|for|function|switch)>'
|
||||||
|
return 'a1'
|
||||||
|
elseif l:line =~# '\v^\s*end>'
|
||||||
|
return 's1'
|
||||||
|
else
|
||||||
|
return '='
|
||||||
|
end
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fish#Complete(findstart, base)
|
||||||
|
if a:findstart
|
||||||
|
return getline('.') =~# '\v^\s*$' ? -1 : 0
|
||||||
|
else
|
||||||
|
if empty(a:base)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let l:results = []
|
||||||
|
let l:completions =
|
||||||
|
\ system('fish -c "complete -C'.shellescape(a:base).'"')
|
||||||
|
let l:cmd = substitute(a:base, '\v\S+$', '', '')
|
||||||
|
for l:line in split(l:completions, '\n')
|
||||||
|
let l:tokens = split(l:line, '\t')
|
||||||
|
call add(l:results, {'word': l:cmd.l:tokens[0],
|
||||||
|
\'abbr': l:tokens[0],
|
||||||
|
\'menu': get(l:tokens, 1, '')})
|
||||||
|
endfor
|
||||||
|
return l:results
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! fish#errorformat()
|
||||||
|
return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
" Copyright 2011 The Go Authors. All rights reserved.
|
|
||||||
" Use of this source code is governed by a BSD-style
|
|
||||||
" license that can be found in the LICENSE file.
|
|
||||||
"
|
|
||||||
" This file provides a utility function that performs auto-completion of
|
|
||||||
" package names, for use by other commands.
|
|
||||||
|
|
||||||
let s:goos = $GOOS
|
|
||||||
let s:goarch = $GOARCH
|
|
||||||
|
|
||||||
if len(s:goos) == 0
|
|
||||||
if exists('g:golang_goos')
|
|
||||||
let s:goos = g:golang_goos
|
|
||||||
elseif has('win32') || has('win64')
|
|
||||||
let s:goos = 'windows'
|
|
||||||
elseif has('macunix')
|
|
||||||
let s:goos = 'darwin'
|
|
||||||
else
|
|
||||||
let s:goos = '*'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(s:goarch) == 0
|
|
||||||
if exists('g:golang_goarch')
|
|
||||||
let s:goarch = g:golang_goarch
|
|
||||||
else
|
|
||||||
let s:goarch = '*'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! go#complete#PackageMembers(package, member)
|
|
||||||
silent! let content = system('godoc ' . a:package)
|
|
||||||
if v:shell_error || !len(content)
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
|
|
||||||
try
|
|
||||||
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
|
|
||||||
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
|
|
||||||
let candidates =
|
|
||||||
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
|
|
||||||
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
|
|
||||||
return filter(candidates, '!stridx(v:val, a:member)')
|
|
||||||
catch
|
|
||||||
return []
|
|
||||||
endtry
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
|
||||||
let dirs = []
|
|
||||||
|
|
||||||
let words = split(a:CmdLine, '\s\+', 1)
|
|
||||||
if len(words) > 2
|
|
||||||
" Complete package members
|
|
||||||
return go#complete#PackageMembers(words[1], words[2])
|
|
||||||
endif
|
|
||||||
|
|
||||||
if executable('go')
|
|
||||||
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
|
||||||
if v:shell_error
|
|
||||||
echomsg '\'go env GOROOT\' failed'
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let goroot = $GOROOT
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(goroot) != 0 && isdirectory(goroot)
|
|
||||||
let dirs += [goroot]
|
|
||||||
endif
|
|
||||||
|
|
||||||
let pathsep = ':'
|
|
||||||
if s:goos == 'windows'
|
|
||||||
let pathsep = ';'
|
|
||||||
endif
|
|
||||||
let workspaces = split($GOPATH, pathsep)
|
|
||||||
if workspaces != []
|
|
||||||
let dirs += workspaces
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(dirs) == 0
|
|
||||||
" should not happen
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
|
|
||||||
let ret = {}
|
|
||||||
for dir in dirs
|
|
||||||
" this may expand to multiple lines
|
|
||||||
let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n")
|
|
||||||
call add(root, expand(dir . '/src'))
|
|
||||||
for r in root
|
|
||||||
for i in split(globpath(r, a:ArgLead.'*'), "\n")
|
|
||||||
if isdirectory(i)
|
|
||||||
let i .= '/'
|
|
||||||
elseif i !~ '\.a$'
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
|
||||||
let ret[i] = i
|
|
||||||
endfor
|
|
||||||
endfor
|
|
||||||
endfor
|
|
||||||
return sort(keys(ret))
|
|
||||||
endfunction
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
|
||||||
|
|
||||||
" Vim completion script
|
" Vim completion script
|
||||||
" Language: HTML and XHTML
|
" Language: HTML and XHTML
|
||||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||||
@@ -7,9 +9,51 @@
|
|||||||
" Last Change: 2010 Sep 25
|
" Last Change: 2010 Sep 25
|
||||||
|
|
||||||
if !exists('g:aria_attributes_complete')
|
if !exists('g:aria_attributes_complete')
|
||||||
let g:aria_attributes_complete = 1
|
let g:aria_attributes_complete = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Distinguish between HTML versions.
|
||||||
|
" To use with other HTML versions add another "elseif" condition to match
|
||||||
|
" proper DOCTYPE.
|
||||||
|
function! htmlcomplete#DetectOmniFlavor()
|
||||||
|
if &filetype == 'xhtml'
|
||||||
|
let b:html_omni_flavor = 'xhtml10s'
|
||||||
|
else
|
||||||
|
let b:html_omni_flavor = 'html5'
|
||||||
|
endif
|
||||||
|
let i = 1
|
||||||
|
let line = ""
|
||||||
|
while i < 10 && i < line("$")
|
||||||
|
let line = getline(i)
|
||||||
|
if line =~ '<!DOCTYPE.*\<DTD '
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
if line =~ '<!DOCTYPE.*\<DTD ' " doctype line found above
|
||||||
|
if line =~ ' HTML 3\.2'
|
||||||
|
let b:html_omni_flavor = 'html32'
|
||||||
|
elseif line =~ ' XHTML 1\.1'
|
||||||
|
let b:html_omni_flavor = 'xhtml11'
|
||||||
|
else " two-step detection with strict/frameset/transitional
|
||||||
|
if line =~ ' XHTML 1\.0'
|
||||||
|
let b:html_omni_flavor = 'xhtml10'
|
||||||
|
elseif line =~ ' HTML 4\.01'
|
||||||
|
let b:html_omni_flavor = 'html401'
|
||||||
|
elseif line =~ ' HTML 4.0\>'
|
||||||
|
let b:html_omni_flavor = 'html40'
|
||||||
|
endif
|
||||||
|
if line =~ '\<Transitional\>'
|
||||||
|
let b:html_omni_flavor .= 't'
|
||||||
|
elseif line =~ '\<Frameset\>'
|
||||||
|
let b:html_omni_flavor .= 'f'
|
||||||
|
else
|
||||||
|
let b:html_omni_flavor .= 's'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! htmlcomplete#CompleteTags(findstart, base)
|
function! htmlcomplete#CompleteTags(findstart, base)
|
||||||
if a:findstart
|
if a:findstart
|
||||||
" locate the start of the word
|
" locate the start of the word
|
||||||
@@ -160,18 +204,15 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
if exists("b:entitiescompl")
|
if exists("b:entitiescompl")
|
||||||
unlet! b:entitiescompl
|
unlet! b:entitiescompl
|
||||||
|
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let entities = b:html_omni['vimxmlentities']
|
let entities = b:html_omni['vimxmlentities']
|
||||||
|
|
||||||
if len(a:base) == 1
|
if len(a:base) == 1
|
||||||
for m in entities
|
for m in entities
|
||||||
@@ -462,16 +503,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
||||||
let values = []
|
let values = []
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
if attrname == 'href'
|
if attrname == 'href'
|
||||||
" Now we are looking for local anchors defined by name or id
|
" Now we are looking for local anchors defined by name or id
|
||||||
@@ -545,15 +583,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
let sbase = matchstr(context, '.*\ze\s.*')
|
let sbase = matchstr(context, '.*\ze\s.*')
|
||||||
|
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
if has_key(b:html_omni, tag)
|
if has_key(b:html_omni, tag)
|
||||||
@@ -651,16 +687,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
" Tag completion {{{
|
" Tag completion {{{
|
||||||
" Deal with tag completion.
|
" Deal with tag completion.
|
||||||
@@ -763,9 +796,9 @@ endfunction
|
|||||||
function! htmlcomplete#LoadData() " {{{
|
function! htmlcomplete#LoadData() " {{{
|
||||||
if !exists("b:html_omni_flavor")
|
if !exists("b:html_omni_flavor")
|
||||||
if &filetype == 'html'
|
if &filetype == 'html'
|
||||||
let b:html_omni_flavor = 'html401t'
|
let b:html_omni_flavor = 'html5'
|
||||||
else
|
else
|
||||||
let b:html_omni_flavor = 'xhtml10s'
|
let b:html_omni_flavor = 'html5'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" With that if we still have bloated memory but create new buffer
|
" With that if we still have bloated memory but create new buffer
|
||||||
@@ -785,61 +818,8 @@ function! htmlcomplete#CheckDoctype() " {{{
|
|||||||
else
|
else
|
||||||
let old_flavor = ''
|
let old_flavor = ''
|
||||||
endif
|
endif
|
||||||
let i = 1
|
call htmlcomplete#DetectOmniFlavor()
|
||||||
while i < 10 && i < line("$")
|
if !exists('b:html_omni_flavor')
|
||||||
let line = getline(i)
|
|
||||||
if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
|
|
||||||
let b:html_omni_flavor = 'html32'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
|
|
||||||
let b:html_omni_flavor = 'html40t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
|
|
||||||
let b:html_omni_flavor = 'html40f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
|
|
||||||
let b:html_omni_flavor = 'html40s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
|
|
||||||
let b:html_omni_flavor = 'html401t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
|
|
||||||
let b:html_omni_flavor = 'html401f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
|
|
||||||
let b:html_omni_flavor = 'html401s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
|
|
||||||
let b:html_omni_flavor = 'xhtml10t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
|
|
||||||
let b:html_omni_flavor = 'xhtml10f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
|
|
||||||
let b:html_omni_flavor = 'xhtml10s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
|
|
||||||
let b:html_omni_flavor = 'xhtml11'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE html'
|
|
||||||
let b:html_omni_flavor = 'html5'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let i += 1
|
|
||||||
endwhile
|
|
||||||
if !exists("b:html_doctype")
|
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
||||||
@@ -859,3 +839,5 @@ function! htmlcomplete#CheckDoctype() " {{{
|
|||||||
endfunction
|
endfunction
|
||||||
" }}}
|
" }}}
|
||||||
" vim:set foldmethod=marker:
|
" vim:set foldmethod=marker:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim completion script
|
" Vim completion script
|
||||||
" Language: Ruby
|
" Language: Ruby
|
||||||
" Maintainer: Mark Guzman <segfault@hasno.info>
|
" Maintainer: Mark Guzman <segfault@hasno.info>
|
||||||
@@ -704,7 +706,9 @@ class VimRubyCompletion
|
|||||||
cv = eval("self.class.constants")
|
cv = eval("self.class.constants")
|
||||||
vartype = get_var_type( receiver )
|
vartype = get_var_type( receiver )
|
||||||
dprint "vartype: %s" % vartype
|
dprint "vartype: %s" % vartype
|
||||||
if vartype != ''
|
|
||||||
|
invalid_vartype = ['', "gets"]
|
||||||
|
if !invalid_vartype.include?(vartype)
|
||||||
load_buffer_class( vartype )
|
load_buffer_class( vartype )
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@@ -732,7 +736,7 @@ class VimRubyCompletion
|
|||||||
methods.concat m.instance_methods(false)
|
methods.concat m.instance_methods(false)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
variables += add_rails_columns( "#{vartype}" ) if vartype && vartype.length > 0
|
variables += add_rails_columns( "#{vartype}" ) if vartype && !invalid_vartype.include?(vartype)
|
||||||
|
|
||||||
when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
|
when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
|
||||||
message = $1
|
message = $1
|
||||||
@@ -829,3 +833,5 @@ call s:DefRuby()
|
|||||||
|
|
||||||
|
|
||||||
" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
|
" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
418
autoload/rust.vim
Normal file
418
autoload/rust.vim
Normal file
@@ -0,0 +1,418 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
|
" Author: Kevin Ballard
|
||||||
|
" Description: Helper functions for Rust commands/mappings
|
||||||
|
" Last Modified: May 27, 2014
|
||||||
|
|
||||||
|
" Jump {{{1
|
||||||
|
|
||||||
|
function! rust#Jump(mode, function) range
|
||||||
|
let cnt = v:count1
|
||||||
|
normal! m'
|
||||||
|
if a:mode ==# 'v'
|
||||||
|
norm! gv
|
||||||
|
endif
|
||||||
|
let foldenable = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
while cnt > 0
|
||||||
|
execute "call <SID>Jump_" . a:function . "()"
|
||||||
|
let cnt = cnt - 1
|
||||||
|
endwhile
|
||||||
|
let &foldenable = foldenable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Back()
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Forward()
|
||||||
|
normal! j0
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{%
|
||||||
|
call search('{')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Run {{{1
|
||||||
|
|
||||||
|
function! rust#Run(bang, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
if a:bang
|
||||||
|
let idx = index(l:args, '--')
|
||||||
|
if idx != -1
|
||||||
|
let rustc_args = idx == 0 ? [] : l:args[:idx-1]
|
||||||
|
let args = l:args[idx+1:]
|
||||||
|
else
|
||||||
|
let rustc_args = l:args
|
||||||
|
let args = []
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let rustc_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:rust_last_rustc_args = l:rustc_args
|
||||||
|
let b:rust_last_args = l:args
|
||||||
|
|
||||||
|
call s:WithPath(function("s:Run"), rustc_args, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Run(dict, rustc_args, args)
|
||||||
|
let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r')
|
||||||
|
if has('win32')
|
||||||
|
let exepath .= '.exe'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let rustc_args = [relpath, '-o', exepath] + a:rustc_args
|
||||||
|
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
|
||||||
|
if output != ''
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
if !v:shell_error
|
||||||
|
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Expand {{{1
|
||||||
|
|
||||||
|
function! rust#Expand(bang, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
if a:bang && !empty(l:args)
|
||||||
|
let pretty = remove(l:args, 0)
|
||||||
|
else
|
||||||
|
let pretty = "expanded"
|
||||||
|
endif
|
||||||
|
call s:WithPath(function("s:Expand"), pretty, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Expand(dict, pretty, args)
|
||||||
|
try
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)'
|
||||||
|
let flag = '--xpretty'
|
||||||
|
else
|
||||||
|
let flag = '--pretty'
|
||||||
|
endif
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
|
||||||
|
if v:shell_error
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
else
|
||||||
|
new
|
||||||
|
silent put =output
|
||||||
|
1
|
||||||
|
d
|
||||||
|
setl filetype=rust
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
" give the buffer a nice name
|
||||||
|
let suffix = 1
|
||||||
|
let basename = fnamemodify(a:dict.path, ':t:r')
|
||||||
|
while 1
|
||||||
|
let bufname = basename
|
||||||
|
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
|
||||||
|
let bufname .= '.pretty.rs'
|
||||||
|
if bufexists(bufname)
|
||||||
|
let suffix += 1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
exe 'silent noautocmd keepalt file' fnameescape(bufname)
|
||||||
|
break
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#CompleteExpand(lead, line, pos)
|
||||||
|
if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$'
|
||||||
|
" first argument and it has a !
|
||||||
|
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"]
|
||||||
|
if !empty(a:lead)
|
||||||
|
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
|
||||||
|
endif
|
||||||
|
return list
|
||||||
|
endif
|
||||||
|
|
||||||
|
return glob(escape(a:lead, "*?[") . '*', 0, 1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Emit {{{1
|
||||||
|
|
||||||
|
function! rust#Emit(type, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
call s:WithPath(function("s:Emit"), a:type, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Emit(dict, type, args)
|
||||||
|
try
|
||||||
|
let output_path = a:dict.tmpdir.'/output'
|
||||||
|
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let args = [relpath, '--emit', a:type, '-o', output_path] + a:args
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
|
||||||
|
if output != ''
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
if !v:shell_error
|
||||||
|
new
|
||||||
|
exe 'silent keepalt read' fnameescape(output_path)
|
||||||
|
1
|
||||||
|
d
|
||||||
|
if a:type == "llvm-ir"
|
||||||
|
setl filetype=llvm
|
||||||
|
let extension = 'll'
|
||||||
|
elseif a:type == "asm"
|
||||||
|
setl filetype=asm
|
||||||
|
let extension = 's'
|
||||||
|
endif
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
if exists('l:extension')
|
||||||
|
" give the buffer a nice name
|
||||||
|
let suffix = 1
|
||||||
|
let basename = fnamemodify(a:dict.path, ':t:r')
|
||||||
|
while 1
|
||||||
|
let bufname = basename
|
||||||
|
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
|
||||||
|
let bufname .= '.'.extension
|
||||||
|
if bufexists(bufname)
|
||||||
|
let suffix += 1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
exe 'silent noautocmd keepalt file' fnameescape(bufname)
|
||||||
|
break
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Utility functions {{{1
|
||||||
|
|
||||||
|
" Invokes func(dict, ...)
|
||||||
|
" Where {dict} is a dictionary with the following keys:
|
||||||
|
" 'path' - The path to the file
|
||||||
|
" 'tmpdir' - The path to a temporary directory that will be deleted when the
|
||||||
|
" function returns.
|
||||||
|
" 'istemp' - 1 if the path is a file inside of {dict.tmpdir} or 0 otherwise.
|
||||||
|
" If {istemp} is 1 then an additional key is provided:
|
||||||
|
" 'tmpdir_relpath' - The {path} relative to the {tmpdir}.
|
||||||
|
"
|
||||||
|
" {dict.path} may be a path to a file inside of {dict.tmpdir} or it may be the
|
||||||
|
" existing path of the current buffer. If the path is inside of {dict.tmpdir}
|
||||||
|
" then it is guaranteed to have a '.rs' extension.
|
||||||
|
function! s:WithPath(func, ...)
|
||||||
|
let buf = bufnr('')
|
||||||
|
let saved = {}
|
||||||
|
let dict = {}
|
||||||
|
try
|
||||||
|
let saved.write = &write
|
||||||
|
set write
|
||||||
|
let dict.path = expand('%')
|
||||||
|
let pathisempty = empty(dict.path)
|
||||||
|
|
||||||
|
" Always create a tmpdir in case the wrapped command wants it
|
||||||
|
let dict.tmpdir = tempname()
|
||||||
|
call mkdir(dict.tmpdir)
|
||||||
|
|
||||||
|
if pathisempty || !saved.write
|
||||||
|
let dict.istemp = 1
|
||||||
|
" if we're doing this because of nowrite, preserve the filename
|
||||||
|
if !pathisempty
|
||||||
|
let filename = expand('%:t:r').".rs"
|
||||||
|
else
|
||||||
|
let filename = 'unnamed.rs'
|
||||||
|
endif
|
||||||
|
let dict.tmpdir_relpath = filename
|
||||||
|
let dict.path = dict.tmpdir.'/'.filename
|
||||||
|
|
||||||
|
let saved.mod = &mod
|
||||||
|
set nomod
|
||||||
|
|
||||||
|
silent exe 'keepalt write! ' . fnameescape(dict.path)
|
||||||
|
if pathisempty
|
||||||
|
silent keepalt 0file
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let dict.istemp = 0
|
||||||
|
update
|
||||||
|
endif
|
||||||
|
|
||||||
|
call call(a:func, [dict] + a:000)
|
||||||
|
finally
|
||||||
|
if bufexists(buf)
|
||||||
|
for [opt, value] in items(saved)
|
||||||
|
silent call setbufvar(buf, '&'.opt, value)
|
||||||
|
unlet value " avoid variable type mismatches
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#AppendCmdLine(text)
|
||||||
|
call setcmdpos(getcmdpos())
|
||||||
|
let cmd = getcmdline() . a:text
|
||||||
|
return cmd
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Tokenize the string according to sh parsing rules
|
||||||
|
function! s:ShellTokenize(text)
|
||||||
|
" states:
|
||||||
|
" 0: start of word
|
||||||
|
" 1: unquoted
|
||||||
|
" 2: unquoted backslash
|
||||||
|
" 3: double-quote
|
||||||
|
" 4: double-quoted backslash
|
||||||
|
" 5: single-quote
|
||||||
|
let l:state = 0
|
||||||
|
let l:current = ''
|
||||||
|
let l:args = []
|
||||||
|
for c in split(a:text, '\zs')
|
||||||
|
if l:state == 0 || l:state == 1 " unquoted
|
||||||
|
if l:c ==# ' '
|
||||||
|
if l:state == 0 | continue | endif
|
||||||
|
call add(l:args, l:current)
|
||||||
|
let l:current = ''
|
||||||
|
let l:state = 0
|
||||||
|
elseif l:c ==# '\'
|
||||||
|
let l:state = 2
|
||||||
|
elseif l:c ==# '"'
|
||||||
|
let l:state = 3
|
||||||
|
elseif l:c ==# "'"
|
||||||
|
let l:state = 5
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
let l:state = 1
|
||||||
|
endif
|
||||||
|
elseif l:state == 2 " unquoted backslash
|
||||||
|
if l:c !=# "\n" " can it even be \n?
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
let l:state = 1
|
||||||
|
elseif l:state == 3 " double-quote
|
||||||
|
if l:c ==# '\'
|
||||||
|
let l:state = 4
|
||||||
|
elseif l:c ==# '"'
|
||||||
|
let l:state = 1
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
elseif l:state == 4 " double-quoted backslash
|
||||||
|
if stridx('$`"\', l:c) >= 0
|
||||||
|
let l:current .= l:c
|
||||||
|
elseif l:c ==# "\n" " is this even possible?
|
||||||
|
" skip it
|
||||||
|
else
|
||||||
|
let l:current .= '\'.l:c
|
||||||
|
endif
|
||||||
|
let l:state = 3
|
||||||
|
elseif l:state == 5 " single-quoted
|
||||||
|
if l:c == "'"
|
||||||
|
let l:state = 1
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if l:state != 0
|
||||||
|
call add(l:args, l:current)
|
||||||
|
endif
|
||||||
|
return l:args
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RmDir(path)
|
||||||
|
" sanity check; make sure it's not empty, /, or $HOME
|
||||||
|
if empty(a:path)
|
||||||
|
echoerr 'Attempted to delete empty path'
|
||||||
|
return 0
|
||||||
|
elseif a:path == '/' || a:path == $HOME
|
||||||
|
echoerr 'Attempted to delete protected path: ' . a:path
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
silent exe "!rm -rf " . shellescape(a:path)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
|
||||||
|
" If {pwd} is the empty string then it doesn't change the cwd.
|
||||||
|
function! s:system(pwd, cmd)
|
||||||
|
let cmd = a:cmd
|
||||||
|
if !empty(a:pwd)
|
||||||
|
let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd
|
||||||
|
endif
|
||||||
|
return system(cmd)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Playpen Support {{{1
|
||||||
|
" Parts of gist.vim by Yasuhiro Matsumoto <mattn.jp@gmail.com> reused
|
||||||
|
" gist.vim available under the BSD license, available at
|
||||||
|
" http://github.com/mattn/gist-vim
|
||||||
|
function! s:has_webapi()
|
||||||
|
if !exists("*webapi#http#post")
|
||||||
|
try
|
||||||
|
call webapi#http#post()
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
return exists("*webapi#http#post")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#Play(count, line1, line2, ...) abort
|
||||||
|
redraw
|
||||||
|
|
||||||
|
let l:rust_playpen_url = get(g:, 'rust_playpen_url', 'https://play.rust-lang.org/')
|
||||||
|
let l:rust_shortener_url = get(g:, 'rust_shortener_url', 'https://is.gd/')
|
||||||
|
|
||||||
|
if !s:has_webapi()
|
||||||
|
echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let bufname = bufname('%')
|
||||||
|
if a:count < 1
|
||||||
|
let content = join(getline(a:line1, a:line2), "\n")
|
||||||
|
else
|
||||||
|
let save_regcont = @"
|
||||||
|
let save_regtype = getregtype('"')
|
||||||
|
silent! normal! gvy
|
||||||
|
let content = @"
|
||||||
|
call setreg('"', save_regcont, save_regtype)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let body = l:rust_playpen_url."?code=".webapi#http#encodeURI(content)
|
||||||
|
|
||||||
|
if strlen(body) > 5000
|
||||||
|
echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(body).')' | echohl None
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let payload = "format=simple&url=".webapi#http#encodeURI(body)
|
||||||
|
let res = webapi#http#post(l:rust_shortener_url.'create.php', payload, {})
|
||||||
|
let url = res.content
|
||||||
|
|
||||||
|
redraw | echomsg 'Done: '.url
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
" vim: set noet sw=4 ts=4:
|
||||||
|
|
||||||
|
endif
|
||||||
83
autoload/rustfmt.vim
Normal file
83
autoload/rustfmt.vim
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
|
" Author: Stephen Sugden <stephen@stephensugden.com>
|
||||||
|
"
|
||||||
|
" Adapted from https://github.com/fatih/vim-go
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_autosave")
|
||||||
|
let g:rustfmt_autosave = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_command")
|
||||||
|
let g:rustfmt_command = "rustfmt"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_options")
|
||||||
|
let g:rustfmt_options = ""
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_fail_silently")
|
||||||
|
let g:rustfmt_fail_silently = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:got_fmt_error = 0
|
||||||
|
|
||||||
|
function! rustfmt#Format()
|
||||||
|
let l:curw = winsaveview()
|
||||||
|
let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt"
|
||||||
|
call writefile(getline(1, '$'), l:tmpname)
|
||||||
|
|
||||||
|
let command = g:rustfmt_command . " --write-mode=overwrite "
|
||||||
|
|
||||||
|
let out = systemlist(command . g:rustfmt_options . " " . shellescape(l:tmpname))
|
||||||
|
|
||||||
|
if v:shell_error == 0
|
||||||
|
" remove undo point caused via BufWritePre
|
||||||
|
try | silent undojoin | catch | endtry
|
||||||
|
|
||||||
|
" Replace current file with temp file, then reload buffer
|
||||||
|
call rename(l:tmpname, expand('%'))
|
||||||
|
silent edit!
|
||||||
|
let &syntax = &syntax
|
||||||
|
|
||||||
|
" only clear location list if it was previously filled to prevent
|
||||||
|
" clobbering other additions
|
||||||
|
if s:got_fmt_error
|
||||||
|
let s:got_fmt_error = 0
|
||||||
|
call setloclist(0, [])
|
||||||
|
lwindow
|
||||||
|
endif
|
||||||
|
elseif g:rustfmt_fail_silently == 0
|
||||||
|
" otherwise get the errors and put them in the location list
|
||||||
|
let errors = []
|
||||||
|
|
||||||
|
for line in out
|
||||||
|
" src/lib.rs:13:5: 13:10 error: expected `,`, or `}`, found `value`
|
||||||
|
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\):\s*\(\d\+:\d\+\s*\)\?\s*error: \(.*\)')
|
||||||
|
if !empty(tokens)
|
||||||
|
call add(errors, {"filename": @%,
|
||||||
|
\"lnum": tokens[2],
|
||||||
|
\"col": tokens[3],
|
||||||
|
\"text": tokens[5]})
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
if empty(errors)
|
||||||
|
% | " Couldn't detect rustfmt error format, output errors
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !empty(errors)
|
||||||
|
call setloclist(0, errors, 'r')
|
||||||
|
echohl Error | echomsg "rustfmt returned error" | echohl None
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:got_fmt_error = 1
|
||||||
|
lwindow
|
||||||
|
" We didn't use the temp file, so clean up
|
||||||
|
call delete(l:tmpname)
|
||||||
|
endif
|
||||||
|
|
||||||
|
call winrestview(l:curw)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
16
autoload/vital.vim
Normal file
16
autoload/vital.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
function! vital#of(name) abort
|
||||||
|
let files = globpath(&runtimepath, 'autoload/vital/' . a:name . '.vital')
|
||||||
|
let file = split(files, "\n")
|
||||||
|
if empty(file)
|
||||||
|
throw 'vital: version file not found: ' . a:name
|
||||||
|
endif
|
||||||
|
let ver = readfile(file[0], 'b')
|
||||||
|
if empty(ver)
|
||||||
|
throw 'vital: invalid version file: ' . a:name
|
||||||
|
endif
|
||||||
|
return vital#_{substitute(ver[0], '\W', '', 'g')}#new()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
313
autoload/vital/_crystal.vim
Normal file
313
autoload/vital/_crystal.vim
Normal file
@@ -0,0 +1,313 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
let s:self_version = expand('<sfile>:t:r')
|
||||||
|
let s:self_file = expand('<sfile>')
|
||||||
|
|
||||||
|
" Note: The extra argument to globpath() was added in Patch 7.2.051.
|
||||||
|
let s:globpath_third_arg = v:version > 702 || v:version == 702 && has('patch51')
|
||||||
|
|
||||||
|
let s:loaded = {}
|
||||||
|
let s:cache_module_path = {}
|
||||||
|
let s:cache_sid = {}
|
||||||
|
|
||||||
|
let s:_vital_files_cache_runtimepath = ''
|
||||||
|
let s:_vital_files_cache = []
|
||||||
|
let s:_unify_path_cache = {}
|
||||||
|
|
||||||
|
function! s:import(name, ...) abort
|
||||||
|
let target = {}
|
||||||
|
let functions = []
|
||||||
|
for a in a:000
|
||||||
|
if type(a) == type({})
|
||||||
|
let target = a
|
||||||
|
elseif type(a) == type([])
|
||||||
|
let functions = a
|
||||||
|
endif
|
||||||
|
unlet a
|
||||||
|
endfor
|
||||||
|
let module = s:_import(a:name)
|
||||||
|
if empty(functions)
|
||||||
|
call extend(target, module, 'keep')
|
||||||
|
else
|
||||||
|
for f in functions
|
||||||
|
if has_key(module, f) && !has_key(target, f)
|
||||||
|
let target[f] = module[f]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
return target
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:load(...) dict abort
|
||||||
|
for arg in a:000
|
||||||
|
let [name; as] = type(arg) == type([]) ? arg[: 1] : [arg, arg]
|
||||||
|
let target = split(join(as, ''), '\W\+')
|
||||||
|
let dict = self
|
||||||
|
let dict_type = type({})
|
||||||
|
while !empty(target)
|
||||||
|
let ns = remove(target, 0)
|
||||||
|
if !has_key(dict, ns)
|
||||||
|
let dict[ns] = {}
|
||||||
|
endif
|
||||||
|
if type(dict[ns]) == dict_type
|
||||||
|
let dict = dict[ns]
|
||||||
|
else
|
||||||
|
unlet dict
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if exists('dict')
|
||||||
|
call extend(dict, s:_import(name))
|
||||||
|
endif
|
||||||
|
unlet arg
|
||||||
|
endfor
|
||||||
|
return self
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:unload() abort
|
||||||
|
let s:loaded = {}
|
||||||
|
let s:cache_sid = {}
|
||||||
|
let s:cache_module_path = {}
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:exists(name) abort
|
||||||
|
return s:_get_module_path(a:name) !=# ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:search(pattern) abort
|
||||||
|
let paths = s:_vital_files(a:pattern)
|
||||||
|
let modules = sort(map(paths, 's:_file2module(v:val)'))
|
||||||
|
return s:_uniq(modules)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:expand_modules(entry, all) abort
|
||||||
|
if type(a:entry) == type([])
|
||||||
|
let candidates = s:_concat(map(copy(a:entry), 's:search(v:val)'))
|
||||||
|
if empty(candidates)
|
||||||
|
throw printf('vital: Any of module %s is not found', string(a:entry))
|
||||||
|
endif
|
||||||
|
if eval(join(map(copy(candidates), 'has_key(a:all, v:val)'), '+'))
|
||||||
|
let modules = []
|
||||||
|
else
|
||||||
|
let modules = [candidates[0]]
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let modules = s:search(a:entry)
|
||||||
|
if empty(modules)
|
||||||
|
throw printf('vital: Module %s is not found', a:entry)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
call filter(modules, '!has_key(a:all, v:val)')
|
||||||
|
for module in modules
|
||||||
|
let a:all[module] = 1
|
||||||
|
endfor
|
||||||
|
return modules
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_import(name) abort
|
||||||
|
if type(a:name) == type(0)
|
||||||
|
return s:_build_module(a:name)
|
||||||
|
endif
|
||||||
|
let path = s:_get_module_path(a:name)
|
||||||
|
if path ==# ''
|
||||||
|
throw 'vital: module not found: ' . a:name
|
||||||
|
endif
|
||||||
|
let sid = s:_get_sid_by_script(path)
|
||||||
|
if !sid
|
||||||
|
try
|
||||||
|
execute 'source' fnameescape(path)
|
||||||
|
catch /^Vim\%((\a\+)\)\?:E484/
|
||||||
|
throw 'vital: module not found: ' . a:name
|
||||||
|
catch /^Vim\%((\a\+)\)\?:E127/
|
||||||
|
" Ignore.
|
||||||
|
endtry
|
||||||
|
|
||||||
|
let sid = s:_get_sid_by_script(path)
|
||||||
|
endif
|
||||||
|
return s:_build_module(sid)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_get_module_path(name) abort
|
||||||
|
let key = a:name . '_'
|
||||||
|
if has_key(s:cache_module_path, key)
|
||||||
|
return s:cache_module_path[key]
|
||||||
|
endif
|
||||||
|
if s:_is_absolute_path(a:name) && filereadable(a:name)
|
||||||
|
return a:name
|
||||||
|
endif
|
||||||
|
if a:name ==# ''
|
||||||
|
let paths = [s:self_file]
|
||||||
|
elseif a:name =~# '\v^\u\w*%(\.\u\w*)*$'
|
||||||
|
let paths = s:_vital_files(a:name)
|
||||||
|
else
|
||||||
|
throw 'vital: Invalid module name: ' . a:name
|
||||||
|
endif
|
||||||
|
|
||||||
|
call filter(paths, 'filereadable(expand(v:val, 1))')
|
||||||
|
let path = get(paths, 0, '')
|
||||||
|
let s:cache_module_path[key] = path
|
||||||
|
return path
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_get_sid_by_script(path) abort
|
||||||
|
if has_key(s:cache_sid, a:path)
|
||||||
|
return s:cache_sid[a:path]
|
||||||
|
endif
|
||||||
|
|
||||||
|
let path = s:_unify_path(a:path)
|
||||||
|
for line in filter(split(s:_redir('scriptnames'), "\n"),
|
||||||
|
\ 'stridx(v:val, s:self_version) > 0')
|
||||||
|
let list = matchlist(line, '^\s*\(\d\+\):\s\+\(.\+\)\s*$')
|
||||||
|
if !empty(list) && s:_unify_path(list[2]) ==# path
|
||||||
|
let s:cache_sid[a:path] = list[1] - 0
|
||||||
|
return s:cache_sid[a:path]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_file2module(file) abort
|
||||||
|
let filename = fnamemodify(a:file, ':p:gs?[\\/]?/?')
|
||||||
|
let tail = matchstr(filename, 'autoload/vital/_\w\+/\zs.*\ze\.vim$')
|
||||||
|
return join(split(tail, '[\\/]\+'), '.')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if filereadable(expand('<sfile>:r') . '.VIM')
|
||||||
|
" resolve() is slow, so we cache results.
|
||||||
|
" Note: On windows, vim can't expand path names from 8.3 formats.
|
||||||
|
" So if getting full path via <sfile> and $HOME was set as 8.3 format,
|
||||||
|
" vital load duplicated scripts. Below's :~ avoid this issue.
|
||||||
|
function! s:_unify_path(path) abort
|
||||||
|
if has_key(s:_unify_path_cache, a:path)
|
||||||
|
return s:_unify_path_cache[a:path]
|
||||||
|
endif
|
||||||
|
let value = tolower(fnamemodify(resolve(fnamemodify(
|
||||||
|
\ a:path, ':p')), ':~:gs?[\\/]?/?'))
|
||||||
|
let s:_unify_path_cache[a:path] = value
|
||||||
|
return value
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:_unify_path(path) abort
|
||||||
|
return resolve(fnamemodify(a:path, ':p:gs?[\\/]?/?'))
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:globpath_third_arg
|
||||||
|
function! s:_runtime_files(path) abort
|
||||||
|
return split(globpath(&runtimepath, a:path, 1), "\n")
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:_runtime_files(path) abort
|
||||||
|
return split(globpath(&runtimepath, a:path), "\n")
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:_vital_files(pattern) abort
|
||||||
|
if s:_vital_files_cache_runtimepath !=# &runtimepath
|
||||||
|
let path = printf('autoload/vital/%s/**/*.vim', s:self_version)
|
||||||
|
let s:_vital_files_cache = s:_runtime_files(path)
|
||||||
|
let mod = ':p:gs?[\\/]\+?/?'
|
||||||
|
call map(s:_vital_files_cache, 'fnamemodify(v:val, mod)')
|
||||||
|
let s:_vital_files_cache_runtimepath = &runtimepath
|
||||||
|
endif
|
||||||
|
let target = substitute(a:pattern, '\.', '/', 'g')
|
||||||
|
let target = substitute(target, '\*', '[^/]*', 'g')
|
||||||
|
let regexp = printf('autoload/vital/%s/%s.vim', s:self_version, target)
|
||||||
|
return filter(copy(s:_vital_files_cache), 'v:val =~# regexp')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Copy from System.Filepath
|
||||||
|
if has('win16') || has('win32') || has('win64')
|
||||||
|
function! s:_is_absolute_path(path) abort
|
||||||
|
return a:path =~? '^[a-z]:[/\\]'
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:_is_absolute_path(path) abort
|
||||||
|
return a:path[0] ==# '/'
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:_build_module(sid) abort
|
||||||
|
if has_key(s:loaded, a:sid)
|
||||||
|
return copy(s:loaded[a:sid])
|
||||||
|
endif
|
||||||
|
let functions = s:_get_functions(a:sid)
|
||||||
|
|
||||||
|
let prefix = '<SNR>' . a:sid . '_'
|
||||||
|
let module = {}
|
||||||
|
for func in functions
|
||||||
|
let module[func] = function(prefix . func)
|
||||||
|
endfor
|
||||||
|
if has_key(module, '_vital_created')
|
||||||
|
call module._vital_created(module)
|
||||||
|
endif
|
||||||
|
let export_module = filter(copy(module), 'v:key =~# "^\\a"')
|
||||||
|
let s:loaded[a:sid] = get(g:, 'vital_debug', 0) ? module : export_module
|
||||||
|
if has_key(module, '_vital_loaded')
|
||||||
|
let V = vital#{s:self_version}#new()
|
||||||
|
call module._vital_loaded(V)
|
||||||
|
endif
|
||||||
|
return copy(s:loaded[a:sid])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if exists('+regexpengine')
|
||||||
|
function! s:_get_functions(sid) abort
|
||||||
|
let funcs = s:_redir(printf("function /\\%%#=2^\<SNR>%d_", a:sid))
|
||||||
|
let map_pat = '<SNR>' . a:sid . '_\zs\w\+'
|
||||||
|
return map(split(funcs, "\n"), 'matchstr(v:val, map_pat)')
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:_get_functions(sid) abort
|
||||||
|
let prefix = '<SNR>' . a:sid . '_'
|
||||||
|
let funcs = s:_redir('function')
|
||||||
|
let filter_pat = '^\s*function ' . prefix
|
||||||
|
let map_pat = prefix . '\zs\w\+'
|
||||||
|
return map(filter(split(funcs, "\n"),
|
||||||
|
\ 'stridx(v:val, prefix) > 0 && v:val =~# filter_pat'),
|
||||||
|
\ 'matchstr(v:val, map_pat)')
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('*uniq')
|
||||||
|
function! s:_uniq(list) abort
|
||||||
|
return uniq(a:list)
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:_uniq(list) abort
|
||||||
|
let i = len(a:list) - 1
|
||||||
|
while 0 < i
|
||||||
|
if a:list[i] ==# a:list[i - 1]
|
||||||
|
call remove(a:list, i)
|
||||||
|
let i -= 2
|
||||||
|
else
|
||||||
|
let i -= 1
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return a:list
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:_concat(lists) abort
|
||||||
|
let result_list = []
|
||||||
|
for list in a:lists
|
||||||
|
let result_list += list
|
||||||
|
endfor
|
||||||
|
return result_list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_redir(cmd) abort
|
||||||
|
let [save_verbose, save_verbosefile] = [&verbose, &verbosefile]
|
||||||
|
set verbose=0 verbosefile=
|
||||||
|
redir => res
|
||||||
|
silent! execute a:cmd
|
||||||
|
redir END
|
||||||
|
let [&verbose, &verbosefile] = [save_verbose, save_verbosefile]
|
||||||
|
return res
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! vital#{s:self_version}#new() abort
|
||||||
|
return s:_import('')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
182
autoload/vital/_crystal/ColorEcho.vim
Normal file
182
autoload/vital/_crystal/ColorEcho.vim
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! s:_is_available() abort
|
||||||
|
if has('gui_running')
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has('win32') || has('win64')
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
return exists('&t_Co') && (&t_Co == 8 || &t_Co == 256)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_available() abort
|
||||||
|
if exists('s:is_available_cache')
|
||||||
|
return s:is_available_cache
|
||||||
|
endif
|
||||||
|
let s:is_available_cache = s:_is_available()
|
||||||
|
return s:is_available_cache
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_define_ansi_highlights() abort
|
||||||
|
hi ansiNone cterm=NONE gui=NONE
|
||||||
|
|
||||||
|
hi ansiBlackBg ctermbg=black guibg=black cterm=none gui=none
|
||||||
|
hi ansiRedBg ctermbg=red guibg=red cterm=none gui=none
|
||||||
|
hi ansiGreenBg ctermbg=green guibg=green cterm=none gui=none
|
||||||
|
hi ansiYellowBg ctermbg=yellow guibg=yellow cterm=none gui=none
|
||||||
|
hi ansiBlueBg ctermbg=blue guibg=blue cterm=none gui=none
|
||||||
|
hi ansiMagentaBg ctermbg=magenta guibg=magenta cterm=none gui=none
|
||||||
|
hi ansiCyanBg ctermbg=cyan guibg=cyan cterm=none gui=none
|
||||||
|
hi ansiWhiteBg ctermbg=white guibg=white cterm=none gui=none
|
||||||
|
hi ansiGrayBg ctermbg=gray guibg=gray cterm=none gui=none
|
||||||
|
|
||||||
|
hi ansiBlackFg ctermfg=black guifg=black cterm=none gui=none
|
||||||
|
hi ansiRedFg ctermfg=red guifg=red cterm=none gui=none
|
||||||
|
hi ansiGreenFg ctermfg=green guifg=green cterm=none gui=none
|
||||||
|
hi ansiYellowFg ctermfg=yellow guifg=yellow cterm=none gui=none
|
||||||
|
hi ansiBlueFg ctermfg=blue guifg=blue cterm=none gui=none
|
||||||
|
hi ansiMagentaFg ctermfg=magenta guifg=magenta cterm=none gui=none
|
||||||
|
hi ansiCyanFg ctermfg=cyan guifg=cyan cterm=none gui=none
|
||||||
|
hi ansiWhiteFg ctermfg=white guifg=white cterm=none gui=none
|
||||||
|
hi ansiGrayFg ctermfg=gray guifg=gray cterm=none gui=none
|
||||||
|
|
||||||
|
hi ansiBoldBlackFg ctermfg=black guifg=black cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldRedFg ctermfg=red guifg=red cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldGreenFg ctermfg=green guifg=green cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldYellowFg ctermfg=yellow guifg=yellow cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldBlueFg ctermfg=blue guifg=blue cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldMagentaFg ctermfg=magenta guifg=magenta cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldCyanFg ctermfg=cyan guifg=cyan cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldWhiteFg ctermfg=white guifg=white cterm=none gui=none cterm=bold gui=bold
|
||||||
|
hi ansiBoldGrayFg ctermfg=gray guifg=gray cterm=none gui=none cterm=bold gui=bold
|
||||||
|
|
||||||
|
hi ansiUnderlineBlackFg ctermfg=black guifg=black cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineRedFg ctermfg=red guifg=red cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineGreenFg ctermfg=green guifg=green cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineYellowFg ctermfg=yellow guifg=yellow cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineBlueFg ctermfg=blue guifg=blue cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineMagentaFg ctermfg=magenta guifg=magenta cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineCyanFg ctermfg=cyan guifg=cyan cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineWhiteFg ctermfg=white guifg=white cterm=none gui=none cterm=underline gui=underline
|
||||||
|
hi ansiUnderlineGrayFg ctermfg=gray guifg=gray cterm=none gui=none cterm=underline gui=underline
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:echorizer = {
|
||||||
|
\ 'value': '',
|
||||||
|
\ 'attr': '',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
function s:echorizer.eat() abort
|
||||||
|
let matched = match(self.value, '\e\[\d*;\=m')
|
||||||
|
if matched == -1
|
||||||
|
return {}
|
||||||
|
endif
|
||||||
|
|
||||||
|
let matched_end = matchend(self.value, '\e\[\d*;\=m')
|
||||||
|
|
||||||
|
let token = {
|
||||||
|
\ 'body': matched == 0 ? '' : self.value[ : matched-1],
|
||||||
|
\ 'code': matchstr(self.value[matched : matched_end-1], '\d\+')
|
||||||
|
\ }
|
||||||
|
|
||||||
|
let self.value = self.value[matched_end : ]
|
||||||
|
|
||||||
|
return token
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:COLORS = {
|
||||||
|
\ 0: "None",
|
||||||
|
\ 30: "BlackFg",
|
||||||
|
\ 31: "RedFg",
|
||||||
|
\ 32: "GreenFg",
|
||||||
|
\ 33: "YellowFg",
|
||||||
|
\ 34: "BlueFg",
|
||||||
|
\ 35: "MagentaFg",
|
||||||
|
\ 36: "CyanFg",
|
||||||
|
\ 37: "WhiteFg",
|
||||||
|
\ 40: "BlackBg",
|
||||||
|
\ 41: "RedBg",
|
||||||
|
\ 42: "GreenBg",
|
||||||
|
\ 43: "YellowBg",
|
||||||
|
\ 44: "BlueBg",
|
||||||
|
\ 45: "MagentaBg",
|
||||||
|
\ 46: "CyanBg",
|
||||||
|
\ 47: "WhiteBg",
|
||||||
|
\ 90: "GrayFg",
|
||||||
|
\ }
|
||||||
|
|
||||||
|
function s:echorizer.echo_ansi(code) abort
|
||||||
|
if !has_key(s:COLORS, a:code)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute 'echohl' 'ansi' . self.attr . s:COLORS[a:code]
|
||||||
|
|
||||||
|
if a:code == 0
|
||||||
|
let self.attr = ''
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function s:echorizer.echo() abort
|
||||||
|
echo
|
||||||
|
|
||||||
|
while 1
|
||||||
|
let token = self.eat()
|
||||||
|
if token == {}
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
|
||||||
|
if token.body !=# ''
|
||||||
|
echon token.body
|
||||||
|
endif
|
||||||
|
|
||||||
|
" TODO: Now only one attribute can be specified
|
||||||
|
if token.code == 1
|
||||||
|
let self.attr = 'Bold'
|
||||||
|
elseif token.code == 4
|
||||||
|
let self.attr = 'Underline'
|
||||||
|
elseif token.code ==# ''
|
||||||
|
call self.echo_ansi(0)
|
||||||
|
else
|
||||||
|
call self.echo_ansi(token.code)
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
echon self.value
|
||||||
|
echohl None
|
||||||
|
let self.value = ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_echorizer(str) abort
|
||||||
|
let e = deepcopy(s:echorizer)
|
||||||
|
let e.value = a:str
|
||||||
|
return e
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:echo(str) abort
|
||||||
|
if !s:is_available()
|
||||||
|
echo substitute(a:str, '\e[.*m', '', 'g')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:__vital_color_echo_already_highlighted')
|
||||||
|
call s:_define_ansi_highlights()
|
||||||
|
let g:__vital_color_echo_already_highlighted = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let echorizer = s:get_echorizer(a:str)
|
||||||
|
call echorizer.echo()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
endif
|
||||||
446
autoload/vital/_crystal/Data/List.vim
Normal file
446
autoload/vital/_crystal/Data/List.vim
Normal file
@@ -0,0 +1,446 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
" Utilities for list.
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! s:pop(list) abort
|
||||||
|
return remove(a:list, -1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:push(list, val) abort
|
||||||
|
call add(a:list, a:val)
|
||||||
|
return a:list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:shift(list) abort
|
||||||
|
return remove(a:list, 0)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:unshift(list, val) abort
|
||||||
|
return insert(a:list, a:val)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:cons(x, xs) abort
|
||||||
|
return [a:x] + a:xs
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:conj(xs, x) abort
|
||||||
|
return a:xs + [a:x]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Removes duplicates from a list.
|
||||||
|
function! s:uniq(list) abort
|
||||||
|
return s:uniq_by(a:list, 'v:val')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Removes duplicates from a list.
|
||||||
|
function! s:uniq_by(list, f) abort
|
||||||
|
let list = map(copy(a:list), printf('[v:val, %s]', a:f))
|
||||||
|
let i = 0
|
||||||
|
let seen = {}
|
||||||
|
while i < len(list)
|
||||||
|
let key = string(list[i][1])
|
||||||
|
if has_key(seen, key)
|
||||||
|
call remove(list, i)
|
||||||
|
else
|
||||||
|
let seen[key] = 1
|
||||||
|
let i += 1
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return map(list, 'v:val[0]')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:clear(list) abort
|
||||||
|
if !empty(a:list)
|
||||||
|
unlet! a:list[0 : len(a:list) - 1]
|
||||||
|
endif
|
||||||
|
return a:list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Concatenates a list of lists.
|
||||||
|
" XXX: Should we verify the input?
|
||||||
|
function! s:concat(list) abort
|
||||||
|
let memo = []
|
||||||
|
for Value in a:list
|
||||||
|
let memo += Value
|
||||||
|
endfor
|
||||||
|
return memo
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Take each elements from lists to a new list.
|
||||||
|
function! s:flatten(list, ...) abort
|
||||||
|
let limit = a:0 > 0 ? a:1 : -1
|
||||||
|
let memo = []
|
||||||
|
if limit == 0
|
||||||
|
return a:list
|
||||||
|
endif
|
||||||
|
let limit -= 1
|
||||||
|
for Value in a:list
|
||||||
|
let memo +=
|
||||||
|
\ type(Value) == type([]) ?
|
||||||
|
\ s:flatten(Value, limit) :
|
||||||
|
\ [Value]
|
||||||
|
unlet! Value
|
||||||
|
endfor
|
||||||
|
return memo
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Sorts a list with expression to compare each two values.
|
||||||
|
" a:a and a:b can be used in {expr}.
|
||||||
|
function! s:sort(list, expr) abort
|
||||||
|
if type(a:expr) == type(function('function'))
|
||||||
|
return sort(a:list, a:expr)
|
||||||
|
endif
|
||||||
|
let s:expr = a:expr
|
||||||
|
return sort(a:list, 's:_compare')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_compare(a, b) abort
|
||||||
|
return eval(s:expr)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Sorts a list using a set of keys generated by mapping the values in the list
|
||||||
|
" through the given expr.
|
||||||
|
" v:val is used in {expr}
|
||||||
|
function! s:sort_by(list, expr) abort
|
||||||
|
let pairs = map(a:list, printf('[v:val, %s]', a:expr))
|
||||||
|
return map(s:sort(pairs,
|
||||||
|
\ 'a:a[1] ==# a:b[1] ? 0 : a:a[1] ># a:b[1] ? 1 : -1'), 'v:val[0]')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns a maximum value in {list} through given {expr}.
|
||||||
|
" Returns 0 if {list} is empty.
|
||||||
|
" v:val is used in {expr}
|
||||||
|
function! s:max_by(list, expr) abort
|
||||||
|
if empty(a:list)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let list = map(copy(a:list), a:expr)
|
||||||
|
return a:list[index(list, max(list))]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns a minimum value in {list} through given {expr}.
|
||||||
|
" Returns 0 if {list} is empty.
|
||||||
|
" v:val is used in {expr}
|
||||||
|
" FIXME: -0x80000000 == 0x80000000
|
||||||
|
function! s:min_by(list, expr) abort
|
||||||
|
return s:max_by(a:list, '-(' . a:expr . ')')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns List of character sequence between [a:from, a:to]
|
||||||
|
" e.g.: s:char_range('a', 'c') returns ['a', 'b', 'c']
|
||||||
|
function! s:char_range(from, to) abort
|
||||||
|
return map(
|
||||||
|
\ range(char2nr(a:from), char2nr(a:to)),
|
||||||
|
\ 'nr2char(v:val)'
|
||||||
|
\)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns true if a:list has a:value.
|
||||||
|
" Returns false otherwise.
|
||||||
|
function! s:has(list, value) abort
|
||||||
|
return index(a:list, a:value) isnot -1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns true if a:list[a:index] exists.
|
||||||
|
" Returns false otherwise.
|
||||||
|
" NOTE: Returns false when a:index is negative number.
|
||||||
|
function! s:has_index(list, index) abort
|
||||||
|
" Return true when negative index?
|
||||||
|
" let index = a:index >= 0 ? a:index : len(a:list) + a:index
|
||||||
|
return 0 <= a:index && a:index < len(a:list)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Data.List.span
|
||||||
|
function! s:span(f, xs) abort
|
||||||
|
let border = len(a:xs)
|
||||||
|
for i in range(len(a:xs))
|
||||||
|
if !eval(substitute(a:f, 'v:val', string(a:xs[i]), 'g'))
|
||||||
|
let border = i
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return border == 0 ? [[], copy(a:xs)] : [a:xs[: border - 1], a:xs[border :]]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Data.List.break
|
||||||
|
function! s:break(f, xs) abort
|
||||||
|
return s:span(printf('!(%s)', a:f), a:xs)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Data.List.takeWhile
|
||||||
|
function! s:take_while(f, xs) abort
|
||||||
|
return s:span(a:f, a:xs)[0]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Data.List.partition
|
||||||
|
function! s:partition(f, xs) abort
|
||||||
|
return [filter(copy(a:xs), a:f), filter(copy(a:xs), '!(' . a:f . ')')]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.all
|
||||||
|
function! s:all(f, xs) abort
|
||||||
|
return !s:any(printf('!(%s)', a:f), a:xs)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.any
|
||||||
|
function! s:any(f, xs) abort
|
||||||
|
return !empty(filter(map(copy(a:xs), a:f), 'v:val'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.and
|
||||||
|
function! s:and(xs) abort
|
||||||
|
return s:all('v:val', a:xs)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.or
|
||||||
|
function! s:or(xs) abort
|
||||||
|
return s:any('v:val', a:xs)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:map_accum(expr, xs, init) abort
|
||||||
|
let memo = []
|
||||||
|
let init = a:init
|
||||||
|
for x in a:xs
|
||||||
|
let expr = substitute(a:expr, 'v:memo', init, 'g')
|
||||||
|
let expr = substitute(expr, 'v:val', x, 'g')
|
||||||
|
let [tmp, init] = eval(expr)
|
||||||
|
call add(memo, tmp)
|
||||||
|
endfor
|
||||||
|
return memo
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.foldl
|
||||||
|
function! s:foldl(f, init, xs) abort
|
||||||
|
let memo = a:init
|
||||||
|
for x in a:xs
|
||||||
|
let expr = substitute(a:f, 'v:val', string(x), 'g')
|
||||||
|
let expr = substitute(expr, 'v:memo', string(memo), 'g')
|
||||||
|
unlet memo
|
||||||
|
let memo = eval(expr)
|
||||||
|
endfor
|
||||||
|
return memo
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.foldl1
|
||||||
|
function! s:foldl1(f, xs) abort
|
||||||
|
if len(a:xs) == 0
|
||||||
|
throw 'vital: Data.List: foldl1'
|
||||||
|
endif
|
||||||
|
return s:foldl(a:f, a:xs[0], a:xs[1:])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.foldr
|
||||||
|
function! s:foldr(f, init, xs) abort
|
||||||
|
return s:foldl(a:f, a:init, reverse(copy(a:xs)))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Haskell's Prelude.fold11
|
||||||
|
function! s:foldr1(f, xs) abort
|
||||||
|
if len(a:xs) == 0
|
||||||
|
throw 'vital: Data.List: foldr1'
|
||||||
|
endif
|
||||||
|
return s:foldr(a:f, a:xs[-1], a:xs[0:-2])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to python's zip()
|
||||||
|
function! s:zip(...) abort
|
||||||
|
return map(range(min(map(copy(a:000), 'len(v:val)'))), "map(copy(a:000), 'v:val['.v:val.']')")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to zip(), but goes until the longer one.
|
||||||
|
function! s:zip_fill(xs, ys, filler) abort
|
||||||
|
if empty(a:xs) && empty(a:ys)
|
||||||
|
return []
|
||||||
|
elseif empty(a:ys)
|
||||||
|
return s:cons([a:xs[0], a:filler], s:zip_fill(a:xs[1 :], [], a:filler))
|
||||||
|
elseif empty(a:xs)
|
||||||
|
return s:cons([a:filler, a:ys[0]], s:zip_fill([], a:ys[1 :], a:filler))
|
||||||
|
else
|
||||||
|
return s:cons([a:xs[0], a:ys[0]], s:zip_fill(a:xs[1 :], a:ys[1: ], a:filler))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Inspired by Ruby's with_index method.
|
||||||
|
function! s:with_index(list, ...) abort
|
||||||
|
let base = a:0 > 0 ? a:1 : 0
|
||||||
|
return map(copy(a:list), '[v:val, v:key + base]')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Ruby's detect or Haskell's find.
|
||||||
|
function! s:find(list, default, f) abort
|
||||||
|
for x in a:list
|
||||||
|
if eval(substitute(a:f, 'v:val', string(x), 'g'))
|
||||||
|
return x
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return a:default
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns the index of the first element which satisfies the given expr.
|
||||||
|
function! s:find_index(xs, f, ...) abort
|
||||||
|
let len = len(a:xs)
|
||||||
|
let start = a:0 > 0 ? (a:1 < 0 ? len + a:1 : a:1) : 0
|
||||||
|
let default = a:0 > 1 ? a:2 : -1
|
||||||
|
if start >=# len || start < 0
|
||||||
|
return default
|
||||||
|
endif
|
||||||
|
for i in range(start, len - 1)
|
||||||
|
if eval(substitute(a:f, 'v:val', string(a:xs[i]), 'g'))
|
||||||
|
return i
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return default
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns the index of the last element which satisfies the given expr.
|
||||||
|
function! s:find_last_index(xs, f, ...) abort
|
||||||
|
let len = len(a:xs)
|
||||||
|
let start = a:0 > 0 ? (a:1 < 0 ? len + a:1 : a:1) : len - 1
|
||||||
|
let default = a:0 > 1 ? a:2 : -1
|
||||||
|
if start >=# len || start < 0
|
||||||
|
return default
|
||||||
|
endif
|
||||||
|
for i in range(start, 0, -1)
|
||||||
|
if eval(substitute(a:f, 'v:val', string(a:xs[i]), 'g'))
|
||||||
|
return i
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return default
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Similar to find_index but returns the list of indices satisfying the given expr.
|
||||||
|
function! s:find_indices(xs, f, ...) abort
|
||||||
|
let len = len(a:xs)
|
||||||
|
let start = a:0 > 0 ? (a:1 < 0 ? len + a:1 : a:1) : 0
|
||||||
|
let result = []
|
||||||
|
if start >=# len || start < 0
|
||||||
|
return result
|
||||||
|
endif
|
||||||
|
for i in range(start, len - 1)
|
||||||
|
if eval(substitute(a:f, 'v:val', string(a:xs[i]), 'g'))
|
||||||
|
call add(result, i)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Return non-zero if a:list1 and a:list2 have any common item(s).
|
||||||
|
" Return zero otherwise.
|
||||||
|
function! s:has_common_items(list1, list2) abort
|
||||||
|
return !empty(filter(copy(a:list1), 'index(a:list2, v:val) isnot -1'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:intersect(list1, list2) abort
|
||||||
|
let items = []
|
||||||
|
" for funcref
|
||||||
|
for X in a:list1
|
||||||
|
if index(a:list2, X) != -1 && index(items, X) == -1
|
||||||
|
let items += [X]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return items
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" similar to Ruby's group_by.
|
||||||
|
function! s:group_by(xs, f) abort
|
||||||
|
let result = {}
|
||||||
|
let list = map(copy(a:xs), printf('[v:val, %s]', a:f))
|
||||||
|
for x in list
|
||||||
|
let Val = x[0]
|
||||||
|
let key = type(x[1]) !=# type('') ? string(x[1]) : x[1]
|
||||||
|
if has_key(result, key)
|
||||||
|
call add(result[key], Val)
|
||||||
|
else
|
||||||
|
let result[key] = [Val]
|
||||||
|
endif
|
||||||
|
unlet Val
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_default_compare(a, b) abort
|
||||||
|
return a:a <# a:b ? -1 : a:a ># a:b ? 1 : 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:binary_search(list, value, ...) abort
|
||||||
|
let Predicate = a:0 >= 1 ? a:1 : 's:_default_compare'
|
||||||
|
let dic = a:0 >= 2 ? a:2 : {}
|
||||||
|
let start = 0
|
||||||
|
let end = len(a:list) - 1
|
||||||
|
|
||||||
|
while 1
|
||||||
|
if start > end
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let middle = (start + end) / 2
|
||||||
|
|
||||||
|
let compared = call(Predicate, [a:value, a:list[middle]], dic)
|
||||||
|
|
||||||
|
if compared < 0
|
||||||
|
let end = middle - 1
|
||||||
|
elseif compared > 0
|
||||||
|
let start = middle + 1
|
||||||
|
else
|
||||||
|
return middle
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:product(lists) abort
|
||||||
|
let result = [[]]
|
||||||
|
for pool in a:lists
|
||||||
|
let tmp = []
|
||||||
|
for x in result
|
||||||
|
let tmp += map(copy(pool), 'x + [v:val]')
|
||||||
|
endfor
|
||||||
|
let result = tmp
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:permutations(list, ...) abort
|
||||||
|
if a:0 > 1
|
||||||
|
throw 'vital: Data.List: too many arguments'
|
||||||
|
endif
|
||||||
|
let r = a:0 == 1 ? a:1 : len(a:list)
|
||||||
|
if r > len(a:list)
|
||||||
|
return []
|
||||||
|
elseif r < 0
|
||||||
|
throw 'vital: Data.List: {r} must be non-negative integer'
|
||||||
|
endif
|
||||||
|
let n = len(a:list)
|
||||||
|
let result = []
|
||||||
|
for indices in s:product(map(range(r), 'range(n)'))
|
||||||
|
if len(s:uniq(indices)) == r
|
||||||
|
call add(result, map(indices, 'a:list[v:val]'))
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:combinations(list, r) abort
|
||||||
|
if a:r > len(a:list)
|
||||||
|
return []
|
||||||
|
elseif a:r < 0
|
||||||
|
throw 'vital: Data:List: {r} must be non-negative integer'
|
||||||
|
endif
|
||||||
|
let n = len(a:list)
|
||||||
|
let result = []
|
||||||
|
for indices in s:permutations(range(n), a:r)
|
||||||
|
if s:sort(copy(indices), 'a:a - a:b') == indices
|
||||||
|
call add(result, map(indices, 'a:list[v:val]'))
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||||
|
|
||||||
|
endif
|
||||||
572
autoload/vital/_crystal/Data/String.vim
Normal file
572
autoload/vital/_crystal/Data/String.vim
Normal file
@@ -0,0 +1,572 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
" Utilities for string.
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! s:_vital_loaded(V) abort
|
||||||
|
let s:V = a:V
|
||||||
|
let s:P = s:V.import('Prelude')
|
||||||
|
let s:L = s:V.import('Data.List')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_vital_depends() abort
|
||||||
|
return ['Prelude', 'Data.List']
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Substitute a:from => a:to by string.
|
||||||
|
" To substitute by pattern, use substitute() instead.
|
||||||
|
function! s:replace(str, from, to) abort
|
||||||
|
return s:_replace(a:str, a:from, a:to, 'g')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Substitute a:from => a:to only once.
|
||||||
|
" cf. s:replace()
|
||||||
|
function! s:replace_first(str, from, to) abort
|
||||||
|
return s:_replace(a:str, a:from, a:to, '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" implement of replace() and replace_first()
|
||||||
|
function! s:_replace(str, from, to, flags) abort
|
||||||
|
return substitute(a:str, '\V'.escape(a:from, '\'), escape(a:to, '\'), a:flags)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:scan(str, pattern) abort
|
||||||
|
let list = []
|
||||||
|
call substitute(a:str, a:pattern, '\=add(list, submatch(0)) == [] ? "" : ""', 'g')
|
||||||
|
return list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:reverse(str) abort
|
||||||
|
return join(reverse(split(a:str, '.\zs')), '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:starts_with(str, prefix) abort
|
||||||
|
return stridx(a:str, a:prefix) == 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:ends_with(str, suffix) abort
|
||||||
|
let idx = strridx(a:str, a:suffix)
|
||||||
|
return 0 <= idx && idx + len(a:suffix) == len(a:str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:common_head(strs) abort
|
||||||
|
if empty(a:strs)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let len = len(a:strs)
|
||||||
|
if len == 1
|
||||||
|
return a:strs[0]
|
||||||
|
endif
|
||||||
|
let strs = len == 2 ? a:strs : sort(copy(a:strs))
|
||||||
|
let pat = substitute(strs[0], '.', '\="[" . escape(submatch(0), "^\\") . "]"', 'g')
|
||||||
|
return pat == '' ? '' : matchstr(strs[-1], '\C^\%[' . pat . ']')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Split to two elements of List. ([left, right])
|
||||||
|
" e.g.: s:split3('neocomplcache', 'compl') returns ['neo', 'compl', 'cache']
|
||||||
|
function! s:split_leftright(expr, pattern) abort
|
||||||
|
let [left, _, right] = s:split3(a:expr, a:pattern)
|
||||||
|
return [left, right]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:split3(expr, pattern) abort
|
||||||
|
let ERROR = ['', '', '']
|
||||||
|
if a:expr ==# '' || a:pattern ==# ''
|
||||||
|
return ERROR
|
||||||
|
endif
|
||||||
|
let begin = match(a:expr, a:pattern)
|
||||||
|
if begin is -1
|
||||||
|
return ERROR
|
||||||
|
endif
|
||||||
|
let end = matchend(a:expr, a:pattern)
|
||||||
|
let left = begin <=# 0 ? '' : a:expr[: begin - 1]
|
||||||
|
let right = a:expr[end :]
|
||||||
|
return [left, a:expr[begin : end-1], right]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Slices into strings determines the number of substrings.
|
||||||
|
" e.g.: s:nsplit("neo compl cache", 2, '\s') returns ['neo', 'compl cache']
|
||||||
|
function! s:nsplit(expr, n, ...) abort
|
||||||
|
let pattern = get(a:000, 0, '\s')
|
||||||
|
let keepempty = get(a:000, 1, 1)
|
||||||
|
let ret = []
|
||||||
|
let expr = a:expr
|
||||||
|
if a:n <= 1
|
||||||
|
return [expr]
|
||||||
|
endif
|
||||||
|
while 1
|
||||||
|
let pos = match(expr, pattern)
|
||||||
|
if pos == -1
|
||||||
|
if expr !~ pattern || keepempty
|
||||||
|
call add(ret, expr)
|
||||||
|
endif
|
||||||
|
break
|
||||||
|
elseif pos >= 0
|
||||||
|
let left = pos > 0 ? expr[:pos-1] : ''
|
||||||
|
if pos > 0 || keepempty
|
||||||
|
call add(ret, left)
|
||||||
|
endif
|
||||||
|
let ml = len(matchstr(expr, pattern))
|
||||||
|
if pos == 0 && ml == 0
|
||||||
|
let pos = 1
|
||||||
|
endif
|
||||||
|
let expr = expr[pos+ml :]
|
||||||
|
endif
|
||||||
|
if len(expr) == 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
if len(ret) == a:n - 1
|
||||||
|
call add(ret, expr)
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns the number of character in a:str.
|
||||||
|
" NOTE: This returns proper value
|
||||||
|
" even if a:str contains multibyte character(s).
|
||||||
|
" s:strchars(str) {{{
|
||||||
|
if exists('*strchars')
|
||||||
|
function! s:strchars(str) abort
|
||||||
|
return strchars(a:str)
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:strchars(str) abort
|
||||||
|
return strlen(substitute(copy(a:str), '.', 'x', 'g'))
|
||||||
|
endfunction
|
||||||
|
endif "}}}
|
||||||
|
|
||||||
|
" Returns the bool of contains any multibyte character in s:str
|
||||||
|
function! s:contains_multibyte(str) abort "{{{
|
||||||
|
return strlen(a:str) != s:strchars(a:str)
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Remove last character from a:str.
|
||||||
|
" NOTE: This returns proper value
|
||||||
|
" even if a:str contains multibyte character(s).
|
||||||
|
function! s:chop(str) abort "{{{
|
||||||
|
return substitute(a:str, '.$', '', '')
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Remove last \r,\n,\r\n from a:str.
|
||||||
|
function! s:chomp(str) abort "{{{
|
||||||
|
return substitute(a:str, '\%(\r\n\|[\r\n]\)$', '', '')
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" wrap() and its internal functions
|
||||||
|
" * _split_by_wcswidth_once()
|
||||||
|
" * _split_by_wcswidth()
|
||||||
|
" * _concat()
|
||||||
|
" * wrap()
|
||||||
|
"
|
||||||
|
" NOTE _concat() is just a copy of Data.List.concat().
|
||||||
|
" FIXME don't repeat yourself
|
||||||
|
function! s:_split_by_wcswidth_once(body, x) abort
|
||||||
|
let fst = s:strwidthpart(a:body, a:x)
|
||||||
|
let snd = s:strwidthpart_reverse(a:body, s:wcswidth(a:body) - s:wcswidth(fst))
|
||||||
|
return [fst, snd]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_split_by_wcswidth(body, x) abort
|
||||||
|
let memo = []
|
||||||
|
let body = a:body
|
||||||
|
while s:wcswidth(body) > a:x
|
||||||
|
let [tmp, body] = s:_split_by_wcswidth_once(body, a:x)
|
||||||
|
call add(memo, tmp)
|
||||||
|
endwhile
|
||||||
|
call add(memo, body)
|
||||||
|
return memo
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:trim(str) abort
|
||||||
|
return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:trim_start(str) abort
|
||||||
|
return matchstr(a:str,'^\s*\zs.\{-}$')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:trim_end(str) abort
|
||||||
|
return matchstr(a:str,'^.\{-}\ze\s*$')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:wrap(str,...) abort
|
||||||
|
let _columns = a:0 > 0 ? a:1 : &columns
|
||||||
|
return s:L.concat(
|
||||||
|
\ map(split(a:str, '\r\n\|[\r\n]'), 's:_split_by_wcswidth(v:val, _columns - 1)'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:nr2byte(nr) abort
|
||||||
|
if a:nr < 0x80
|
||||||
|
return nr2char(a:nr)
|
||||||
|
elseif a:nr < 0x800
|
||||||
|
return nr2char(a:nr/64+192).nr2char(a:nr%64+128)
|
||||||
|
else
|
||||||
|
return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:nr2enc_char(charcode) abort
|
||||||
|
if &encoding == 'utf-8'
|
||||||
|
return nr2char(a:charcode)
|
||||||
|
endif
|
||||||
|
let char = s:nr2byte(a:charcode)
|
||||||
|
if strlen(char) > 1
|
||||||
|
let char = strtrans(iconv(char, 'utf-8', &encoding))
|
||||||
|
endif
|
||||||
|
return char
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:nr2hex(nr) abort
|
||||||
|
let n = a:nr
|
||||||
|
let r = ""
|
||||||
|
while n
|
||||||
|
let r = '0123456789ABCDEF'[n % 16] . r
|
||||||
|
let n = n / 16
|
||||||
|
endwhile
|
||||||
|
return r
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" If a ==# b, returns -1.
|
||||||
|
" If a !=# b, returns first index of different character.
|
||||||
|
function! s:diffidx(a, b) abort
|
||||||
|
return a:a ==# a:b ? -1 : strlen(s:common_head([a:a, a:b]))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:substitute_last(expr, pat, sub) abort
|
||||||
|
return substitute(a:expr, printf('.*\zs%s', a:pat), a:sub, '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:dstring(expr) abort
|
||||||
|
let x = substitute(string(a:expr), "^'\\|'$", '', 'g')
|
||||||
|
let x = substitute(x, "''", "'", 'g')
|
||||||
|
return printf('"%s"', escape(x, '"'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:lines(str) abort
|
||||||
|
return split(a:str, '\r\?\n')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_pad_with_char(str, left, right, char) abort
|
||||||
|
return repeat(a:char, a:left). a:str. repeat(a:char, a:right)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:pad_left(str, width, ...) abort
|
||||||
|
let char = get(a:, 1, ' ')
|
||||||
|
if strdisplaywidth(char) != 1
|
||||||
|
throw "vital: Data.String: Can't use non-half-width characters for padding."
|
||||||
|
endif
|
||||||
|
let left = max([0, a:width - strdisplaywidth(a:str)])
|
||||||
|
return s:_pad_with_char(a:str, left, 0, char)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:pad_right(str, width, ...) abort
|
||||||
|
let char = get(a:, 1, ' ')
|
||||||
|
if strdisplaywidth(char) != 1
|
||||||
|
throw "vital: Data.String: Can't use non-half-width characters for padding."
|
||||||
|
endif
|
||||||
|
let right = max([0, a:width - strdisplaywidth(a:str)])
|
||||||
|
return s:_pad_with_char(a:str, 0, right, char)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:pad_both_sides(str, width, ...) abort
|
||||||
|
let char = get(a:, 1, ' ')
|
||||||
|
if strdisplaywidth(char) != 1
|
||||||
|
throw "vital: Data.String: Can't use non-half-width characters for padding."
|
||||||
|
endif
|
||||||
|
let space = max([0, a:width - strdisplaywidth(a:str)])
|
||||||
|
let left = space / 2
|
||||||
|
let right = space - left
|
||||||
|
return s:_pad_with_char(a:str, left, right, char)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:pad_between_letters(str, width, ...) abort
|
||||||
|
let char = get(a:, 1, ' ')
|
||||||
|
if strdisplaywidth(char) != 1
|
||||||
|
throw "vital: Data.String: Can't use non-half-width characters for padding."
|
||||||
|
endif
|
||||||
|
let letters = split(a:str, '\zs')
|
||||||
|
let each_width = a:width / len(letters)
|
||||||
|
let str = join(map(letters, 's:pad_both_sides(v:val, each_width, char)'), '')
|
||||||
|
if a:width - strdisplaywidth(str) > 0
|
||||||
|
return char. s:pad_both_sides(str, a:width - 1, char)
|
||||||
|
endif
|
||||||
|
return str
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:justify_equal_spacing(str, width, ...) abort
|
||||||
|
let char = get(a:, 1, ' ')
|
||||||
|
if strdisplaywidth(char) != 1
|
||||||
|
throw "vital: Data.String: Can't use non-half-width characters for padding."
|
||||||
|
endif
|
||||||
|
let letters = split(a:str, '\zs')
|
||||||
|
let first_letter = letters[0]
|
||||||
|
" {width w/o the first letter} / {length w/o the first letter}
|
||||||
|
let each_width = (a:width - strdisplaywidth(first_letter)) / (len(letters) - 1)
|
||||||
|
let remainder = (a:width - strdisplaywidth(first_letter)) % (len(letters) - 1)
|
||||||
|
return first_letter. join(s:L.concat([
|
||||||
|
\ map(letters[1:remainder], 's:pad_left(v:val, each_width + 1, char)'),
|
||||||
|
\ map(letters[remainder + 1:], 's:pad_left(v:val, each_width, char)')
|
||||||
|
\ ]), '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:levenshtein_distance(str1, str2) abort
|
||||||
|
let letters1 = split(a:str1, '\zs')
|
||||||
|
let letters2 = split(a:str2, '\zs')
|
||||||
|
let length1 = len(letters1)
|
||||||
|
let length2 = len(letters2)
|
||||||
|
let distances = map(range(1, length1 + 1), 'map(range(1, length2 + 1), "0")')
|
||||||
|
|
||||||
|
for i1 in range(0, length1)
|
||||||
|
let distances[i1][0] = i1
|
||||||
|
endfor
|
||||||
|
for i2 in range(0, length2)
|
||||||
|
let distances[0][i2] = i2
|
||||||
|
endfor
|
||||||
|
|
||||||
|
for i1 in range(1, length1)
|
||||||
|
for i2 in range(1, length2)
|
||||||
|
let cost = (letters1[i1 - 1] ==# letters2[i2 - 1]) ? 0 : 1
|
||||||
|
|
||||||
|
let distances[i1][i2] = min([
|
||||||
|
\ distances[i1 - 1][i2 ] + 1,
|
||||||
|
\ distances[i1 ][i2 - 1] + 1,
|
||||||
|
\ distances[i1 - 1][i2 - 1] + cost,
|
||||||
|
\])
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return distances[length1][length2]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:padding_by_displaywidth(expr, width, float) abort
|
||||||
|
let padding_char = ' '
|
||||||
|
let n = a:width - strdisplaywidth(a:expr)
|
||||||
|
if n <= 0
|
||||||
|
let n = 0
|
||||||
|
endif
|
||||||
|
if a:float < 0
|
||||||
|
return a:expr . repeat(padding_char, n)
|
||||||
|
elseif 0 < a:float
|
||||||
|
return repeat(padding_char, n) . a:expr
|
||||||
|
else
|
||||||
|
if n % 2 is 0
|
||||||
|
return repeat(padding_char, n / 2) . a:expr . repeat(padding_char, n / 2)
|
||||||
|
else
|
||||||
|
return repeat(padding_char, (n - 1) / 2) . a:expr . repeat(padding_char, (n - 1) / 2) . padding_char
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:split_by_displaywidth(expr, width, float, is_wrap) abort
|
||||||
|
if a:width is 0
|
||||||
|
return ['']
|
||||||
|
endif
|
||||||
|
|
||||||
|
let lines = []
|
||||||
|
|
||||||
|
let cs = split(a:expr, '\zs')
|
||||||
|
let cs_index = 0
|
||||||
|
|
||||||
|
let text = ''
|
||||||
|
while cs_index < len(cs)
|
||||||
|
if cs[cs_index] is "\n"
|
||||||
|
let text = s:padding_by_displaywidth(text, a:width, a:float)
|
||||||
|
let lines += [text]
|
||||||
|
let text = ''
|
||||||
|
else
|
||||||
|
let w = strdisplaywidth(text . cs[cs_index])
|
||||||
|
|
||||||
|
if w < a:width
|
||||||
|
let text .= cs[cs_index]
|
||||||
|
elseif a:width < w
|
||||||
|
let text = s:padding_by_displaywidth(text, a:width, a:float)
|
||||||
|
else
|
||||||
|
let text .= cs[cs_index]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:width <= w
|
||||||
|
let lines += [text]
|
||||||
|
let text = ''
|
||||||
|
if a:is_wrap
|
||||||
|
if a:width < w
|
||||||
|
if a:width < strdisplaywidth(cs[cs_index])
|
||||||
|
while get(cs, cs_index, "\n") isnot "\n"
|
||||||
|
let cs_index += 1
|
||||||
|
endwhile
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
let text = cs[cs_index]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
while get(cs, cs_index, "\n") isnot "\n"
|
||||||
|
let cs_index += 1
|
||||||
|
endwhile
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
let cs_index += 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if !empty(text)
|
||||||
|
let lines += [ s:padding_by_displaywidth(text, a:width, a:float) ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
return lines
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:hash(str) abort
|
||||||
|
if exists('*sha256')
|
||||||
|
return sha256(a:str)
|
||||||
|
else
|
||||||
|
" This gives up sha256ing but just adds up char with index.
|
||||||
|
let sum = 0
|
||||||
|
for i in range(len(a:str))
|
||||||
|
let sum += char2nr(a:str[i]) * (i + 1)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return printf('%x', sum)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:truncate(str, width) abort
|
||||||
|
" Original function is from mattn.
|
||||||
|
" http://github.com/mattn/googlereader-vim/tree/master
|
||||||
|
|
||||||
|
if a:str =~# '^[\x00-\x7f]*$'
|
||||||
|
return len(a:str) < a:width ?
|
||||||
|
\ printf('%-'.a:width.'s', a:str) : strpart(a:str, 0, a:width)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let ret = a:str
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
if width > a:width
|
||||||
|
let ret = s:strwidthpart(ret, a:width)
|
||||||
|
let width = s:wcswidth(ret)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if width < a:width
|
||||||
|
let ret .= repeat(' ', a:width - width)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:truncate_skipping(str, max, footer_width, separator) abort
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
if width <= a:max
|
||||||
|
let ret = a:str
|
||||||
|
else
|
||||||
|
let header_width = a:max - s:wcswidth(a:separator) - a:footer_width
|
||||||
|
let ret = s:strwidthpart(a:str, header_width) . a:separator
|
||||||
|
\ . s:strwidthpart_reverse(a:str, a:footer_width)
|
||||||
|
endif
|
||||||
|
return s:truncate(ret, a:max)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:strwidthpart(str, width) abort
|
||||||
|
if a:width <= 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let strarr = split(a:str, '\zs')
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
let index = len(strarr)
|
||||||
|
let diff = (index + 1) / 2
|
||||||
|
let rightindex = index - 1
|
||||||
|
while width > a:width
|
||||||
|
let index = max([rightindex - diff + 1, 0])
|
||||||
|
let partwidth = s:wcswidth(join(strarr[(index):(rightindex)], ''))
|
||||||
|
if width - partwidth >= a:width || diff <= 1
|
||||||
|
let width -= partwidth
|
||||||
|
let rightindex = index - 1
|
||||||
|
endif
|
||||||
|
if diff > 1
|
||||||
|
let diff = diff / 2
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return index ? join(strarr[:index - 1], '') : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:strwidthpart_reverse(str, width) abort
|
||||||
|
if a:width <= 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let strarr = split(a:str, '\zs')
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
let strlen = len(strarr)
|
||||||
|
let diff = (strlen + 1) / 2
|
||||||
|
let leftindex = 0
|
||||||
|
let index = -1
|
||||||
|
while width > a:width
|
||||||
|
let index = min([leftindex + diff, strlen]) - 1
|
||||||
|
let partwidth = s:wcswidth(join(strarr[(leftindex):(index)], ''))
|
||||||
|
if width - partwidth >= a:width || diff <= 1
|
||||||
|
let width -= partwidth
|
||||||
|
let leftindex = index + 1
|
||||||
|
endif
|
||||||
|
if diff > 1
|
||||||
|
let diff = diff / 2
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return index < strlen ? join(strarr[(index + 1):], '') : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if v:version >= 703
|
||||||
|
" Use builtin function.
|
||||||
|
function! s:wcswidth(str) abort
|
||||||
|
return strwidth(a:str)
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:wcswidth(str) abort
|
||||||
|
if a:str =~# '^[\x00-\x7f]*$'
|
||||||
|
return strlen(a:str)
|
||||||
|
endif
|
||||||
|
let mx_first = '^\(.\)'
|
||||||
|
let str = a:str
|
||||||
|
let width = 0
|
||||||
|
while 1
|
||||||
|
let ucs = char2nr(substitute(str, mx_first, '\1', ''))
|
||||||
|
if ucs == 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let width += s:_wcwidth(ucs)
|
||||||
|
let str = substitute(str, mx_first, '', '')
|
||||||
|
endwhile
|
||||||
|
return width
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" UTF-8 only.
|
||||||
|
function! s:_wcwidth(ucs) abort
|
||||||
|
let ucs = a:ucs
|
||||||
|
if (ucs >= 0x1100
|
||||||
|
\ && (ucs <= 0x115f
|
||||||
|
\ || ucs == 0x2329
|
||||||
|
\ || ucs == 0x232a
|
||||||
|
\ || (ucs >= 0x2e80 && ucs <= 0xa4cf
|
||||||
|
\ && ucs != 0x303f)
|
||||||
|
\ || (ucs >= 0xac00 && ucs <= 0xd7a3)
|
||||||
|
\ || (ucs >= 0xf900 && ucs <= 0xfaff)
|
||||||
|
\ || (ucs >= 0xfe30 && ucs <= 0xfe6f)
|
||||||
|
\ || (ucs >= 0xff00 && ucs <= 0xff60)
|
||||||
|
\ || (ucs >= 0xffe0 && ucs <= 0xffe6)
|
||||||
|
\ || (ucs >= 0x20000 && ucs <= 0x2fffd)
|
||||||
|
\ || (ucs >= 0x30000 && ucs <= 0x3fffd)
|
||||||
|
\ ))
|
||||||
|
return 2
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||||
|
|
||||||
|
endif
|
||||||
389
autoload/vital/_crystal/Prelude.vim
Normal file
389
autoload/vital/_crystal/Prelude.vim
Normal file
@@ -0,0 +1,389 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if v:version ># 703 ||
|
||||||
|
\ (v:version is 703 && has('patch465'))
|
||||||
|
function! s:glob(expr) abort
|
||||||
|
return glob(a:expr, 1, 1)
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:glob(expr) abort
|
||||||
|
let R = glob(a:expr, 1)
|
||||||
|
return split(R, '\n')
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:globpath(path, expr) abort
|
||||||
|
let R = globpath(a:path, a:expr, 1)
|
||||||
|
return split(R, '\n')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Wrapper functions for type().
|
||||||
|
let [
|
||||||
|
\ s:__TYPE_NUMBER,
|
||||||
|
\ s:__TYPE_STRING,
|
||||||
|
\ s:__TYPE_FUNCREF,
|
||||||
|
\ s:__TYPE_LIST,
|
||||||
|
\ s:__TYPE_DICT,
|
||||||
|
\ s:__TYPE_FLOAT] = [
|
||||||
|
\ type(3),
|
||||||
|
\ type(""),
|
||||||
|
\ type(function('tr')),
|
||||||
|
\ type([]),
|
||||||
|
\ type({}),
|
||||||
|
\ has('float') ? type(str2float('0')) : -1]
|
||||||
|
" __TYPE_FLOAT = -1 when -float
|
||||||
|
" This doesn't match to anything.
|
||||||
|
|
||||||
|
" Number or Float
|
||||||
|
function! s:is_numeric(Value) abort
|
||||||
|
let _ = type(a:Value)
|
||||||
|
return _ ==# s:__TYPE_NUMBER
|
||||||
|
\ || _ ==# s:__TYPE_FLOAT
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Number
|
||||||
|
function! s:is_number(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_NUMBER
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Float
|
||||||
|
function! s:is_float(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_FLOAT
|
||||||
|
endfunction
|
||||||
|
" String
|
||||||
|
function! s:is_string(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_STRING
|
||||||
|
endfunction
|
||||||
|
" Funcref
|
||||||
|
function! s:is_funcref(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_FUNCREF
|
||||||
|
endfunction
|
||||||
|
" List
|
||||||
|
function! s:is_list(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_LIST
|
||||||
|
endfunction
|
||||||
|
" Dictionary
|
||||||
|
function! s:is_dict(Value) abort
|
||||||
|
return type(a:Value) ==# s:__TYPE_DICT
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:truncate_skipping(str, max, footer_width, separator) abort
|
||||||
|
call s:_warn_deprecated("truncate_skipping", "Data.String.truncate_skipping")
|
||||||
|
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
if width <= a:max
|
||||||
|
let ret = a:str
|
||||||
|
else
|
||||||
|
let header_width = a:max - s:wcswidth(a:separator) - a:footer_width
|
||||||
|
let ret = s:strwidthpart(a:str, header_width) . a:separator
|
||||||
|
\ . s:strwidthpart_reverse(a:str, a:footer_width)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return s:truncate(ret, a:max)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:truncate(str, width) abort
|
||||||
|
" Original function is from mattn.
|
||||||
|
" http://github.com/mattn/googlereader-vim/tree/master
|
||||||
|
|
||||||
|
call s:_warn_deprecated("truncate", "Data.String.truncate")
|
||||||
|
|
||||||
|
if a:str =~# '^[\x00-\x7f]*$'
|
||||||
|
return len(a:str) < a:width ?
|
||||||
|
\ printf('%-'.a:width.'s', a:str) : strpart(a:str, 0, a:width)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let ret = a:str
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
if width > a:width
|
||||||
|
let ret = s:strwidthpart(ret, a:width)
|
||||||
|
let width = s:wcswidth(ret)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if width < a:width
|
||||||
|
let ret .= repeat(' ', a:width - width)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:strwidthpart(str, width) abort
|
||||||
|
call s:_warn_deprecated("strwidthpart", "Data.String.strwidthpart")
|
||||||
|
|
||||||
|
if a:width <= 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let ret = a:str
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
while width > a:width
|
||||||
|
let char = matchstr(ret, '.$')
|
||||||
|
let ret = ret[: -1 - len(char)]
|
||||||
|
let width -= s:wcswidth(char)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
function! s:strwidthpart_reverse(str, width) abort
|
||||||
|
call s:_warn_deprecated("strwidthpart_reverse", "Data.String.strwidthpart_reverse")
|
||||||
|
|
||||||
|
if a:width <= 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let ret = a:str
|
||||||
|
let width = s:wcswidth(a:str)
|
||||||
|
while width > a:width
|
||||||
|
let char = matchstr(ret, '^.')
|
||||||
|
let ret = ret[len(char) :]
|
||||||
|
let width -= s:wcswidth(char)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if v:version >= 703
|
||||||
|
" Use builtin function.
|
||||||
|
function! s:wcswidth(str) abort
|
||||||
|
call s:_warn_deprecated("wcswidth", "Data.String.wcswidth")
|
||||||
|
return strwidth(a:str)
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:wcswidth(str) abort
|
||||||
|
call s:_warn_deprecated("wcswidth", "Data.String.wcswidth")
|
||||||
|
|
||||||
|
if a:str =~# '^[\x00-\x7f]*$'
|
||||||
|
return strlen(a:str)
|
||||||
|
end
|
||||||
|
|
||||||
|
let mx_first = '^\(.\)'
|
||||||
|
let str = a:str
|
||||||
|
let width = 0
|
||||||
|
while 1
|
||||||
|
let ucs = char2nr(substitute(str, mx_first, '\1', ''))
|
||||||
|
if ucs == 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let width += s:_wcwidth(ucs)
|
||||||
|
let str = substitute(str, mx_first, '', '')
|
||||||
|
endwhile
|
||||||
|
return width
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" UTF-8 only.
|
||||||
|
function! s:_wcwidth(ucs) abort
|
||||||
|
let ucs = a:ucs
|
||||||
|
if (ucs >= 0x1100
|
||||||
|
\ && (ucs <= 0x115f
|
||||||
|
\ || ucs == 0x2329
|
||||||
|
\ || ucs == 0x232a
|
||||||
|
\ || (ucs >= 0x2e80 && ucs <= 0xa4cf
|
||||||
|
\ && ucs != 0x303f)
|
||||||
|
\ || (ucs >= 0xac00 && ucs <= 0xd7a3)
|
||||||
|
\ || (ucs >= 0xf900 && ucs <= 0xfaff)
|
||||||
|
\ || (ucs >= 0xfe30 && ucs <= 0xfe6f)
|
||||||
|
\ || (ucs >= 0xff00 && ucs <= 0xff60)
|
||||||
|
\ || (ucs >= 0xffe0 && ucs <= 0xffe6)
|
||||||
|
\ || (ucs >= 0x20000 && ucs <= 0x2fffd)
|
||||||
|
\ || (ucs >= 0x30000 && ucs <= 0x3fffd)
|
||||||
|
\ ))
|
||||||
|
return 2
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:is_windows = has('win16') || has('win32') || has('win64') || has('win95')
|
||||||
|
let s:is_cygwin = has('win32unix')
|
||||||
|
let s:is_mac = !s:is_windows && !s:is_cygwin
|
||||||
|
\ && (has('mac') || has('macunix') || has('gui_macvim') ||
|
||||||
|
\ (!isdirectory('/proc') && executable('sw_vers')))
|
||||||
|
let s:is_unix = has('unix')
|
||||||
|
|
||||||
|
function! s:is_windows() abort
|
||||||
|
return s:is_windows
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_cygwin() abort
|
||||||
|
return s:is_cygwin
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_mac() abort
|
||||||
|
return s:is_mac
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_unix() abort
|
||||||
|
return s:is_unix
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_warn_deprecated(name, alternative) abort
|
||||||
|
try
|
||||||
|
echohl Error
|
||||||
|
echomsg "Prelude." . a:name . " is deprecated! Please use " . a:alternative . " instead."
|
||||||
|
finally
|
||||||
|
echohl None
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:smart_execute_command(action, word) abort
|
||||||
|
execute a:action . ' ' . (a:word == '' ? '' : '`=a:word`')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:escape_file_searching(buffer_name) abort
|
||||||
|
return escape(a:buffer_name, '*[]?{}, ')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:escape_pattern(str) abort
|
||||||
|
return escape(a:str, '~"\.^$[]*')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:getchar(...) abort
|
||||||
|
let c = call('getchar', a:000)
|
||||||
|
return type(c) == type(0) ? nr2char(c) : c
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:getchar_safe(...) abort
|
||||||
|
let c = s:input_helper('getchar', a:000)
|
||||||
|
return type(c) == type("") ? c : nr2char(c)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:input_safe(...) abort
|
||||||
|
return s:input_helper('input', a:000)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:input_helper(funcname, args) abort
|
||||||
|
let success = 0
|
||||||
|
if inputsave() !=# success
|
||||||
|
throw 'vital: Prelude: inputsave() failed'
|
||||||
|
endif
|
||||||
|
try
|
||||||
|
return call(a:funcname, a:args)
|
||||||
|
finally
|
||||||
|
if inputrestore() !=# success
|
||||||
|
throw 'vital: Prelude: inputrestore() failed'
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:set_default(var, val) abort
|
||||||
|
if !exists(a:var) || type({a:var}) != type(a:val)
|
||||||
|
let {a:var} = a:val
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:substitute_path_separator(path) abort
|
||||||
|
return s:is_windows ? substitute(a:path, '\\', '/', 'g') : a:path
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:path2directory(path) abort
|
||||||
|
return s:substitute_path_separator(isdirectory(a:path) ? a:path : fnamemodify(a:path, ':p:h'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_path2project_directory_git(path) abort
|
||||||
|
let parent = a:path
|
||||||
|
|
||||||
|
while 1
|
||||||
|
let path = parent . '/.git'
|
||||||
|
if isdirectory(path) || filereadable(path)
|
||||||
|
return parent
|
||||||
|
endif
|
||||||
|
let next = fnamemodify(parent, ':h')
|
||||||
|
if next == parent
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let parent = next
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_path2project_directory_svn(path) abort
|
||||||
|
let search_directory = a:path
|
||||||
|
let directory = ''
|
||||||
|
|
||||||
|
let find_directory = s:escape_file_searching(search_directory)
|
||||||
|
let d = finddir('.svn', find_directory . ';')
|
||||||
|
if d == ''
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let directory = fnamemodify(d, ':p:h:h')
|
||||||
|
|
||||||
|
" Search parent directories.
|
||||||
|
let parent_directory = s:path2directory(
|
||||||
|
\ fnamemodify(directory, ':h'))
|
||||||
|
|
||||||
|
if parent_directory != ''
|
||||||
|
let d = finddir('.svn', parent_directory . ';')
|
||||||
|
if d != ''
|
||||||
|
let directory = s:_path2project_directory_svn(parent_directory)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return directory
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_path2project_directory_others(vcs, path) abort
|
||||||
|
let vcs = a:vcs
|
||||||
|
let search_directory = a:path
|
||||||
|
|
||||||
|
let find_directory = s:escape_file_searching(search_directory)
|
||||||
|
let d = finddir(vcs, find_directory . ';')
|
||||||
|
if d == ''
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
return fnamemodify(d, ':p:h:h')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:path2project_directory(path, ...) abort
|
||||||
|
let is_allow_empty = get(a:000, 0, 0)
|
||||||
|
let search_directory = s:path2directory(a:path)
|
||||||
|
let directory = ''
|
||||||
|
|
||||||
|
" Search VCS directory.
|
||||||
|
for vcs in ['.git', '.bzr', '.hg', '.svn']
|
||||||
|
if vcs ==# '.git'
|
||||||
|
let directory = s:_path2project_directory_git(search_directory)
|
||||||
|
elseif vcs ==# '.svn'
|
||||||
|
let directory = s:_path2project_directory_svn(search_directory)
|
||||||
|
else
|
||||||
|
let directory = s:_path2project_directory_others(vcs, search_directory)
|
||||||
|
endif
|
||||||
|
if directory != ''
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Search project file.
|
||||||
|
if directory == ''
|
||||||
|
for d in ['build.xml', 'prj.el', '.project', 'pom.xml', 'package.json',
|
||||||
|
\ 'Makefile', 'configure', 'Rakefile', 'NAnt.build',
|
||||||
|
\ 'P4CONFIG', 'tags', 'gtags']
|
||||||
|
let d = findfile(d, s:escape_file_searching(search_directory) . ';')
|
||||||
|
if d != ''
|
||||||
|
let directory = fnamemodify(d, ':p:h')
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
if directory == ''
|
||||||
|
" Search /src/ directory.
|
||||||
|
let base = s:substitute_path_separator(search_directory)
|
||||||
|
if base =~# '/src/'
|
||||||
|
let directory = base[: strridx(base, '/src/') + 3]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if directory == '' && !is_allow_empty
|
||||||
|
" Use original path.
|
||||||
|
let directory = search_directory
|
||||||
|
endif
|
||||||
|
|
||||||
|
return s:substitute_path_separator(directory)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||||
|
|
||||||
|
endif
|
||||||
185
autoload/vital/_crystal/Process.vim
Normal file
185
autoload/vital/_crystal/Process.vim
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
" TODO: move all comments to doc file.
|
||||||
|
"
|
||||||
|
"
|
||||||
|
" FIXME: This module name should be Vital.System ?
|
||||||
|
" But the name has been already taken.
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
|
||||||
|
" FIXME: Unfortunately, can't use s:_vital_loaded() for this purpose.
|
||||||
|
" Because these variables are used when this script file is loaded.
|
||||||
|
let s:is_windows = has('win16') || has('win32') || has('win64') || has('win95')
|
||||||
|
let s:is_unix = has('unix')
|
||||||
|
" As of 7.4.122, the system()'s 1st argument is converted internally by Vim.
|
||||||
|
" Note that Patch 7.4.122 does not convert system()'s 2nd argument and
|
||||||
|
" return-value. We must convert them manually.
|
||||||
|
let s:need_trans = v:version < 704 || (v:version == 704 && !has('patch122'))
|
||||||
|
|
||||||
|
let s:TYPE_DICT = type({})
|
||||||
|
let s:TYPE_LIST = type([])
|
||||||
|
let s:TYPE_STRING = type("")
|
||||||
|
|
||||||
|
|
||||||
|
" Execute program in the background from Vim.
|
||||||
|
" Return an empty string always.
|
||||||
|
"
|
||||||
|
" If a:expr is a List, shellescape() each argument.
|
||||||
|
" If a:expr is a String, the arguments are passed as-is.
|
||||||
|
"
|
||||||
|
" Windows:
|
||||||
|
" Using :!start , execute program without via cmd.exe.
|
||||||
|
" Spawning 'expr' with 'noshellslash'
|
||||||
|
" keep special characters from unwanted expansion.
|
||||||
|
" (see :help shellescape())
|
||||||
|
"
|
||||||
|
" Unix:
|
||||||
|
" using :! , execute program in the background by shell.
|
||||||
|
function! s:spawn(expr, ...) abort
|
||||||
|
let shellslash = 0
|
||||||
|
if s:is_windows
|
||||||
|
let shellslash = &l:shellslash
|
||||||
|
setlocal noshellslash
|
||||||
|
endif
|
||||||
|
try
|
||||||
|
if type(a:expr) is s:TYPE_LIST
|
||||||
|
let special = 1
|
||||||
|
let cmdline = join(map(a:expr, 'shellescape(v:val, special)'), ' ')
|
||||||
|
elseif type(a:expr) is s:TYPE_STRING
|
||||||
|
let cmdline = a:expr
|
||||||
|
if a:0 && a:1
|
||||||
|
" for :! command
|
||||||
|
let cmdline = substitute(cmdline, '\([!%#]\|<[^<>]\+>\)', '\\\1', 'g')
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
throw 'Process.spawn(): invalid argument (value type:'.type(a:expr).')'
|
||||||
|
endif
|
||||||
|
if s:is_windows
|
||||||
|
silent execute '!start' cmdline
|
||||||
|
else
|
||||||
|
silent execute '!' cmdline '&'
|
||||||
|
endif
|
||||||
|
finally
|
||||||
|
if s:is_windows
|
||||||
|
let &l:shellslash = shellslash
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" iconv() wrapper for safety.
|
||||||
|
function! s:iconv(expr, from, to) abort
|
||||||
|
if a:from == '' || a:to == '' || a:from ==? a:to
|
||||||
|
return a:expr
|
||||||
|
endif
|
||||||
|
let result = iconv(a:expr, a:from, a:to)
|
||||||
|
return result != '' ? result : a:expr
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Check vimproc.
|
||||||
|
function! s:has_vimproc() abort
|
||||||
|
if !exists('s:exists_vimproc')
|
||||||
|
try
|
||||||
|
call vimproc#version()
|
||||||
|
let s:exists_vimproc = 1
|
||||||
|
catch
|
||||||
|
let s:exists_vimproc = 0
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
return s:exists_vimproc
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" * {command} [, {input} [, {timeout}]]
|
||||||
|
" * {command} [, {dict}]
|
||||||
|
" {dict} = {
|
||||||
|
" use_vimproc: bool,
|
||||||
|
" input: string,
|
||||||
|
" timeout: bool,
|
||||||
|
" background: bool,
|
||||||
|
" }
|
||||||
|
function! s:system(str, ...) abort
|
||||||
|
" Process optional arguments at first
|
||||||
|
" because use_vimproc is required later
|
||||||
|
" for a:str argument.
|
||||||
|
let input = ''
|
||||||
|
let use_vimproc = s:has_vimproc()
|
||||||
|
let background = 0
|
||||||
|
let args = []
|
||||||
|
if a:0 ==# 1
|
||||||
|
" {command} [, {dict}]
|
||||||
|
" a:1 = {dict}
|
||||||
|
if type(a:1) is s:TYPE_DICT
|
||||||
|
if has_key(a:1, 'use_vimproc')
|
||||||
|
let use_vimproc = a:1.use_vimproc
|
||||||
|
endif
|
||||||
|
if has_key(a:1, 'input')
|
||||||
|
let args += [s:iconv(a:1.input, &encoding, 'char')]
|
||||||
|
endif
|
||||||
|
if use_vimproc && has_key(a:1, 'timeout')
|
||||||
|
" ignores timeout unless you have vimproc.
|
||||||
|
let args += [a:1.timeout]
|
||||||
|
endif
|
||||||
|
if has_key(a:1, 'background')
|
||||||
|
let background = a:1.background
|
||||||
|
endif
|
||||||
|
elseif type(a:1) is s:TYPE_STRING
|
||||||
|
let args += [s:iconv(a:1, &encoding, 'char')]
|
||||||
|
else
|
||||||
|
throw 'Process.system(): invalid argument (value type:'.type(a:1).')'
|
||||||
|
endif
|
||||||
|
elseif a:0 >= 2
|
||||||
|
" {command} [, {input} [, {timeout}]]
|
||||||
|
" a:000 = [{input} [, {timeout}]]
|
||||||
|
let [input; rest] = a:000
|
||||||
|
let input = s:iconv(input, &encoding, 'char')
|
||||||
|
let args += [input] + rest
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Process a:str argument.
|
||||||
|
if type(a:str) is s:TYPE_LIST
|
||||||
|
let expr = use_vimproc ? '"''" . v:val . "''"' : 's:shellescape(v:val)'
|
||||||
|
let command = join(map(copy(a:str), expr), ' ')
|
||||||
|
elseif type(a:str) is s:TYPE_STRING
|
||||||
|
let command = a:str
|
||||||
|
else
|
||||||
|
throw 'Process.system(): invalid argument (value type:'.type(a:str).')'
|
||||||
|
endif
|
||||||
|
if s:need_trans
|
||||||
|
let command = s:iconv(command, &encoding, 'char')
|
||||||
|
endif
|
||||||
|
let args = [command] + args
|
||||||
|
if background && (use_vimproc || !s:is_windows)
|
||||||
|
let args[0] = args[0] . ' &'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let funcname = use_vimproc ? 'vimproc#system' : 'system'
|
||||||
|
let output = call(funcname, args)
|
||||||
|
let output = s:iconv(output, 'char', &encoding)
|
||||||
|
return output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_last_status() abort
|
||||||
|
return s:has_vimproc() ?
|
||||||
|
\ vimproc#get_last_status() : v:shell_error
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if s:is_windows
|
||||||
|
function! s:shellescape(command) abort
|
||||||
|
return substitute(a:command, '[&()[\]{}^=;!''+,`~]', '^\0', 'g')
|
||||||
|
endfunction
|
||||||
|
else
|
||||||
|
function! s:shellescape(...) abort
|
||||||
|
return call('shellescape', a:000)
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||||
|
|
||||||
|
endif
|
||||||
112
autoload/vital/_crystal/Web/JSON.vim
Normal file
112
autoload/vital/_crystal/Web/JSON.vim
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
function! s:_true() abort
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_false() abort
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_null() abort
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:const = {}
|
||||||
|
let s:const.true = function('s:_true')
|
||||||
|
let s:const.false = function('s:_false')
|
||||||
|
let s:const.null = function('s:_null')
|
||||||
|
|
||||||
|
function! s:_resolve(val, prefix) abort
|
||||||
|
let t = type(a:val)
|
||||||
|
if t == type('')
|
||||||
|
let m = matchlist(a:val, '^' . a:prefix . '\(null\|true\|false\)$')
|
||||||
|
if !empty(m)
|
||||||
|
return s:const[m[1]]
|
||||||
|
endif
|
||||||
|
elseif t == type([]) || t == type({})
|
||||||
|
return map(a:val, 's:_resolve(v:val, a:prefix)')
|
||||||
|
endif
|
||||||
|
return a:val
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! s:_vital_created(module) abort
|
||||||
|
" define constant variables
|
||||||
|
call extend(a:module, s:const)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_vital_loaded(V) abort
|
||||||
|
let s:V = a:V
|
||||||
|
let s:string = s:V.import('Data.String')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:_vital_depends() abort
|
||||||
|
return ['Data.String']
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" @vimlint(EVL102, 1, l:null)
|
||||||
|
" @vimlint(EVL102, 1, l:true)
|
||||||
|
" @vimlint(EVL102, 1, l:false)
|
||||||
|
function! s:decode(json, ...) abort
|
||||||
|
let settings = extend({
|
||||||
|
\ 'use_token': 0,
|
||||||
|
\}, get(a:000, 0, {}))
|
||||||
|
let json = iconv(a:json, "utf-8", &encoding)
|
||||||
|
let json = join(split(json, "\n"), '')
|
||||||
|
let json = substitute(json, '\\u34;', '\\"', 'g')
|
||||||
|
let json = substitute(json, '\\u\(\x\x\x\x\)', '\=s:string.nr2enc_char("0x".submatch(1))', 'g')
|
||||||
|
if settings.use_token
|
||||||
|
let prefix = '__Web.JSON__'
|
||||||
|
while stridx(json, prefix) != -1
|
||||||
|
let prefix .= '_'
|
||||||
|
endwhile
|
||||||
|
let [null,true,false] = map(['null','true','false'], 'prefix . v:val')
|
||||||
|
sandbox return s:_resolve(eval(json), prefix)
|
||||||
|
else
|
||||||
|
let [null,true,false] = [s:const.null(),s:const.true(),s:const.false()]
|
||||||
|
sandbox return eval(json)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" @vimlint(EVL102, 0, l:null)
|
||||||
|
" @vimlint(EVL102, 0, l:true)
|
||||||
|
" @vimlint(EVL102, 0, l:false)
|
||||||
|
|
||||||
|
function! s:encode(val) abort
|
||||||
|
if type(a:val) == 0
|
||||||
|
return a:val
|
||||||
|
elseif type(a:val) == 1
|
||||||
|
let json = '"' . escape(a:val, '\"') . '"'
|
||||||
|
let json = substitute(json, "\r", '\\r', 'g')
|
||||||
|
let json = substitute(json, "\n", '\\n', 'g')
|
||||||
|
let json = substitute(json, "\t", '\\t', 'g')
|
||||||
|
return iconv(json, &encoding, "utf-8")
|
||||||
|
elseif type(a:val) == 2
|
||||||
|
if s:const.true == a:val
|
||||||
|
return 'true'
|
||||||
|
elseif s:const.false == a:val
|
||||||
|
return 'false'
|
||||||
|
elseif s:const.null == a:val
|
||||||
|
return 'null'
|
||||||
|
else
|
||||||
|
" backward compatibility
|
||||||
|
return string(a:val)
|
||||||
|
endif
|
||||||
|
elseif type(a:val) == 3
|
||||||
|
return '[' . join(map(copy(a:val), 's:encode(v:val)'), ',') . ']'
|
||||||
|
elseif type(a:val) == 4
|
||||||
|
return '{' . join(map(keys(a:val), 's:encode(v:val).":".s:encode(a:val[v:val])'), ',') . '}'
|
||||||
|
else
|
||||||
|
return string(a:val)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
|
||||||
|
|
||||||
" Vim completion for WAI-ARIA data file
|
" Vim completion for WAI-ARIA data file
|
||||||
" Language: HTML + WAI-ARIA
|
" Language: HTML + WAI-ARIA
|
||||||
" Maintainer: othree <othree@gmail.com>
|
" Maintainer: othree <othree@gmail.com>
|
||||||
@@ -230,3 +232,5 @@ let g:xmldata_aria = {
|
|||||||
\ 'default_role': default_role,
|
\ 'default_role': default_role,
|
||||||
\ 'vimariaattrinfo': aria_attributes_value
|
\ 'vimariaattrinfo': aria_attributes_value
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
|
||||||
|
|
||||||
" Vim completion for HTML5 data file
|
" Vim completion for HTML5 data file
|
||||||
" Language: HTML5
|
" Language: HTML (version 5.1 Draft 2016 Jan 13)
|
||||||
" Maintainer: othree <othree@gmail.com>
|
" Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com )
|
||||||
" Last Change: 2011 Apr 9
|
" Last Change: 2016 Jan 20
|
||||||
|
|
||||||
|
|
||||||
" Lang Tag: {{{
|
" Lang Tag: {{{
|
||||||
@@ -324,7 +326,7 @@ endif
|
|||||||
|
|
||||||
" Ref: http://dev.w3.org/html5/markup/
|
" Ref: http://dev.w3.org/html5/markup/
|
||||||
" Version: Draft 05 April 2011
|
" Version: Draft 05 April 2011
|
||||||
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']
|
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'picture', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']
|
||||||
|
|
||||||
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
||||||
|
|
||||||
@@ -342,7 +344,7 @@ let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|t
|
|||||||
|
|
||||||
let g:xmldata_html5 = {
|
let g:xmldata_html5 = {
|
||||||
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
|
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
|
||||||
\ 'vimxmlroot': ['html'],
|
\ 'vimxmlroot': ['html', 'head', 'body'] + flow_elements,
|
||||||
\ 'a': [
|
\ 'a': [
|
||||||
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
||||||
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
||||||
@@ -545,7 +547,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'iframe': [
|
\ 'iframe': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'src': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', '']})
|
\ extend(copy(global_attributes), {'src': [], 'srcdoc': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', '']})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'img': [
|
\ 'img': [
|
||||||
\ [],
|
\ [],
|
||||||
@@ -553,7 +555,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'input': [
|
\ 'input': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'color'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'ins': [
|
\ 'ins': [
|
||||||
\ flow_elements,
|
\ flow_elements,
|
||||||
@@ -596,12 +598,16 @@ let g:xmldata_html5 = {
|
|||||||
\ global_attributes
|
\ global_attributes
|
||||||
\ ],
|
\ ],
|
||||||
\ 'menu': [
|
\ 'menu': [
|
||||||
\ flow_elements + ['li'],
|
\ flow_elements + ['menuitem'],
|
||||||
\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': []})
|
\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'menuitem': [
|
||||||
|
\ flow_elements + ['li'],
|
||||||
|
\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': [], 'icon': [], 'disabled': [], 'checked': [], 'radiogroup': [], 'default': [], 'command': []})
|
||||||
|
\ ],
|
||||||
\ 'meta': [
|
\ 'meta': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'name': [], 'http-equiv': ['refresh', 'default-style', 'content-type'], 'content': [], 'charset': charset})
|
\ extend(copy(global_attributes), {'name': ['application-name', 'author', 'description', 'generator', 'referrer', 'creator', 'googlebot', 'publisher', 'robots', 'slurp', 'viewport', 'theme-color'], 'http-equiv': ['refresh', 'default-style', 'content-type'], 'content': [], 'charset': charset})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'meter': [
|
\ 'meter': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
@@ -643,6 +649,10 @@ let g:xmldata_html5 = {
|
|||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'name': [], 'value': []})
|
\ extend(copy(global_attributes), {'name': [], 'value': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'picture': [
|
||||||
|
\ flow_elements + ['source'],
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'pre': [
|
\ 'pre': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
@@ -655,6 +665,10 @@ let g:xmldata_html5 = {
|
|||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ extend(copy(global_attributes), {'cite': []})
|
\ extend(copy(global_attributes), {'cite': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'rb': [
|
||||||
|
\ phrasing_elements,
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'rp': [
|
\ 'rp': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
@@ -663,10 +677,14 @@ let g:xmldata_html5 = {
|
|||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
\ ],
|
\ ],
|
||||||
\ 'ruby': [
|
\ 'rtc': [
|
||||||
\ phrasing_elements + ['rp', 'rt'],
|
\ phrasing_elements + ['rp', 'rt'],
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'ruby': [
|
||||||
|
\ phrasing_elements + ['rb', 'rp', 'rt', 'rtc'],
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'samp': [
|
\ 'samp': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
@@ -693,7 +711,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'source': [
|
\ 'source': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': []})
|
\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': [], 'srcset': [], 'sizes': []})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'span': [
|
\ 'span': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
@@ -811,3 +829,5 @@ let g:xmldata_html5 = {
|
|||||||
\ 'wbr': ['/>', ''],
|
\ 'wbr': ['/>', ''],
|
||||||
\ },
|
\ },
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
115
build
115
build
@@ -3,13 +3,22 @@
|
|||||||
set -E
|
set -E
|
||||||
|
|
||||||
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
||||||
|
DIRS_BASIC="syntax compiler indent ftdetect after/syntax after/indent after/ftdetect"
|
||||||
|
DIRS_ALL="syntax indent compiler autoload ftplugin ftdetect after"
|
||||||
|
|
||||||
|
OUTPUT=""
|
||||||
|
|
||||||
|
output() {
|
||||||
|
OUTPUT="$OUTPUT$1"
|
||||||
|
printf -- "$1"
|
||||||
|
}
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
for pack in $1; do
|
for pack in $1; do
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
rm -rf "$dir"
|
rm -rf "$dir"
|
||||||
(git clone -q --recursive "https://github.com/$path.git" "$dir" && printf '.') &
|
(mkdir -p "$dir" && curl --silent -L https://codeload.github.com/$path/tar.gz/master | tar -zx -C "$dir" --strip 1 && printf '.') &
|
||||||
done
|
done
|
||||||
|
|
||||||
wait
|
wait
|
||||||
@@ -21,30 +30,33 @@ extract() {
|
|||||||
name="$(printf "$pack" | cut -d ':' -f 1)"
|
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
printf -- "- [$name](https://github.com/$path) ("
|
directories="DIRS$(printf "$pack" | cut -d ':' -f 3)"
|
||||||
|
subtree="$(printf "$pack" | cut -d ':' -f 4)"
|
||||||
|
output "- [$name](https://github.com/$path) ("
|
||||||
|
|
||||||
subdirs=""
|
subdirs=""
|
||||||
for subdir in $DIRS; do
|
for subdir in ${!directories}; do
|
||||||
if [ -d "$dir/$subdir" ]; then
|
if [ -d "${dir}${subtree:-/}${subdir}" ]; then
|
||||||
base="$(basename "$subdir")"
|
base="$(basename "$subdir")"
|
||||||
if [[ "$subdirs" != *"$base"* ]]; then
|
if [[ "$subdirs" != *"$base"* ]]; then
|
||||||
subdirs="$subdirs, $base"
|
subdirs="$subdirs, $base"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
copy_dir "$dir" "$subdir"
|
copy_dir "${dir}${subtree}" "$subdir" "$name"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
printf "${subdirs##, })\n"
|
output "${subdirs##, })\n"
|
||||||
done
|
done
|
||||||
|
|
||||||
for pack in $1; do
|
for pack in $1; do
|
||||||
name="$(printf "$pack" | cut -d ':' -f 1)"
|
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
|
subtree="$(printf "$pack" | cut -d ':' -f 4)"
|
||||||
|
|
||||||
if [ -d "$dir/plugin" ]; then
|
if [ -d "$dir${subtree:-/}plugin" ]; then
|
||||||
printf "Possible error (plugin directory exists): $path\n"
|
printf "Possible error (plugin directory exists): $path\n"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -55,7 +67,9 @@ copy_dir() {
|
|||||||
file_path="$(dirname "${file##$1/}")"
|
file_path="$(dirname "${file##$1/}")"
|
||||||
mkdir -p "$file_path"
|
mkdir -p "$file_path"
|
||||||
touch "$file_path/$(basename "$file")"
|
touch "$file_path/$(basename "$file")"
|
||||||
cat $file >> $file_path/$(basename "$file")
|
|
||||||
|
# Use comma instead of / to handle cases like c/c++
|
||||||
|
sed -e "s,%%PACK%%,$3," -e "/%%CONTENT%%/{r $file" -e "d;}" plugin_guard.vim.template >> $file_path/$(basename "$file")
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,65 +79,118 @@ concat_ftdetect() {
|
|||||||
mv tmp/polyglot.vim ftdetect/
|
mv tmp/polyglot.vim ftdetect/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_readme() {
|
||||||
|
OLD_README="$(cat README.md)"
|
||||||
|
|
||||||
|
ed README.md <<- EOF
|
||||||
|
/Language packs
|
||||||
|
+2kb
|
||||||
|
/##
|
||||||
|
'b,-2c
|
||||||
|
$(printf -- "$OUTPUT")
|
||||||
|
.
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
PACKS="
|
PACKS="
|
||||||
|
ansible:pearofducks/ansible-vim
|
||||||
arduino:sudar/vim-arduino-syntax
|
arduino:sudar/vim-arduino-syntax
|
||||||
|
blade:jwalton512/vim-blade
|
||||||
c++11:octol/vim-cpp-enhanced-highlight
|
c++11:octol/vim-cpp-enhanced-highlight
|
||||||
c/c++:vim-jp/cpp-vim
|
c/c++:vim-jp/vim-cpp
|
||||||
|
cjsx:mtscout6/vim-cjsx
|
||||||
clojure:guns/vim-clojure-static
|
clojure:guns/vim-clojure-static
|
||||||
coffee-script:kchmck/vim-coffee-script
|
coffee-script:kchmck/vim-coffee-script
|
||||||
csv:chrisbra/csv.vim
|
cryptol:victoredwardocallaghan/cryptol.vim
|
||||||
|
crystal:rhysd/vim-crystal
|
||||||
|
cql:elubow/cql-vim
|
||||||
|
css:JulesWang/css.vim
|
||||||
cucumber:tpope/vim-cucumber
|
cucumber:tpope/vim-cucumber
|
||||||
|
dart:dart-lang/dart-vim-plugin
|
||||||
dockerfile:honza/dockerfile.vim
|
dockerfile:honza/dockerfile.vim
|
||||||
elixir:elixir-lang/vim-elixir
|
elixir:elixir-lang/vim-elixir
|
||||||
erlang:oscarh/vimerl
|
elm:lambdatoast/elm.vim
|
||||||
|
emberscript:heartsentwined/vim-ember-script
|
||||||
|
emblem:heartsentwined/vim-emblem
|
||||||
|
erlang:vim-erlang/vim-erlang-runtime
|
||||||
|
fish:dag/vim-fish
|
||||||
git:tpope/vim-git
|
git:tpope/vim-git
|
||||||
go:jnwhiteh/vim-golang
|
glsl:tikhomirov/vim-glsl
|
||||||
|
go:fatih/vim-go:_BASIC
|
||||||
|
groovy:vim-scripts/groovy.vim
|
||||||
haml:tpope/vim-haml
|
haml:tpope/vim-haml
|
||||||
handlebars:mustache/vim-mustache-handlebars
|
handlebars:mustache/vim-mustache-handlebars
|
||||||
haskell:travitch/hasksyn
|
haskell:neovimhaskell/haskell-vim
|
||||||
|
haxe:yaymukund/vim-haxe
|
||||||
html5:othree/html5.vim
|
html5:othree/html5.vim
|
||||||
jade:digitaltoad/vim-jade
|
jasmine:glanotte/vim-jasmine
|
||||||
javascript:pangloss/vim-javascript
|
javascript:pangloss/vim-javascript
|
||||||
json:leshill/vim-json
|
json:sheerun/vim-json
|
||||||
jst:briancollins/vim-jst
|
jst:briancollins/vim-jst
|
||||||
|
jsx:mxw/vim-jsx:_ALL
|
||||||
|
julia:dcjones/julia-minimalist-vim
|
||||||
|
kotlin:udalov/kotlin-vim
|
||||||
latex:LaTeX-Box-Team/LaTeX-Box
|
latex:LaTeX-Box-Team/LaTeX-Box
|
||||||
less:groenewege/vim-less
|
less:groenewege/vim-less
|
||||||
|
liquid:tpope/vim-liquid
|
||||||
markdown:tpope/vim-markdown
|
markdown:tpope/vim-markdown
|
||||||
nginx:mutewinter/nginx.vim
|
nginx:nginx/nginx::/contrib/vim/
|
||||||
|
nim:zah/nim.vim:_BASIC
|
||||||
|
nix:spwhitt/vim-nix
|
||||||
|
objc:b4winckler/vim-objc
|
||||||
ocaml:jrk/vim-ocaml
|
ocaml:jrk/vim-ocaml
|
||||||
octave:vim-scripts/octave.vim--
|
octave:vim-scripts/octave.vim--
|
||||||
opencl:petRUShka/vim-opencl
|
opencl:petRUShka/vim-opencl
|
||||||
perl:vim-perl/vim-perl
|
perl:vim-perl/vim-perl
|
||||||
|
pgsql:exu/pgsql.vim
|
||||||
php:StanAngeloff/php.vim
|
php:StanAngeloff/php.vim
|
||||||
puppet:ajf/puppet-vim
|
plantuml:aklt/plantuml-syntax
|
||||||
|
powershell:Persistent13/vim-ps1
|
||||||
protobuf:uarun/vim-protobuf
|
protobuf:uarun/vim-protobuf
|
||||||
python:vim-scripts/python.vim--Vasiliev
|
pug:digitaltoad/vim-pug
|
||||||
|
puppet:voxpupuli/vim-puppet
|
||||||
|
purescript:raichoo/purescript-vim
|
||||||
|
python:mitsuhiko/vim-python-combined
|
||||||
|
qml:peterhoeg/vim-qml
|
||||||
r-lang:vim-scripts/R.vim
|
r-lang:vim-scripts/R.vim
|
||||||
|
ragel:jneen/ragel.vim
|
||||||
rspec:sheerun/rspec.vim
|
rspec:sheerun/rspec.vim
|
||||||
ruby:vim-ruby/vim-ruby
|
ruby:vim-ruby/vim-ruby
|
||||||
rust:wting/rust.vim
|
rust:rust-lang/rust.vim
|
||||||
sbt:derekwyatt/vim-sbt
|
sbt:derekwyatt/vim-sbt
|
||||||
scala:derekwyatt/vim-scala
|
scala:derekwyatt/vim-scala
|
||||||
slim:slim-template/vim-slim
|
slim:slim-template/vim-slim
|
||||||
|
solidity:ethereum/vim-solidity
|
||||||
stylus:wavded/vim-stylus
|
stylus:wavded/vim-stylus
|
||||||
|
swift:keith/swift.vim
|
||||||
|
systemd:kurayama/systemd-vim-syntax
|
||||||
textile:timcharper/textile.vim
|
textile:timcharper/textile.vim
|
||||||
tmux:acustodioo/vim-tmux
|
thrift:solarnz/thrift.vim
|
||||||
tomdoc:duwanis/tomdoc.vim
|
tmux:tejr/vim-tmux
|
||||||
|
tomdoc:wellbredgrapefruit/tomdoc.vim
|
||||||
|
toml:cespare/vim-toml
|
||||||
|
twig:evidens/vim-twig
|
||||||
typescript:leafgarland/typescript-vim
|
typescript:leafgarland/typescript-vim
|
||||||
|
vala:tkztmk/vim-vala
|
||||||
vbnet:vim-scripts/vbnet.vim
|
vbnet:vim-scripts/vbnet.vim
|
||||||
twig:beyondwords/vim-twig
|
vcl:smerrill/vcl-vim-plugin
|
||||||
|
vm:lepture/vim-velocity
|
||||||
xls:vim-scripts/XSLT-syntax
|
xls:vim-scripts/XSLT-syntax
|
||||||
|
yaml:stephpy/vim-yaml
|
||||||
yard:sheerun/vim-yardoc
|
yard:sheerun/vim-yardoc
|
||||||
css-color:gorodinskiy/vim-coloresque
|
|
||||||
"
|
"
|
||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
rm -rf $DIRS
|
rm -rf $DIRS_ALL
|
||||||
mkdir tmp
|
mkdir tmp
|
||||||
|
|
||||||
printf "Downloading packs..."
|
printf "Downloading packs..."
|
||||||
download "$PACKS"
|
download "$PACKS"
|
||||||
extract "$PACKS"
|
extract "$PACKS"
|
||||||
concat_ftdetect
|
concat_ftdetect
|
||||||
|
update_readme
|
||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -13,3 +15,5 @@ call coffee#CoffeeSetUpVariables()
|
|||||||
exec 'CompilerSet makeprg=' . escape(g:coffee_cake . ' ' .
|
exec 'CompilerSet makeprg=' . escape(g:coffee_cake . ' ' .
|
||||||
\ g:coffee_cake_options . ' $*', ' ')
|
\ g:coffee_cake_options . ' $*', ' ')
|
||||||
call coffee#CoffeeSetUpErrorFormat()
|
call coffee#CoffeeSetUpErrorFormat()
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
69
compiler/cargo.vim
Normal file
69
compiler/cargo.vim
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Cargo Compiler
|
||||||
|
" Maintainer: Damien Radtke <damienradtke@gmail.com>
|
||||||
|
" Latest Revision: 2014 Sep 24
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
runtime compiler/rustc.vim
|
||||||
|
let current_compiler = "cargo"
|
||||||
|
|
||||||
|
if exists(':CompilerSet') != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('g:cargo_makeprg_params')
|
||||||
|
execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*'
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=cargo\ $*
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Allow a configurable global Cargo.toml name. This makes it easy to
|
||||||
|
" support variations like 'cargo.toml'.
|
||||||
|
let s:cargo_manifest_name = get(g:, 'cargo_manifest_name', 'Cargo.toml')
|
||||||
|
|
||||||
|
function! s:is_absolute(path)
|
||||||
|
return a:path[0] == '/' || a:path =~ '[A-Z]\+:'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:local_manifest = findfile(s:cargo_manifest_name, '.;')
|
||||||
|
if s:local_manifest != ''
|
||||||
|
let s:local_manifest = fnamemodify(s:local_manifest, ':p:h').'/'
|
||||||
|
augroup cargo
|
||||||
|
au!
|
||||||
|
au QuickfixCmdPost make call s:FixPaths()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" FixPaths() is run after Cargo, and is used to change the file paths
|
||||||
|
" to be relative to the current directory instead of Cargo.toml.
|
||||||
|
function! s:FixPaths()
|
||||||
|
let qflist = getqflist()
|
||||||
|
let manifest = s:local_manifest
|
||||||
|
for qf in qflist
|
||||||
|
if !qf.valid
|
||||||
|
let m = matchlist(qf.text, '(file://\(.*\))$')
|
||||||
|
if !empty(m)
|
||||||
|
let manifest = m[1].'/'
|
||||||
|
" Manually strip another slash if needed; usually just an
|
||||||
|
" issue on Windows.
|
||||||
|
if manifest =~ '^/[A-Z]\+:/'
|
||||||
|
let manifest = manifest[1:]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let filename = bufname(qf.bufnr)
|
||||||
|
if s:is_absolute(filename)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let qf.filename = simplify(manifest.filename)
|
||||||
|
call remove(qf, 'bufnr')
|
||||||
|
endfor
|
||||||
|
call setqflist(qflist, 'r')
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -80,3 +82,5 @@ augroup CoffeeUpdateMakePrg
|
|||||||
autocmd BufWritePre,BufFilePost call s:UpdateMakePrg()
|
autocmd BufWritePre,BufFilePost call s:UpdateMakePrg()
|
||||||
endif
|
endif
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
24
compiler/cryptol.vim
Normal file
24
compiler/cryptol.vim
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1
|
||||||
|
|
||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Cryptol version 1.8.19-academic Compiler
|
||||||
|
" Maintainer: Edward O'Callaghan <victoredwardocallaghan AT gmail DOT com>
|
||||||
|
" Latest Revision: 25-Apr-2013
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "cryptol"
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2
|
||||||
|
command = -nargs =* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
" TODO: Work out errorformat for the Cryptol compiler, see
|
||||||
|
" :help errorformat
|
||||||
|
CompilerSet errorformat& " use the default 'errorformat'
|
||||||
|
|
||||||
|
" "%<" means the current file name without extension.
|
||||||
|
CompilerSet makeprg=cryptol\ -o\ %<\ %
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Compiler: Cucumber
|
" Compiler: Cucumber
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -19,7 +21,7 @@ CompilerSet makeprg=cucumber
|
|||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\%W%m\ (Cucumber::Undefined),
|
\%W%m\ (Cucumber::Undefined),
|
||||||
\%E%m\ (%.%#),
|
\%E%m\ (%\\S%#),
|
||||||
\%Z%f:%l,
|
\%Z%f:%l,
|
||||||
\%Z%f:%l:%.%#
|
\%Z%f:%l:%.%#
|
||||||
|
|
||||||
@@ -27,3 +29,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim:set sw=2 sts=2:
|
" vim:set sw=2 sts=2:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
" Erlang compiler file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
|
||||||
" URL: http://ktototaki.info
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "erlang"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangCheckFile')
|
|
||||||
let g:erlangCheckFile = "~/.vim/compiler/erlang_check_file.erl"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangHighlightErrors')
|
|
||||||
let g:erlangHighlightErrors = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:error_list = {}
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
|
|
||||||
function! HighlightErlangErrors()
|
|
||||||
if match(getline(1), "#!.*escript") != -1
|
|
||||||
setlocal makeprg=escript\ -s\ %
|
|
||||||
else
|
|
||||||
execute "setlocal makeprg=" . g:erlangCheckFile . "\\ \%"
|
|
||||||
endif
|
|
||||||
silent make!
|
|
||||||
call s:clear_matches()
|
|
||||||
for error in getqflist()
|
|
||||||
let item = {}
|
|
||||||
let item['lnum'] = error.lnum
|
|
||||||
let item['msg'] = error.text
|
|
||||||
let b:error_list[error.lnum] = item
|
|
||||||
call matchadd('SpellBad', "\\%" . error.lnum . "l")
|
|
||||||
endfor
|
|
||||||
if len(getqflist())
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
call s:show_msg()
|
|
||||||
setlocal makeprg=erlc\ %
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:show_msg()
|
|
||||||
let pos = getpos(".")
|
|
||||||
if has_key(b:error_list, pos[1])
|
|
||||||
let item = get(b:error_list, pos[1])
|
|
||||||
echo item.msg
|
|
||||||
let b:is_showing_msg = 1
|
|
||||||
else
|
|
||||||
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
|
||||||
echo
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endf
|
|
||||||
|
|
||||||
function! s:clear_matches()
|
|
||||||
call clearmatches()
|
|
||||||
let b:error_list = {}
|
|
||||||
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
|
||||||
echo
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
CompilerSet makeprg=erlc\ %
|
|
||||||
CompilerSet errorformat=%f:%l:\ %tarning:\ %m,%E%f:%l:\ %m
|
|
||||||
|
|
||||||
if g:erlangHighlightErrors
|
|
||||||
autocmd BufLeave *.erl call s:clear_matches()
|
|
||||||
autocmd BufEnter *.erl call s:clear_matches()
|
|
||||||
autocmd BufWritePost *.erl call HighlightErlangErrors()
|
|
||||||
autocmd CursorHold *.erl call s:show_msg()
|
|
||||||
autocmd CursorMoved *.erl call s:show_msg()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: eRuby
|
" Language: eRuby
|
||||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||||
@@ -37,3 +39,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
" Vim compiler file
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
" Language: ExUnit
|
|
||||||
" Maintainer: Rein Henrichs <rein.henrichs@gmail.com>
|
|
||||||
" URL: https://github.com/elixir-lang/vim-elixir
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
@@ -14,11 +11,19 @@ endif
|
|||||||
|
|
||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=mix\ test
|
CompilerSet makeprg=mix\ test
|
||||||
CompilerSet errorformat=%A\ \ %.)\ %m(%.%#),%C\ \ \ \ \ **%m,%C\ \ \ \ \ \ \ %m,%Z\ \ \ \ \ at\ %f:%l,%-G%.%#
|
CompilerSet errorformat=
|
||||||
|
\%E\ \ %n)\ %m,
|
||||||
|
\%+G\ \ \ \ \ **\ %m,
|
||||||
|
\%+G\ \ \ \ \ stacktrace:,
|
||||||
|
\%C\ \ \ \ \ %f:%l,
|
||||||
|
\%+G\ \ \ \ \ \ \ (%\\w%\\+)\ %f:%l:\ %m,
|
||||||
|
\%+G\ \ \ \ \ \ \ %f:%l:\ %.%#,
|
||||||
|
\**\ (%\\w%\\+)\ %f:%l:\ %m
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
11
compiler/fish.vim
Normal file
11
compiler/fish.vim
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = 'fish'
|
||||||
|
|
||||||
|
CompilerSet makeprg=fish\ --no-execute\ %
|
||||||
|
execute 'CompilerSet errorformat='.escape(fish#errorformat(), ' ')
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
|
||||||
|
|
||||||
" Copyright 2013 The Go Authors. All rights reserved.
|
" Copyright 2013 The Go Authors. All rights reserved.
|
||||||
" Use of this source code is governed by a BSD-style
|
" Use of this source code is governed by a BSD-style
|
||||||
" license that can be found in the LICENSE file.
|
" license that can be found in the LICENSE file.
|
||||||
@@ -5,26 +7,39 @@
|
|||||||
" compiler/go.vim: Vim compiler file for Go.
|
" compiler/go.vim: Vim compiler file for Go.
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let current_compiler = "go"
|
let current_compiler = "go"
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2
|
if exists(":CompilerSet") != 2
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
if filereadable("makefile") || filereadable("Makefile")
|
||||||
|
CompilerSet makeprg=make
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=go\ build
|
||||||
|
endif
|
||||||
|
|
||||||
CompilerSet makeprg=go\ build
|
" Define the patterns that will be recognized by QuickFix when parsing the
|
||||||
CompilerSet errorformat=
|
" output of Go command that use this errorforamt (when called make, cexpr or
|
||||||
\%-G#\ %.%#,
|
" lmake, lexpr). This is the global errorformat, however some command might
|
||||||
\%A%f:%l:%c:\ %m,
|
" use a different output, for those we define them directly and modify the
|
||||||
\%A%f:%l:\ %m,
|
" errorformat ourselves. More information at:
|
||||||
\%C%*\\s%m,
|
" http://vimdoc.sourceforge.net/htmldoc/quickfix.html#errorformat
|
||||||
\%-G%.%#
|
CompilerSet errorformat =%-G#\ %.%# " Ignore lines beginning with '#' ('# command-line-arguments' line sometimes appears?)
|
||||||
|
CompilerSet errorformat+=%-G%.%#panic:\ %m " Ignore lines containing 'panic: message'
|
||||||
|
CompilerSet errorformat+=%Ecan\'t\ load\ package:\ %m " Start of multiline error string is 'can\'t load package'
|
||||||
|
CompilerSet errorformat+=%A%f:%l:%c:\ %m " Start of multiline unspecified string is 'filename:linenumber:columnnumber:'
|
||||||
|
CompilerSet errorformat+=%A%f:%l:\ %m " Start of multiline unspecified string is 'filename:linenumber:'
|
||||||
|
CompilerSet errorformat+=%C%*\\s%m " Continuation of multiline error message is indented
|
||||||
|
CompilerSet errorformat+=%-G%.%# " All lines not matching any of the above patterns are ignored
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
" vim:ts=4:sw=4:et
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haml') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Compiler: Haml
|
" Compiler: Haml
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -15,7 +17,7 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=haml\ -c
|
CompilerSet makeprg=haml
|
||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\Haml\ %trror\ on\ line\ %l:\ %m,
|
\Haml\ %trror\ on\ line\ %l:\ %m,
|
||||||
@@ -26,3 +28,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim:set sw=2 sts=2:
|
" vim:set sw=2 sts=2:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
27
compiler/nim.vim
Normal file
27
compiler/nim.vim
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let current_compiler = "nim"
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
CompilerSet makeprg=nim\ c\ $*
|
||||||
|
|
||||||
|
CompilerSet errorformat=
|
||||||
|
\%-GHint:\ %m,
|
||||||
|
\%E%f(%l\\,\ %c)\ Error:\ %m,
|
||||||
|
\%W%f(%l\\,\ %c)\ Hint:\ %m
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: Rake
|
" Language: Rake
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -27,9 +29,15 @@ CompilerSet errorformat=
|
|||||||
\%\\s%#[%f:%l:\ %#%m,
|
\%\\s%#[%f:%l:\ %#%m,
|
||||||
\%\\s%#%f:%l:\ %#%m,
|
\%\\s%#%f:%l:\ %#%m,
|
||||||
\%\\s%#%f:%l:,
|
\%\\s%#%f:%l:,
|
||||||
\%m\ [%f:%l]:
|
\%m\ [%f:%l]:,
|
||||||
|
\%+Erake\ aborted!,
|
||||||
|
\%+EDon't\ know\ how\ to\ build\ task\ %.%#,
|
||||||
|
\%+Einvalid\ option:%.%#,
|
||||||
|
\%+Irake\ %\\S%\\+%\\s%\\+#\ %.%#
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: RSpec
|
" Language: RSpec
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -22,12 +24,15 @@ CompilerSet errorformat=
|
|||||||
\%f:%l:\ %tarning:\ %m,
|
\%f:%l:\ %tarning:\ %m,
|
||||||
\%E%.%#:in\ `load':\ %f:%l:%m,
|
\%E%.%#:in\ `load':\ %f:%l:%m,
|
||||||
\%E%f:%l:in\ `%*[^']':\ %m,
|
\%E%f:%l:in\ `%*[^']':\ %m,
|
||||||
\%-Z\ \ \ \ \ \#\ %f:%l:%.%#,
|
\%-Z\ \ \ \ \ %\\+\#\ %f:%l:%.%#,
|
||||||
\%E\ \ %\\d%\\+)%.%#,
|
\%E\ \ %\\d%\\+)%.%#,
|
||||||
\%C\ \ \ \ \ %m,
|
\%C\ \ \ \ \ %m,
|
||||||
|
\%C%\\s%#,
|
||||||
\%-G%.%#
|
\%-G%.%#
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: Ruby
|
" Language: Ruby
|
||||||
" Function: Syntax check and/or error reporting
|
" Function: Syntax check and/or error reporting
|
||||||
@@ -43,3 +45,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Language: Test::Unit - Ruby Unit Testing Framework
|
" Language: Test::Unit - Ruby Unit Testing Framework
|
||||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||||
@@ -17,6 +19,8 @@ let s:cpo_save = &cpo
|
|||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=testrb
|
CompilerSet makeprg=testrb
|
||||||
|
" CompilerSet makeprg=ruby\ -Itest
|
||||||
|
" CompilerSet makeprg=m
|
||||||
|
|
||||||
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
||||||
\%C%m\ [%f:%l]:,
|
\%C%m\ [%f:%l]:,
|
||||||
@@ -31,3 +35,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Compiler: Rust Compiler
|
" Compiler: Rust Compiler
|
||||||
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
@@ -15,7 +17,7 @@ if exists(":CompilerSet") != 2
|
|||||||
command -nargs=* CompilerSet setlocal <args>
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent == 1
|
if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent != 0
|
||||||
CompilerSet makeprg=rustc
|
CompilerSet makeprg=rustc
|
||||||
else
|
else
|
||||||
CompilerSet makeprg=rustc\ \%
|
CompilerSet makeprg=rustc\ \%
|
||||||
@@ -31,3 +33,5 @@ CompilerSet errorformat=
|
|||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haml') == -1
|
||||||
|
|
||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Compiler: Sass
|
" Compiler: Sass
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -15,7 +17,7 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=sass\ -c
|
CompilerSet makeprg=sass
|
||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\%f:%l:%m\ (Sass::Syntax%trror),
|
\%f:%l:%m\ (Sass::Syntax%trror),
|
||||||
@@ -28,3 +30,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
" vim:set sw=2 sts=2:
|
" vim:set sw=2 sts=2:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
34
compiler/sbt.vim
Normal file
34
compiler/sbt.vim
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
|
||||||
|
|
||||||
|
" Vim compiler file
|
||||||
|
" Language: Scala SBT (http://www.scala-sbt.org/)
|
||||||
|
" Maintainer: Derek Wyatt
|
||||||
|
" URL: https://github.com/derekwyatt/vim-scala
|
||||||
|
" License: Apache 2
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = 'sbt'
|
||||||
|
|
||||||
|
if exists(':CompilerSet') != 2 " older Vim always used :setlocal
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
CompilerSet makeprg=sbt\ -Dsbt.log.noformat=true\ compile
|
||||||
|
|
||||||
|
CompilerSet errorformat=
|
||||||
|
\%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
|
||||||
|
\%W\ %#[warn]\ %f:%l:\ %m,%C\ %#[warn]\ %p^,%-C%.%#,%Z,
|
||||||
|
\%-G%.%#
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim:set sw=2 sts=2 ts=8 et:
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,8 +1,20 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'typescript') == -1
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let current_compiler = "typescript"
|
let current_compiler = "typescript"
|
||||||
|
|
||||||
CompilerSet makeprg=tsc\ $*\ %
|
if !exists("g:typescript_compiler_binary")
|
||||||
|
let g:typescript_compiler_binary = "tsc"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:typescript_compiler_options")
|
||||||
|
let g:typescript_compiler_options = ""
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &l:makeprg = g:typescript_compiler_binary . ' ' . g:typescript_compiler_options . ' $* %'
|
||||||
|
|
||||||
CompilerSet errorformat=%+A\ %#%f\ %#(%l\\\,%c):\ %m,%C%m
|
CompilerSet errorformat=%+A\ %#%f\ %#(%l\\\,%c):\ %m,%C%m
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,5 +1,41 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
|
||||||
|
|
||||||
|
function! s:isAnsible()
|
||||||
|
let filepath = expand("%:p")
|
||||||
|
let filename = expand("%:t")
|
||||||
|
if filepath =~ '\v/(tasks|roles|handlers)/.*\.ya?ml$' | return 1 | en
|
||||||
|
if filepath =~ '\v/(group|host)_vars/' | return 1 | en
|
||||||
|
if filename =~ '\v(playbook|site|main|local)\.ya?ml$' | return 1 | en
|
||||||
|
let shebang = getline(1)
|
||||||
|
if shebang =~# '^#!.*/bin/env\s\+ansible-playbook\>' | return 1 | en
|
||||||
|
if shebang =~# '^#!.*/bin/ansible-playbook\>' | return 1 | en
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
:au BufNewFile,BufRead * if s:isAnsible() | set ft=ansible | en
|
||||||
|
:au BufNewFile,BufRead *.j2 set ft=ansible_template
|
||||||
|
:au BufNewFile,BufRead hosts set ft=ansible_hosts
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'arduino') == -1
|
||||||
|
|
||||||
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
||||||
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'blade') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.blade.php set filetype=blade
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cjsx') == -1
|
||||||
|
|
||||||
|
augroup CJSX
|
||||||
|
au!
|
||||||
|
autocmd BufNewFile,BufRead *.csx,*.cjsx set filetype=coffee
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn,*.cljx,*.cljc setlocal filetype=clojure
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
||||||
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
||||||
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
||||||
@@ -10,17 +46,95 @@ function! s:DetectCoffee()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
||||||
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cql') == -1
|
||||||
|
|
||||||
|
if has("autocmd")
|
||||||
|
au BufNewFile,BufRead *.cql set filetype=cql
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1
|
||||||
|
|
||||||
|
au! BufRead,BufNewFile *.cry set filetype=cryptol
|
||||||
|
au! BufRead,BufNewFile *.cyl set filetype=cryptol
|
||||||
|
au! BufRead,BufNewFile *.lcry set filetype=cryptol
|
||||||
|
au! BufRead,BufNewFile *.lcyl set filetype=cryptol
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufReadPost *.cr setlocal filetype=crystal
|
||||||
|
autocmd BufNewFile,BufReadPost Projectfile setlocal filetype=crystal
|
||||||
|
autocmd BufNewFile,BufReadPost *.ecr setlocal filetype=eruby
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
|
||||||
|
|
||||||
|
autocmd BufRead,BufNewFile *.dart set filetype=dart
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dockerfile') == -1
|
||||||
|
|
||||||
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
|
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
|
||||||
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
endif
|
||||||
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit
|
|
||||||
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
|
au BufRead,BufNewFile *.ex,*.exs call s:setf('elixir')
|
||||||
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
|
au BufRead,BufNewFile *.eex call s:setf('eelixir')
|
||||||
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
|
au BufRead,BufNewFile * call s:DetectElixir()
|
||||||
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
|
au FileType elixir,eelixir setl sw=2 sts=2 et iskeyword+=!,?
|
||||||
autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
|
function! s:setf(filetype) abort
|
||||||
|
let &filetype = a:filetype
|
||||||
|
endfunction
|
||||||
|
function! s:DetectElixir()
|
||||||
|
if getline(1) =~ '^#!.*\<elixir\>'
|
||||||
|
call s:setf('elixir')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.elm set filetype=elm
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.em set filetype=ember-script
|
||||||
|
autocmd FileType ember-script set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.emblem set filetype=emblem
|
||||||
|
autocmd FileType emblem set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'erlang') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.erl,*.hrl,rebar.config,*.app,*.app.src,*.yaws,*.xrl set ft=erlang
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
|
||||||
|
|
||||||
|
autocmd BufRead,BufNewFile *.fish setfiletype fish
|
||||||
|
autocmd BufRead *
|
||||||
|
\ if getline(1) =~# '\v^#!%(\f*/|/usr/bin/env\s*<)fish>' |
|
||||||
|
\ setlocal filetype=fish |
|
||||||
|
\ endif
|
||||||
|
autocmd BufRead fish_funced_*_*.fish call search('^$')
|
||||||
|
autocmd BufRead,BufNewFile ~/.config/fish/fish_{read_,}history setfiletype yaml
|
||||||
|
autocmd BufRead,BufNewFile ~/.config/fish/fishd.* setlocal readonly
|
||||||
|
autocmd BufNewFile ~/.config/fish/functions/*.fish
|
||||||
|
\ call append(0, ['function '.expand('%:t:r'),
|
||||||
|
\'',
|
||||||
|
\'end']) |
|
||||||
|
\ 2
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.git/{,modules/**/,worktrees/*/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG set ft=gitcommit
|
||||||
|
autocmd BufNewFile,BufRead *.git/config,.gitconfig,gitconfig,.gitmodules set ft=gitconfig
|
||||||
|
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
|
||||||
|
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
|
||||||
|
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
|
||||||
|
autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
|
||||||
autocmd BufNewFile,BufRead *.git/**
|
autocmd BufNewFile,BufRead *.git/**
|
||||||
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
||||||
\ set ft=git |
|
\ set ft=git |
|
||||||
@@ -29,25 +143,57 @@ autocmd BufNewFile,BufRead,StdinReadPost *
|
|||||||
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
||||||
\ set ft=git |
|
\ set ft=git |
|
||||||
\ endif
|
\ endif
|
||||||
|
autocmd BufNewFile,BufRead *
|
||||||
|
\ if getline(1) =~ '^From \x\{40\} Mon Sep 17 00:00:00 2001$' |
|
||||||
|
\ set filetype=gitsendemail |
|
||||||
|
\ endif
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'glsl') == -1
|
||||||
|
|
||||||
|
autocmd! BufNewFile,BufRead *.glsl,*.geom,*.vert,*.frag,*.gsh,*.vsh,*.fsh,*.vs,*.fs,*.gs,*.tcs,*.tes set filetype=glsl
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
|
||||||
|
|
||||||
let s:current_fileformats = ''
|
let s:current_fileformats = ''
|
||||||
let s:current_fileencodings = ''
|
let s:current_fileencodings = ''
|
||||||
function! s:gofiletype_pre()
|
function! s:gofiletype_pre(type)
|
||||||
let s:current_fileformats = &g:fileformats
|
let s:current_fileformats = &g:fileformats
|
||||||
let s:current_fileencodings = &g:fileencodings
|
let s:current_fileencodings = &g:fileencodings
|
||||||
set fileencodings=utf-8 fileformats=unix
|
set fileencodings=utf-8 fileformats=unix
|
||||||
setlocal filetype=go
|
let &l:filetype = a:type
|
||||||
endfunction
|
endfunction
|
||||||
function! s:gofiletype_post()
|
function! s:gofiletype_post()
|
||||||
let &g:fileformats = s:current_fileformats
|
let &g:fileformats = s:current_fileformats
|
||||||
let &g:fileencodings = s:current_fileencodings
|
let &g:fileencodings = s:current_fileencodings
|
||||||
endfunction
|
endfunction
|
||||||
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
au BufNewFile *.go setfiletype go | setlocal fileencoding=utf-8 fileformat=unix
|
||||||
au BufRead *.go call s:gofiletype_pre()
|
au BufRead *.go call s:gofiletype_pre("go")
|
||||||
au BufReadPost *.go call s:gofiletype_post()
|
au BufReadPost *.go call s:gofiletype_post()
|
||||||
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
|
au BufNewFile *.s setfiletype asm | setlocal fileencoding=utf-8 fileformat=unix
|
||||||
|
au BufRead *.s call s:gofiletype_pre("asm")
|
||||||
|
au BufReadPost *.s call s:gofiletype_post()
|
||||||
|
au BufRead,BufNewFile *.tmpl set filetype=gohtmltmpl
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haml') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.haml,*.hamlbars,*.hamlc setf haml
|
||||||
autocmd BufNewFile,BufRead *.sass setf sass
|
autocmd BufNewFile,BufRead *.sass setf sass
|
||||||
autocmd BufNewFile,BufRead *.scss setf scss
|
autocmd BufNewFile,BufRead *.scss setf scss
|
||||||
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.hsc set filetype=haskell
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haxe') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.hx setf haxe
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jasmine') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *Spec.js,*_spec.js set filetype=jasmine.javascript syntax=jasmine
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
||||||
|
|
||||||
au BufNewFile,BufRead *.js setf javascript
|
au BufNewFile,BufRead *.js setf javascript
|
||||||
au BufNewFile,BufRead *.jsm setf javascript
|
au BufNewFile,BufRead *.jsm setf javascript
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
au BufNewFile,BufRead Jakefile setf javascript
|
||||||
@@ -57,70 +203,312 @@ fun! s:SelectJavascript()
|
|||||||
endif
|
endif
|
||||||
endfun
|
endfun
|
||||||
au BufNewFile,BufRead * call s:SelectJavascript()
|
au BufNewFile,BufRead * call s:SelectJavascript()
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsx') == -1
|
||||||
|
|
||||||
|
if !exists('g:jsx_ext_required')
|
||||||
|
let g:jsx_ext_required = 1
|
||||||
|
endif
|
||||||
|
if !exists('g:jsx_pragma_required')
|
||||||
|
let g:jsx_pragma_required = 0
|
||||||
|
endif
|
||||||
|
if g:jsx_pragma_required
|
||||||
|
" Look for the @jsx pragma. It must be included in a docblock comment before
|
||||||
|
" anything else in the file (except whitespace).
|
||||||
|
let s:jsx_pragma_pattern = '\%^\_s*\/\*\*\%(\_.\%(\*\/\)\@!\)*@jsx\_.\{-}\*\/'
|
||||||
|
let b:jsx_pragma_found = search(s:jsx_pragma_pattern, 'npw')
|
||||||
|
endif
|
||||||
|
fu! <SID>EnableJSX()
|
||||||
|
if g:jsx_pragma_required && !b:jsx_pragma_found | return 0 | endif
|
||||||
|
if g:jsx_ext_required && !exists('b:jsx_ext_found') | return 0 | endif
|
||||||
|
return 1
|
||||||
|
endfu
|
||||||
|
autocmd BufNewFile,BufRead *.jsx let b:jsx_ext_found = 1
|
||||||
|
autocmd BufNewFile,BufRead *.jsx set filetype=javascript.jsx
|
||||||
|
autocmd BufNewFile,BufRead *.js
|
||||||
|
\ if <SID>EnableJSX() | set filetype=javascript.jsx | endif
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'json') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.json set filetype=json
|
autocmd BufNewFile,BufRead *.json set filetype=json
|
||||||
augroup json_autocmd
|
autocmd BufNewFile,BufRead *.jsonp set filetype=json
|
||||||
autocmd!
|
endif
|
||||||
autocmd FileType json setlocal autoindent
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jst') == -1
|
||||||
autocmd FileType json setlocal formatoptions=tcq2l
|
|
||||||
autocmd FileType json setlocal foldmethod=syntax
|
au BufNewFile,BufRead *.ejs set filetype=jst
|
||||||
augroup END
|
au BufNewFile,BufRead *.jst set filetype=jst
|
||||||
au BufNewFile,BufRead *.ejs set filetype=jst
|
au BufNewFile,BufRead *.djs set filetype=jst
|
||||||
au BufNewFile,BufRead *.jst set filetype=jst
|
|
||||||
au BufNewFile,BufRead *.hamljs set filetype=jst
|
au BufNewFile,BufRead *.hamljs set filetype=jst
|
||||||
|
au BufNewFile,BufRead *.ect set filetype=jst
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.jl let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp<"
|
||||||
|
au BufRead,BufNewFile *.jl set filetype=julia
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'kotlin') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.kt setfiletype kotlin
|
||||||
|
autocmd BufNewFile,BufRead *.kts setfiletype kotlin
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'less') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.less setf less
|
autocmd BufNewFile,BufRead *.less setf less
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'liquid') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.liquid set ft=liquid
|
||||||
|
au BufNewFile,BufRead */_layouts/*.html,*/_includes/*.html set ft=liquid
|
||||||
|
au BufNewFile,BufRead *.html,*.xml,*.textile
|
||||||
|
\ if getline(1) == '---' | set ft=liquid | endif
|
||||||
|
au BufNewFile,BufRead *.markdown,*.mkd,*.mkdn,*.md
|
||||||
|
\ if getline(1) == '---' |
|
||||||
|
\ let b:liquid_subtype = 'markdown' |
|
||||||
|
\ set ft=liquid |
|
||||||
|
\ endif
|
||||||
|
au BufNewFile,BufRead */templates/**.liquid,*/layout/**.liquid,*/snippets/**.liquid
|
||||||
|
\ let b:liquid_subtype = 'html' |
|
||||||
|
\ set ft=liquid |
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
||||||
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
||||||
\ set ft=markdown |
|
\ set ft=markdown |
|
||||||
\ else |
|
\ else |
|
||||||
\ setf markdown |
|
\ setf markdown |
|
||||||
\ endif
|
\ endif
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1
|
||||||
|
|
||||||
autocmd BufRead *.html
|
autocmd BufRead *.html
|
||||||
\ if getline(1) =~ '^\(%\|<[%&].*>\)' |
|
\ if getline(1) =~ '^\(%\|<[%&].*>\)' |
|
||||||
\ set filetype=mason |
|
\ set filetype=mason |
|
||||||
\ endif
|
\ endif
|
||||||
if has("autocmd")
|
|
||||||
au BufNewFile,BufRead *.mustache,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
|
||||||
endif
|
endif
|
||||||
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1
|
||||||
au BufRead,BufNewFile *.cl set filetype=opencl
|
|
||||||
|
if has("autocmd")
|
||||||
|
au BufNewFile,BufRead *.mustache,*.hogan,*.hulk,*.hjs set filetype=html.mustache syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
||||||
|
au BufNewFile,BufRead *.handlebars,*.hbs set filetype=html.handlebars syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.nginx set ft=nginx
|
||||||
|
au BufRead,BufNewFile */etc/nginx/* set ft=nginx
|
||||||
|
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
|
||||||
|
au BufRead,BufNewFile nginx.conf set ft=nginx
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.nim set filetype=nim
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nix') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.nix setfiletype nix
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'opencl') == -1
|
||||||
|
|
||||||
|
au! BufRead,BufNewFile *.cl set filetype=opencl
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1
|
||||||
|
|
||||||
|
function! s:DetectPerl6()
|
||||||
|
let line_no = 1
|
||||||
|
let eof = line('$')
|
||||||
|
let in_pod = 0
|
||||||
|
while line_no <= eof
|
||||||
|
let line = getline(line_no)
|
||||||
|
let line_no = line_no + 1
|
||||||
|
if line =~ '^=\w'
|
||||||
|
let in_pod = 1
|
||||||
|
elseif line =~ '^=\%(end\|cut\)'
|
||||||
|
let in_pod = 0
|
||||||
|
elseif !in_pod
|
||||||
|
let line = substitute(line, '#.*', '', '')
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
if line =~ '^\s*\%(use\s\+\)\=v6\%(\.\d\%(\.\d\)\=\)\=;'
|
||||||
|
set filetype=perl6 " we matched a 'use v6' declaration
|
||||||
|
elseif line =~ '^\s*\%(\%(my\|our\)\s\+\)\=\%(unit\s\+\)\=\(module\|class\|role\|enum\|grammar\)'
|
||||||
|
set filetype=perl6 " we found a class, role, module, enum, or grammar declaration
|
||||||
|
endif
|
||||||
|
break " we either found what we needed, or we found a non-POD, non-comment,
|
||||||
|
" non-Perl 6 indicating line, so bail out
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
autocmd BufReadPost *.pl,*.pm,*.t call s:DetectPerl6()
|
||||||
|
autocmd BufNew,BufNewFile,BufRead *.nqp setf perl6
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'pgsql') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.pgsql setf pgsql
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -1
|
||||||
|
|
||||||
|
if did_filetype()
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
autocmd BufRead,BufNewFile * :if getline(1) =~ '^.*startuml.*$'| setfiletype plantuml | endif
|
||||||
|
autocmd BufRead,BufNewFile *.pu,*.uml,*.plantuml set filetype=plantuml
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'protobuf') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
||||||
au BufRead,BufNewFile *.pp set filetype=puppet
|
endif
|
||||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'powershell') == -1
|
||||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby set filetype=ruby
|
|
||||||
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
|
au BufNewFile,BufRead *.ps1 set ft=ps1
|
||||||
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
|
au BufNewFile,BufRead *.psd1 set ft=ps1
|
||||||
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
|
au BufNewFile,BufRead *.psm1 set ft=ps1
|
||||||
au BufNewFile,BufRead .pryrc set filetype=ruby
|
endif
|
||||||
au BufNewFile,BufRead *.ru set filetype=ruby
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'powershell') == -1
|
||||||
au BufNewFile,BufRead Capfile set filetype=ruby
|
|
||||||
au BufNewFile,BufRead Gemfile set filetype=ruby
|
au BufNewFile,BufRead *.ps1xml set ft=ps1xml
|
||||||
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
|
endif
|
||||||
au BufNewFile,BufRead Cheffile set filetype=ruby
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'pug') == -1
|
||||||
au BufNewFile,BufRead Berksfile set filetype=ruby
|
|
||||||
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
|
autocmd BufNewFile,BufReadPost *.pug set filetype=pug
|
||||||
au BufNewFile,BufRead .autotest set filetype=ruby
|
autocmd BufNewFile,BufReadPost *.jade set filetype=pug
|
||||||
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
|
endif
|
||||||
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
|
||||||
au BufNewFile,BufRead *.rabl set filetype=ruby
|
|
||||||
au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
au! BufRead,BufNewFile *.pp setfiletype puppet
|
||||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
||||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
endif
|
||||||
au BufNewFile,BufRead Appraisals set filetype=ruby
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'purescript') == -1
|
||||||
au BufNewFile,BufRead Podfile,*.podspec set filetype=ruby
|
|
||||||
|
au BufNewFile,BufRead *.purs setf purescript
|
||||||
|
au FileType purescript let &l:commentstring='{--%s--}'
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
|
||||||
|
|
||||||
|
autocmd BufRead,BufNewFile *.qml setfiletype qml
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
|
function! s:setf(filetype) abort
|
||||||
|
if &filetype !=# a:filetype
|
||||||
|
let &filetype = a:filetype
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
||||||
|
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]outefile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .simplecov set filetype=ruby
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
au BufRead,BufNewFile *.rs set filetype=rust
|
au BufRead,BufNewFile *.rs set filetype=rust
|
||||||
au BufRead,BufNewFile *.sbt set filetype=sbt
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'sbt') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.sbt set filetype=sbt.scala
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
|
||||||
|
|
||||||
fun! s:DetectScala()
|
fun! s:DetectScala()
|
||||||
if getline(1) == '#!/usr/bin/env scala'
|
if getline(1) =~# '^#!\(/usr\)\?/bin/env\s\+scalas\?'
|
||||||
set filetype=scala
|
set filetype=scala
|
||||||
endif
|
endif
|
||||||
endfun
|
endfun
|
||||||
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
au BufRead,BufNewFile *.scala set filetype=scala
|
||||||
au BufRead,BufNewFile * call s:DetectScala()
|
au BufRead,BufNewFile * call s:DetectScala()
|
||||||
|
au BufRead,BufNewFile *.sbt setfiletype sbt.scala
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'slim') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'solidity') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.sol setf solidity
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'stylus') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
||||||
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'swift') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.swift set filetype=swift
|
||||||
|
autocmd BufRead * call s:Swift()
|
||||||
|
function! s:Swift()
|
||||||
|
if !empty(&filetype)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let line = getline(1)
|
||||||
|
if line =~ "^#!.*swift"
|
||||||
|
setfiletype swift
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'systemd') == -1
|
||||||
|
|
||||||
|
au BufNewFile,BufRead *.automount set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.mount set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.path set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.service set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.socket set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.swap set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.target set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.timer set filetype=systemd
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'textile') == -1
|
||||||
|
|
||||||
au BufRead,BufNewFile *.textile set filetype=textile
|
au BufRead,BufNewFile *.textile set filetype=textile
|
||||||
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
|
endif
|
||||||
autocmd BufNewFile,BufRead *.twig set filetype=twig
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'thrift') == -1
|
||||||
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig
|
|
||||||
autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript
|
au BufNewFile,BufRead *.thrift setlocal filetype=thrift
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tmux') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead {.,}tmux.conf{.*,} setlocal filetype=tmux
|
||||||
|
autocmd BufNewFile,BufRead {.,}tmux.conf{.*,} setlocal commentstring=#\ %s
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'toml') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.toml set filetype=toml
|
||||||
|
autocmd BufNewFile,BufRead Cargo.lock set filetype=toml
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'typescript') == -1
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead *.ts,*.tsx setlocal filetype=typescript
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vala') == -1
|
||||||
|
|
||||||
|
autocmd BufRead *.vala,*.vapi set efm=%f:%l.%c-%[%^:]%#:\ %t%[%^:]%#:\ %m
|
||||||
|
au BufRead,BufNewFile *.vala,*.vapi setfiletype vala
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vcl') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.vcl set filetype=vcl
|
||||||
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vm') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.vm set ft=velocity syntax=velocity
|
||||||
|
endif
|
||||||
|
|||||||
8
ftplugin/ansible.vim
Normal file
8
ftplugin/ansible.vim
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
|
||||||
|
|
||||||
|
" Slow yaml highlighting workaround
|
||||||
|
if exists('+regexpengine') && ('®expengine' == 0)
|
||||||
|
setlocal regexpengine=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
13
ftplugin/ansible_hosts.vim
Normal file
13
ftplugin/ansible_hosts.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
else
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions-=c
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl comments< commentstring< formatoptions<"
|
||||||
|
|
||||||
|
endif
|
||||||
16
ftplugin/blade.vim
Normal file
16
ftplugin/blade.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'blade') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin
|
||||||
|
" Language: Blade (Laravel)
|
||||||
|
" Maintainer: Jason Walton <jwalton512@gmail.com>
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! ftplugin/html.vim
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal iskeyword+=@-@
|
||||||
|
|
||||||
|
endif
|
||||||
9
ftplugin/cabal.vim
Normal file
9
ftplugin/cabal.vim
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
|
|
||||||
|
if exists("g:loaded_haskellvim_cabal")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:loaded_haskellvim_cabal = 1
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1
|
||||||
|
|
||||||
" Vim filetype plugin file
|
" Vim filetype plugin file
|
||||||
" Language: Clojure
|
" Language: Clojure
|
||||||
" Author: Meikel Brandmeyer <mb@kotka.de>
|
" Author: Meikel Brandmeyer <mb@kotka.de>
|
||||||
@@ -42,8 +44,9 @@ setlocal commentstring=;\ %s
|
|||||||
" Functions that accept a flat list of forms do not treat the first argument
|
" Functions that accept a flat list of forms do not treat the first argument
|
||||||
" specially and hence are not indented specially.
|
" specially and hence are not indented specially.
|
||||||
"
|
"
|
||||||
|
" -*- LISPWORDS -*-
|
||||||
" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
|
" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
|
||||||
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doall,dorun,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
|
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
|
||||||
|
|
||||||
" Provide insert mode completions for special forms and clojure.core. As
|
" Provide insert mode completions for special forms and clojure.core. As
|
||||||
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
|
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
|
||||||
@@ -92,3 +95,5 @@ let &cpo = s:cpo_save
|
|||||||
unlet! s:cpo_save s:setting s:dir
|
unlet! s:cpo_save s:setting s:dir
|
||||||
|
|
||||||
" vim:sts=8:sw=8:ts=8:noet
|
" vim:sts=8:sw=8:ts=8:noet
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
|
||||||
|
|
||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -13,6 +15,7 @@ call coffee#CoffeeSetUpVariables()
|
|||||||
setlocal formatoptions-=t formatoptions+=croql
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal comments=:# commentstring=#\ %s
|
setlocal comments=:# commentstring=#\ %s
|
||||||
setlocal omnifunc=javascriptcomplete#CompleteJS
|
setlocal omnifunc=javascriptcomplete#CompleteJS
|
||||||
|
setlocal suffixesadd+=coffee
|
||||||
|
|
||||||
" Create custom augroups.
|
" Create custom augroups.
|
||||||
augroup CoffeeBufUpdate | augroup END
|
augroup CoffeeBufUpdate | augroup END
|
||||||
@@ -330,7 +333,7 @@ function! s:CoffeeLint(startline, endline, bang, args)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let output = system(g:coffee_linter .
|
let output = system(g:coffee_linter .
|
||||||
\ ' -s --csv' .
|
\ ' -s --reporter csv' .
|
||||||
\ ' ' . b:coffee_litcoffee .
|
\ ' ' . b:coffee_litcoffee .
|
||||||
\ ' ' . g:coffee_lint_options .
|
\ ' ' . g:coffee_lint_options .
|
||||||
\ ' ' . a:args .
|
\ ' ' . a:args .
|
||||||
@@ -394,11 +397,13 @@ if !exists('b:coffee_run_buf')
|
|||||||
call s:CoffeeRunResetVars()
|
call s:CoffeeRunResetVars()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
command! -range=% -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
command! -buffer -range=% -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
||||||
\ CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)
|
\ CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)
|
||||||
command! -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
command! -buffer -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
||||||
\ CoffeeWatch call s:CoffeeWatch(<q-args>)
|
\ CoffeeWatch call s:CoffeeWatch(<q-args>)
|
||||||
command! -range=% -bar -nargs=* CoffeeRun
|
command! -buffer -range=% -bar -nargs=* CoffeeRun
|
||||||
\ call s:CoffeeRun(<line1>, <line2>, <q-args>)
|
\ call s:CoffeeRun(<line1>, <line2>, <q-args>)
|
||||||
command! -range=% -bang -bar -nargs=* CoffeeLint
|
command! -buffer -range=% -bang -bar -nargs=* CoffeeLint
|
||||||
\ call s:CoffeeLint(<line1>, <line2>, <q-bang>, <q-args>)
|
\ call s:CoffeeLint(<line1>, <line2>, <q-bang>, <q-args>)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
50
ftplugin/cryptol/folding.vim
Normal file
50
ftplugin/cryptol/folding.vim
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1
|
||||||
|
|
||||||
|
" Copyright © 2013 Edward O'Callaghan. All Rights Reserved.
|
||||||
|
|
||||||
|
"setlocal foldmethod=indent
|
||||||
|
"setlocal foldignore=
|
||||||
|
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
setlocal foldexpr=GetPotionFold(v:lnum)
|
||||||
|
|
||||||
|
" Helper function: To tackle non-blank lines,
|
||||||
|
" wish to know their indentation level
|
||||||
|
function! IndentLevel(lnum)
|
||||||
|
return indent(a:lnum) / &shiftwidth
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Helper function: .
|
||||||
|
function! NextNonBlankLine(lnum)
|
||||||
|
let numlines = line('$')
|
||||||
|
let current = a:lnum + 1
|
||||||
|
|
||||||
|
while current <= numlines
|
||||||
|
if getline(current) =~? '\v\S'
|
||||||
|
return current
|
||||||
|
endif
|
||||||
|
|
||||||
|
let current += 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return -2
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GetPotionFold(lnum)
|
||||||
|
if getline(a:lnum) =~? '\v^\s*$'
|
||||||
|
return '-1'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let this_indent = IndentLevel(a:lnum)
|
||||||
|
let next_indent = IndentLevel(NextNonBlankLine(a:lnum))
|
||||||
|
|
||||||
|
if next_indent == this_indent
|
||||||
|
return this_indent
|
||||||
|
elseif next_indent < this_indent
|
||||||
|
return this_indent
|
||||||
|
elseif next_indent > this_indent
|
||||||
|
return '>' . next_indent
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
60
ftplugin/crystal.vim
Normal file
60
ftplugin/crystal.vim
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if exists('loaded_matchit') && !exists('b:match_words')
|
||||||
|
let b:match_ignorecase = 0
|
||||||
|
|
||||||
|
let b:match_words =
|
||||||
|
\ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|struct\|lib\|macro\|ifdef\|def\|fun\|begin\)\>=\@!' .
|
||||||
|
\ ':' .
|
||||||
|
\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
|
||||||
|
\ ':' .
|
||||||
|
\ '\<end\>' .
|
||||||
|
\ ',{:},\[:\],(:)'
|
||||||
|
|
||||||
|
let b:match_skip =
|
||||||
|
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
||||||
|
\ "\\<crystal\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
|
||||||
|
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
|
||||||
|
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
|
||||||
|
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
|
||||||
|
\ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
setlocal suffixesadd=.cr
|
||||||
|
|
||||||
|
" Set format for quickfix window
|
||||||
|
setlocal errorformat=
|
||||||
|
\%ESyntax\ error\ in\ line\ %l:\ %m,
|
||||||
|
\%ESyntax\ error\ in\ %f:%l:\ %m,
|
||||||
|
\%EError\ in\ %f:%l:\ %m,
|
||||||
|
\%C%p^,
|
||||||
|
\%-C%.%#
|
||||||
|
|
||||||
|
if get(g:, 'crystal_define_mappings', 1)
|
||||||
|
nmap <buffer>gd <Plug>(crystal-jump-to-definition)
|
||||||
|
nmap <buffer>gc <Plug>(crystal-show-context)
|
||||||
|
nmap <buffer>gss <Plug>(crystal-spec-switch)
|
||||||
|
nmap <buffer>gsa <Plug>(crystal-spec-run-all)
|
||||||
|
nmap <buffer>gsc <Plug>(crystal-spec-run-current)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if &l:ofu ==# ''
|
||||||
|
setlocal omnifunc=crystal_lang#complete
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
2535
ftplugin/csv.vim
2535
ftplugin/csv.vim
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: Cucumber
|
" Language: Cucumber
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2010 Aug 09
|
" Last Change: 2013 Jun 01
|
||||||
|
|
||||||
" Only do this when not done yet for this buffer
|
" Only do this when not done yet for this buffer
|
||||||
if (exists("b:did_ftplugin"))
|
if (exists("b:did_ftplugin"))
|
||||||
@@ -9,6 +11,9 @@ if (exists("b:did_ftplugin"))
|
|||||||
endif
|
endif
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:keepcpo= &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
setlocal formatoptions-=t formatoptions+=croql
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal comments=:# commentstring=#\ %s
|
setlocal comments=:# commentstring=#\ %s
|
||||||
setlocal omnifunc=CucumberComplete
|
setlocal omnifunc=CucumberComplete
|
||||||
@@ -16,27 +21,23 @@ setlocal omnifunc=CucumberComplete
|
|||||||
let b:undo_ftplugin = "setl fo< com< cms< ofu<"
|
let b:undo_ftplugin = "setl fo< com< cms< ofu<"
|
||||||
|
|
||||||
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
|
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
|
||||||
|
if !exists("b:cucumber_steps_glob")
|
||||||
|
let b:cucumber_steps_glob = b:cucumber_root.'/**/*.rb'
|
||||||
|
endif
|
||||||
|
|
||||||
if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
|
if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
|
||||||
nnoremap <silent><buffer> <C-]> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
cnoremap <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
|
||||||
nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent> <script> <buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent> <script> <buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W>] :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W><C-]> :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W>} :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
let b:undo_ftplugin .=
|
let b:undo_ftplugin .=
|
||||||
\ "|sil! nunmap <buffer> <C-]>" .
|
|
||||||
\ "|sil! nunmap <buffer> [<C-D>" .
|
\ "|sil! nunmap <buffer> [<C-D>" .
|
||||||
\ "|sil! nunmap <buffer> ]<C-D>" .
|
\ "|sil! nunmap <buffer> ]<C-D>" .
|
||||||
\ "|sil! nunmap <buffer> <C-W>]" .
|
|
||||||
\ "|sil! nunmap <buffer> <C-W><C-]>" .
|
|
||||||
\ "|sil! nunmap <buffer> <C-W>d" .
|
\ "|sil! nunmap <buffer> <C-W>d" .
|
||||||
\ "|sil! nunmap <buffer> <C-W><C-D>" .
|
\ "|sil! nunmap <buffer> <C-W><C-D>" .
|
||||||
\ "|sil! nunmap <buffer> <C-W>}" .
|
|
||||||
\ "|sil! nunmap <buffer> [d" .
|
\ "|sil! nunmap <buffer> [d" .
|
||||||
\ "|sil! nunmap <buffer> ]d"
|
\ "|sil! nunmap <buffer> ]d"
|
||||||
endif
|
endif
|
||||||
@@ -56,7 +57,7 @@ endfunction
|
|||||||
function! s:allsteps()
|
function! s:allsteps()
|
||||||
let step_pattern = '\C^\s*\K\k*\>\s*(\=\s*\zs\S.\{-\}\ze\s*)\=\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)'
|
let step_pattern = '\C^\s*\K\k*\>\s*(\=\s*\zs\S.\{-\}\ze\s*)\=\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)'
|
||||||
let steps = []
|
let steps = []
|
||||||
for file in split(glob(b:cucumber_root.'/**/*.rb'),"\n")
|
for file in split(glob(b:cucumber_steps_glob),"\n")
|
||||||
let lines = readfile(file)
|
let lines = readfile(file)
|
||||||
let num = 0
|
let num = 0
|
||||||
for line in lines
|
for line in lines
|
||||||
@@ -145,4 +146,9 @@ function! CucumberComplete(findstart,base) abort
|
|||||||
return sort(steps)
|
return sort(steps)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:keepcpo
|
||||||
|
unlet s:keepcpo
|
||||||
|
|
||||||
" vim:set sts=2 sw=2:
|
" vim:set sts=2 sw=2:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
31
ftplugin/dart.vim
Normal file
31
ftplugin/dart.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Enable automatic indentation (2 spaces) if variable g:dart_style_guide is set
|
||||||
|
if exists('g:dart_style_guide')
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal softtabstop=2
|
||||||
|
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set 'comments' to format dashed lists in comments.
|
||||||
|
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
|
||||||
|
|
||||||
|
setlocal commentstring=//%s
|
||||||
|
let s:win_sep = (has('win32') || has('win64')) ? '/' : ''
|
||||||
|
let &l:errorformat =
|
||||||
|
\ join([
|
||||||
|
\ ' %#''file://' . s:win_sep . '%f'': %s: line %l pos %c:%m',
|
||||||
|
\ '%m'
|
||||||
|
\ ], ',')
|
||||||
|
|
||||||
|
|
||||||
|
let b:undo_ftplugin = 'setl et< fo< sw< sts< com< cms<'
|
||||||
|
|
||||||
|
endif
|
||||||
91
ftplugin/eelixir.vim
Normal file
91
ftplugin/eelixir.vim
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
let s:undo_ftplugin = ""
|
||||||
|
let s:browsefilter = "All Files (*.*)\t*.*\n"
|
||||||
|
let s:match_words = ""
|
||||||
|
|
||||||
|
if !exists("g:eelixir_default_subtype")
|
||||||
|
let g:eelixir_default_subtype = "html"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("b:eelixir_subtype")
|
||||||
|
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||||
|
let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
|
||||||
|
if b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
|
||||||
|
endif
|
||||||
|
if b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eex\|\.eelixir\)\+$','',''),'\.\zs\w\+$')
|
||||||
|
endif
|
||||||
|
if b:eelixir_subtype == 'ex'
|
||||||
|
let b:eelixir_subtype = 'elixir'
|
||||||
|
elseif b:eelixir_subtype == 'exs'
|
||||||
|
let b:eelixir_subtype = 'elixir'
|
||||||
|
elseif b:eelixir_subtype == 'yml'
|
||||||
|
let b:eelixir_subtype = 'yaml'
|
||||||
|
elseif b:eelixir_subtype == 'js'
|
||||||
|
let b:eelixir_subtype = 'javascript'
|
||||||
|
elseif b:eelixir_subtype == 'txt'
|
||||||
|
" Conventional; not a real file type
|
||||||
|
let b:eelixir_subtype = 'text'
|
||||||
|
elseif b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = g:eelixir_default_subtype
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("b:eelixir_subtype") && b:eelixir_subtype != ''
|
||||||
|
exe "runtime! ftplugin/".b:eelixir_subtype.".vim ftplugin/".b:eelixir_subtype."_*.vim ftplugin/".b:eelixir_subtype."/*.vim"
|
||||||
|
else
|
||||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||||
|
endif
|
||||||
|
unlet! b:did_ftplugin
|
||||||
|
|
||||||
|
" Override our defaults if these were set by an included ftplugin.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin
|
||||||
|
unlet b:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists("b:browsefilter")
|
||||||
|
let s:browsefilter = b:browsefilter
|
||||||
|
unlet b:browsefilter
|
||||||
|
endif
|
||||||
|
if exists("b:match_words")
|
||||||
|
let s:match_words = b:match_words
|
||||||
|
unlet b:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! ftplugin/elixir.vim ftplugin/elixir_*.vim ftplugin/elixir/*.vim
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Combine the new set of values with those previously included.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists ("b:browsefilter")
|
||||||
|
let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
|
||||||
|
endif
|
||||||
|
if exists("b:match_words")
|
||||||
|
let s:match_words = b:match_words . ',' . s:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Load the combined list of match_words for matchit.vim
|
||||||
|
if exists("loaded_matchit")
|
||||||
|
let b:match_words = s:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal comments=:<%#
|
||||||
|
setlocal commentstring=<%#\ %s\ %>
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl cms< "
|
||||||
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,19 +1,15 @@
|
|||||||
" Vim filetype plugin
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
" Language: Elixir
|
|
||||||
" Maintainer: Carlos Galdino <carloshsgaldino@gmail.com>
|
|
||||||
" URL: https://github.com/elixir-lang/vim-elixir
|
|
||||||
|
|
||||||
if (exists("b:did_ftplugin"))
|
if (exists("b:did_ftplugin"))
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
|
||||||
" Matchit support
|
" Matchit support
|
||||||
if exists("loaded_matchit") && !exists("b:match_words")
|
if exists("loaded_matchit") && !exists("b:match_words")
|
||||||
let b:match_ignorecase = 0
|
let b:match_ignorecase = 0
|
||||||
|
|
||||||
let b:match_words = '\<\%(do\|fn\)\:\@!\>' .
|
let b:match_words = '\:\@<!\<\%(do\|fn\)\:\@!\>' .
|
||||||
\ ':' .
|
\ ':' .
|
||||||
\ '\<\%(else\|elsif\|catch\|after\|rescue\)\:\@!\>' .
|
\ '\<\%(else\|elsif\|catch\|after\|rescue\)\:\@!\>' .
|
||||||
\ ':' .
|
\ ':' .
|
||||||
@@ -23,3 +19,43 @@ endif
|
|||||||
|
|
||||||
setlocal comments=:#
|
setlocal comments=:#
|
||||||
setlocal commentstring=#\ %s
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
function! GetElixirFilename(word)
|
||||||
|
let word = a:word
|
||||||
|
|
||||||
|
" get first thing that starts uppercase, until the first space or end of line
|
||||||
|
let word = substitute(word,'^\s*\(\u[^ ]\+\).*$','\1','g')
|
||||||
|
|
||||||
|
" remove any trailing characters that don't look like a nested module
|
||||||
|
let word = substitute(word,'\.\U.*$','','g')
|
||||||
|
|
||||||
|
" replace module dots with slash
|
||||||
|
let word = substitute(word,'\.','/','g')
|
||||||
|
|
||||||
|
" remove any special chars
|
||||||
|
let word = substitute(word,'[^A-z0-9-_/]','','g')
|
||||||
|
|
||||||
|
" convert to snake_case
|
||||||
|
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
||||||
|
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
||||||
|
let word = substitute(word,'\(\l\|\d\)\(\u\)','\1_\2','g')
|
||||||
|
let word = substitute(word,'-','_','g')
|
||||||
|
let word = tolower(word)
|
||||||
|
|
||||||
|
return word
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &l:path =
|
||||||
|
\ join([
|
||||||
|
\ getcwd().'/lib',
|
||||||
|
\ getcwd().'/src',
|
||||||
|
\ getcwd().'/deps/**/lib',
|
||||||
|
\ getcwd().'/deps/**/src',
|
||||||
|
\ &g:path
|
||||||
|
\ ], ',')
|
||||||
|
setlocal includeexpr=GetElixirFilename(v:fname)
|
||||||
|
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
|
||||||
|
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
86
ftplugin/elm.vim
Normal file
86
ftplugin/elm.vim
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
|
||||||
|
|
||||||
|
" elm.vim - Plugin for the Elm programming language
|
||||||
|
" Maintainer: Alexander Noriega <http://lambdatoast.com/>
|
||||||
|
" Version: 0.4.3
|
||||||
|
|
||||||
|
" Plugin setup stuff
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Compilation
|
||||||
|
|
||||||
|
function! ElmMake(file)
|
||||||
|
let args = a:file
|
||||||
|
return elm#io#system("elm-make", args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ElmMakeCurrentFile()
|
||||||
|
echo ElmMake(expand("%"))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ElmMakeMain()
|
||||||
|
echo ElmMake("Main.elm")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ElmMakeFile(file)
|
||||||
|
echo ElmMake(a:file)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" REPL
|
||||||
|
|
||||||
|
function! ElmRepl()
|
||||||
|
!elm-repl
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Evaluation
|
||||||
|
|
||||||
|
function! ElmEvalLine()
|
||||||
|
return ElmEval(getline("."))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ElmEvalSelection()
|
||||||
|
let savedReg = @z
|
||||||
|
normal! `<v`>"zy
|
||||||
|
let res = ElmEval(substitute(getreg("z"), "\n", "\\\n", "g"))
|
||||||
|
let @z = savedReg
|
||||||
|
normal! gv
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ElmEval(sourceCode)
|
||||||
|
let currentLine = a:sourceCode
|
||||||
|
let args = "echo '" . currentLine . "' | elm-repl"
|
||||||
|
let result = elm#io#system("echo", args)
|
||||||
|
let cleanResult = "-- " . join(s:Filtered(function("s:IsUsefulReplOutput"), split(result, "\n")), "")
|
||||||
|
put =cleanResult
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:IsUsefulReplOutput(str)
|
||||||
|
return a:str !~ "^Elm REPL" && a:str !~ "Type :help" && a:str !~ ">\\s*$"
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" List processing
|
||||||
|
|
||||||
|
function! s:Filtered(fn, l)
|
||||||
|
let new_list = deepcopy(a:l)
|
||||||
|
call filter(new_list, string(a:fn) . '(v:val)')
|
||||||
|
return new_list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command -buffer ElmEvalLine call ElmEvalLine()
|
||||||
|
command -buffer ElmEvalSelection call ElmEvalSelection()
|
||||||
|
command -buffer ElmMakeMain call ElmMakeMain()
|
||||||
|
command -buffer -nargs=1 ElmMakeFile call ElmMakeFile <args>
|
||||||
|
command -buffer ElmMakeCurrentFile call ElmMakeCurrentFile()
|
||||||
|
command -buffer ElmRepl call ElmRepl()
|
||||||
|
|
||||||
|
" Define comment convention
|
||||||
|
|
||||||
|
setlocal comments=:--
|
||||||
|
setlocal commentstring=--%s
|
||||||
|
|
||||||
|
endif
|
||||||
21
ftplugin/ember-script.vim
Normal file
21
ftplugin/ember-script.vim
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
|
" Language: ember-script
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-ember-script
|
||||||
|
" Version: 1.0.1
|
||||||
|
" Last Change: 2013 Apr 17
|
||||||
|
" License: GPL-3.0
|
||||||
|
|
||||||
|
setlocal tabstop=2
|
||||||
|
setlocal softtabstop=2
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal smartindent
|
||||||
|
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
21
ftplugin/emblem.vim
Normal file
21
ftplugin/emblem.vim
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
|
" Language: emblem
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-emblem
|
||||||
|
" Version: 1.2.0
|
||||||
|
" Last Change: 2013 Apr 22
|
||||||
|
" License: GPL-3.0
|
||||||
|
|
||||||
|
setlocal tabstop=2
|
||||||
|
setlocal softtabstop=2
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal smartindent
|
||||||
|
|
||||||
|
setlocal formatoptions=q
|
||||||
|
setlocal comments=:/
|
||||||
|
setlocal commentstring=/\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
" Vim ftplugin file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Oscar Hellström <oscar@oscarh.net>
|
|
||||||
" URL: http://personal.oscarh.net
|
|
||||||
" Contributor: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
|
||||||
" Version: 2010-09-03
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Usage:
|
|
||||||
"
|
|
||||||
" To enable folding put in your vimrc:
|
|
||||||
" set foldenable
|
|
||||||
"
|
|
||||||
" Folding will make only one fold for a complete function, even though it has
|
|
||||||
" more than one function head and body.
|
|
||||||
"
|
|
||||||
" To change this behaviour put in your vimrc file:
|
|
||||||
" let g:erlangFoldSplitFunction=1
|
|
||||||
"
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Plugin init
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Don't load any other
|
|
||||||
let b:did_ftplugin=1
|
|
||||||
|
|
||||||
if exists('s:doneFunctionDefinitions')
|
|
||||||
call s:SetErlangOptions()
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:doneFunctionDefinitions=1
|
|
||||||
|
|
||||||
" Local settings
|
|
||||||
function s:SetErlangOptions()
|
|
||||||
compiler erlang
|
|
||||||
if version >= 700
|
|
||||||
setlocal omnifunc=erlangcomplete#Complete
|
|
||||||
endif
|
|
||||||
|
|
||||||
setlocal foldmethod=expr
|
|
||||||
setlocal foldexpr=GetErlangFold(v:lnum)
|
|
||||||
setlocal foldtext=ErlangFoldText()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Define folding functions
|
|
||||||
if !exists("*GetErlangFold")
|
|
||||||
" Folding params
|
|
||||||
let s:ErlangFunBegin = '^\a\w*(.*$'
|
|
||||||
let s:ErlangFunEnd = '^[^%]*\.\s*\(%.*\)\?$'
|
|
||||||
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
|
||||||
|
|
||||||
" Auxiliary fold functions
|
|
||||||
function s:GetNextNonBlank(lnum)
|
|
||||||
let lnum = nextnonblank(a:lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
while line =~ s:ErlangBlankLine && 0 != lnum
|
|
||||||
let lnum = nextnonblank(lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return lnum
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:GetFunName(str)
|
|
||||||
return matchstr(a:str, '^\a\w*(\@=')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:GetFunArgs(str, lnum)
|
|
||||||
let str = a:str
|
|
||||||
let lnum = a:lnum
|
|
||||||
while str !~ '->\s*\(%.*\)\?$'
|
|
||||||
let lnum = s:GetNextNonBlank(lnum)
|
|
||||||
if 0 == lnum " EOF
|
|
||||||
return ""
|
|
||||||
endif
|
|
||||||
let str .= getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return matchstr(str,
|
|
||||||
\ '\(^(\s*\)\@<=.*\(\s*)\(\s\+when\s\+.*\)\?\s\+->\s*\(%.*\)\?$\)\@=')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:CountFunArgs(arguments)
|
|
||||||
let pos = 0
|
|
||||||
let ac = 0 " arg count
|
|
||||||
let arguments = a:arguments
|
|
||||||
|
|
||||||
" Change list / tuples into just one A(rgument)
|
|
||||||
let erlangTuple = '{\([A-Za-z_,|=\-\[\]]\|\s\)*}'
|
|
||||||
let erlangList = '\[\([A-Za-z_,|=\-{}]\|\s\)*\]'
|
|
||||||
|
|
||||||
" FIXME: Use searchpair?
|
|
||||||
while arguments =~ erlangTuple
|
|
||||||
let arguments = substitute(arguments, erlangTuple, "A", "g")
|
|
||||||
endwhile
|
|
||||||
" FIXME: Use searchpair?
|
|
||||||
while arguments =~ erlangList
|
|
||||||
let arguments = substitute(arguments, erlangList, "A", "g")
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
let len = strlen(arguments)
|
|
||||||
while pos < len && pos > -1
|
|
||||||
let ac += 1
|
|
||||||
let pos = matchend(arguments, ',\s*', pos)
|
|
||||||
endwhile
|
|
||||||
return ac
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Main fold function
|
|
||||||
function GetErlangFold(lnum)
|
|
||||||
let lnum = a:lnum
|
|
||||||
let line = getline(lnum)
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunEnd
|
|
||||||
return '<1'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunBegin && foldlevel(lnum - 1) == 1
|
|
||||||
if exists("g:erlangFoldSplitFunction") && g:erlangFoldSplitFunction
|
|
||||||
return '>1'
|
|
||||||
else
|
|
||||||
return '1'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunBegin
|
|
||||||
return '>1'
|
|
||||||
endif
|
|
||||||
|
|
||||||
return '='
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Erlang fold description (foldtext function)
|
|
||||||
function ErlangFoldText()
|
|
||||||
let foldlen = v:foldend - v:foldstart
|
|
||||||
if 1 < foldlen
|
|
||||||
let lines = "lines"
|
|
||||||
else
|
|
||||||
let lines = "line"
|
|
||||||
endif
|
|
||||||
let line = getline(v:foldstart)
|
|
||||||
let name = s:GetFunName(line)
|
|
||||||
let arguments = s:GetFunArgs(strpart(line, strlen(name)), v:foldstart)
|
|
||||||
let argcount = s:CountFunArgs(arguments)
|
|
||||||
let retval = "+" . v:folddashes . " " . name . "/" . argcount
|
|
||||||
let retval .= " (" . foldlen . " " . lines . ")"
|
|
||||||
return retval
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
call s:SetErlangOptions()
|
|
||||||
@@ -1,295 +0,0 @@
|
|||||||
" Erlang refactor file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
|
||||||
" URL: http://ktototaki.info
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin_erlang")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Don't load any other
|
|
||||||
let b:did_ftplugin_erlang=1
|
|
||||||
|
|
||||||
if !exists('g:erlangRefactoring') || g:erlangRefactoring == 0
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangWranglerPath')
|
|
||||||
let g:erlangWranglerPath = '/usr/share/wrangler/'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if glob(g:erlangWranglerPath) == ""
|
|
||||||
call confirm("Wrong path to wrangler dir")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
autocmd VimLeavePre * call StopWranglerServer()
|
|
||||||
|
|
||||||
let s:erlangServerName = "wrangler_vim"
|
|
||||||
|
|
||||||
" Starting background erlang session with wrangler on
|
|
||||||
function! StartWranglerServer()
|
|
||||||
let wranglerEbinDir = g:erlangWranglerPath . "/ebin"
|
|
||||||
let command = "erl_call -s -sname " . s:erlangServerName . " -x 'erl -pa " . wranglerEbinDir . "'"
|
|
||||||
call system(command)
|
|
||||||
call s:send_rpc('application', 'start', '[wrangler_app]')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Stopping erlang session
|
|
||||||
function! StopWranglerServer()
|
|
||||||
echo s:send_rpc('erlang', 'halt', '')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Sending rpc call to erlang session
|
|
||||||
function! s:send_rpc(module, fun, args)
|
|
||||||
let command = "erl_call -sname " . s:erlangServerName . " -a '" . a:module . " " . a:fun . " " . a:args . "'"
|
|
||||||
let result = system(command)
|
|
||||||
if match(result, 'erl_call: failed to connect to node .*') != -1
|
|
||||||
call StartWranglerServer()
|
|
||||||
return system(command)
|
|
||||||
endif
|
|
||||||
return result
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangUndo()
|
|
||||||
echo s:send_rpc("wrangler_undo_server", "undo", "[]")
|
|
||||||
:e!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:trim(text)
|
|
||||||
return substitute(a:text, "^\\s\\+\\|\\s\\+$", "", "g")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:get_msg(result, tuple_start)
|
|
||||||
let msg_begin = '{' . a:tuple_start . ','
|
|
||||||
let matching_start = match(a:result, msg_begin)
|
|
||||||
if matching_start != -1
|
|
||||||
return s:trim(matchstr(a:result, '[^}]*', matching_start + strlen(msg_begin)))
|
|
||||||
endif
|
|
||||||
return ""
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Check if there is an error in result
|
|
||||||
function! s:check_for_error(result)
|
|
||||||
let msg = s:get_msg(a:result, 'ok')
|
|
||||||
if msg != ""
|
|
||||||
return [0, msg]
|
|
||||||
endif
|
|
||||||
let msg = s:get_msg(a:result, 'warning')
|
|
||||||
if msg != ""
|
|
||||||
return [1, msg]
|
|
||||||
endif
|
|
||||||
let msg = s:get_msg(a:result, 'error')
|
|
||||||
if msg != ""
|
|
||||||
return [2, msg]
|
|
||||||
endif
|
|
||||||
return [-1, ""]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Sending apply changes to file
|
|
||||||
function! s:send_confirm()
|
|
||||||
let choice = confirm("What do you want?", "&Preview\n&Confirm\nCa&ncel", 0)
|
|
||||||
if choice == 1
|
|
||||||
echo "TODO: Display preview :)"
|
|
||||||
elseif choice == 2
|
|
||||||
let module = 'wrangler_preview_server'
|
|
||||||
let fun = 'commit'
|
|
||||||
let args = '[]'
|
|
||||||
return s:send_rpc(module, fun, args)
|
|
||||||
else
|
|
||||||
let module = 'wrangler_preview_server'
|
|
||||||
let fun = 'abort'
|
|
||||||
let args = '[]'
|
|
||||||
return s:send_rpc(module, fun, args)
|
|
||||||
echo "Canceled"
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Manually send confirm, for testing purpose only
|
|
||||||
function! SendConfirm()
|
|
||||||
echo s:send_confirm()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Format and send function extracton call
|
|
||||||
function! s:call_extract(start_line, start_col, end_line, end_col, name)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'fun_extraction'
|
|
||||||
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, "' . a:name . '", ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
let [error_code, msg] = s:check_for_error(result)
|
|
||||||
if error_code != 0
|
|
||||||
call confirm(msg)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
|
||||||
echo s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangExtractFunction(mode) range
|
|
||||||
silent w!
|
|
||||||
let name = inputdialog("New function name: ")
|
|
||||||
if name != ""
|
|
||||||
if a:mode == "v"
|
|
||||||
let start_pos = getpos("'<")
|
|
||||||
let start_line = start_pos[1]
|
|
||||||
let start_col = start_pos[2]
|
|
||||||
|
|
||||||
let end_pos = getpos("'>")
|
|
||||||
let end_line = end_pos[1]
|
|
||||||
let end_col = end_pos[2]
|
|
||||||
elseif a:mode == "n"
|
|
||||||
let pos = getpos(".")
|
|
||||||
let start_line = pos[1]
|
|
||||||
let start_col = pos[2]
|
|
||||||
let end_line = pos[1]
|
|
||||||
let end_col = pos[2]
|
|
||||||
else
|
|
||||||
echo "Mode not supported."
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
if s:call_extract(start_line, start_col, end_line, end_col, name)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Empty function name. Ignoring."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
nmap <A-r>e :call ErlangExtractFunction("n")<ENTER>
|
|
||||||
vmap <A-r>e :call ErlangExtractFunction("v")<ENTER>
|
|
||||||
|
|
||||||
function! s:call_rename(mode, line, col, name, search_path)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'rename_' . a:mode
|
|
||||||
let args = '["' . file .'", '
|
|
||||||
if a:mode != "mod"
|
|
||||||
let args = args . a:line . ', ' . a:col . ', '
|
|
||||||
endif
|
|
||||||
let args = args . '"' . a:name . '", ["' . a:search_path . '"], ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
let [error_code, msg] = s:check_for_error(result)
|
|
||||||
if error_code != 0
|
|
||||||
call confirm(msg)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
|
||||||
echo s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangRename(mode)
|
|
||||||
silent w!
|
|
||||||
if a:mode == "mod"
|
|
||||||
let name = inputdialog('Rename module to: ')
|
|
||||||
else
|
|
||||||
let name = inputdialog('Rename "' . expand("<cword>") . '" to: ')
|
|
||||||
endif
|
|
||||||
if name != ""
|
|
||||||
let search_path = expand("%:p:h")
|
|
||||||
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
|
||||||
let pos = getpos(".")
|
|
||||||
let line = pos[1]
|
|
||||||
let col = pos[2]
|
|
||||||
let current_filename = expand("%")
|
|
||||||
let current_filepath = expand("%:p")
|
|
||||||
let new_filename = name . '.erl'
|
|
||||||
if s:call_rename(a:mode, line, col, name, search_path)
|
|
||||||
if a:mode == "mod"
|
|
||||||
execute ':bd ' . current_filename
|
|
||||||
execute ':e ' . new_filename
|
|
||||||
silent execute '!mv ' . current_filepath . ' ' . current_filepath . '.bak'
|
|
||||||
redraw!
|
|
||||||
else
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Empty name. Ignoring."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangRenameFunction()
|
|
||||||
call ErlangRename("fun")
|
|
||||||
endfunction
|
|
||||||
map <A-r>f :call ErlangRenameFunction()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameVariable()
|
|
||||||
call ErlangRename("var")
|
|
||||||
endfunction
|
|
||||||
map <A-r>v :call ErlangRenameVariable()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameModule()
|
|
||||||
call ErlangRename("mod")
|
|
||||||
endfunction
|
|
||||||
map <A-r>m :call ErlangRenameModule()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameProcess()
|
|
||||||
call ErlangRename("process")
|
|
||||||
endfunction
|
|
||||||
map <A-r>p :call ErlangRenameProcess()<ENTER>
|
|
||||||
|
|
||||||
function! s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'tuple_funpar'
|
|
||||||
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, ["' . a:search_path . '"], ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
if s:check_for_error(result)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
call s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangTupleFunArgs(mode)
|
|
||||||
silent w!
|
|
||||||
let search_path = expand("%:p:h")
|
|
||||||
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
|
||||||
if a:mode == "v"
|
|
||||||
let start_pos = getpos("'<")
|
|
||||||
let start_line = start_pos[1]
|
|
||||||
let start_col = start_pos[2]
|
|
||||||
|
|
||||||
let end_pos = getpos("'>")
|
|
||||||
let end_line = end_pos[1]
|
|
||||||
let end_col = end_pos[2]
|
|
||||||
if s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
elseif a:mode == "n"
|
|
||||||
let pos = getpos(".")
|
|
||||||
let line = pos[1]
|
|
||||||
let col = pos[2]
|
|
||||||
if s:call_tuple_fun_args(line, col, line, col, search_path)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Mode not supported."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
nmap <A-r>t :call ErlangTupleFunArgs("n")<ENTER>
|
|
||||||
vmap <A-r>t :call ErlangTupleFunArgs("v")<ENTER>
|
|
||||||
|
|
||||||
" vim: set foldmethod=marker:
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: eRuby
|
" Language: eRuby
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -27,7 +29,7 @@ elseif !exists("b:eruby_subtype")
|
|||||||
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||||
let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
|
let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
|
||||||
if b:eruby_subtype == ''
|
if b:eruby_subtype == ''
|
||||||
let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$')
|
let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$')
|
||||||
endif
|
endif
|
||||||
if b:eruby_subtype == 'rhtml'
|
if b:eruby_subtype == 'rhtml'
|
||||||
let b:eruby_subtype = 'html'
|
let b:eruby_subtype = 'html'
|
||||||
@@ -100,3 +102,5 @@ let &cpo = s:save_cpo
|
|||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8:
|
" vim: nowrap sw=2 sts=2 ts=8:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
43
ftplugin/fish.vim
Normal file
43
ftplugin/fish.vim
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
|
||||||
|
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#%s
|
||||||
|
setlocal define=\\v^\\s*function>
|
||||||
|
setlocal foldexpr=fish#Fold()
|
||||||
|
setlocal formatoptions+=ron1
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
setlocal include=\\v^\\s*\\.>
|
||||||
|
setlocal iskeyword=@,48-57,-,_,.,/
|
||||||
|
setlocal suffixesadd^=.fish
|
||||||
|
|
||||||
|
" Use the 'j' format option when available.
|
||||||
|
if v:version ># 703 || v:version ==# 703 && has('patch541')
|
||||||
|
setlocal formatoptions+=j
|
||||||
|
endif
|
||||||
|
|
||||||
|
if executable('fish_indent')
|
||||||
|
setlocal formatexpr=fish#Format()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if executable('fish')
|
||||||
|
setlocal omnifunc=fish#Complete
|
||||||
|
for s:path in split(system("fish -c 'echo $fish_function_path'"))
|
||||||
|
execute 'setlocal path+='.s:path
|
||||||
|
endfor
|
||||||
|
else
|
||||||
|
setlocal omnifunc=syntaxcomplete#Complete
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Use the 'man' wrapper function in fish to include fish's man pages.
|
||||||
|
" Have to use a script for this; 'fish -c man' would make the the man page an
|
||||||
|
" argument to fish instead of man.
|
||||||
|
execute 'setlocal keywordprg=fish\ '.expand('<sfile>:p:h:h').'/bin/man.fish'
|
||||||
|
|
||||||
|
let b:match_words =
|
||||||
|
\ escape('<%(begin|function|if|switch|while|for)>:<end>', '<>%|)')
|
||||||
|
|
||||||
|
let b:endwise_addition = 'end'
|
||||||
|
let b:endwise_words = 'begin,function,if,switch,while,for'
|
||||||
|
let b:endwise_syngroups = 'fishKeyword,fishConditional,fishRepeat'
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: generic git output
|
" Language: generic git output
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
|
" Last Change: 2013 May 30
|
||||||
|
|
||||||
" Only do this when not done yet for this buffer
|
" Only do this when not done yet for this buffer
|
||||||
if (exists("b:did_ftplugin"))
|
if (exists("b:did_ftplugin"))
|
||||||
@@ -11,6 +14,8 @@ let b:did_ftplugin = 1
|
|||||||
if !exists('b:git_dir')
|
if !exists('b:git_dir')
|
||||||
if expand('%:p') =~# '[\/]\.git[\/]modules[\/]'
|
if expand('%:p') =~# '[\/]\.git[\/]modules[\/]'
|
||||||
" Stay out of the way
|
" Stay out of the way
|
||||||
|
elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
|
||||||
|
let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
|
||||||
elseif expand('%:p') =~# '\.git\>'
|
elseif expand('%:p') =~# '\.git\>'
|
||||||
let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
|
let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
|
||||||
elseif $GIT_DIR != ''
|
elseif $GIT_DIR != ''
|
||||||
@@ -36,3 +41,5 @@ endif
|
|||||||
|
|
||||||
setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
|
setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
|
||||||
let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
|
let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: git commit file
|
" Language: git commit file
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2012 April 7
|
" Last Change: 2013 May 30
|
||||||
|
|
||||||
" Only do this when not done yet for this buffer
|
" Only do this when not done yet for this buffer
|
||||||
if (exists("b:did_ftplugin"))
|
if (exists("b:did_ftplugin"))
|
||||||
@@ -11,15 +13,10 @@ endif
|
|||||||
runtime! ftplugin/git.vim
|
runtime! ftplugin/git.vim
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl
|
setlocal comments=:# commentstring=#\ %s
|
||||||
|
setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
|
||||||
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<'
|
setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q
|
||||||
|
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms<'
|
||||||
if &textwidth == 0
|
|
||||||
" make sure that log messages play nice with git-log on standard terminals
|
|
||||||
setlocal textwidth=72
|
|
||||||
let b:undo_ftplugin .= "|setl tw<"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists("g:no_gitcommit_commands") || v:version < 700
|
if exists("g:no_gitcommit_commands") || v:version < 700
|
||||||
finish
|
finish
|
||||||
@@ -31,6 +28,8 @@ endif
|
|||||||
|
|
||||||
command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
|
command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
|
||||||
|
|
||||||
|
let b:undo_ftplugin = b:undo_ftplugin . "|delc DiffGitCached"
|
||||||
|
|
||||||
function! s:diffcomplete(A,L,P)
|
function! s:diffcomplete(A,L,P)
|
||||||
let args = ""
|
let args = ""
|
||||||
if a:P <= match(a:L." -- "," -- ")+3
|
if a:P <= match(a:L." -- "," -- ")+3
|
||||||
@@ -65,3 +64,5 @@ function! s:gitdiffcached(bang,gitdir,...)
|
|||||||
nnoremap <buffer> <silent> q :q<CR>
|
nnoremap <buffer> <silent> q :q<CR>
|
||||||
setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
|
setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: git config file
|
" Language: git config file
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -13,3 +15,5 @@ setlocal formatoptions-=t formatoptions+=croql
|
|||||||
setlocal comments=:#,:; commentstring=;\ %s
|
setlocal comments=:#,:; commentstring=;\ %s
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl fo< com< cms<"
|
let b:undo_ftplugin = "setl fo< com< cms<"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
|
||||||
|
|
||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: git rebase --interactive
|
" Language: git rebase --interactive
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
@@ -12,10 +14,11 @@ runtime! ftplugin/git.vim
|
|||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
setlocal comments=:# commentstring=#\ %s formatoptions-=t
|
setlocal comments=:# commentstring=#\ %s formatoptions-=t
|
||||||
|
setlocal nomodeline
|
||||||
if !exists("b:undo_ftplugin")
|
if !exists("b:undo_ftplugin")
|
||||||
let b:undo_ftplugin = ""
|
let b:undo_ftplugin = ""
|
||||||
endif
|
endif
|
||||||
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo<"
|
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
|
||||||
|
|
||||||
function! s:choose(word)
|
function! s:choose(word)
|
||||||
s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
|
s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
|
||||||
@@ -41,3 +44,5 @@ endif
|
|||||||
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
|
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
|
||||||
|
|
||||||
let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K"
|
let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user