Compare commits

...

57 Commits

Author SHA1 Message Date
Adam Stankiewicz
df34b4b4fa Update 2020-05-21 22:45:59 +02:00
Adam Stankiewicz
f3804b0892 Restore support for polyglot_disabled for ftdetect, closes #491 2020-05-21 22:45:04 +02:00
Adam Stankiewicz
685aeaaeb1 Add ledger support, closes #488 2020-05-20 20:24:48 +02:00
Adam Stankiewicz
a9cc6fd218 Remove latex, fixes #484 2020-05-20 20:19:03 +02:00
Adam Stankiewicz
3c47f192b5 Fix jinja.html detection 2020-05-20 19:44:40 +02:00
Adam Stankiewicz
c8b350432c Remove generation of ftdetect from build 2020-05-20 19:35:10 +02:00
Adam Stankiewicz
cdb8e233c2 Manually fix ftdetect 2020-05-20 19:32:07 +02:00
Adam Stankiewicz
ff282f610f Remove extra files 2020-05-20 17:29:46 +02:00
Adam Stankiewicz
74cb75bedd Add vim-raku, closes #490 2020-05-20 17:06:38 +02:00
Adam Stankiewicz
42529540df Remove non-working ftplugin line, closes #485 2020-05-20 17:04:22 +02:00
Adam Stankiewicz
a688c66a04 Update 2020-05-20 16:59:09 +02:00
Adam Stankiewicz
0a7c62b3b2 Remove rego syntax, fixes #486 2020-04-30 16:49:01 +02:00
Adam Stankiewicz
c7b5826d53 Update 2020-04-28 01:09:08 +02:00
Adam Stankiewicz
1d348d0c2d Update badge 2020-04-25 23:23:00 +02:00
Adam Stankiewicz
6a15d48ed4 Add brewfile support, closes #469 2020-04-25 22:15:02 +02:00
Adam Stankiewicz
24f0581a96 Add rego support, closes #471 2020-04-25 22:12:56 +02:00
Adam Stankiewicz
33c9484671 Allow to configure python syntax, #474 2020-04-25 22:09:35 +02:00
Adam Stankiewicz
55287efdf7 Change elm provider, closes #475 2020-04-25 21:32:37 +02:00
Adam Stankiewicz
d757bfd643 Change latex provider to luatex, closes #476 2020-04-25 21:30:46 +02:00
Adam Stankiewicz
8ec73a3a89 Change fsharp provider, closes #477 2020-04-25 21:22:25 +02:00
Adam Stankiewicz
b2ee28374b Add gdscript, closes #483 2020-04-25 21:06:45 +02:00
Adam Stankiewicz
68b2748af1 Update 2020-04-25 21:03:34 +02:00
Adam Stankiewicz
14dc82fc4e Update 2020-04-14 13:17:26 +02:00
Adam Stankiewicz
e86e0ad36e Update 2020-03-05 12:30:24 +01:00
Adam Stankiewicz
45ab4d80dd Add zinit syntax, closes #459 2020-03-02 01:42:31 +01:00
Adam Stankiewicz
9cd6e8533b Update 2020-03-02 01:39:59 +01:00
Adam Stankiewicz
43ecbfae50 Add ctags files, fixes #445 2020-03-02 01:24:08 +01:00
Adam Stankiewicz
f77702c090 Remove groovy syntax, fixes #456 2020-03-02 01:10:48 +01:00
Adam Stankiewicz
e558a218c6 Add razor syntax, fixes #450 2020-03-02 01:03:15 +01:00
Adam Stankiewicz
16774887a3 Force javascript filetype for jsx, fixes #460 2020-03-02 00:59:47 +01:00
Adam Stankiewicz
e7dc03dc01 Use upstream rspec plugin, fixes #458 2020-03-02 00:45:18 +01:00
Adam Stankiewicz
aee260a301 Remove jasmine syntax, fixes #464 2020-03-02 00:43:28 +01:00
Adam Stankiewicz
6b540d7db0 Update 2020-03-02 00:34:02 +01:00
Adam Stankiewicz
35ea4d2b90 Update 2020-01-25 16:56:10 +01:00
Chris Bandy
967486dd71 Combine ftdetect files in a predictable order (#461)
Bash expands patterns to an alphabetically sorted list of filenames, but
the order depends on LC_COLLATE. On both Linux and BSD, `sort -V` uses
the C locale.
2020-01-25 16:54:44 +01:00
Adam Stankiewicz
e8454d66ab Fix performance issue with markdown highlighting 2019-12-31 14:23:47 +01:00
Adam Stankiewicz
a60e299a3c Switch back to plasticboy for markdown 2019-12-31 14:08:15 +01:00
Adam Stankiewicz
b8a5504021 Update 2019-12-31 14:05:09 +01:00
Adam Stankiewicz
cea0d08a06 Replace markdown plugin for faster one 2019-12-12 16:43:09 +01:00
Adam Stankiewicz
43085dc02f Update 2019-12-12 16:33:01 +01:00
Adam Stankiewicz
4d8423c962 Add v language, closes #437 2019-12-07 17:39:31 +01:00
Adam Stankiewicz
e204a7223b Add ftplugin to markdown, fixes #447 2019-12-07 13:01:03 +01:00
Adam Stankiewicz
7a0f2d974f Update 2019-12-07 12:21:37 +01:00
timfeirg
15aeea662e Headsup on g:polyglot_disabled (#438) 2019-11-28 11:29:38 +01:00
Adam Stankiewicz
d15651463a Update 2019-11-15 17:27:14 +01:00
Adam Stankiewicz
0c79dd3e73 Update 2019-11-12 21:56:06 +01:00
Adam Stankiewicz
4e95df7c7e Update 2019-11-04 09:04:28 +01:00
Adam Stankiewicz
31c55b85a0 Change octave provider, closes #436 2019-10-16 14:57:13 +02:00
Adam Stankiewicz
199846c6d8 Update 2019-10-16 14:56:00 +02:00
Adam Stankiewicz
f95026252c Update everything, closes #435 2019-09-27 19:47:32 +02:00
Adam Stankiewicz
4f3df59be7 Improve guard so it works for no eof new line 2019-09-12 15:08:44 +02:00
Adam Stankiewicz
26790941f6 Update 2019-09-12 14:32:53 +02:00
Adam Stankiewicz
fbc2af9e82 Remove styled components, fixes #432 2019-09-06 16:47:37 +02:00
Adam Stankiewicz
d4f252565a Remove unnecessary tsx fix 2019-09-06 16:26:33 +02:00
Adam Stankiewicz
48e07bc501 Improve guard to support concatenated files 2019-09-06 15:54:31 +02:00
Adam Stankiewicz
c8897c9c18 Remove unnecessary graphql fix 2019-09-06 15:50:47 +02:00
Adam Stankiewicz
34eb36e6d1 Fix tmux plugin 2019-09-06 14:49:10 +02:00
623 changed files with 14942 additions and 11948 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
/tmp
!*ctags*

View File

@@ -1,6 +1,6 @@
![vim-polyglot](https://i.imgur.com/9RxQK6k.png)
[![Build Status][travis-img-url]][travis-url] [![Maintenance](https://img.shields.io/maintenance/yes/2019.svg?maxAge=2592000)]()
[![Build Status][travis-img-url]][travis-url] [![Maintenance](https://img.shields.io/maintenance/yes/2020.svg?maxAge=2592000)]()
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
@@ -10,7 +10,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->147<!--/Package Count--> packages it consists of.
- It **installs and updates 120+ times faster** than the <!--Package Count-->149<!--/Package Count--> packages it consists of.
- Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
@@ -47,12 +47,13 @@ If you need full functionality of any plugin, please use it directly with your p
<!--Language Packs-->
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl) (syntax)
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin)
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax)
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax, ctags)
- [applescript](https://github.com/mityu/vim-applescript) (syntax, indent)
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent)
- [asciidoc](https://github.com/asciidoc/vim-asciidoc) (syntax)
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey) (indent)
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin)
- [brewfile](https://github.com/bfontaine/Brewfile.vim) (syntax)
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
- [caddyfile](https://github.com/isobit/vim-caddyfile) (syntax, indent, ftplugin)
@@ -72,14 +73,15 @@ If you need full functionality of any plugin, please use it directly with your p
- [dlang](https://github.com/JesseKPhillips/d.vim) (syntax, indent)
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin)
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin)
- [elm](https://github.com/ElmCast/elm-vim) (syntax, indent, autoload, ftplugin)
- [elm](https://github.com/andys8/vim-elm-syntax) (syntax, indent)
- [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin)
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent)
- [ferm](https://github.com/vim-scripts/ferm.vim) (syntax)
- [fish](https://github.com/georgewitteman/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax)
- [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent)
- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent)
- [gdscript](https://github.com/calviken/vim-gdscript3) (syntax, indent, ftplugin)
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent)
- [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax)
@@ -87,8 +89,6 @@ If you need full functionality of any plugin, please use it directly with your p
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
- [gradle](https://github.com/tfnico/vim-gradle) (compiler)
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after)
- [groovy-indent](https://github.com/vim-scripts/groovyindent-unix) (indent)
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin)
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax)
@@ -101,17 +101,16 @@ If you need full functionality of any plugin, please use it directly with your p
- [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin)
- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, ftplugin)
- [ion](https://github.com/vmchale/ion-vim) (syntax, ftplugin)
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax)
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftplugin, extras)
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent)
- [jinja](https://github.com/lepture/vim-jinja) (syntax, indent)
- [json5](https://github.com/GutenYe/json5.vim) (syntax)
- [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin)
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, syntax, indent, ftplugin)
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after)
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin)
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
- [ledger](https://github.com/ledger/vim-ledger) (syntax, compiler, indent)
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (syntax, indent, compiler, ftplugin)
- [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
@@ -119,7 +118,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax)
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent)
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, ftplugin)
- [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin)
- [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax)
- [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin)
@@ -129,17 +128,17 @@ If you need full functionality of any plugin, please use it directly with your p
- [nix](https://github.com/LnL7/vim-nix) (syntax, indent, compiler, ftplugin)
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, compiler, ftplugin)
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
- [octave](https://github.com/McSinyx/vim-octave) (syntax, indent)
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin)
- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent)
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin)
- [pony](https://github.com/jakwings/vim-pony) (syntax, indent, autoload, ftplugin)
- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, ftplugin)
- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, compiler, ftplugin)
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent)
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin)
- [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin)
- [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin, ctags)
- [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin)
- [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload)
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent)
@@ -149,37 +148,39 @@ If you need full functionality of any plugin, please use it directly with your p
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax)
- [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, ftplugin)
- [ragel](https://github.com/jneen/ragel.vim) (syntax)
- [raku](https://github.com/Raku/vim-raku) (syntax, indent, ftplugin)
- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin)
- [razor](https://github.com/adamclerk/vim-razor) (syntax, indent, ftplugin)
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent)
- [rspec](https://github.com/sheerun/rspec.vim) (syntax)
- [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, autoload, ftplugin)
- [rspec](https://github.com/keith/rspec.vim) (syntax)
- [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, indent, autoload, ftplugin)
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin)
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin)
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ctags)
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax)
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin)
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ctags)
- [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, indent, ftplugin)
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftplugin)
- [slime](https://github.com/slime-lang/vim-slime-syntax) (syntax, indent)
- [smt2](https://github.com/bohlender/vim-smt2) (syntax, autoload, ftplugin)
- [solidity](https://github.com/tomlion/vim-solidity) (syntax, indent, ftplugin)
- [styled-components](https://github.com/styled-components/vim-styled-components#main) (after)
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)
- [svelte](https://github.com/evanleck/vim-svelte) (syntax, indent)
- [svelte](https://github.com/evanleck/vim-svelte) (syntax, indent, ftplugin)
- [svg-indent](https://github.com/jasonshell/vim-svg-indent) (indent)
- [svg](https://github.com/vim-scripts/svg.vim) (syntax)
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin)
- [swift](https://github.com/keith/swift.vim) (syntax, indent, compiler, ftplugin, ctags)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax, ftplugin)
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, autoload, ftplugin)
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin)
- [thrift](https://github.com/solarnz/thrift.vim) (syntax)
- [tmux](https://github.com/ericpruitt/tmux.vim) ()
- [tmux](https://github.com/ericpruitt/tmux.vim) (syntax, ftplugin)
- [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin)
- [tptp](https://github.com/c-cube/vim-tptp) (syntax)
- [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin)
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin, ctags)
- [v](https://github.com/ollykel/v-vim) (syntax, indent, ftplugin)
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent, ftplugin)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax)
- [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin)
@@ -192,6 +193,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
- [zephir](https://github.com/xwsoul/vim-zephir) (syntax)
- [zig](https://github.com/ziglang/zig.vim) (syntax, autoload, ftplugin)
- [zinit](https://github.com/zinit-zsh/zplugin-vim-syntax) (syntax)
<!--/Language Packs-->
## Updating
@@ -205,7 +207,7 @@ Please make sure you have `syntax on` in your `.vimrc`, otherwise syntax files a
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
```viml
" ~/.vimrc
" ~/.vimrc, declare this variable before polyglot is loaded
let g:polyglot_disabled = ['css']
```

View File

@@ -1,21 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
" Vim completion script
" Language: styled-components (js/ts)
" Maintainer: Karl Fleischmann <fleischmann.karl@gmail.com>
" URL: https://github.com/styled-components/vim-styled-components
fun! styledcomplete#CompleteSC(findstart, base)
if IsStyledDefinition(line('.'))
return csscomplete#CompleteCSS(a:findstart, a:base)
endif
" Only trigger original omnifunc if it was set in the first place
if exists('b:prevofu')
" create a funcref to call with the previous omnicomplete function
let s:funcref = function(b:prevofu)
return s:funcref(a:findstart, a:base)
endif
endfun

View File

@@ -1,7 +1,7 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'haskell') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
setlocal comments=s1fl:{-,mb:-,ex:-},:--
setlocal iskeyword+=-,.,*
setlocal commentstring=--\ %s
endif

View File

@@ -1,9 +1,9 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'cjsx') != -1
finish
endif
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

View File

@@ -1,6 +1,6 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'haskell') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
setlocal comments=s1fl:{-,mb:\ \ ,ex:-},:--
setlocal iskeyword+='
endif

View File

@@ -1,5 +1,5 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'idris') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'idris') == -1
setlocal iskeyword+='
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'javascript') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
" Vim filetype plugin file
" Language: JavaScript
@@ -14,9 +12,9 @@ if exists('b:undo_ftplugin')
else
let b:undo_ftplugin = 'setlocal iskeyword< suffixesadd<'
endif
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim ftplugin file
@@ -41,52 +39,13 @@ if exists("loaded_matchup")
let b:match_skip = 's:comment\|string'
endif
let b:original_commentstring = &l:commentstring
let b:jsx_pretty_old_cms = &l:commentstring
augroup jsx_comment
autocmd! CursorMoved <buffer>
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:original_commentstring)
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:jsx_pretty_old_cms)
augroup end
setlocal suffixesadd+=.jsx
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
" Vim filetype plugin file
" Language: styled-components (js/ts)
" Maintainer: Karl Fleischmann <fleischmann.karl@gmail.com>
" URL: https://github.com/styled-components/vim-styled-components
fu! s:GetSyntaxNames(lnum, cnum)
return map(synstack(a:lnum, a:cnum), 'synIDattr(v:val, "name")')
endfu
" re-implement SynSOL of vim-jsx
fu! s:SynSOL(lnum)
return s:GetSyntaxNames(a:lnum, 1)
endfu
"" Return whether the current line is a jsTemplateString
fu! IsStyledDefinition(lnum)
" iterate through all syntax items in the given line
for item in s:SynSOL(a:lnum)
" if syntax-item is a jsTemplateString return 1 - true
" `==#` is a match case comparison of the item
if item ==# 'styledDefinition'
return 1
endif
endfor
" fallback to 0 - false
return 0
endfu
if exists('&ofu')
if &ofu
" Do not keep track of previous omnifunc if it was not set in the first
" place
let b:prevofu=&ofu
endif
setl omnifunc=styledcomplete#CompleteSC
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'llvm') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'llvm') == -1
" Copyright (c) 2018 rhysd
"
@@ -59,7 +57,7 @@ function! s:is_section_delim(line, func_delim) abort
return 0
endif
let kind = sec[0]
return kind == s:KIND_BLOCK_PREC || kind == s:KIND_BLOCK_FOLLOW || kind == func_delim
return kind == s:KIND_BLOCK_PREC || kind == s:KIND_BLOCK_FOLLOW || kind == a:func_delim
endfunction
function! s:next_section(stop_func_begin) abort
@@ -87,11 +85,16 @@ function! s:prev_section(stop_func_begin) abort
endwhile
endfunction
nnoremap <buffer><Plug>(llvm-next-section-begin) :<C-u>call <SID>next_section(1)<CR>
nnoremap <buffer><Plug>(llvm-prev-section-begin) :<C-u>call <SID>prev_section(1)<CR>
nnoremap <buffer><Plug>(llvm-next-section-end) :<C-u>call <SID>next_section(0)<CR>
nnoremap <buffer><Plug>(llvm-prev-section-end) :<C-u>call <SID>prev_section(0)<CR>
if !g:llvm_ext_no_mapping
nnoremap <buffer><silent>]] :<C-u>call <SID>next_section(1)<CR>
nnoremap <buffer><silent>[[ :<C-u>call <SID>prev_section(1)<CR>
nnoremap <buffer><silent>][ :<C-u>call <SID>next_section(0)<CR>
nnoremap <buffer><silent>[] :<C-u>call <SID>prev_section(0)<CR>
nmap <buffer><silent>]] <Plug>(llvm-next-section-begin)
nmap <buffer><silent>[[ <Plug>(llvm-prev-section-begin)
nmap <buffer><silent>][ <Plug>(llvm-next-section-end)
nmap <buffer><silent>[] <Plug>(llvm-prev-section-end)
endif
function! s:function_range_at(linum) abort
@@ -224,9 +227,12 @@ function! s:move_to_following_block() abort
endtry
endfunction
nnoremap <buffer><Plug>(llvm-move-block-prev) :<C-u>call <SID>move_to_pred_block()<CR>
nnoremap <buffer><Plug>(llvm-move-block-next) :<C-u>call <SID>move_to_following_block()<CR>
if !g:llvm_ext_no_mapping
nnoremap <buffer><silent>[b :<C-u>call <SID>move_to_pred_block()<CR>
nnoremap <buffer><silent>]b :<C-u>call <SID>move_to_following_block()<CR>
nmap <buffer><silent>[b <Plug>(llvm-move-block-prev)
nmap <buffer><silent>]b <Plug>(llvm-move-block-next)
endif
function! s:get_func_identifiers(line) abort
@@ -440,8 +446,10 @@ function! s:goto_definition() abort
echom "No definition for '" . ident . "' found"
endfunction
nnoremap <buffer><Plug>(llvm-goto-definition) :<C-u>call <SID>goto_definition()<CR>
if !g:llvm_ext_no_mapping
nnoremap <buffer><silent>K :<C-u>call <SID>goto_definition()<CR>
nmap <buffer><silent>K <Plug>(llvm-goto-definition)
endif
function! s:run_lli(...) abort
@@ -475,3 +483,5 @@ endfunction
if !exists(':LLI')
command! -buffer -nargs=? -bar -complete=file LLI call <SID>run_lli(<f-args>)
endif
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'puppet') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
if !exists('g:puppet_align_hashes')
let g:puppet_align_hashes = 1
@@ -9,3 +7,5 @@ endif
if g:puppet_align_hashes
inoremap <buffer> <silent> => =><Esc>:call puppet#align#AlignHashrockets()<CR>$a
endif
endif

View File

@@ -1,9 +1,12 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
" modified from html.vim
" For matchit plugin
if get(g:, 'vim_jsx_pretty_disable_tsx', 0)
finish
endif
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words = '(:),\[:\],{:},<:>,' .
@@ -17,15 +20,13 @@ if exists("loaded_matchup")
let b:match_skip = 's:comment\|string'
endif
let b:original_commentstring = &l:commentstring
let b:jsx_pretty_old_cms = &l:commentstring
augroup jsx_comment
autocmd! CursorMoved <buffer>
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:original_commentstring)
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:jsx_pretty_old_cms)
augroup end
setlocal suffixesadd+=.tsx
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'yaml') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yaml') == -1
" Vim indent file
" Language: Yaml
@@ -9,3 +7,5 @@ endif
" URL: https://github.com/hjpbarcelos
setlocal autoindent sw=2 ts=2 expandtab
" vim:set sw=2:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim indent file
@@ -23,7 +21,7 @@ if exists('s:did_indent')
endif
setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e,*<Return>,<>>,<<>,/
setlocal indentkeys=0.,0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/
function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetJavascriptIndent'))
@@ -31,176 +29,5 @@ endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
" Vim syntax file
" Language: styled-components (js/ts)
" Maintainer: Karl Fleischmann <fleischmann.karl@gmail.com>
" URL: https://github.com/styled-components/vim-styled-components
" initialize variable to check, if the indentation expression is run
" multiple times in a row, which indicates an infinite recursion
let s:is_recursion = 0
" store current indentexpr for later
let b:js_ts_indent=&indentexpr
" set indentexpr for this filetype (styled-components)
setlocal indentexpr=GetStyledIndent()
" add the following keys to trigger reindenting, when in insert mode
" - *; - Indent and insert on press of ';' key.
" - *<:> - Indent and insert on press of ':' key.
set indentkeys+=*;,*<:>,*<Return>
fu! s:GetSyntaxNames(lnum, cnum)
return map(synstack(a:lnum, a:cnum), 'synIDattr(v:val, "name")')
endfu
" re-implement SynSOL of vim-jsx
" TODO: add dependency to the readme and remove duplicate implementation
fu! s:SynSOL(lnum)
return s:GetSyntaxNames(a:lnum, 1)
endfu
" re-implement SynEOL of vim-jsx
" TODO: add dependency to the readme and remove duplicate implementation
fu! s:SynEOL(lnum, offset)
let l:lnum = prevnonblank(a:lnum)
let l:col = strlen(getline(l:lnum))
return s:GetSyntaxNames(l:lnum, l:col + a:offset)
endfu
"" Return whether the current line is a jsTemplateString
fu! s:IsStyledDefinition(lnum)
" iterate through all syntax items in the given line
for item in s:SynSOL(a:lnum)
" if syntax-item is a jsTemplateString return 1 - true
" `==#` is a match case comparison of the item
if item ==# 'styledDefinition'
return 1
endif
endfor
" fallback to 0 - false
return 0
endfu
"" Count occurences of `str` at the beginning of the given `lnum` line
fu! s:CountOccurencesInSOL(lnum, str)
let l:occurence = 0
" iterate through all items in the given line
for item in s:SynSOL(a:lnum)
" if the syntax-item equals the given str increment the counter
" `==?` is a case isensitive equal operation
if item ==? a:str
let l:occurence += 1
endif
endfor
" return the accumulated count of occurences
return l:occurence
endfu
"" Count occurences of `str` at the end of the given `lnum` line
fu! s:CountOccurencesInEOL(lnum, str, offset)
let l:occurence = 0
" iterate through all items in the given line
for item in s:SynEOL(a:lnum, a:offset)
" if the syntax-item equals the given str increment the counter
" `==?` is a case insensitive equal operation
if item == a:str
let l:occurence += 1
endif
endfor
" return the accumulated count of occurences
return l:occurence
endfu
"" Get the indentation of the current line
fu! GetStyledIndent()
if s:IsStyledDefinition(v:lnum)
let l:baseIndent = 0
" find last non-styled line
let l:cnum = v:lnum
while s:IsStyledDefinition(l:cnum)
let l:cnum -= 1
endwhile
" get indentation of the last non-styled line as base indentation
let l:baseIndent = indent(l:cnum)
" incrementally build indentation based on current indentation
" - one shiftwidth for the styled definition region
" - one shiftwidth per open nested definition region
let l:styledIndent = &sw
let l:styledIndent += min([
\ s:CountOccurencesInSOL(v:lnum, 'styledNestedRegion'),
\ s:CountOccurencesInEOL(v:lnum, 'styledNestedRegion', 0)
\ ]) * &sw
" decrease indentation by one shiftwidth, if the styled definition
" region ends on the current line
" - either directly via styled definition region, or
" - if the very last
if s:CountOccurencesInEOL(v:lnum, 'styledDefinition', 1) == 0
let l:styledIndent -= &sw
endif
" return the base indentation
" (for nested styles inside classes/objects/etc.) plus the actual
" indentation inside the styled definition region
return l:baseIndent + l:styledIndent
elseif len(b:js_ts_indent)
let l:result = 0
let l:offset = 0
" increase indentation by one shiftwidth, if the last line ended on a
" styledXmlRegion and this line does not continue with it
" this is a fix for an incorrectly indented xml prop after a
" glamor-styled styledXmlRegion
if s:CountOccurencesInEOL(v:lnum-1, 'styledXmlRegion', 0) == 1 &&
\ s:CountOccurencesInSOL(v:lnum, 'styledXmlRegion') == 0
let l:offset = &sw
endif
" make sure `GetStyledIndent` and `GetJsxIndent` don't infinitely
" recurse by incrementing a counter variable, before evaluating the
" stored indent expression
if s:is_recursion == 0
let s:is_recursion = 1
let l:result = eval(b:js_ts_indent)
endif
" `is_recursion` being 0 at this point indicates, that
" `eval(b:js_ts_indent)` did itself evaluate it's stored indentexpr
" and thus it can be assumed, that the current line should be
" indented as JS
if s:is_recursion == 0
" use one of `GetJavascriptIndent` or `GetJsIndent` if existing
" fallback to cindent, if not
if exists('*GetJavascriptIndent')
let l:result = GetJavascriptIndent()
elseif exists('*GetJsIndent')
let l:result = GetJsIndent()
else
let l:result = cindent(v:lnum)
endif
endif
" reset `is_recursion` counter and return the indentation value
let s:is_recursion = 0
return l:result + l:offset
endif
" if all else fails indent according to C-syntax
return cindent(v:lnum)
endfu

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -1,5 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
runtime! indent/javascript.vim

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'objc') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1
" Vim indent file
" Language: Objective-C
@@ -95,3 +93,5 @@ endfunction
" Restore 'cpo' options
let &cpo = s:save_cpo
unlet s:save_cpo
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim indent file
@@ -11,6 +9,10 @@ endif
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if get(g:, 'vim_jsx_pretty_disable_tsx', 0)
finish
endif
if exists('b:did_indent')
let s:did_indent = b:did_indent
unlet b:did_indent
@@ -23,8 +25,10 @@ if exists('s:did_indent')
let b:did_indent = s:did_indent
endif
runtime! indent/typescript.vim
setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e,*<Return>,<>>,<<>,/
setlocal indentkeys=0.,0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/
function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetTypescriptIndent'))
@@ -32,8 +36,5 @@ endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
runtime! indent/javascript.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'c++11') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
" Vim syntax file
" Language: C Additions
@@ -38,6 +36,19 @@ if exists('g:cpp_member_variable_highlight') && g:cpp_member_variable_highlight
hi def link cCustomMemVar Function
endif
" -----------------------------------------------------------------------------
" Highlight POSIX functions.
" -----------------------------------------------------------------------------
if exists('g:cpp_posix_standard') && g:cpp_posix_standard
syn keyword cPOSIXFunction socket accept bind connect getsockname
syn keyword cPOSIXFunction listen recv recvfrom recvmsg
syn keyword cPOSIXFunction send sendto sendmsg setsockopt socketpair
syn keyword cPOSIXFunction htonl htons ntohl ntohs
syn keyword cPOSIXFunction inet_ntop inet_pton getaddrinfo
syn keyword cPOSIXFunction poll select pselect
hi def link cPOSIXFunction Function
endif
" -----------------------------------------------------------------------------
" Source: aftersyntaxc.vim
" -----------------------------------------------------------------------------
@@ -306,3 +317,5 @@ hi def link cBoolean Boolean
"hi def link cDelimiter Delimiter
" foldmethod=syntax fix, courtesy of Ivan Freitas
"hi def link cBraces Delimiter
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'cjsx') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cjsx') == -1
if exists('b:current_syntax')
let s:current_syntax=b:current_syntax
@@ -29,3 +27,5 @@ hi def link cjsxTagName Function
hi def link cjsxEntity Statement
hi def link cjsxEntityPunct Type
hi def link cjsxAttribProperty Type
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'c++11') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
" Vim syntax file
" Language: C++ Additions
@@ -635,21 +633,19 @@ syntax keyword cppSTLios unitbuf
syntax keyword cppSTLios uppercase
"syntax keyword cppSTLios ws
syntax keyword cppSTLiterator back_insert_iterator
syntax keyword cppSTLiterator bidirectional_iterator
syntax keyword cppSTLiterator const_iterator
syntax keyword cppSTLiterator const_reverse_iterator
syntax keyword cppSTLiterator forward_iterator
syntax keyword cppSTLiterator front_insert_iterator
syntax keyword cppSTLiterator input_iterator
syntax keyword cppSTLiterator insert_iterator
syntax keyword cppSTLiterator istreambuf_iterator
syntax keyword cppSTLiterator istream_iterator
syntax keyword cppSTLiterator ostreambuf_iterator
syntax keyword cppSTLiterator ostream_iterator
syntax keyword cppSTLiterator iterator
syntax keyword cppSTLiterator ostream_iterator
syntax keyword cppSTLiterator output_iterator
syntax keyword cppSTLiterator random_access_iterator
syntax keyword cppSTLiterator raw_storage_iterator
syntax keyword cppSTLiterator reverse_bidirectional_iterator
syntax keyword cppSTLiterator move_iterator
syntax keyword cppSTLiterator reverse_iterator
syntax keyword cppSTLiterator_tag bidirectional_iterator_tag
syntax keyword cppSTLiterator_tag forward_iterator_tag
@@ -1595,6 +1591,8 @@ endif " C++14
if !exists("cpp_no_cpp17")
syntax keyword cppSTLnamespace pmr
" algorithm
syntax keyword cppSTLfunction clamp
syntax keyword cppSTLfunction for_each_n
@@ -1987,87 +1985,278 @@ endif " C++17
if !exists("cpp_no_cpp20")
" type_traits
syntax keyword cppSTLtype remove_cvref remove_cvref_t
syntax keyword cppType char8_t
syntax keyword cppStatement co_yield co_return co_await
syntax keyword cppStorageClass consteval
syntax keyword cppSTLnamespace ranges
" algorithm
syntax keyword cppSTLfunction shift_left
syntax keyword cppSTLfunction shift_right
syntax keyword cppSTLfunction lexicographical_compare_three_way
" bit
syntax keyword cppSTLcast bit_cast
syntax keyword cppSTLfunction ispow2
syntax keyword cppSTLfunction ceil2
syntax keyword cppSTLfunction floor2
syntax keyword cppSTLfunction log2p1
syntax keyword cppSTLfunction rotl
syntax keyword cppSTLfunction rotr
syntax keyword cppSTLfunction countl_zero
syntax keyword cppSTLfunction countl_one
syntax keyword cppSTLfunction countr_zero
syntax keyword cppSTLfunction countr_one
syntax keyword cppSTLfunction popcount
syntax keyword cppSTLtype endian
" compare
syntax keyword cppSTLtype weak_equality
syntax keyword cppSTLtype strong_equality
syntax keyword cppSTLtype partial_ordering
syntax keyword cppSTLtype weak_ordering
syntax keyword cppSTLtype strong_ordering
syntax keyword cppSTLtype common_comparison_category
syntax keyword cppSTLtype compare_three_way_result
syntax keyword cppSTLtype compare_three_way
syntax keyword cppSTLtype strong_order
syntax keyword cppSTLtype weak_order
syntax keyword cppSTLtype parital_order
syntax keyword cppSTLtype compare_strong_order_fallback
syntax keyword cppSTLtype compare_weak_order_fallback
syntax keyword cppSTLtype compare_parital_order_fallback
syntax keyword cppSTLfunction is_eq
syntax keyword cppSTLfunction is_neq
syntax keyword cppSTLfunction is_lt
syntax keyword cppSTLfunction is_lteq
syntax keyword cppSTLfunction is_gt
syntax keyword cppSTLfunction is_gteq
" format
syntax keyword cppSTLtype formatter
syntax keyword cppSTLtype basic_format_parse_context
syntax keyword cppSTLtype format_parse_context
syntax keyword cppSTLtype wformat_parse_context
syntax keyword cppSTLtype basic_format_context
syntax keyword cppSTLtype format_context
syntax keyword cppSTLtype wformat_context
syntax keyword cppSTLtype basic_format_arg
syntax keyword cppSTLtype basic_format_args
syntax keyword cppSTLtype format_args
syntax keyword cppSTLtype wformat_args
syntax keyword cppSTLtype format_args_t
syntax keyword cppSTLtype format_error
syntax keyword cppSTLfuntion format
syntax keyword cppSTLfuntion format_to
syntax keyword cppSTLfuntion format_to_n
syntax keyword cppSTLfuntion formatted_size
syntax keyword cppSTLfuntion vformat
syntax keyword cppSTLfuntion vformat_to
syntax keyword cppSTLfuntion visit_format_arg
syntax keyword cppSTLfuntion make_format_args
syntax keyword cppSTLfuntion make_wformat_args
" iterator
syntax keyword cppSTLtype default_sentinel_t unreachable_sentinel_t
syntax keyword cppSTLiterator common_iterator
syntax keyword cppSTLiterator counted_iterator
syntax keyword cppSTLiterator_tag contiguous_iterator_tag
" memory
syntax keyword cppSTLfunction to_address
syntax keyword cppSTLfunction assume_aligned
syntax keyword cppSTLfunction make_unique_default_init
syntax keyword cppSTLfunction allocate_shared_default_init
" source_location
syntax keyword cppSTLtype source_location
" span
syntax keyword cppSTLtype span
syntax keyword cppSTLfunction as_bytes
syntax keyword cppSTLfunction as_writable_bytes
syntax keyword cppSTLconstant dynamic_extent
" syncstream
syntax keyword cppSTLtype basic_syncbuf
syntax keyword cppSTLtype basic_osyncstream
syntax keyword cppSTLtype syncbuf
syntax keyword cppSTLtype wsyncbuf
syntax keyword cppSTLtype osyncstream
syntax keyword cppSTLtype wosyncstream
" type_traits
syntax keyword cppSTLtype remove_cvref remove_cvref_t
syntax keyword cppSTLtype common_reference common_reference_t
syntax keyword cppSTLfunction is_constant_evaluated
syntax keyword cppSTLfunction is_pointer_interconvertible
syntax keyword cppSTLfunction is_corresponding_member
syntax keyword cppSTLtype is_nothrow_convertible
syntax keyword cppSTLbool is_nothrow_convertible_v
syntax keyword cppSTLtype is_layout_compatible
syntax keyword cppSTLbool is_layout_compatible_v
syntax keyword cppSTLtype is_bounded_array
syntax keyword cppSTLbool is_bounded_array_v
syntax keyword cppSTLtype is_unbounded_array
syntax keyword cppSTLbool is_unbounded_array_v
syntax keyword cppSTLtype is_pointer_interconvertible_base_of
syntax keyword cppSTLbool is_pointer_interconvertible_base_of_v
syntax keyword cppSTLtype has_strong_structural_equality
syntax keyword cppSTLbool has_strong_structural_equality_v
" version
" TODO
endif
if exists('g:cpp_concepts_highlight') && g:cpp_concepts_highlight
if exists('g:cpp_concepts_highlight')
syntax keyword cppStatement concept
syntax keyword cppStorageClass requires
syntax keyword cppSTLtype DefaultConstructible
syntax keyword cppSTLtype MoveConstructible
syntax keyword cppSTLtype CopyConstructible
syntax keyword cppSTLtype MoveAssignable
syntax keyword cppSTLtype CopyAssignable
syntax keyword cppSTLtype Destructible
syntax keyword cppSTLtype TriviallyCopyable
syntax keyword cppSTLtype TrivialType
syntax keyword cppSTLtype StandardLayoutType
syntax keyword cppSTLtype PODType
syntax keyword cppSTLtype EqualityComparable
syntax keyword cppSTLtype LessThanComparable
syntax keyword cppSTLtype Swappable
syntax keyword cppSTLtype ValueSwappable
syntax keyword cppSTLtype NullablePointer
syntax keyword cppSTLtype Hash
syntax keyword cppSTLtype Allocator
syntax keyword cppSTLtype FunctionObject
syntax keyword cppSTLtype Callable
syntax keyword cppSTLtype Predicate
syntax keyword cppSTLtype BinaryPredicate
syntax keyword cppSTLtype Compare
syntax keyword cppSTLtype Container
syntax keyword cppSTLtype ReversibleContainer
syntax keyword cppSTLtype AllocatorAwareContainer
syntax keyword cppSTLtype SequenceContainer
syntax keyword cppSTLtype ContiguousContainer
syntax keyword cppSTLtype AssociativeContainer
syntax keyword cppSTLtype UnorderedAssociativeContainer
syntax keyword cppSTLtype DefaultInsertable
syntax keyword cppSTLtype CopyInsertable
syntax keyword cppSTLtype CopyInsertable
syntax keyword cppSTLtype MoveInsertable
syntax keyword cppSTLtype EmplaceConstructible
syntax keyword cppSTLtype Erasable
syntax keyword cppSTLtype Iterator
syntax keyword cppSTLtype InputIterator
syntax keyword cppSTLtype OutputIterator
syntax keyword cppSTLtype ForwardIterator
syntax keyword cppSTLtype BidirectionalIterator
syntax keyword cppSTLtype RandomAccessIterator
syntax keyword cppSTLtype ContiguousIterator
syntax keyword cppSTLtype UnformattedInputFunction
syntax keyword cppSTLtype FormattedInputFunction
syntax keyword cppSTLtype UnformattedOutputFunction
syntax keyword cppSTLtype FormattedOutputFunction
syntax keyword cppSTLtype SeedSequence
syntax keyword cppSTLtype UniformRandomBitGenerator
syntax keyword cppSTLtype RandomNumberEngine
syntax keyword cppSTLtype RandomNumberEngineAdaptor
syntax keyword cppSTLtype RandomNumberDistribution
syntax keyword cppSTLtype BasicLockable
syntax keyword cppSTLtype Lockable
syntax keyword cppSTLtype TimedLockable
syntax keyword cppSTLtype Mutex
syntax keyword cppSTLtype TimedMutex
syntax keyword cppSTLtype SharedMutex
syntax keyword cppSTLtype SharedTimedMutex
syntax keyword cppSTLtype UnaryTypeTrait
syntax keyword cppSTLtype BinaryTypeTrait
syntax keyword cppSTLtype TransformationTrait
syntax keyword cppSTLtype Clock
syntax keyword cppSTLtype TrivialClock
syntax keyword cppSTLtype CharTraits
syntax keyword cppSTLtype pos_type
syntax keyword cppSTLtype off_type
syntax keyword cppSTLtype BitmaskType
syntax keyword cppSTLtype NumericType
syntax keyword cppSTLtype RegexTraits
syntax keyword cppSTLtype LiteralType
if g:cpp_concepts_highlight == 1
syntax keyword cppSTLconcept DefaultConstructible
syntax keyword cppSTLconcept MoveConstructible
syntax keyword cppSTLconcept CopyConstructible
syntax keyword cppSTLconcept MoveAssignable
syntax keyword cppSTLconcept CopyAssignable
syntax keyword cppSTLconcept Destructible
syntax keyword cppSTLconcept TriviallyCopyable
syntax keyword cppSTLconcept TrivialType
syntax keyword cppSTLconcept StandardLayoutType
syntax keyword cppSTLconcept PODType
syntax keyword cppSTLconcept EqualityComparable
syntax keyword cppSTLconcept LessThanComparable
syntax keyword cppSTLconcept Swappable
syntax keyword cppSTLconcept ValueSwappable
syntax keyword cppSTLconcept NullablePointer
syntax keyword cppSTLconcept Hash
syntax keyword cppSTLconcept Allocator
syntax keyword cppSTLconcept FunctionObject
syntax keyword cppSTLconcept Callable
syntax keyword cppSTLconcept Predicate
syntax keyword cppSTLconcept BinaryPredicate
syntax keyword cppSTLconcept Compare
syntax keyword cppSTLconcept Container
syntax keyword cppSTLconcept ReversibleContainer
syntax keyword cppSTLconcept AllocatorAwareContainer
syntax keyword cppSTLconcept SequenceContainer
syntax keyword cppSTLconcept ContiguousContainer
syntax keyword cppSTLconcept AssociativeContainer
syntax keyword cppSTLconcept UnorderedAssociativeContainer
syntax keyword cppSTLconcept DefaultInsertable
syntax keyword cppSTLconcept CopyInsertable
syntax keyword cppSTLconcept CopyInsertable
syntax keyword cppSTLconcept MoveInsertable
syntax keyword cppSTLconcept EmplaceConstructible
syntax keyword cppSTLconcept Erasable
syntax keyword cppSTLconcept Iterator
syntax keyword cppSTLconcept InputIterator
syntax keyword cppSTLconcept OutputIterator
syntax keyword cppSTLconcept ForwardIterator
syntax keyword cppSTLconcept BidirectionalIterator
syntax keyword cppSTLconcept RandomAccessIterator
syntax keyword cppSTLconcept ContiguousIterator
syntax keyword cppSTLconcept UnformattedInputFunction
syntax keyword cppSTLconcept FormattedInputFunction
syntax keyword cppSTLconcept UnformattedOutputFunction
syntax keyword cppSTLconcept FormattedOutputFunction
syntax keyword cppSTLconcept SeedSequence
syntax keyword cppSTLconcept UniformRandomBitGenerator
syntax keyword cppSTLconcept RandomNumberEngine
syntax keyword cppSTLconcept RandomNumberEngineAdaptor
syntax keyword cppSTLconcept RandomNumberDistribution
syntax keyword cppSTLconcept BasicLockable
syntax keyword cppSTLconcept Lockable
syntax keyword cppSTLconcept TimedLockable
syntax keyword cppSTLconcept Mutex
syntax keyword cppSTLconcept TimedMutex
syntax keyword cppSTLconcept SharedMutex
syntax keyword cppSTLconcept SharedTimedMutex
syntax keyword cppSTLconcept UnaryTypeTrait
syntax keyword cppSTLconcept BinaryTypeTrait
syntax keyword cppSTLconcept TransformationTrait
syntax keyword cppSTLconcept Clock
syntax keyword cppSTLconcept TrivialClock
syntax keyword cppSTLconcept CharTraits
syntax keyword cppSTLconcept pos_type
syntax keyword cppSTLconcept off_type
syntax keyword cppSTLconcept BitmaskType
syntax keyword cppSTLconcept NumericType
syntax keyword cppSTLconcept RegexTraits
syntax keyword cppSTLconcept LiteralType
elseif g:cpp_concepts_highlight == 2
syntax keyword cppSTLconcept same_as
syntax keyword cppSTLconcept derived_from
syntax keyword cppSTLconcept convertible_to
syntax keyword cppSTLconcept common_reference_with
syntax keyword cppSTLconcept common_with
syntax keyword cppSTLconcept integral
syntax keyword cppSTLconcept signed_integral
syntax keyword cppSTLconcept unsigned_integral
syntax keyword cppSTLconcept assignable_from
syntax keyword cppSTLconcept swappable
syntax keyword cppSTLconcept swappable_with
syntax keyword cppSTLconcept destructible
syntax keyword cppSTLconcept constructible_from
syntax keyword cppSTLconcept default_constructible
syntax keyword cppSTLconcept move_constructible
syntax keyword cppSTLconcept copy_constructible
syntax keyword cppSTLconcept boolean
syntax keyword cppSTLconcept equality_comparable
syntax keyword cppSTLconcept equality_comparable_with
syntax keyword cppSTLconcept totally_ordered
syntax keyword cppSTLconcept totally_ordered_with
syntax keyword cppSTLconcept movable
syntax keyword cppSTLconcept copyable
syntax keyword cppSTLconcept semiregular
syntax keyword cppSTLconcept regular
syntax keyword cppSTLconcept invocable
syntax keyword cppSTLconcept regular_invocable
syntax keyword cppSTLconcept predicate
syntax keyword cppSTLconcept relation
syntax keyword cppSTLconcept strict_weak_order
syntax keyword cppSTLconcept readable
syntax keyword cppSTLconcept writable
syntax keyword cppSTLconcept weakly_incrementable
syntax keyword cppSTLconcept incrementable
syntax keyword cppSTLconcept input_or_output_iterator
syntax keyword cppSTLconcept sentinal_for
syntax keyword cppSTLconcept sized_sentinal_for
syntax keyword cppSTLconcept input_iterator
syntax keyword cppSTLconcept output_iterator
syntax keyword cppSTLconcept forward_iterator
syntax keyword cppSTLconcept bidirectional_iterator
syntax keyword cppSTLconcept random_access_iterator
syntax keyword cppSTLconcept input_iterator
syntax keyword cppSTLconcept output_iterator
syntax keyword cppSTLconcept bidirectional_iterator
syntax keyword cppSTLconcept random_access_iterator
syntax keyword cppSTLconcept contiguous_iterator
syntax keyword cppSTLconcept indirectly_unary_invocable
syntax keyword cppSTLconcept indirectly_regular_unary_invocable
syntax keyword cppSTLconcept indirect_unary_predicate
syntax keyword cppSTLconcept indirect_relation
syntax keyword cppSTLconcept indirect_strict_weak_order
syntax keyword cppSTLconcept indirectly_movable
syntax keyword cppSTLconcept indirectly_movable_storable
syntax keyword cppSTLconcept indirectly_copyable
syntax keyword cppSTLconcept indirectly_copyable_storable
syntax keyword cppSTLconcept indirectly_swappable
syntax keyword cppSTLconcept indirectly_comparable
syntax keyword cppSTLconcept permutable
syntax keyword cppSTLconcept mergeable
syntax keyword cppSTLconcept sortable
syntax keyword cppSTLconcept range
syntax keyword cppSTLconcept sized_range
syntax keyword cppSTLconcept output_range
syntax keyword cppSTLconcept input_range
syntax keyword cppSTLconcept bidirectional_range
syntax keyword cppSTLconcept random_access_range
syntax keyword cppSTLconcept contiguous_range
syntax keyword cppSTLconcept common_range
syntax keyword cppSTLconcept viewable_range
syntax keyword cppSTLconcept uniform_random_bit_generator
endif
endif " C++ concepts
@@ -2097,9 +2286,12 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
HiLink cppSTLiterator Typedef
HiLink cppSTLiterator_tag Typedef
HiLink cppSTLenum Typedef
HiLink cppSTLconcept Typedef
HiLink cppSTLios Function
HiLink cppSTLcast Statement " be consistent with official syntax
HiLink cppRawString String
HiLink cppRawDelimiter Delimiter
delcommand HiLink
endif
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'dhall') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dhall') == -1
" store and remove current syntax value
let old_syntax = b:current_syntax
@@ -15,3 +13,5 @@ hi def link quasiQuote Underlined
" restore current syntax value
let b:current_syntax = old_syntax
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'scala') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
" Extends standard help syntax with highlighting of Scala code.
"
@@ -16,3 +14,5 @@ if has('conceal')
else
syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode
endif
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
" Vim syntax file
" Language: HTML (version 5.1)
@@ -14,3 +12,5 @@ endif
" https://github.com/w3c/html/issues/694
syntax region htmlComment start=+<!--+ end=+-->+ contains=@Spell
syntax region htmlComment start=+<!DOCTYPE+ keepend end=+>+
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'idris') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'idris') == -1
" This script allows for unicode concealing of certain characters
" For instance -> goes to →
@@ -80,3 +78,5 @@ hi link idrNiceOperator Operator
hi! link Conceal Operator
setlocal conceallevel=2
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
@@ -24,34 +22,31 @@ if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
if hlexists("jsNoise") " pangloss/vim-javascript
if hlexists("jsDebugger") || hlexists("jsNoise") " yuezk/vim-js or pangloss/vim-javascript
syntax cluster jsExpression add=jsxRegion
elseif hlexists("javascriptOpSymbols") " othree/yajs.vim
" refine the javascript line comment
syntax region javascriptLineComment start=+//+ end=/$/ contains=@Spell,javascriptCommentTodo extend keepend
syntax cluster javascriptValue add=jsxRegion
syntax cluster javascriptNoReserved add=jsxElement,jsxTag
" add support to arrow function which returns a tagged template string, e.g.
" () => html`<div></div>`
syntax cluster afterArrowFunc add=javascriptTagRef
else " build-in javascript syntax
" refine the javascript line comment
syntax region javaScriptLineComment start=+//+ end=/$/ contains=@Spell,javascriptCommentTodo extend keepend
" refine the template string syntax
syntax region javaScriptEmbed matchgroup=javaScriptEmbedBraces start=+\${+ end=+}+ contained contains=@javaScriptEmbededExpr
" add a javaScriptBlock group for build-in syntax
syntax region javaScriptBlockBuildIn
\ contained
syntax region javaScriptBlock
\ matchgroup=javaScriptBraces
\ start="{"
\ end="}"
\ contained
\ extend
\ contains=javaScriptBlockBuildIn,@javaScriptEmbededExpr,javaScript.*
\ contains=javaScriptBlock,@javaScriptEmbededExpr,javaScript.*
\ fold
syntax cluster javaScriptEmbededExpr add=jsxRegion
" refine the template string syntax
syntax region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend
syntax region javaScriptEmbed matchgroup=javaScriptEmbedBraces start=+\${+ end=+}+ contained contains=@javaScriptEmbededExpr,javaScript.*
syntax cluster javaScriptEmbededExpr add=jsxRegion,javaScript.*
endif
runtime syntax/jsx_pretty.vim
@@ -60,202 +55,5 @@ let b:current_syntax = 'javascript.jsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
" Vim syntax file
" Language: styled-components (js/ts)
" Maintainer: Karl Fleischmann <fleischmann.karl@gmail.com>
" URL: https://github.com/styled-components/vim-styled-components
if exists("b:current_syntax")
let s:current_syntax=b:current_syntax
unlet b:current_syntax
endif
" fix for "-" before cssPositioningProp
" - needs to be above CSS include to not match cssVendor definitions
syn region cssCustomPositioningPrefix contained
\ start='-' end='\%(\s\{-}:\)\@='
\ contains=cssPositioningProp
" introduce CSS cluster from built-in (or single third party syntax file)
syn include @CSS syntax/css.vim
" try to include CSS3 definitions from multiple files
" this is only possible on vim version above 7
if v:version >= 700
try
syn include @CSS3 syntax/css/*.vim
catch
endtry
endif
" TODO: include react-native keywords
" define custom cssAttrRegion
" - add ",", "`" and "{" to the end characters
" - add "cssPseudoClassId" to it's containing elements
" this will incorrectly highlight pseudo elements incorrectly used as
" attributes but correctly highlight actual attributes
syn region cssCustomAttrRegion contained
\ start=":" end="\ze\%(;\|)\|{\|}\|`\)"
\ contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,
\ cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,
\ cssError,cssAttrComma,cssNoise,cssPseudoClassId,
\ jsTemplateExpression,
\ typescriptInterpolation,typescriptTemplateSubstitution
syn region cssCustomAttrRegion contained
\ start="transition\s*:" end="\ze\%(;\|)\|{\|}\|`\)"
\ contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,
\ cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,
\ cssVendor,cssError,cssAttrComma,cssNoise,cssPseudoClassId,
\ jsTemplateExpression,
\ typescriptInterpolation,typescriptTemplateSubstitution
" define custom css elements to not utilize cssDefinition
syn region cssCustomMediaBlock contained fold transparent matchgroup=cssBraces
\ start="{" end="}"
\ contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,
\ cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,
\ cssUnicodeEscape,cssVendor,cssTagName,cssClassName,
\ cssIdentifier,cssPseudoClass,cssSelectorOp,cssSelectorOp2,
\ cssAttributeSelector
syn region cssCustomPageWrap contained transparent matchgroup=cssBraces
\ start="{" end="}"
\ contains=cssPageMargin,cssPageProp,cssCustomAttrRegion,css.*Prop,
\ cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,
\ cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,
\ cssHacks
syn match cssCustomPageMargin contained skipwhite skipnl
\ "@\%(\%(top\|left\|right\|bottom\)-\%(left\|center\|right\|middle\|bottom\)\)\%(-corner\)\="
syn match cssCustomKeyFrameSelector "\%(\d*%\|\<from\>\|\<to\>\)" contained
\ skipwhite skipnl
" define css include customly to overwrite nextgroup
syn region cssInclude start="@media\>" end="\ze{" skipwhite skipnl
\ contains=cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger,
\ cssMediaMediaAttr,cssVencor,cssMediaType,cssIncludeKeyword,
\ cssMediaComma,cssComment
\ nextgroup=cssCustomMediaBlock
" define all non-contained css definitions
syn cluster CSSTop
\ contains=cssTagName,cssSelectorOp,cssAttributeSelector,cssClassName,
\ cssBraces,cssIdentifier,cssIncludeKeyword,cssPage,cssKeyFrame,
\ cssFontDescriptor,cssAttrComma,cssPseudoClass,cssUnicodeEscape
" custom highlights for styled components
" - "&" inside top level
" - cssTagName inside of jsStrings inside of styledPrefix regions
" TODO: override highlighting of cssTagName with more subtle one
syn match styledAmpersand contained "&"
syn region styledTagNameString matchgroup=jsString contained
\ start=+'+ end=+'+ skip=+\\\%(\'\|$\)+
\ contains=cssTagName
syn region styledTagNameString matchgroup=jsString contained
\ start=+"+ end=+"+ skip=+\\\%(\"\|$\)+
\ contains=cssTagName
syn region styledTagNameString matchgroup=jsString contained
\ start=+`+ end=+`+ skip=+\\\%(\`\|$\)+
\ contains=cssTagName
" define custom API sections that trigger the styledDefinition highlighting
syn match styledPrefix "\<styled\>\.\k\+"
\ transparent fold
\ nextgroup=styledDefinition
\ contains=cssTagName,javascriptTagRef
\ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue
syn match styledPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})"
\ transparent fold extend
\ nextgroup=styledDefinition
\ contains=jsObject,jsParen
\ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue
syn match styledPrefix "\.\<extend\>"
\ transparent fold
\ nextgroup=styledDefinition
\ containedin=jsFuncBlock,jsParen,jsObject,jsObjectValue
" define emotion css prop
" to bypass problems from top-level defined xml/js definitions, this
" plugin re-defines keywords/noise for highlighting inside of the custom
" xmlAttrib definition
syn keyword styledXmlRegionKeyword css contained
syn match styledXmlRegionNoise "\%(=\|{\|}\)" contained
" only include styledDefinitions inside of xmlAttribs, that are wrapped
" in `css={}` regions, `keepend` is necessary to correctly break on the
" higher-level xmlAttrib region end
syn region styledXmlRegion
\ start="\<css\>={" end="}"
\ keepend fold
\ containedin=xmlAttrib
\ contains=styledXmlRegionKeyword,styledXmlRegionNoise,styledDefinition
" define nested region for indenting
syn region styledNestedRegion contained transparent
\ matchgroup=cssBraces
\ start="{" end="}"
" re-define cssError to be highlighted correctly in styledNestedRegion
syn match cssError contained "{@<>"
" extend javascript matches to trigger styledDefinition highlighting
syn match jsTaggedTemplate extend
\ "\<css\>\|\.\<resolve\>\|\.\<global\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>"
\ nextgroup=styledDefinition
syn match jsFuncCall "\<styled\>\s*(.\+)" transparent
\ nextgroup=styledDefinition
syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))"
\ contains=styledTagNameString
\ nextgroup=styledDefinition
syn match jsFuncCall "\.\<withComponent\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))"
\ contains=styledTagNameString
syn match jsFuncCall "\<dc\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))\%((\)\@="
\ contains=styledTagNameString
\ nextgroup=styledDefinitionArgument
" inject css highlighting into custom jsTemplateString region
" - use `extend` to not end all nested jsTemplateExpression on the first
" closing one
syn region styledDefinition contained transparent fold extend
\ start="`" end="`" skip="\\\%(`\|$\)"
\ contains=@CSSTop,
\ css.*Prop,cssValue.*,cssColor,cssUrl,cssImportant,cssError,
\ cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,
\ cssHacks,
\ cssCustom.*,
\ jsComment,jsTemplateExpression,
\ typescriptInterpolation,typescriptTemplateSubstitution,
\ styledAmpersand,styledNestedRegion
syn region styledDefinitionArgument contained transparent start=+(+ end=+)+
\ contains=styledDefinition
""" yajs specific extensions
" define template tag keywords, that trigger styledDefinitions again to be
" contained in and also do contain the `javascriptTagRef` region
syn match javascriptTagRefStyledPrefix transparent fold
\ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>"
\ containedin=javascriptTagRef
\ contains=javascriptTagRef
\ nextgroup=styledDefinition
" extend the yajs clusters to include the previously and extraneously defined
" styled-related matches
syn cluster javascriptExpression
\ add=styledPrefix,jsFuncCall,javascriptTagRefStyledPrefix
syn cluster javascriptAfterIdentifier add=styledPrefix,jsFuncCall
" color the custom highlight elements
hi def link cssCustomKeyFrameSelector Constant
hi def link cssCustomPositioningPrefix StorageClass
hi def link styledAmpersand Special
hi def link styledXmlRegionKeyword Type
hi def link styledXmlRegionNoise Noise
hi def link styledXmlRegion String
if exists("s:current_syntax")
let b:current_syntax=s:current_syntax
endif

View File

@@ -1,6 +1,27 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'graphql') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
@@ -13,15 +34,31 @@ endif
let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)'
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
if graphql#has_syntax_group('jsTemplateExpression')
" pangloss/vim-javascript
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend
" Support expression interpolation ((${...})) inside template strings.
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend
hi def link graphqlTemplateString jsTemplateString
hi def link graphqlTaggedTemplate jsTaggedTemplate
hi def link graphqlTemplateExpression jsTemplateExpression
hi def link graphqlTemplateString jsTemplateString
hi def link graphqlTaggedTemplate jsTaggedTemplate
hi def link graphqlTemplateExpression jsTemplateExpression
syn cluster jsExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
elseif graphql#has_syntax_group('javaScriptStringT')
" runtime/syntax/javascript.vim
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=@javaScriptEmbededExpr containedin=graphqlFold keepend
syn cluster jsExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
hi def link graphqlTemplateString javaScriptStringT
hi def link graphqlTaggedTemplate javaScriptEmbed
hi def link graphqlTemplateExpression javaScriptEmbed
syn cluster htmlJavaScript add=graphqlTaggedTemplate
syn cluster javaScriptEmbededExpr add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/javascript/graphql.vim
endif

View File

@@ -1,9 +1,13 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
let s:highlight_close_tag = get(g:, 'vim_jsx_pretty_highlight_close_tag', 0)
" detect jsx region
syntax region jsxRegion
\ start=+\%(\%(\_[([,?:=+\-*/>{}]\|<\s\+\|&&\|||\|=>\|\<return\|\<default\|\<await\|\<yield\)\_s*\)\@<=<\_s*\%(>\|\z(\%(script\|T\s*>\s*(\)\@!\<[_$A-Za-z][-:._$A-Za-z0-9]*\>\)\%(\_s*\%([-+*)\]}&|?,]\|/\%([/*]\|\_s*>\)\@!\)\)\@!\)+
\ end=++
\ contains=jsxElement
" <tag id="sample">
" ~~~~~~~~~~~~~~~~~
" and self close tag
@@ -14,11 +18,14 @@ syntax region jsxTag
\ matchgroup=jsxOpenPunct
\ end=+>+
\ matchgroup=NONE
\ end=+\(/\_s*>\)\@=+
\ end=+\%(/\_s*>\)\@=+
\ contained
\ contains=jsxOpenTag,jsxEscapeJs,jsxAttrib,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment,jsxSpreadOperator
\ contains=jsxOpenTag,jsxAttrib,jsxExpressionBlock,jsxSpreadOperator,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment
\ keepend
\ extend
\ skipwhite
\ skipempty
\ nextgroup=jsxCloseString
" <tag></tag>
" ~~~~~~~~~~~
@@ -29,30 +36,15 @@ syntax region jsxTag
" <tag />
" ~~~~~~~
syntax region jsxElement
\ start=+<\_s*\(>\|\${\|\z(\<[-:_\.\$0-9A-Za-z]\+\>\)\)+
\ start=+<\_s*\%(>\|\${\|\z(\<[-:._$A-Za-z0-9]\+\>\)\)+
\ end=+/\_s*>+
\ end=+<\_s*/\_s*\z1\_s*>+
\ contains=jsxElement,jsxEscapeJs,jsxTag,jsxComment,jsxCloseString,jsxCloseTag,@Spell
\ contains=jsxElement,jsxTag,jsxExpressionBlock,jsxComment,jsxCloseTag,@Spell
\ keepend
\ extend
\ contained
\ fold
" detect jsx region
syntax region jsxRegion
\ start=+\(\(\_[([,?:=+\-*/<>{}]\|&&\|||\|=>\|\<return\|\<default\|\<await\|\<yield\)\_s*\)\@<=<\_s*\(>\|\z(\(script\)\@!\<[_\$A-Za-z][-:_\.\$0-9A-Za-z]*\>\)\(\_s*\([-+*)\]}&|?]\|/\([/*]\|\_s*>\)\@!\)\)\@!\)+
\ end=++
\ contains=jsxElement
" <tag key={this.props.key}>
" ~~~~~~~~~~~~~~~~
syntax region jsxEscapeJs
\ start=+{+
\ end=++
\ extend
\ contained
\ contains=jsBlock,javascriptBlock,javaScriptBlockBuildIn,typescriptBlock
" <tag key={this.props.key}>
" ~~~~
" and fragment start tag
@@ -68,19 +60,31 @@ exe 'syntax region jsxOpenTag
\ contains=jsxTagName
\ nextgroup=jsxAttrib
\ skipwhite
\ skipempty ' .(s:highlight_close_tag ? 'transparent' : '')
\ skipempty
\ ' .(s:highlight_close_tag ? 'transparent' : '')
" <tag key={this.props.key}>
" ~~~~~~~~~~~~~~~~
syntax region jsxExpressionBlock
\ matchgroup=jsxBraces
\ start=+{+
\ end=+}+
\ contained
\ extend
\ contains=@jsExpression,jsSpreadExpression,@javascriptExpression,javascriptSpreadOp,@javaScriptEmbededExpr,@typescriptExpression,typescriptObjectSpread,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment
" <foo.bar>
" ~
syntax match jsxDot +\.+ contained display
syntax match jsxDot +\.+ contained
" <foo:bar>
" ~
syntax match jsxNamespace +:+ contained display
syntax match jsxNamespace +:+ contained
" <tag id="sample">
" ~
syntax match jsxEqual +=+ contained display nextgroup=jsxString,jsxEscapeJs,jsxRegion skipwhite
syntax match jsxEqual +=+ contained skipwhite skipempty nextgroup=jsxString,jsxExpressionBlock,jsxRegion
" <tag />
" ~~
@@ -101,13 +105,12 @@ syntax region jsxCloseTag
" <tag key={this.props.key}>
" ~~~
syntax match jsxAttrib
\ +\<[-A-Za-z_][-:_\$0-9A-Za-z]*\>+
\ +\<[_$A-Za-z][-:_$A-Za-z0-9]*\>+
\ contained
\ nextgroup=jsxEqual
\ skipwhite
\ skipempty
\ contains=jsxAttribKeyword
\ display
\ contains=jsxAttribKeyword,jsxNamespace
" <MyComponent ...>
" ~~~~~~~~~~~
@@ -115,67 +118,71 @@ syntax match jsxAttrib
" <someCamel ...>
" ~~~~~
exe 'syntax match jsxComponentName
\ +\<[A-Z][\$0-9A-Za-z]\+\>+
\ +\<[_$]\?[A-Z][-_$A-Za-z0-9]*\>+
\ contained
\ display ' .(s:highlight_close_tag ? 'transparent' : '')
\ ' .(s:highlight_close_tag ? 'transparent' : '')
" <tag key={this.props.key}>
" ~~~
exe 'syntax match jsxTagName
\ +\<[-:_\.\$0-9A-Za-z]\+\>+
\ +\<[-:._$A-Za-z0-9]\+\>+
\ contained
\ contains=jsxComponentName,jsxDot,jsxNamespace
\ nextgroup=jsxAttrib
\ skipempty
\ skipwhite
\ display ' .(s:highlight_close_tag ? 'transparent' : '')
\ ' .(s:highlight_close_tag ? 'transparent' : '')
" <tag id="sample">
" ~~~~~~~~
" and
" <tag id='sample'>
" ~~~~~~~~
syntax region jsxString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ contained contains=@Spell display
syntax region jsxString start=+\z(["']\)+ skip=+\\\\\|\\\z1\|\\\n+ end=+\z1+ contained contains=@Spell
let s:tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'raw'])
let s:tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'jsx'])
let s:enable_tagged_jsx = !empty(s:tags)
" add support to JSX inside the tagged template string
" https://github.com/developit/htm
if s:enable_tagged_jsx
exe 'syntax region jsxTaggedRegion
\ start=+\%('. join(s:tags, '\|') .'\)\@<=`+ms=s+1
\ end=+`+me=e-1
\ extend
\ contained
\ containedin=jsTemplateString,javascriptTemplate,javaScriptStringT,typescriptStringB
\ contains=jsxElement'
exe 'syntax match jsxRegion +\%(' . join(s:tags, '\|') . '\)\%(\_s*`\)\@=+ contains=jsTemplateStringTag,jsTaggedTemplate,javascriptTagRef skipwhite skipempty nextgroup=jsxTaggedRegion'
syntax region jsxEscapeJs
\ start=+\${+
\ end=++
syntax region jsxTaggedRegion
\ matchgroup=jsxBackticks
\ start=+`+
\ end=+`+
\ extend
\ contained
\ contains=jsTemplateExpression,javascriptTemplateSubstitution,javaScriptEmbed,typescriptInterpolation
\ contains=jsxElement,jsxExpressionBlock
\ transparent
syntax region jsxExpressionBlock
\ matchgroup=jsxBraces
\ start=+\${+
\ end=+}+
\ extend
\ contained
\ contains=@jsExpression,jsSpreadExpression,@javascriptExpression,javascriptSpreadOp,@javaScriptEmbededExpr,@typescriptExpression,typescriptObjectSpread
syntax region jsxOpenTag
\ matchgroup=jsxOpenPunct
\ start=+<\%(\${\)\@=+
\ matchgroup=NONE
\ end=++
\ end=+}\@1<=+
\ contained
\ contains=jsxEscapeJs
\ nextgroup=jsxAttrib,jsxSpreadOperator
\ contains=jsxExpressionBlock
\ skipwhite
\ skipempty
\ nextgroup=jsxAttrib,jsxSpreadOperator
syntax keyword jsxAttribKeyword class contained display
syntax keyword jsxAttribKeyword class contained
syntax match jsxSpreadOperator +\.\.\.+ contained display nextgroup=jsxEscapeJs skipwhite
syntax match jsxSpreadOperator +\.\.\.+ contained nextgroup=jsxExpressionBlock skipwhite
syntax match jsxCloseTag +<//>+ display
syntax match jsxCloseTag +<//>+ contained
syntax match jsxComment +<!--\_.\{-}-->+ display
syntax match jsxComment +<!--\_.\{-}-->+
endif
" Highlight the tag name
@@ -185,10 +192,14 @@ highlight def link jsxComponentName Function
highlight def link jsxAttrib Type
highlight def link jsxAttribKeyword jsxAttrib
highlight def link jsxEqual Operator
highlight def link jsxString String
highlight def link jsxComment Comment
highlight def link jsxDot Operator
highlight def link jsxNamespace Operator
highlight def link jsxEqual Operator
highlight def link jsxSpreadOperator Operator
highlight def link jsxBraces Special
if s:highlight_close_tag
highlight def link jsxCloseString Identifier
@@ -203,9 +214,6 @@ highlight def link jsxPunct jsxCloseString
highlight def link jsxClosePunct jsxPunct
highlight def link jsxCloseTag jsxCloseString
highlight def link jsxComment Comment
highlight def link jsxSpreadOperator Operator
let s:vim_jsx_pretty_colorful_config = get(g:, 'vim_jsx_pretty_colorful_config', 0)
if s:vim_jsx_pretty_colorful_config == 1
@@ -214,3 +222,4 @@ if s:vim_jsx_pretty_colorful_config == 1
highlight def link jsFuncArgs Type
endif
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'llvm') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'llvm') == -1
" Copyright (c) 2018 rhysd
"
@@ -24,3 +22,5 @@ endif
syn keyword llvmKeyword attributes
syn match llvmNoName /#\d\+\>/
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'mdx') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mdx') == -1
" based on mxw/vim-jsx
@@ -43,3 +41,5 @@ syn cluster jsExpression add=jsxRegion
" Allow jsxRegion to contain reserved words.
syn cluster javascriptNoReserved add=jsxRegion
endif

View File

@@ -1,20 +1,14 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'mathematica') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mathematica') == -1
"Vim conceal file
" Language: Mathematica
" Maintainer: Voldikss <dyzplus@gmail.com>
" Last Change: 2019 Jan 23 by Voldikss
" Source: https://github.com/voldikss/vim-mma/after/syntax/mma.vim
" Credits:
" Rsmenon: https://github.com/rsmenon
" Maintainer: R. Menon <rsmenon@icloud.com>
" Last Change: Feb 25, 2013
if (exists('g:mma_candy') && g:mma_candy == 0) || !has('conceal') || &enc != 'utf-8'
finish
endif
"These are fairly safe and straightforward conceals
if exists('g:mma_candy') && g:mma_candy > 0
"Rules
@@ -1448,3 +1442,5 @@ endif
hi! link Conceal Normal
setlocal conceallevel=2
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'objc') != -1
finish
endif
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
@@ -21,3 +19,5 @@ syn match objcDirective "@property\|@synthesize\|@dynamic\|@package"
" Highlight property attributes as if they were type modifiers
hi def link objcPropertyAttribute objcTypeModifier
endif

View File

@@ -1,4 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'reason') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'reason') == -1
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rspec') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
"
" An rspec syntax file
@@ -11,26 +9,185 @@ endif
runtime! syntax/ruby.vim
unlet! b:current_syntax
syntax keyword rspecGroupMethods context describe example it its let it_should_behave_like shared_examples_for subject it_behaves_like pending specify When Then Given Invariant feature scenario given
highlight link rspecGroupMethods Type
setlocal commentstring=#\ %s
syntax keyword rspecBeforeAndAfter after after_suite_parts append_after append_before before before_suite_parts prepend_after prepend_before around
highlight link rspecBeforeAndAfter Statement
syntax keyword rspecGroupMethods
\ aggregate_failures
\ context
\ describe
\ example
\ feature
\ fcontext
\ fdescribe
\ fexample
\ fit
\ focus
\ fspecify
\ Given
\ given\!
\ include_context
\ include_examples
\ Invariant
\ it
\ it_behaves_like
\ it_should_behave_like
\ its
\ let
\ let\!
\ pending
\ scenario
\ shared_examples
\ shared_examples_for
\ skip
\ specify
\ subject
\ Then
\ When
syntax keyword rspecMocks double mock stub stub_chain
highlight link rspecMocks Constant
syntax keyword rspecBeforeAndAfter
\ after
\ after_suite_parts
\ append_after
\ append_before
\ around
\ before
\ before_suite_parts
\ prepend_after
\ prepend_before
syntax keyword rspecMockMethods and_raise and_return and_throw and_yield build_child called_max_times expected_args invoke matches
highlight link rspecMockMethods Function
syntax keyword rspecMocks
\ double
\ instance_double
\ instance_spy
\ mock
\ spy
\ stub
\ stub_chain
\ stub_const
syntax keyword rspecKeywords should should_not should_not_receive should_receive
highlight link rspecKeywords Constant
syntax keyword rspecMockMethods
\ and_call_original
\ and_raise
\ and_return
\ and_throw
\ and_yield
\ build_child
\ called_max_times
\ expected_args
\ invoke
\ matches
syntax keyword rspecKeywords
\ should
\ should_not
\ should_not_receive
\ should_receive
syntax keyword rspecMatchers
\ all
\ allow
\ allow_any_instance_of
\ assigns
\ be
\ change
\ described_class
\ eq
\ eql
\ equal
\ errors_on
\ exist
\ expect
\ expect_any_instance_of
\ have
\ have_at_least
\ have_at_most
\ have_exactly
\ include
\ is_expected
\ match
\ match_array
\ matcher
\ not_to
\ raise_error
\ raise_exception
\ receive
\ receive_messages
\ receive_message_chain
\ respond_to
\ satisfy
\ throw_symbol
\ to
\ to_not
\ when
\ wrap_expectation
" rspec-mongoid exclusive matchers
syntax keyword rspecMatchers
\ accept_nested_attributes_for
\ belong_to
\ custom_validate
\ embed_many
\ embed_one
\ validate_associated
\ validate_exclusion_of
\ validate_format_of
\ validate_inclusion_of
\ validate_length_of
" shoulda matchers
syntax keyword rspecMatchers
\ allow_mass_assignment_of
\ allow_value
\ ensure_exclusion_of
\ ensure_length_of
\ have_secure_password
\ validate_absence_of
\ validate_acceptance_of
\ validate_confirmation_of
\ validate_numericality_of
\ validate_presence_of
\ validate_uniqueness_of
syntax keyword rspecMessageExpectation
\ advise
\ any_args
\ any_number_of_times
\ anything
\ at_least
\ at_most
\ exactly
\ expected_messages_received
\ generate_error
\ hash_including
\ hash_not_including
\ ignoring_args
\ instance_of
\ matches_at_least_count
\ matches_at_most_count
\ matches_exact_count
\ matches_name_but_not_args
\ negative_expectation_for
\ never
\ no_args
\ once
\ ordered
\ similar_messages
\ times
\ twice
\ verify_messages_received
\ with
syntax keyword rspecMatchers be change eql equal exist expect have have_at_least have_at_most have_exactly include match matcher raise_error raise_exception respond_to satisfy throw_symbol to to_not not_to when wrap_expectation
syntax match rspecMatchers /\<\(be\|have\)_\w\+\>/
highlight link rspecMatchers Function
syntax match rspecGroupMethods /\.describe/
syntax keyword rspecMessageExpectation advise any_args any_number_of_times anything at_least at_most exactly expected_messages_received generate_error hash_including hash_not_including ignoring_args instance_of matches_at_least_count matches_at_most_count matches_exact_count matches_name_but_not_args negative_expectation_for never no_args once ordered similar_messages times twice verify_messages_received with
highlight link rspecGroupMethods Statement
highlight link rspecBeforeAndAfter Identifier
highlight link rspecMocks Constant
highlight link rspecMockMethods Function
highlight link rspecKeywords Constant
highlight link rspecMatchers Function
highlight link rspecMessageExpectation Function
let b:current_syntax = 'rspec'
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'yard') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yard') == -1
" Ruby syntax extensions for highlighting YARD documentation.
"
@@ -128,3 +126,5 @@ hi def link yardParametricType yardComment
hi def link yardArrow yardComment
hi def link yardHashAngle yardComment
hi def link yardHashCurly yardComment
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
scriptencoding utf-8
@@ -43,3 +41,5 @@ if !get(g:, 'rust_conceal_mod_path', 0)
endif
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,13 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'latex') != -1
finish
endif
" adds support for cleverref package
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
" adds support for listings package
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}"

63
after/syntax/tsx.vim Normal file
View File

@@ -0,0 +1,63 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: javascript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if get(g:, 'vim_jsx_pretty_disable_tsx', 0)
finish
endif
let s:jsx_cpo = &cpo
set cpo&vim
syntax case match
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
" refine the typescript line comment
syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend
for syntax_name in ['tsxRegion', 'tsxFragment']
if hlexists(syntax_name)
exe 'syntax clear ' . syntax_name
endif
endfor
if !hlexists('typescriptTypeCast')
" add a typescriptBlock group for typescript
syntax region typescriptBlock
\ matchgroup=typescriptBraces
\ start="{"
\ end="}"
\ contained
\ extend
\ contains=@typescriptExpression,typescriptBlock
\ fold
hi def link typescriptTypeBrackets typescriptOpSymbols
endif
runtime syntax/jsx_pretty.vim
syntax cluster typescriptExpression add=jsxRegion,typescriptParens
" Fix type casting ambiguity with JSX syntax
syntax match typescriptTypeBrackets +[<>]+ contained
syntax match typescriptTypeCast +<\([_$A-Za-z0-9]\+\)>\%(\s*\%([_$A-Za-z0-9]\+\s*;\?\|(\)\%(\_[^<]*</\1>\)\@!\)\@=+ contains=typescriptTypeBrackets,@typescriptType,typescriptType nextgroup=@typescriptExpression
let b:current_syntax = 'typescript.tsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
endif

View File

@@ -1,116 +0,0 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: javascript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let s:jsx_cpo = &cpo
set cpo&vim
syntax case match
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
" refine the typescript line comment
syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend
if !hlexists('typescriptTypeCast')
" add a typescriptBlock group for typescript
syntax region typescriptBlock
\ matchgroup=typescriptBraces
\ start="{"
\ end="}"
\ contained
\ extend
\ contains=@typescriptExpression,typescriptBlock
\ fold
endif
syntax cluster typescriptExpression add=jsxRegion,typescriptParens
runtime syntax/jsx_pretty.vim
let b:current_syntax = 'typescript.tsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'styled-components') != -1
finish
endif
runtime! syntax/javascript.vim
" define custom API section, that contains typescript annotations
" this is structurally similar to `jsFuncCall`, but allows type
" annotations (delimited by brackets (e.g. "<>")) between `styled` and
" the function call parenthesis
syn match styledTypescriptPrefix
\ "\<styled\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>(\%('\k\+'\|\"\k\+\"\|\k\+\))"
\ transparent fold extend
\ nextgroup=styledDefinition
\ contains=cssTagName,
\ typescriptBraces,typescriptOpSymbols,typescriptEndColons,
\ typescriptParens,typescriptStringS,@typescriptType,
\ typescriptType,foldBraces,
\ styledTagNameString
\ containedin=foldBraces
syn match styledTypescriptPrefix
\ "\<styled\>\%((\%('\k\+'\|\"\k\+\"\|\k\+\))\|\.\k\+\)<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"
\ transparent fold extend
\ nextgroup=styledDefinition
\ contains=cssTagName,
\ typescriptBraces,typescriptOpSymbols,typescriptEndColons,
\ typescriptParens,typescriptStringS,@typescriptType,
\ typescriptType,foldBraces,
\ styledTagNameString
\ containedin=foldBraces
syn match styledTypescriptPrefix "\.\<attrs\>\s*(\%(\n\|\s\|.\)\{-})<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"
\ transparent fold extend
\ nextgroup=styledDefinition
\ contains=cssTagName,
\ typescriptBraces,typescriptOpSymbols,typescriptEndColons,
\ typescriptParens,typescriptStringS,@typescriptType,
\ typescriptType,foldBraces,
\ styledTagNameString
\ containedin=foldBraces
syn match styledTypescriptPrefix "\.\<extend\><\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"
\ transparent fold extend
\ nextgroup=styledDefinition
\ contains=cssTagName,
\ typescriptBraces,typescriptOpSymbols,typescriptEndColons,
\ typescriptParens,typescriptStringS,@typescriptType,
\ typescriptType,foldBraces,
\ styledTagNameString
\ containedin=foldBraces
syn match jsFuncCall "\<styled\>\s*(\%('\k\+'\|\"\k\+\"\|`\k\+`\))<\%(\[\|\]\|{\|}\||\|&\|:\|;\|,\|?\|'\|\"\|\k\|\s\|\n\)\+>"
\ transparent fold
\ contains=typescriptBraces,typescriptOpSymbols,typescriptEndColons,
\ typescriptParens,typescriptStringS,@typescriptType,
\ typescriptType,foldBraces,
\ styledTagNameString
\ nextgroup=styledDefinition
\ containedin=foldBraces
syn cluster typescriptValue add=styledPrefix,jsFuncCall,styledTypescriptPrefix
""" yats specific extensions
" extend typescriptIdentifierName to allow styledDefinitions in their
" tagged templates
syn match typescriptIdentifierName extend
\ "\<css\>\|\<keyframes\>\|\<injectGlobal\>\|\<fontFace\>\|\<createGlobalStyle\>"
\ nextgroup=styledDefinition

View File

@@ -1,6 +1,27 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'graphql') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
@@ -24,3 +45,5 @@ hi def link graphqlTemplateExpression typescriptTemplateSubstitution
syn cluster typescriptExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/typescript/graphql.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/javascript/graphql.vim
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'yaml') != -1
finish
endif
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:
@@ -44,8 +42,8 @@ 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 "^\s*\zs[^ \t\"]\+\ze\s*:"
syn match yamlKey "^\s*-\s*\zs[^ \t\"\']\+\ze\s*:"
syn match yamlKey "^\s*\zs[^ \t\"\'#]\+\ze\s*:"
syn match yamlKey "^\s*-\s*\zs[^ \t\"\'#]\+\ze\s*:"
syn match yamlAnchor "&\S\+"
syn match yamlAlias "*\S\+"
@@ -63,3 +61,5 @@ hi link yamlInline Operator
hi link yamlBlock Operator
hi link yamlString String
hi link yamlEscape Special
endif

126
after/syntax/zsh.vim Normal file
View File

@@ -0,0 +1,126 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zinit') == -1
" Copyright (c) 2019 Sebastian Gniazdowski
"
" Syntax highlighting for Zinit commands in any file of type `zsh'.
" It adds definitions for the Zinit syntax to the ones from the
" existing zsh.vim definitions-file.
" Main Zinit command.
" Should be the only TOP rule for the whole syntax.
syntax match ZinitCommand /\<zinit\>\s/me=e-1
\ skipwhite
\ nextgroup=ZinitSubCommands,ZinitPluginSubCommands,ZinitSnippetSubCommands
\ contains=ZinitSubCommands,ZinitPluginSubCommands,ZinitSnippetSubCommands
" TODO: add options for e.g. light
syntax match ZinitSubCommands /\s\<\%(ice\|compinit\|env-whitelist\|cdreplay\|cdclear\|update\)\>\s/ms=s+1,me=e-1
\ contained
syntax match ZinitPluginSubCommands /\s\<\%(light\|load\)\>\s/ms=s+1,me=e-1
\ skipwhite nextgroup=ZinitPlugin1,ZinitPlugin2,ZinitPlugin3
\ contains=ZinitPlugin1,ZinitPlugin2,ZinitPlugin3
syntax match ZinitSnippetSubCommands /\s\<\%(snippet\)\>\s/ms=s+1,me=e-1
\ skipwhite
\ nextgroup=ZinitSnippetShorthands1,ZinitSnippetShorthands2
\ contains=ZinitSnippetShorthands1,ZinitSnippetShorthands2
" "user/plugin"
syntax match ZinitPlugin1 /\s["]\%([!-_]*\%(\/[!-_]\+\)\+\|[!-_]\+\)["]/ms=s+1,hs=s+2,he=e-1
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" 'user/plugin'
syntax match ZinitPlugin2 /\s[']\%([!-_]*\%(\/[!-_]\+\)\+\|[!-_]\+\)[']/ms=s+1,hs=s+2,he=e-1
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" user/plugin
syntax match ZinitPlugin3 /\s\%([!-_]*\%(\/[!-_]\+\)\+\|[!-_]\+\)/ms=s+1,me=e+2
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" OMZ:: or PZT::
" TODO: 'OMZ:: or 'PZT::
syntax match ZinitSnippetShorthands1 /\s\<\%(\%(OMZ\|PZT\)\>::\|\)/hs=s+1,he=e-2
\ contained
\ skipwhite
\ nextgroup=ZinitSnippetUrl1,ZinitSnippetUrl2
\ contains=ZinitSnippetUrl1,ZinitSnippetUrl2
" "OMZ:: or "PZT::
syntax match ZinitSnippetShorthands2 /\s["]\%(\%(OMZ\|PZT\)\>::\|\)/hs=s+2,he=e-2
\ contained
\ skipwhite
\ nextgroup=ZinitSnippetUrl3,ZinitSnippetUrl4
\ contains=ZinitSnippetUrl3,ZinitSnippetUrl4
syntax match ZinitSnippetUrl3 /\<\%(http:\/\/\|https:\/\/\|ftp:\/\/\|\$HOME\|\/\)[!-_]\+\%(\/[!-_]\+\)*\/\?["]/he=e-1
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" TODO: Fix ZinitTrailingWhiteSpace not matching
syntax match ZinitSnippetUrl4 /\%(\%(OMZ\|PZT\)::\)[!-_]\+\%(\/[!-_]\+\)*\/\?["]/hs=s+5,he=e-1
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" http://… or https://… or ftp://… or $HOME/… or /…
" TODO: Fix $HOME/… and /… not matching
syntax match ZinitSnippetUrl1 /\<\%(http:\/\/\|https:\/\/\|ftp:\/\/\|\$HOME\|\/\)[!-_]\+\%(\/[!-_]\+\)*\/\?/
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
" TODO: Fix ZinitTrailingWhiteSpace not matching
syntax match ZinitSnippetUrl2 /\<\%(\%(OMZ\|PZT\)::\)[!-_]\+\%(\/[!-_]\+\)*\/\?/hs=s+5
\ contained
\ nextgroup=ZinitTrailingWhiteSpace
\ contains=ZinitTrailingWhiteSpace
syntax match ZinitTrailingWhiteSpace /[[:space:]]\+$/ contained
" TODO: differentiate the no-value ices
" TODO: use contained
syntax match ZinitIceSubCommand /\sice\s/ms=s+1,me=e-1 nextgroup=ZinitIceModifiers
syntax match ZinitIceModifiers /\s\<\%(svn\|proto\|from\|teleid\|bindmap\|cloneopts\|id-as\|depth\|if\|wait\|load\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(unload\|blockf\|on-update-of\|subscribe\|pick\|bpick\|src\|as\|ver\|silent\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(lucid\|notify\|mv\|cp\|atinit\|atclone\|atload\|atpull\|nocd\|run-atpull\|has\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(cloneonly\|make\|service\|trackbinds\|multisrc\|compile\|nocompile\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(nocompletions\|reset-prompt\|wrap-track\|reset\|aliases\|sh\|bash\|ksh\|csh\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(\\!sh\|!sh\|\\!bash\|!bash\|\\!ksh\|!ksh\|\\!csh\|!csh\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(blockf\|silent\|lucid\|trackbinds\|cloneonly\|nocd\|run-atpull\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(\|sh\|\!sh\|bash\|\!bash\|ksh\|\!ksh\|csh\|\!csh\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(nocompletions\|svn\|aliases\|trigger-load\)\>/ms=s+1
syntax match ZinitIceModifiers /\s\<\%(light-mode\|is-snippet\|countdown\|ps-on-unload\|ps-on-update\)\>/ms=s+1
" Include also ices added by the existing annexes
syntax match ZinitIceModifiers /\s\<\%(test\|zman\|submod\|dl\|patch\|fbin\|sbin\|fsrc\|ferc\|fmod\|gem\|node\|rustup\|cargo\)\>/ms=s+1
" Additional Zsh and Zinit functions
syntax match ZshAndZinitFunctions /\<\%(compdef\|compinit\|zpcdreplay\|zpcdclear\|zpcompinit\|zpcompdef\)\>/
" Link
highlight def link ZshAndZinitFunctions Keyword
highlight def link ZinitCommand Statement
highlight def link ZinitSubCommands Title
highlight def link ZinitPluginSubCommands Title
highlight def link ZinitSnippetSubCommands Title
highlight def link ZinitIceModifiers Type
highlight def link ZinitSnippetShorthands1 Keyword
highlight def link ZinitSnippetShorthands2 Keyword
highlight def link ZinitPlugin1 Macro
highlight def link ZinitPlugin2 Macro
highlight def link ZinitPlugin3 Macro
highlight def link ZinitSnippetUrl1 Macro
highlight def link ZinitSnippetUrl2 Macro
highlight def link ZinitSnippetUrl3 Macro
highlight def link ZinitSnippetUrl4 Macro
highlight def link ZinitTrailingWhiteSpace Error
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Support for LaTex-to-Unicode conversion as in the Julia REPL "
@@ -15,6 +13,9 @@ function! s:L2U_Setup()
if !has_key(b:, "l2u_enabled")
let b:l2u_enabled = 0
endif
if !has_key(b:, "l2u_autodetect_enable")
let b:l2u_autodetect_enable = 1
endif
" Did we install the L2U tab mappings?
if !has_key(b:, "l2u_tab_set")
@@ -94,34 +95,39 @@ endfunction
" Each time the filetype changes, we may need to enable or
" disable the LaTeX-to-Unicode functionality
function! LaTeXtoUnicode#Refresh()
call s:L2U_Setup()
" skip if manually overridden
if !b:l2u_autodetect_enable
return ''
endif
" by default, LaTeX-to-Unicode is only active on julia files
let file_types = s:L2U_file_type_regex(get(g:, "latex_to_unicode_file_types", "julia"))
let file_types_blacklist = s:L2U_file_type_regex(get(g:, "latex_to_unicode_file_types_blacklist", "$^"))
if match(&filetype, file_types) < 0 || match(&filetype, file_types_blacklist) >= 0
if b:l2u_enabled
call LaTeXtoUnicode#Disable()
call LaTeXtoUnicode#Disable(1)
else
return
return ''
endif
elseif !b:l2u_enabled
call LaTeXtoUnicode#Enable()
call LaTeXtoUnicode#Enable(1)
endif
endfunction
function! LaTeXtoUnicode#Enable()
function! LaTeXtoUnicode#Enable(...)
let auto_set = a:0 > 0 ? a:1 : 0
if b:l2u_enabled
return
return ''
end
call s:L2U_ResetLastCompletionInfo()
let b:l2u_enabled = 1
let b:l2u_autodetect_enable = auto_set
" If we're editing the first file upon opening vim, this will only init the
" command line mode mapping, and the full initialization will be performed by
@@ -129,18 +135,18 @@ function! LaTeXtoUnicode#Enable()
" Otherwise, if we're opening a file from within a running vim session, this
" will actually initialize all the LaTeX-to-Unicode substitutions.
call LaTeXtoUnicode#Init()
return
return ''
endfunction
function! LaTeXtoUnicode#Disable()
function! LaTeXtoUnicode#Disable(...)
let auto_set = a:0 > 0 ? a:1 : 0
if !b:l2u_enabled
return
return ''
endif
let b:l2u_enabled = 0
let b:l2u_autodetect_enable = auto_set
call LaTeXtoUnicode#Init()
return
return ''
endfunction
" Translate old options to their new equivalents
@@ -248,7 +254,6 @@ function! LaTeXtoUnicode#omnifunc(findstart, base)
endif
let b:l2u_in_fallback = 0
" set info for the callback
let b:l2u_tab_completing = 1
let b:l2u_found_completion = 1
" analyse current line
let col1 = col('.')
@@ -377,6 +382,7 @@ function! LaTeXtoUnicode#Tab()
endif
" reset the in_fallback info
let b:l2u_in_fallback = 0
let b:l2u_tab_completing = 1
" temporary change to completeopt to use the `longest` setting, which is
" probably the only one which makes sense given that the goal of the
" completion is to substitute the final string
@@ -385,7 +391,8 @@ function! LaTeXtoUnicode#Tab()
set completeopt-=noinsert
" invoke omnicompletion; failure to perform LaTeX-to-Unicode completion is
" handled by the CompleteDone autocommand.
return "\<C-X>\<C-O>"
call feedkeys("\<C-X>\<C-O>", 'n')
return ""
endfunction
" This function is called at every CompleteDone event, and is meant to handle
@@ -411,7 +418,7 @@ function! LaTeXtoUnicode#FallbackCallback()
endfunction
" This is the function that performs the substitution in command-line mode
function! LaTeXtoUnicode#CmdTab(triggeredbytab)
function! LaTeXtoUnicode#CmdTab(trigger)
" first stage
" analyse command line
let col1 = getcmdpos() - 1
@@ -420,10 +427,12 @@ function! LaTeXtoUnicode#CmdTab(triggeredbytab)
let b:l2u_singlebslash = (match(l[0:col1-1], '\\$') >= 0)
" completion not found
if col0 == -1
if a:triggeredbytab
call feedkeys("\<Tab>", 'nt') " fall-back to the default <Tab>
if a:trigger == &wildchar
call feedkeys(nr2char(a:trigger), 'nt') " fall-back to the default wildchar
elseif a:trigger == char2nr("\<S-Tab>")
call feedkeys("\<S-Tab>", 'nt') " fall-back to the default <S-Tab>
endif
return l
return ''
endif
let base = l[col0 : col1-1]
" search for matches
@@ -432,39 +441,28 @@ function! LaTeXtoUnicode#CmdTab(triggeredbytab)
for k in keys(g:l2u_symbols_dict)
if k ==# base
let exact_match = 1
endif
if len(k) >= len(base) && k[0 : len(base)-1] ==# base
break
elseif len(k) >= len(base) && k[0 : len(base)-1] ==# base
call add(partmatches, k)
endif
endfor
if len(partmatches) == 0
if a:triggeredbytab
call feedkeys("\<Tab>", 'nt') " fall-back to the default <Tab>
if !exact_match && len(partmatches) == 0
" no matches, call fallbacks
if a:trigger == &wildchar
call feedkeys(nr2char(a:trigger), 'nt') " fall-back to the default wildchar
elseif a:trigger == char2nr("\<S-Tab>")
call feedkeys("\<S-Tab>", 'nt') " fall-back to the default <S-Tab>
endif
return l
endif
" exact matches are replaced with Unicode
if exact_match
elseif exact_match
" exact matches are replaced with Unicode
let unicode = g:l2u_symbols_dict[base]
if col0 > 0
let pre = l[0 : col0 - 1]
else
let pre = ''
endif
let posdiff = col1-col0 - len(unicode)
call setcmdpos(col1 - posdiff + 1)
return pre . unicode . l[col1 : -1]
endif
" no exact match: complete with the longest common prefix
let common = s:L2U_longest_common_prefix(partmatches)
if col0 > 0
let pre = l[0 : col0 - 1]
call feedkeys(repeat("\b", len(base)) . unicode, 'nt')
else
let pre = ''
" no exact match: complete with the longest common prefix
let common = s:L2U_longest_common_prefix(partmatches)
call feedkeys(common[len(base):], 'nt')
endif
let posdiff = col1-col0 - len(common)
call setcmdpos(col1 - posdiff + 1)
return pre . common . l[col1 : -1]
return ''
endfunction
" Setup the L2U tab mapping
@@ -475,7 +473,8 @@ function! s:L2U_SetTab(wait_insert_enter)
let b:l2u_cmdtab_keys = [b:l2u_cmdtab_keys]
endif
for k in b:l2u_cmdtab_keys
exec 'cnoremap <buffer> '.k.' <C-\>eLaTeXtoUnicode#CmdTab('.(k ==? '<Tab>').')<CR>'
exec 'let trigger = char2nr("'.(k[0] == '<' ? '\' : '').k.'")'
exec 'cnoremap <buffer><expr> '.k.' LaTeXtoUnicode#CmdTab('.trigger.')'
endfor
let b:l2u_cmdtab_set = 1
endif
@@ -639,6 +638,7 @@ function! LaTeXtoUnicode#Init(...)
call s:L2U_SetTab(wait_insert_enter)
call s:L2U_SetAutoSub(wait_insert_enter)
call s:L2U_SetKeymap()
return ''
endfunction
function! LaTeXtoUnicode#Toggle()
@@ -650,5 +650,7 @@ function! LaTeXtoUnicode#Toggle()
call LaTeXtoUnicode#Enable()
echo "LaTeX-to-Unicode enabled"
endif
return
return ''
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rst') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rst') == -1
" Author: Antony Lee <anntzer.lee@gmail.com>
" Description: Helper functions for reStructuredText syntax folding
@@ -64,3 +62,5 @@ function RstFold#GetRstFoldText()
let text = thisline =~ '^\([=`:.''"~^_*+#-]\)\1\+$' ? getline(v:foldstart + 1) : thisline
return indent . text
endfunction
endif

View File

@@ -1,13 +1,23 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
function! cargo#Load()
function! cargo#Load()
" Utility call to get this script loaded, for debugging
endfunction
function! cargo#cmd(args)
execute "! cargo" a:args
function! cargo#cmd(args) abort
" Trim trailing spaces. This is necessary since :terminal command parses
" trailing spaces as an empty argument.
let args = substitute(a:args, '\s\+$', '', '')
if exists('g:cargo_shell_command_runner')
let cmd = g:cargo_shell_command_runner
elseif has('terminal')
let cmd = 'terminal'
elseif has('nvim')
let cmd = 'noautocmd new | terminal'
else
let cmd = '!'
endif
execute cmd 'cargo' args
endfunction
function! s:nearest_cargo(...) abort
@@ -59,6 +69,10 @@ function! cargo#build(args)
call cargo#cmd("build " . a:args)
endfunction
function! cargo#check(args)
call cargo#cmd("check " . a:args)
endfunction
function! cargo#clean(args)
call cargo#cmd("clean " . a:args)
endfunction
@@ -88,6 +102,22 @@ function! cargo#bench(args)
call cargo#cmd("bench " . a:args)
endfunction
function! cargo#update(args)
call cargo#cmd("update " . a:args)
endfunction
function! cargo#search(args)
call cargo#cmd("search " . a:args)
endfunction
function! cargo#publish(args)
call cargo#cmd("publish " . a:args)
endfunction
function! cargo#install(args)
call cargo#cmd("install " . a:args)
endfunction
function! cargo#runtarget(args)
let l:filename = expand('%:p')
let l:read_manifest = system('cargo read-manifest')
@@ -117,3 +147,5 @@ function! cargo#runtarget(args)
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
function! cargo#quickfix#CmdPre() abort
if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# 'cargo'
@@ -28,3 +26,5 @@ function! cargo#quickfix#CmdPost() abort
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'clojure') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1
" Vim completion script
" Language: Clojure
@@ -24,3 +22,5 @@ function! clojurecomplete#Complete(findstart, base)
endfunction
" vim:sts=8:sw=8:ts=8:noet
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'coffee-script') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1
" Language: CoffeeScript
" Maintainer: Mick Koch <mick@kochm.co>
@@ -56,3 +54,5 @@ function! coffee#CoffeeSetUpErrorFormat()
\%f:%l:%c:\ error:\ %m,
\%-G%.%#
endfunction
endif

367
autoload/crystal/indent.vim Normal file
View File

@@ -0,0 +1,367 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" Variables {{{1
" =========
" Regex of syntax group names that are strings or characters.
let g:crystal#indent#syng_string =
\ '\<crystal\%(String\|Interpolation\|NoInterpolation\|StringEscape\|CharLiteral\|ASCIICode\)\>'
lockvar g:crystal#indent#syng_string
" Regex of syntax group names that are strings, characters, symbols,
" regexps, or comments.
let g:crystal#indent#syng_strcom =
\ g:crystal#indent#syng_string.'\|' .
\ '\<crystal\%(Regexp\|RegexpEscape\|Symbol\|Comment\)\>'
lockvar g:crystal#indent#syng_strcom
" Expression used to check whether we should skip a match with searchpair().
let g:crystal#indent#skip_expr =
\ 'synIDattr(synID(line("."), col("."), 1), "name") =~# "'.g:crystal#indent#syng_strcom.'"'
lockvar g:crystal#indent#skip_expr
" Regex for the start of a line:
" start of line + whitespace + optional opening macro delimiter
let g:crystal#indent#sol = '^\s*\zs\%(\\\={%\s*\)\='
lockvar g:crystal#indent#sol
" Regex for the end of a line:
" whitespace + optional closing macro delimiter + whitespace +
" optional comment + end of line
let g:crystal#indent#eol = '\s*\%(%}\)\=\ze\s*\%(#.*\)\=$'
lockvar g:crystal#indent#eol
" Regex that defines blocks.
let g:crystal#indent#block_regex =
\ '\%(\<do\>\|%\@1<!{\)\s*\%(|[^|]*|\)\='.g:crystal#indent#eol
lockvar g:crystal#indent#block_regex
" Regex that defines the start-match for the 'end' keyword.
" NOTE: This *should* properly match the 'do' only at the end of the
" line
let g:crystal#indent#end_start_regex =
\ g:crystal#indent#sol .
\ '\%(' .
\ '\%(\<\%(private\|protected\)\s\+\)\=' .
\ '\%(\<\%(abstract\s\+\)\=\%(class\|struct\)\>\|\<\%(def\|module\|macro\|lib\|enum\)\>\)' .
\ '\|' .
\ '\<\%(if\|unless\|while\|until\|case\|begin\|for\|union\)\>' .
\ '\)' .
\ '\|' .
\ g:crystal#indent#block_regex
lockvar g:crystal#indent#end_start_regex
" Regex that defines the middle-match for the 'end' keyword.
let g:crystal#indent#end_middle_regex =
\ g:crystal#indent#sol .
\ '\<\%(else\|elsif\|rescue\|ensure\|when\)\>'
lockvar g:crystal#indent#end_middle_regex
" Regex that defines the end-match for the 'end' keyword.
let g:crystal#indent#end_end_regex =
\ g:crystal#indent#sol .
\ '\<end\>'
lockvar g:crystal#indent#end_end_regex
" Regex used for words that add a level of indent.
let g:crystal#indent#crystal_indent_keywords =
\ g:crystal#indent#end_start_regex .
\ '\|' .
\ g:crystal#indent#end_middle_regex
lockvar g:crystal#indent#crystal_indent_keywords
" Regex used for words that remove a level of indent.
let g:crystal#indent#crystal_deindent_keywords =
\ g:crystal#indent#end_middle_regex .
\ '\|' .
\ g:crystal#indent#end_end_regex
lockvar g:crystal#indent#crystal_deindent_keywords
" Regex that defines a type declaration
let g:crystal#indent#crystal_type_declaration =
\ '@\=\h\k*\s\+:\s\+\S.*'
lockvar g:crystal#indent#crystal_type_declaration
" Regex that defines continuation lines, not including (, {, or [.
let g:crystal#indent#non_bracket_continuation_regex =
\ '\%(' .
\ '[\\.,:/%+\-=~<>&^]' .
\ '\|' .
\ '\%(\%(\<do\>\|%\@1<!{\)\s*|[^|]*\)\@<!|' .
\ '\|' .
\ '\W?' .
\ '\|' .
\ '\<\%(if\|unless\)\>' .
\ '\|' .
\ '\%('.g:crystal#indent#crystal_type_declaration.'\h\k*\)\@<!\*' .
\ '\)' .
\ g:crystal#indent#eol
lockvar g:crystal#indent#non_bracket_continuation_regex
" Regex that defines bracket continuations
let g:crystal#indent#bracket_continuation_regex = '%\@1<!\%([({[]\)\s*\%(#.*\)\=$'
lockvar g:crystal#indent#bracket_continuation_regex
" Regex that defines continuation lines.
let g:crystal#indent#continuation_regex =
\ g:crystal#indent#non_bracket_continuation_regex .
\ '\|' .
\ g:crystal#indent#bracket_continuation_regex
lockvar g:crystal#indent#continuation_regex
" Regex that defines end of bracket continuation followed by another continuation
let g:crystal#indent#bracket_switch_continuation_regex =
\ '^\([^(]\+\zs).\+\)\+'.g:crystal#indent#continuation_regex
lockvar g:crystal#indent#bracket_switch_continuation_regex
" Regex that defines continuable keywords
let g:crystal#indent#continuable_regex =
\ '\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|unless\):\@!\>'
lockvar g:crystal#indent#continuable_regex
" Regex that defines the first part of a splat pattern
let g:crystal#indent#splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
lockvar g:crystal#indent#splat_regex
let g:crystal#indent#block_continuation_regex = '^\s*[^])}\t ].*'.g:crystal#indent#block_regex
lockvar g:crystal#indent#block_continuation_regex
" Regex that describes a leading operator (only a method call's dot for now)
let g:crystal#indent#leading_operator_regex = '^\s*[.]'
lockvar g:crystal#indent#leading_operator_regex
" Auxiliary Functions {{{1
" ===================
" Check if the character at lnum:col is inside a string, comment, or is ascii.
function! crystal#indent#IsInStringOrComment(lnum, col) abort
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~# g:crystal#indent#syng_strcom
endfunction
" Check if the character at lnum:col is inside a string or character.
function! crystal#indent#IsInString(lnum, col) abort
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~# g:crystal#indent#syng_string
endfunction
" Check if the character at lnum:col is inside a string or regexp
" delimiter
function! crystal#indent#IsInStringDelimiter(lnum, col) abort
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~# '\<crystal\%(StringDelimiter\|RegexpDelimiter\)\>'
endfunction
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
function! crystal#indent#PrevNonBlankNonString(lnum) abort
let lnum = prevnonblank(a:lnum)
while lnum > 0
let line = getline(lnum)
let start = match(line, '\S')
if !crystal#indent#IsInStringOrComment(lnum, start + 1)
break
endif
let lnum = prevnonblank(lnum - 1)
endwhile
return lnum
endfunction
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
function! crystal#indent#GetMSL(lnum) abort
" Start on the line we're at and use its indent.
let msl = a:lnum
let msl_body = getline(msl)
let lnum = crystal#indent#PrevNonBlankNonString(a:lnum - 1)
while lnum > 0
" If we have a continuation line, or we're in a string, use line as MSL.
" Otherwise, terminate search as we have found our MSL already.
let line = getline(lnum)
if crystal#indent#Match(msl, g:crystal#indent#leading_operator_regex)
" If the current line starts with a leading operator, keep its indent
" and keep looking for an MSL.
let msl = lnum
elseif crystal#indent#Match(lnum, g:crystal#indent#splat_regex)
" If the above line looks like the "*" of a splat, use the current one's
" indentation.
"
" Example:
" Hash[*
" method_call do
" something
"
return msl
elseif crystal#indent#Match(lnum, g:crystal#indent#non_bracket_continuation_regex) &&
\ crystal#indent#Match(msl, g:crystal#indent#non_bracket_continuation_regex)
" If the current line is a non-bracket continuation and so is the
" previous one, keep its indent and continue looking for an MSL.
"
" Example:
" method_call one,
" two,
" three
"
let msl = lnum
elseif crystal#indent#Match(lnum, g:crystal#indent#non_bracket_continuation_regex) &&
\ (
\ crystal#indent#Match(msl, g:crystal#indent#bracket_continuation_regex) ||
\ crystal#indent#Match(msl, g:crystal#indent#block_continuation_regex)
\ )
" If the current line is a bracket continuation or a block-starter, but
" the previous is a non-bracket one, respect the previous' indentation,
" and stop here.
"
" Example:
" method_call one,
" two {
" three
"
return lnum
elseif crystal#indent#Match(lnum, g:crystal#indent#bracket_continuation_regex) &&
\ (
\ crystal#indent#Match(msl, g:crystal#indent#bracket_continuation_regex) ||
\ crystal#indent#Match(msl, g:crystal#indent#block_continuation_regex)
\ )
" If both lines are bracket continuations (the current may also be a
" block-starter), use the current one's and stop here
"
" Example:
" method_call(
" other_method_call(
" foo
return msl
elseif crystal#indent#Match(lnum, g:crystal#indent#block_regex) &&
\ !crystal#indent#Match(msl, g:crystal#indent#continuation_regex) &&
\ !crystal#indent#Match(msl, g:crystal#indent#block_continuation_regex)
" If the previous line is a block-starter and the current one is
" mostly ordinary, use the current one as the MSL.
"
" Example:
" method_call do
" something
" something_else
return msl
else
let col = match(line, g:crystal#indent#continuation_regex) + 1
if (col > 0 && !crystal#indent#IsInStringOrComment(lnum, col))
\ || crystal#indent#IsInString(lnum, strlen(line))
let msl = lnum
else
break
endif
endif
let msl_body = getline(msl)
let lnum = crystal#indent#PrevNonBlankNonString(lnum - 1)
endwhile
return msl
endfunction
" Check if line 'lnum' has more opening brackets than closing ones.
function! crystal#indent#ExtraBrackets(lnum) abort
let opening = {'parentheses': [], 'braces': [], 'brackets': []}
let closing = {'parentheses': [], 'braces': [], 'brackets': []}
let line = getline(a:lnum)
let pos = match(line, '[][(){}]', 0)
" Save any encountered opening brackets, and remove them once a matching
" closing one has been found. If a closing bracket shows up that doesn't
" close anything, save it for later.
while pos != -1
if !crystal#indent#IsInStringOrComment(a:lnum, pos + 1)
if line[pos] ==# '('
call add(opening.parentheses, {'type': '(', 'pos': pos})
elseif line[pos] ==# ')'
if empty(opening.parentheses)
call add(closing.parentheses, {'type': ')', 'pos': pos})
else
let opening.parentheses = opening.parentheses[0:-2]
endif
elseif line[pos] ==# '{'
call add(opening.braces, {'type': '{', 'pos': pos})
elseif line[pos] ==# '}'
if empty(opening.braces)
call add(closing.braces, {'type': '}', 'pos': pos})
else
let opening.braces = opening.braces[0:-2]
endif
elseif line[pos] ==# '['
call add(opening.brackets, {'type': '[', 'pos': pos})
elseif line[pos] ==# ']'
if empty(opening.brackets)
call add(closing.brackets, {'type': ']', 'pos': pos})
else
let opening.brackets = opening.brackets[0:-2]
endif
endif
endif
let pos = match(line, '[][(){}]', pos + 1)
endwhile
" Find the rightmost brackets, since they're the ones that are important in
" both opening and closing cases
let rightmost_opening = {'type': '(', 'pos': -1}
let rightmost_closing = {'type': ')', 'pos': -1}
for opening in opening.parentheses + opening.braces + opening.brackets
if opening.pos > rightmost_opening.pos
let rightmost_opening = opening
endif
endfor
for closing in closing.parentheses + closing.braces + closing.brackets
if closing.pos > rightmost_closing.pos
let rightmost_closing = closing
endif
endfor
return [rightmost_opening, rightmost_closing]
endfunction
function! crystal#indent#Match(lnum, regex) abort
let regex = '\C'.a:regex
let line = getline(a:lnum)
let col = match(line, regex) + 1
while col &&
\ crystal#indent#IsInStringOrComment(a:lnum, col) ||
\ crystal#indent#IsInStringDelimiter(a:lnum, col)
let col = match(line, regex, col) + 1
endwhile
return col
endfunction
" Locates the containing class/module/struct/enum/lib's definition line,
" ignoring nested classes along the way.
function! crystal#indent#FindContainingClass() abort
let saved_position = getcurpos()
while searchpair(
\ g:crystal#indent#end_start_regex,
\ g:crystal#indent#end_middle_regex,
\ g:crystal#indent#end_end_regex,
\ 'bWz',
\ g:crystal#indent#skip_expr) > 0
if expand('<cword>') =~# '\<\%(class\|module\|struct\|enum\|lib\)\>'
let found_lnum = line('.')
call setpos('.', saved_position)
return found_lnum
endif
endwhile
call setpos('.', saved_position)
return 0
endfunction
" vim: sw=2 sts=2 et:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:save_cpo = &cpo
set cpo&vim
@@ -9,42 +7,44 @@ let s:V = vital#crystal#new()
let s:P = s:V.import('Process')
let s:C = s:V.import('ColorEcho')
let s:IS_WINDOWS = has('win32')
if exists('*json_decode')
function! s:decode_json(text) abort
return json_decode(a:text)
endfunction
function! s:decode_json(text) abort
return json_decode(a:text)
endfunction
else
let s:J = s:V.import('Web.JSON')
function! s:decode_json(text) abort
return s:J.decode(a:text)
endfunction
let s:J = s:V.import('Web.JSON')
function! s:decode_json(text) abort
return s:J.decode(a:text)
endfunction
endif
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
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)
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(search_dir, d) abort
let found_dir = finddir(a:search_dir, a:d . ';')
if found_dir ==# ''
return ''
endif
let found_dir = finddir(a:search_dir, a:d . ';')
if found_dir ==# ''
return ''
endif
" Note: ':h:h' for {root}/{search_dir}/ -> {root}/{search_dir} -> {root}
return fnamemodify(found_dir, ':p:h:h')
" Note: ':h:h' for {root}/{search_dir}/ -> {root}/{search_dir} -> {root}
return fnamemodify(found_dir, ':p:h:h')
endfunction
" Search the root directory containing a 'spec/' and a 'src/' directories.
@@ -53,292 +53,321 @@ endfunction
" compiler has a 'cr_sources/src/spec/' directory that would otherwise give the root
" directory as 'cr_source/src/' instead of 'cr_sources/'.
function! s:find_root_by_spec_and_src(d) abort
" Search for 'spec/'
let root = s:find_root_by('spec', a:d)
" Check that 'src/' is also there
if root !=# '' && isdirectory(root . '/src')
return root
endif
" Search for 'spec/'
let root = s:find_root_by('spec', a:d)
" Check that 'src/' is also there
if root !=# '' && isdirectory(root . '/src')
return root
endif
" Search for 'src/'
let root = s:find_root_by('src', a:d)
" Check that 'spec/' is also there
if root !=# '' && isdirectory(root . '/spec')
return root
endif
" Search for 'src/'
let root = s:find_root_by('src', a:d)
" Check that 'spec/' is also there
if root !=# '' && isdirectory(root . '/spec')
return root
endif
" Cannot find a directory containing both 'src/' and 'spec/'
return ''
" Cannot find a directory containing both 'src/' and 'spec/'
return ''
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_and_src(parent_dir)
if root_dir ==# ''
" No spec directory found. No need to make temporary file
return a:file_path
endif
let parent_dir = fnamemodify(a:file_path, ':p:h')
let root_dir = s:find_root_by_spec_and_src(parent_dir)
if root_dir ==# ''
" No spec directory 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 required_spec_path = get(b:, 'crystal_required_spec_path', get(g:, 'crystal_required_spec_path', ''))
if required_spec_path !=# ''
let require_spec_str = './' . required_spec_path
else
let require_spec_str = './spec/**'
endif
let result = writefile(contents, temp_name)
if result == -1
" Note: When writefile() failed
return a:file_path
endif
let temp_name = root_dir . '/__vim-crystal-temporary-entrypoint-' . fnamemodify(a:file_path, ':t')
let contents = [
\ 'require "spec"',
\ 'require "' . require_spec_str . '"',
\ printf('require "./%s"', fnamemodify(a:file_path, ':p')[strlen(root_dir)+1 : ])
\ ]
return temp_name
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
\ )
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
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)
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)
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...'
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 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:decode_json(cmd_result.output)
if impl.status !=# 'ok'
return s:echo_error(impl.message)
endif
let impl = s:decode_json(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
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])
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)
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
\ )
let cmd = printf(
\ '%s tool hierarchy --no-color %s %s',
\ g:crystal_compiler_command,
\ a:option_str,
\ a:file
\ )
return s:run_cmd(cmd)
return s:run_cmd(cmd)
endfunction
function! s:find_completion_start() abort
let c = col('.')
if c <= 1
return -1
endif
let c = col('.')
if c <= 1
return -1
endif
let line = getline('.')[:c-2]
return match(line, '\w\+$')
let line = getline('.')[:c-2]
return match(line, '\w\+$')
endfunction
function! crystal_lang#complete(findstart, base) abort
if a:findstart
return s:find_completion_start()
endif
if a:findstart
return s:find_completion_start()
endif
let cmd_result = crystal_lang#context(expand('%'), getpos('.'), '--format json')
if cmd_result.failed
return
endif
let cmd_result = crystal_lang#context(expand('%'), getpos('.'), '--format json')
if cmd_result.failed
return
endif
let contexts = s:decode_json(cmd_result.output)
if contexts.status !=# 'ok'
return
endif
let contexts = s:decode_json(cmd_result.output)
if contexts.status !=# 'ok'
return
endif
let candidates = []
let candidates = []
for c in contexts.contexts
for [name, desc] in items(c)
let candidates += [{
\ 'word': name,
\ 'menu': ': ' . desc . ' [var]',
\ }]
endfor
for c in contexts.contexts
for [name, desc] in items(c)
let candidates += [{
\ 'word': name,
\ 'menu': ': ' . desc . ' [var]',
\ }]
endfor
endfor
return candidates
return candidates
endfunction
function! crystal_lang#get_spec_switched_path(absolute_path) abort
let base = fnamemodify(a:absolute_path, ':t:r')
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
" 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
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)
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)
\ )
" 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
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_and_src(path)
if root_path ==# ''
return s:echo_error("'spec' directory is not found")
endif
call s:run_spec(root_path, 'spec')
let path = a:0 == 0 ? expand('%:p:h') : a:1
let root_path = s:find_root_by_spec_and_src(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_and_src(source_dir)
if root_dir ==# ''
return s:echo_error("Root directory with 'src/' and 'spec/' 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)
" /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_and_src(source_dir)
if root_dir ==# ''
return s:echo_error("Root directory with 'src/' and 'spec/' 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
if s:IS_WINDOWS
let redirect = '2> nul'
else
let redirect = '2>/dev/null'
endif
let cmd = printf(
\ '%s tool format --no-color %s - %s',
\ g:crystal_compiler_command,
\ get(a:, 1, ''),
\ redirect,
\ )
let output = s:P.system(cmd, a:code)
if s:P.get_last_status()
throw 'vim-crystal: Error on formatting with command: ' . cmd
endif
return output
endfunction
" crystal_lang#format(option_str [, on_save])
function! crystal_lang#format(option_str, ...) abort
if !executable(g:crystal_compiler_command)
" Finish command silently
return
let on_save = a:0 > 0 ? a:1 : 0
if !executable(g:crystal_compiler_command)
if on_save
" Finish command silently on save
return
else
throw 'vim-crystal: Command for formatting is not executable: ' . g:crystal_compiler_command
endif
endif
let on_save = a:0 > 0 ? a:1 : 0
let before = join(getline(1, '$'), "\n")
let before = join(getline(1, '$'), "\n")
try
let formatted = crystal_lang#format_string(before, a:option_str)
if !on_save
let after = substitute(formatted, '\n$', '', '')
if before ==# after
return
endif
endif
catch /^vim-crystal: /
echohl ErrorMsg
echomsg v:exception . ': Your code was not formatted. Exception was thrown at ' . v:throwpoint
echohl None
return
endtry
let view_save = winsaveview()
let pos_save = getpos('.')
let lines = split(formatted, '\n')
silent! undojoin
if line('$') > len(lines)
execute len(lines) . ',$delete' '_'
if !on_save
let after = substitute(formatted, '\n$', '', '')
if before ==# after
return
endif
call setline(1, lines)
call winrestview(view_save)
call setpos('.', pos_save)
endif
let view_save = winsaveview()
let pos_save = getpos('.')
let lines = split(formatted, '\n')
silent! undojoin
if line('$') > len(lines)
execute len(lines) . ',$delete' '_'
endif
call setline(1, lines)
call winrestview(view_save)
call setpos('.', pos_save)
endfunction
function! crystal_lang#expand(file, pos, ...) abort
return crystal_lang#tool('expand', a:file, a:pos, get(a:, 1, ''))
return crystal_lang#tool('expand', a:file, a:pos, get(a:, 1, ''))
endfunction
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: sw=2 sts=2 et:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'csv') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'csv') == -1
" Filetype plugin for editing CSV files. "{{{1
" Author: Christian Brabandt <cb@256bit.org>
@@ -71,6 +69,10 @@ fu! csv#Init(start, end, ...) "{{{3
else
let b:csv_cmt = split(g:csv_comment, '%s')
endif
" Make sure it is a list with 2 chars
if b:csv_cmt == []
let b:csv_cmt = ["", ""]
endif
if empty(b:delimiter) && !exists("b:csv_fixed_width")
call csv#Warn("No delimiter found. See :h csv-delimiter to set it manually!")
@@ -124,7 +126,7 @@ fu! csv#Init(start, end, ...) "{{{3
" Enable vartabs for tab delimited files
if b:delimiter=="\t" && has("vartabs")&& !exists("b:csv_fixed_width_cols")
if get(b:, 'col_width', []) ==# []
call csv#CalculateColumnWidth('')
call csv#CalculateColumnWidth(line('$'), 1)
endif
let &l:vts=join(b:col_width, ',')
let g:csv_no_conceal=1
@@ -576,7 +578,7 @@ fu! csv#MaxColumns(...) "{{{3
return len(b:csv_fixed_width_cols)
endif
endfu
fu! csv#ColWidth(colnr, ...) "{{{3
fu! csv#ColWidth(colnr, row, silent) "{{{3
" if a:1 is given, specifies the row, for which to calculate the width
"
" Return the width of a column
@@ -588,14 +590,13 @@ fu! csv#ColWidth(colnr, ...) "{{{3
if !exists("b:csv_fixed_width_cols")
if !exists("b:csv_list")
" only check first 10000 lines, to be faster
let last = line('$')
if exists("a:1") && !empty(a:1)
let last = a:1
endif
let last = a:row
if !get(b:, 'csv_arrange_use_all_rows', 0)
if last > 10000
let last = 10000
call csv#Warn('File too large, only checking the first 10000 rows for the width')
if !a:silent
call csv#Warn('File too large, only checking the first 10000 rows for the width')
endif
endif
endif
let b:csv_list=getline(skipfirst+1,last)
@@ -638,8 +639,12 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3
return
endif
let cur=winsaveview()
" be sure, that b:col_width is actually valid
if exists("b:col_width") && eval(join(b:col_width, '+')) == 0
unlet! b:col_width
endif
" Force recalculation of Column width
let row = exists("a:1") ? a:1 : ''
let row = exists("a:1") && !empty(a:1) ? a:1 : line('$')
if a:bang || !empty(row)
if a:bang && exists("b:col_width")
" Unarrange, so that if csv_arrange_align has changed
@@ -673,7 +678,7 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3
endif
if !exists("b:col_width")
call csv#CalculateColumnWidth(row)
call csv#CalculateColumnWidth(row, 1)
endif
" abort on empty file
@@ -752,11 +757,15 @@ fu! csv#UnArrangeCol(match) "{{{3
" Strip leading white space, also trims empty recordcsv#
return substitute(a:match, '\%(^ \+\)\|\%( \+\ze'.b:delimiter. '\?$\)', '', 'g')
endfu
fu! csv#CalculateColumnWidth(row) "{{{3
fu! csv#CalculateColumnWidth(row, silent) "{{{3
" Internal function, not called from external,
" does not work with fixed width columns
" row for the row for which to calculate the width
let b:col_width=[]
if has( 'vartabs' ) && b:delimiter == "\t"
let vts_save=&vts
set vts=
endif
try
if exists("b:csv_headerline")
if line('.') < b:csv_headerline
@@ -765,7 +774,7 @@ fu! csv#CalculateColumnWidth(row) "{{{3
endif
let s:max_cols=csv#MaxColumns(line('.'))
for i in range(1,s:max_cols)
call add(b:col_width, csv#ColWidth(i, a:row))
call add(b:col_width, csv#ColWidth(i, a:row, a:silent))
endfor
catch /csv:no_col/
call csv#Warn("Error: getting Column numbers, aborting!")
@@ -775,6 +784,9 @@ fu! csv#CalculateColumnWidth(row) "{{{3
" delete buffer content in variable b:csv_list,
" this was only necessary for calculating the max width
unlet! b:csv_list s:columnize_count s:decimal_column
if has( 'vartabs' ) && b:delimiter == "\t"
let &vts=vts_save
endif
endfu
fu! csv#Columnize(field) "{{{3
" Internal function, not called from external,
@@ -1055,7 +1067,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
let maxcol=csv#MaxColumns(line('.'))
let cpos=getpos('.')[2]
if !exists("b:csv_fixed_width_cols")
let curwidth=CSVWidth()
let curwidth=CSVWidth(1)
call search(b:col, 'bc', line('.'))
endif
let spos=getpos('.')[2]
@@ -1148,7 +1160,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
" leave the column (if the next column is shorter)
if !exists("b:csv_fixed_width_cols")
let a = getpos('.')
if CSVWidth() == curwidth
if CSVWidth(1) == curwidth
let a[2]+= cpos-spos
endif
else
@@ -1161,7 +1173,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
" Move to the correct screen column
if !exists("b:csv_fixed_width_cols")
let a = getpos('.')
if CSVWidth() == curwidth
if CSVWidth(1) == curwidth
let a[2]+= cpos-spos
endif
else
@@ -1837,7 +1849,7 @@ fu! csv#ProcessFieldValue(field) "{{{3
if a == b:delimiter
try
let a=repeat(' ', csv#ColWidth(col))
let a=repeat(' ', csv#ColWidth(col, line('$'), 1))
catch
" no-op
endtry
@@ -2136,7 +2148,7 @@ fu! csv#NewRecord(line1, line2, count) "{{{3
if !exists("b:col_width")
" Best guess width
if exists("b:csv_fixed_width_cols")
let record .= printf("%*s", csv#ColWidth(item),
let record .= printf("%*s", csv#ColWidth(item, line('$'), 1),
\ b:delimiter)
else
let record .= printf("%20s", b:delimiter)
@@ -2334,7 +2346,7 @@ fu! csv#ColumnWidth()
endfu
fu! csv#Map(map, name, definition, ...) "{{{3
let keyname = substitute(a:name, '[<>]', '', 'g')
let keyname = substitute(substitute(a:name, '[<>]', '', 'g'), '-', '_', 'g')
let expr = (exists("a:1") && a:1 == 'expr' ? '<expr>' : '')
if !get(g:, "csv_nomap_". tolower(keyname), 0)
" All mappings are buffer local
@@ -3147,7 +3159,9 @@ fu! CSVCount(col, fmt, first, last, ...) "{{{3
unlet! s:additional['distinct']
return (empty(result) ? 0 : result)
endfu
fu! CSVWidth() "{{{3
fu! CSVWidth(...) "{{{3
" do not output any warning
let silent = get(a:000, 0, 1)
" does not work with fixed width columns
if exists("b:csv_fixed_width_cols")
let c = getline(1,'$')
@@ -3166,7 +3180,7 @@ fu! CSVWidth() "{{{3
" Add width for last column
call add(width, max-y+1)
else
call csv#CalculateColumnWidth('')
call csv#CalculateColumnWidth(line('$'), silent)
let width=map(copy(b:col_width), 'v:val-1')
endif
return width
@@ -3189,3 +3203,5 @@ endfun
" Vim Modeline " {{{2
" vim: set foldmethod=marker et sw=0 sts=-1 ts=4:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'dart') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
function! s:error(text) abort
@@ -30,61 +28,56 @@ function! s:clearQfList(reason) abort
endfunction
function! dart#fmt(q_args) abort
if executable('dartfmt')
let buffer_content = join(getline(1, '$'), "\n")
let args = '--stdin-name '.expand('%').' '.a:q_args
let joined_lines = system(printf('dartfmt %s', args), buffer_content)
if buffer_content ==# joined_lines[:-2]
call s:clearQfList('dartfmt')
return
endif
if 0 == v:shell_error
let win_view = winsaveview()
let lines = split(joined_lines, "\n")
silent keepjumps call setline(1, lines)
if line('$') > len(lines)
silent keepjumps execute string(len(lines)+1).',$ delete'
endif
call winrestview(win_view)
call s:clearQfList('dartfmt')
else
let errors = split(joined_lines, "\n")[2:]
let error_format = '%Aline %l\, column %c of %f: %m,%C%.%#'
call s:cexpr(error_format, errors, 'dartfmt')
endif
else
call s:error('cannot execute binary file: dartfmt')
let cmd = s:FindDartFmt()
if type(cmd) != type('') | return | endif
let buffer_content = getline(1, '$')
let args = '--stdin-name '.expand('%').' '.a:q_args
let lines = systemlist(printf('%s %s', cmd, args), join(buffer_content, "\n"))
" TODO(https://github.com/dart-lang/sdk/issues/38507) - Remove once the
" tool no longer emits this line on SDK upgrades.
if lines[-1] ==# 'Isolate creation failed'
let lines = lines[:-2]
endif
if buffer_content == lines
call s:clearQfList('dartfmt')
return
endif
if 0 == v:shell_error
let win_view = winsaveview()
silent keepjumps call setline(1, lines)
if line('$') > len(lines)
silent keepjumps execute string(len(lines)+1).',$ delete'
endif
call winrestview(win_view)
call s:clearQfList('dartfmt')
else
let errors = lines[2:]
let error_format = '%Aline %l\, column %c of %f: %m,%C%.%#'
call s:cexpr(error_format, errors, 'dartfmt')
endif
endfunction
function! s:FindDartFmt() abort
if executable('dartfmt') | return 'dartfmt' | endif
if executable('flutter')
let l:flutter_cmd = resolve(exepath('flutter'))
let l:bin = fnamemodify(l:flutter_cmd, ':h')
let l:dartfmt = l:bin.'/cache/dart-sdk/bin/dartfmt'
if executable(l:dartfmt) | return l:dartfmt | endif
endif
call s:error('Cannot find a `dartfmt` command')
endfunction
function! dart#analyzer(q_args) abort
if executable('dartanalyzer')
let path = expand('%:p:gs:\:/:')
if filereadable(path)
let command = printf('dartanalyzer %s %s', a:q_args, shellescape(path))
let lines = systemlist(command)
call s:cexpr('%m (%f\, line %l\, col %c)', lines, 'dartanalyzer')
else
call s:error(printf('cannot read a file: "%s"', path))
endif
else
call s:error('cannot execute binary file: dartanalyzer')
endif
call s:error('DartAnalyzer support has been removed. '.
\'If this broke your workflow please comment on '.
\'https://github.com/dart-lang/dart-vim-plugin/issues/89')
endfunction
function! dart#tojs(q_args) abort
if executable('dart2js')
let path = expand('%:p:gs:\:/:')
if filereadable(path)
let command = printf('dart2js %s %s', a:q_args, shellescape(path))
let lines = systemlist(command)
call s:cexpr('%m (%f\, line %l\, col %c)', lines, 'dart2js')
else
call s:error(printf('cannot read a file: "%s"', path))
endif
else
call s:error('cannot execute binary file: dartanalyzer')
endif
call s:error('Dart2JS support has been removed. '.
\'If this broke your workflow please comment on '.
\'https://github.com/dart-lang/dart-vim-plugin/issues/89')
endfunction
" Finds the path to `uri`.
@@ -93,7 +86,7 @@ endfunction
" If the path cannot be resolved, or is not a package: uri, returns the
" original.
function! dart#resolveUri(uri) abort
if a:uri !~ 'package:'
if a:uri !~# 'package:'
return a:uri
endif
let package_name = substitute(a:uri, 'package:\(\w\+\)\/.*', '\1', '')
@@ -125,20 +118,20 @@ function! s:PackageMap() abort
let lines = readfile(dot_packages)
let map = {}
for line in lines
if line =~ '\s*#'
if line =~# '\s*#'
continue
endif
let package = substitute(line, ':.*$', '', '')
let lib_dir = substitute(line, '^[^:]*:', '', '')
if lib_dir =~ 'file:/'
if lib_dir =~# 'file:/'
let lib_dir = substitute(lib_dir, 'file://', '', '')
if lib_dir =~ '/[A-Z]:/'
if lib_dir =~# '/[A-Z]:/'
let lib_dir = lib_dir[1:]
endif
else
let lib_dir = resolve(dot_packages_dir.'/'.lib_dir)
endif
if lib_dir =~ '/$'
if lib_dir =~# '/$'
let lib_dir = lib_dir[:len(lib_dir) - 2]
endif
let map[package] = lib_dir
@@ -148,7 +141,7 @@ endfunction
" Toggle whether dartfmt is run on save or not.
function! dart#ToggleFormatOnSave() abort
if get(g:, "dart_format_on_save", 0)
if get(g:, 'dart_format_on_save', 0)
let g:dart_format_on_save = 0
return
endif
@@ -186,3 +179,5 @@ function! dart#setModifiable() abort
setlocal nomodifiable
endif
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elixir') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
let s:path = expand('<sfile>:h')
let s:cmd = join(['mix', 'run', '--no-start', '--no-compile', shellescape(s:path.'/get_repos.exs')])
@@ -22,3 +20,5 @@ endfunction
function! db#adapter#ecto#complete_opaque(url) abort
return map(s:repo_list(), 'v:val[0]')
endfunction
endif

36
autoload/ecrystal.vim Normal file
View File

@@ -0,0 +1,36 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:ecrystal_extensions = {
\ 'cr': 'crystal',
\ 'yml': 'yaml',
\ 'js': 'javascript',
\ 'txt': 'text',
\ 'md': 'markdown'
\ }
if exists('g:ecrystal_extensions')
call extend(s:ecrystal_extensions, g:ecrystal_extensions, 'force')
endif
function! ecrystal#SetSubtype() abort
if exists('b:ecrystal_subtype')
return
endif
let b:ecrystal_subtype = matchstr(substitute(expand('%:t'), '\c\%(\.ecr\)\+$', '', ''), '\.\zs\w\+\%(\ze+\w\+\)\=$')
let b:ecrystal_subtype = get(s:ecrystal_extensions, b:ecrystal_subtype, b:ecrystal_subtype)
if b:ecrystal_subtype ==# ''
let b:ecrystal_subtype = get(g:, 'ecrystal_default_subtype', 'html')
endif
if b:ecrystal_subtype !=# ''
exec 'setlocal filetype=ecrystal.' . b:ecrystal_subtype
exec 'setlocal syntax=ecrystal.' . b:ecrystal_subtype
endif
endfunction
" vim: sw=2 sts=2 et:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elixir') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
if !exists("g:elixir_indent_max_lookbehind")
let g:elixir_indent_max_lookbehind = 30
@@ -363,3 +361,5 @@ function! elixir#indent#handle_inside_generic_block(context)
return -1
endif
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elixir') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
function! elixir#util#get_filename(word) abort
let word = a:word
@@ -26,3 +24,5 @@ function! elixir#util#get_filename(word) abort
return word
endfunction
endif

View File

@@ -1,385 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elm') != -1
finish
endif
let s:errors = []
function! s:elmOracle(...) abort
let l:project = finddir('elm-stuff/..', '.;')
if len(l:project) == 0
echoerr '`elm-stuff` not found! run `elm-package install` for autocomplete.'
return []
endif
let l:filename = expand('%:p')
if a:0 == 0
let l:oldiskeyword = &iskeyword
" Some non obvious values used in 'iskeyword':
" @ = all alpha
" 48-57 = numbers 0 to 9
" @-@ = character @
" 124 = |
setlocal iskeyword=@,48-57,@-@,_,-,~,!,#,$,%,&,*,+,=,<,>,/,?,.,\\,124,^
let l:word = expand('<cword>')
let &iskeyword = l:oldiskeyword
else
let l:word = a:1
endif
let l:infos = elm#Oracle(l:filename, l:word)
if v:shell_error != 0
call elm#util#EchoError("elm-oracle failed:\n\n", l:infos)
return []
endif
let l:d = split(l:infos, '\n')
if len(l:d) > 0
return elm#util#DecodeJSON(l:d[0])
endif
return []
endf
" Vim command to format Elm files with elm-format
function! elm#Format() abort
" check for elm-format
if elm#util#CheckBin('elm-format', 'https://github.com/avh4/elm-format') ==# ''
return
endif
" save cursor position, folds and many other things
let l:curw = {}
try
mkview!
catch
let l:curw = winsaveview()
endtry
" save our undo file to be restored after we are done.
let l:tmpundofile = tempname()
exe 'wundo! ' . l:tmpundofile
" write current unsaved buffer to a temporary file
let l:tmpname = tempname() . '.elm'
call writefile(getline(1, '$'), l:tmpname)
" call elm-format on the temporary file
let l:out = system('elm-format ' . l:tmpname . ' --output ' . l:tmpname)
" if there is no error
if v:shell_error == 0
try | silent undojoin | catch | endtry
" replace current file with temp file, then reload buffer
let l:old_fileformat = &fileformat
call rename(l:tmpname, expand('%'))
silent edit!
let &fileformat = l:old_fileformat
let &syntax = &syntax
elseif g:elm_format_fail_silently == 0
call elm#util#EchoLater('EchoError', 'elm-format:', l:out)
endif
" save our undo history
silent! exe 'rundo ' . l:tmpundofile
call delete(l:tmpundofile)
" restore our cursor/windows positions, folds, etc..
if empty(l:curw)
silent! loadview
else
call winrestview(l:curw)
endif
endf
" Query elm-oracle and echo the type and docs for the word under the cursor.
function! elm#ShowDocs() abort
" check for the elm-oracle binary
if elm#util#CheckBin('elm-oracle', 'https://github.com/elmcast/elm-oracle') ==# ''
return
endif
let l:response = s:elmOracle()
if len(l:response) > 0
let l:info = l:response[0]
redraws! | echohl Identifier | echon l:info.fullName | echohl None | echon ' : ' | echohl Function | echon l:info.signature | echohl None | echon "\n\n" . l:info.comment
else
call elm#util#Echo('elm-oracle:', '...no match found')
endif
endf
" Query elm-oracle and open the docs for the word under the cursor.
function! elm#BrowseDocs() abort
" check for the elm-oracle binary
if elm#util#CheckBin('elm-oracle', 'https://github.com/elmcast/elm-oracle') ==# ''
return
endif
let l:response = s:elmOracle()
if len(l:response) > 0
let l:info = l:response[0]
call elm#util#OpenBrowser(l:info.href)
else
call elm#util#Echo('elm-oracle:', '...no match found')
endif
endf
function! elm#Syntastic(input) abort
let l:fixes = []
let l:bin = 'elm-make'
let l:format = '--report=json'
let l:input = shellescape(a:input)
let l:output = '--output=' . shellescape(syntastic#util#DevNull())
let l:command = l:bin . ' ' . l:format . ' ' . l:input . ' ' . l:output
let l:reports = s:ExecuteInRoot(l:command)
for l:report in split(l:reports, '\n')
if l:report[0] ==# '['
for l:error in elm#util#DecodeJSON(l:report)
if g:elm_syntastic_show_warnings == 0 && l:error.type ==? 'warning'
else
if a:input == l:error.file
call add(s:errors, l:error)
call add(l:fixes, {'filename': l:error.file,
\'valid': 1,
\'bufnr': bufnr('%'),
\'type': (l:error.type ==? 'error') ? 'E' : 'W',
\'lnum': l:error.region.start.line,
\'col': l:error.region.start.column,
\'text': l:error.overview})
endif
endif
endfor
endif
endfor
return l:fixes
endf
function! elm#Build(input, output, show_warnings) abort
let s:errors = []
let l:fixes = []
let l:rawlines = []
let l:bin = 'elm-make'
let l:format = '--report=json'
let l:input = shellescape(a:input)
let l:output = '--output=' . shellescape(a:output)
let l:command = l:bin . ' ' . l:format . ' ' . l:input . ' ' . l:output
let l:reports = s:ExecuteInRoot(l:command)
for l:report in split(l:reports, '\n')
if l:report[0] ==# '['
for l:error in elm#util#DecodeJSON(l:report)
if a:show_warnings == 0 && l:error.type ==? 'warning'
else
call add(s:errors, l:error)
call add(l:fixes, {'filename': l:error.file,
\'valid': 1,
\'type': (l:error.type ==? 'error') ? 'E' : 'W',
\'lnum': l:error.region.start.line,
\'col': l:error.region.start.column,
\'text': l:error.overview})
endif
endfor
else
call add(l:rawlines, l:report)
endif
endfor
let l:details = join(l:rawlines, "\n")
let l:lines = split(l:details, "\n")
if !empty(l:lines)
let l:overview = l:lines[0]
else
let l:overview = ''
endif
if l:details ==# '' || l:details =~? '^Successfully.*'
else
call add(s:errors, {'overview': l:details, 'details': l:details})
call add(l:fixes, {'filename': expand('%', 1),
\'valid': 1,
\'type': 'E',
\'lnum': 0,
\'col': 0,
\'text': l:overview})
endif
return l:fixes
endf
" Make the given file, or the current file if none is given.
function! elm#Make(...) abort
if elm#util#CheckBin('elm-make', 'http://elm-lang.org/install') ==# ''
return
endif
call elm#util#Echo('elm-make:', 'building...')
let l:input = (a:0 == 0) ? expand('%:p') : a:1
let l:fixes = elm#Build(l:input, g:elm_make_output_file, g:elm_make_show_warnings)
if len(l:fixes) > 0
call elm#util#EchoWarning('', 'found ' . len(l:fixes) . ' errors')
call setqflist(l:fixes, 'r')
cwindow
if get(g:, 'elm_jump_to_error', 1)
ll 1
endif
else
call elm#util#EchoSuccess('', 'Sucessfully compiled')
call setqflist([])
cwindow
endif
endf
" Show the detail of the current error in the quickfix window.
function! elm#ErrorDetail() abort
if !empty(filter(tabpagebuflist(), 'getbufvar(v:val, "&buftype") ==? "quickfix"'))
exec ':copen'
let l:linenr = line('.')
exec ':wincmd p'
if len(s:errors) > 0
let l:detail = s:errors[l:linenr-1].details
if l:detail ==# ''
let l:detail = s:errors[l:linenr-1].overview
endif
echo l:detail
endif
endif
endf
" Open the elm repl in a subprocess.
function! elm#Repl() abort
" check for the elm-repl binary
if elm#util#CheckBin('elm-repl', 'http://elm-lang.org/install') ==# ''
return
endif
if has('nvim')
term('elm-repl')
else
!elm-repl
endif
endf
function! elm#Oracle(filepath, word) abort
let l:bin = 'elm-oracle'
let l:filepath = shellescape(a:filepath)
let l:word = shellescape(a:word)
let l:command = l:bin . ' ' . l:filepath . ' ' . l:word
return s:ExecuteInRoot(l:command)
endfunction
let s:fullComplete = ''
" Complete the current token using elm-oracle
function! elm#Complete(findstart, base) abort
" a:base is unused, but the callback function for completion expects 2 arguments
if a:findstart
let l:line = getline('.')
let l:idx = col('.') - 1
let l:start = 0
while l:idx > 0 && l:line[l:idx - 1] =~# '[a-zA-Z0-9_\.]'
if l:line[l:idx - 1] ==# '.' && l:start == 0
let l:start = l:idx
endif
let l:idx -= 1
endwhile
if l:start == 0
let l:start = l:idx
endif
let s:fullComplete = l:line[l:idx : col('.')-2]
return l:start
else
" check for the elm-oracle binary
if elm#util#CheckBin('elm-oracle', 'https://github.com/elmcast/elm-oracle') ==# ''
return []
endif
let l:res = []
let l:response = s:elmOracle(s:fullComplete)
let l:detailed = get(g:, 'elm_detailed_complete', 0)
for l:r in l:response
let l:menu = ''
if l:detailed
let l:menu = ': ' . l:r.signature
endif
call add(l:res, {'word': l:r.name, 'menu': l:menu})
endfor
return l:res
endif
endf
" If the current buffer contains a consoleRunner, run elm-test with it.
" Otherwise run elm-test in the root of your project which deafults to
" running 'elm-test tests/TestRunner'.
function! elm#Test() abort
if elm#util#CheckBin('elm-test', 'https://github.com/rtfeldman/node-elm-test') ==# ''
return
endif
if match(getline(1, '$'), 'consoleRunner') < 0
let l:out = s:ExecuteInRoot('elm-test')
call elm#util#EchoSuccess('elm-test', l:out)
else
let l:filepath = shellescape(expand('%:p'))
let l:out = s:ExecuteInRoot('elm-test ' . l:filepath)
call elm#util#EchoSuccess('elm-test', l:out)
endif
endf
" Returns the closest parent with an elm-package.json file.
function! elm#FindRootDirectory() abort
let l:elm_root = getbufvar('%', 'elmRoot')
if empty(l:elm_root)
let l:current_file = expand('%:p')
let l:dir_current_file = fnameescape(fnamemodify(l:current_file, ':h'))
let l:old_match = findfile('elm-package.json', l:dir_current_file . ';')
let l:new_match = findfile('elm.json', l:dir_current_file . ';')
if !empty(l:new_match)
let l:elm_root = fnamemodify(l:new_match, ':p:h')
elseif !empty(l:old_match)
let l:elm_root = fnamemodify(l:old_match, ':p:h')
else
let l:elm_root = ''
endif
if !empty(l:elm_root)
call setbufvar('%', 'elmRoot', l:elm_root)
endif
endif
return l:elm_root
endfunction
" Executes a command in the project directory.
function! s:ExecuteInRoot(cmd) abort
let l:cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
let l:current_dir = getcwd()
let l:root_dir = elm#FindRootDirectory()
try
execute l:cd . fnameescape(l:root_dir)
let l:out = system(a:cmd)
finally
execute l:cd . fnameescape(l:current_dir)
endtry
return l:out
endfunction

View File

@@ -1,184 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elm') != -1
finish
endif
" IsWin returns 1 if current OS is Windows or 0 otherwise
fun! elm#util#IsWin() abort
let l:win = ['win16', 'win32', 'win32unix', 'win64', 'win95']
for l:w in l:win
if (has(l:w))
return 1
endif
endfor
return 0
endf
fun! elm#util#CheckBin(bin, url) abort
let l:binpath = substitute(a:bin, '^\s*\(.\{-}\)\s*$', '\1', '')
if executable(l:binpath)
return l:binpath
endif
call elm#util#EchoWarning('elm-vim:', 'could not find ' . l:binpath . ' [' . a:url . ']')
return ''
endf
" Determines the browser command to use
fun! s:get_browser_command() abort
let l:elm_browser_command = get(g:, 'elm_browser_command', '')
if l:elm_browser_command ==? ''
if elm#util#IsWin()
let l:elm_browser_command = '!start rundll32 url.dll,FileProtocolHandler %URL%'
elseif has('mac') || has('macunix') || has('gui_macvim') || system('uname') =~? '^darwin'
let l:elm_browser_command = 'open %URL%'
elseif executable('xdg-open')
let l:elm_browser_command = 'xdg-open %URL%'
elseif executable('firefox')
let l:elm_browser_command = 'firefox %URL% &'
else
let l:elm_browser_command = ''
endif
endif
return l:elm_browser_command
endf
" OpenBrowser opens a url in the default browser
fun! elm#util#OpenBrowser(url) abort
let l:cmd = s:get_browser_command()
if len(l:cmd) == 0
redraw
echohl WarningMsg
echo "It seems that you don't have general web browser. Open URL below."
echohl None
echo a:url
return
endif
if l:cmd =~? '^!'
let l:cmd = substitute(l:cmd, '%URL%', '\=shellescape(a:url)', 'g')
silent! exec l:cmd
elseif l:cmd =~# '^:[A-Z]'
let l:cmd = substitute(l:cmd, '%URL%', '\=a:url', 'g')
exec l:cmd
else
let l:cmd = substitute(l:cmd, '%URL%', '\=shellescape(a:url)', 'g')
call system(l:cmd)
endif
endf
" DecodeJSON decodes a string of json into a viml object
fun! elm#util#DecodeJSON(s) abort
let l:true = 1
let l:false = 0
let l:null = 0
return eval(a:s)
endf
" Remove ANSI escape characters used for highlighting purposes
fun! s:strip_color(msg) abort
return substitute(a:msg, '\e\[[0-9;]\+[mK]', '', 'g')
endf
" Print functions
fun! elm#util#Echo(title, msg) abort
redraws! | echon a:title . ' ' | echohl Identifier | echon s:strip_color(a:msg) | echohl None
endf
fun! elm#util#EchoSuccess(title, msg) abort
redraws! | echon a:title . ' ' | echohl Function | echon s:strip_color(a:msg) | echohl None
endf
fun! elm#util#EchoWarning(title, msg) abort
redraws! | echon a:title . ' ' | echohl WarningMsg | echon s:strip_color(a:msg) | echohl None
endf
fun! elm#util#EchoError(title, msg) abort
redraws! | echon a:title . ' ' | echohl ErrorMsg | echon s:strip_color(a:msg) | echohl None
endf
fun! elm#util#EchoLater(func_name, title, msg) abort
let s:echo_func_name = a:func_name
let s:echo_title = a:title
let s:echo_msg = a:msg
endf
fun! elm#util#EchoStored() abort
if exists('s:echo_func_name') && exists('s:echo_title') && exists('s:echo_msg')
call elm#util#{s:echo_func_name}(s:echo_title, s:echo_msg)
unlet s:echo_func_name
unlet s:echo_title
unlet s:echo_msg
endif
endf
function! elm#util#GoToModule(name)
if empty(a:name) | return | endif
if empty(matchstr(a:name, '^Native\.'))
let l:extension = '.elm'
else
let l:extension = '.js'
endif
let l:rel_path = substitute(a:name, '\.', '/', 'g') . l:extension
let l:root = elm#FindRootDirectory()
let l:module_file = s:findLocalModule(l:rel_path, l:root)
if !filereadable(l:module_file)
let l:module_file = s:findDependencyModule(l:rel_path, l:root)
endif
if filereadable(l:module_file)
exec 'edit ' . fnameescape(l:module_file)
else
return s:error("Can't find module \"" . a:name . "\"")
endif
endfunction
function! s:findLocalModule(rel_path, root)
let l:old_match = findfile('elm-package.json', a:root . ';')
let l:new_match = findfile('elm.json', a:root . ';')
if !empty(l:new_match)
let l:package_json = l:new_match
elseif !empty(l:old_match)
let l:package_json = l:old_match
endif
if exists('*json_decode')
let l:package = json_decode(readfile(l:package_json))
let l:source_roots = l:package['source-directories']
else
" This is a fallback for vim's which do not support json_decode.
" It simply only looks in the 'src' subdirectory and fails otherwise.
let l:source_roots = ['src']
end
for l:source_root in l:source_roots
let l:file_path = a:root . '/' . l:source_root . '/' . a:rel_path
if !filereadable(l:file_path)
continue
endif
return l:file_path
endfor
endfunction
function! s:findDependencyModule(rel_path, root)
" If we are a dependency ourselves, we need to check our siblings.
" This is because elm package doesn't install dependencies recursively.
let l:root = substitute(a:root, '\/elm-stuff/packages.\+$', '', '')
" We naively craws the dependencies dir for any fitting module name.
" If it exists, we'll find it. If multiple filenames match,
" there's a chance we return the wrong one.
let l:module_paths = glob(l:root . '/elm-stuff/packages/**/' . a:rel_path, 0, 1)
if len(l:module_paths) > 0
return l:module_paths[0]
endif
endfunction
" Using the built-in :echoerr prints a stacktrace, which isn't that nice.
" From: https://github.com/moll/vim-node/blob/master/autoload/node.vim
function! s:error(msg)
echohl ErrorMsg
echomsg a:msg
echohl NONE
let v:errmsg = a:msg
endfunction

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'fish') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
function! fish#Indent()
let l:shiftwidth = shiftwidth()
@@ -56,7 +54,7 @@ function! fish#Complete(findstart, base)
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')
for l:line in filter(split(l:completions, '\n'), 'len(v:val)')
let l:tokens = split(l:line, '\t')
call add(l:results, {'word': l:cmd.l:tokens[0],
\'abbr': l:tokens[0],
@@ -69,3 +67,5 @@ endfunction
function! fish#errorformat()
return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s'
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'go') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
" don't spam the user when Vim is started in Vi compatibility mode
let s:cpo_save = &cpo
@@ -62,7 +60,10 @@ function! go#config#SetTermCloseOnExit(value) abort
endfunction
function! go#config#TermEnabled() abort
return has('nvim') && get(g:, 'go_term_enabled', 0)
" nvim always support
" vim will support if terminal feature exists
let l:support = has('nvim') || has('terminal')
return support && get(g:, 'go_term_enabled', 0)
endfunction
function! go#config#SetTermEnabled(value) abort
@@ -86,7 +87,18 @@ function! go#config#StatuslineDuration() abort
endfunction
function! go#config#SnippetEngine() abort
return get(g:, 'go_snippet_engine', 'automatic')
let l:engine = get(g:, 'go_snippet_engine', 'automatic')
if l:engine is? "automatic"
if get(g:, 'did_plugin_ultisnips') is 1
let l:engine = 'ultisnips'
elseif get(g:, 'loaded_neosnippet') is 1
let l:engine = 'neosnippet'
elseif get(g:, 'loaded_minisnip') is 1
let l:engine = 'minisnip'
endif
endif
return l:engine
endfunction
function! go#config#PlayBrowserCommand() abort
@@ -153,23 +165,6 @@ function! go#config#SetGuruScope(scope) abort
endif
endfunction
function! go#config#GocodeUnimportedPackages() abort
return get(g:, 'go_gocode_unimported_packages', 0)
endfunction
let s:sock_type = (has('win32') || has('win64')) ? 'tcp' : 'unix'
function! go#config#GocodeSocketType() abort
return get(g:, 'go_gocode_socket_type', s:sock_type)
endfunction
function! go#config#GocodeProposeBuiltins() abort
return get(g:, 'go_gocode_propose_builtins', 1)
endfunction
function! go#config#GocodeProposeSource() abort
return get(g:, 'go_gocode_propose_source', 0)
endfunction
function! go#config#EchoCommandInfo() abort
return get(g:, 'go_echo_command_info', 1)
endfunction
@@ -209,9 +204,10 @@ endfunction
function! go#config#DebugWindows() abort
return get(g:, 'go_debug_windows', {
\ 'stack': 'leftabove 20vnew',
\ 'out': 'botright 10new',
\ 'vars': 'leftabove 30vnew',
\ 'stack': 'leftabove 20new',
\ 'goroutines': 'botright 10new',
\ 'out': 'botright 5new',
\ }
\ )
@@ -228,7 +224,7 @@ function! go#config#DebugCommands() abort
endfunction
function! go#config#DebugLogOutput() abort
return get(g:, 'go_debug_log_output', 'debugger, rpc')
return get(g:, 'go_debug_log_output', 'debugger,rpc')
endfunction
function! go#config#LspLog() abort
@@ -253,6 +249,10 @@ function! go#config#AddtagsTransform() abort
return get(g:, 'go_addtags_transform', "snakecase")
endfunction
function! go#config#AddtagsSkipUnexported() abort
return get(g:, 'go_addtags_skip_unexported', 0)
endfunction
function! go#config#TemplateAutocreate() abort
return get(g:, "go_template_autocreate", 1)
endfunction
@@ -262,7 +262,7 @@ function! go#config#SetTemplateAutocreate(value) abort
endfunction
function! go#config#MetalinterCommand() abort
return get(g:, "go_metalinter_command", "gometalinter")
return get(g:, "go_metalinter_command", "golangci-lint")
endfunction
function! go#config#MetalinterAutosaveEnabled() abort
@@ -309,6 +309,10 @@ function! go#config#FmtAutosave() abort
return get(g:, "go_fmt_autosave", 1)
endfunction
function! go#config#ImportsAutosave() abort
return get(g:, 'go_imports_autosave', 0)
endfunction
function! go#config#SetFmtAutosave(value) abort
let g:go_fmt_autosave = a:value
endfunction
@@ -353,8 +357,12 @@ function! go#config#FmtCommand() abort
return get(g:, "go_fmt_command", "gofmt")
endfunction
function! go#config#ImportsMode() abort
return get(g:, "go_imports_mode", "goimports")
endfunction
function! go#config#FmtOptions() abort
return get(g:, "go_fmt_options", {})
return get(b:, "go_fmt_options", get(g:, "go_fmt_options", {}))
endfunction
function! go#config#FmtFailSilently() abort
@@ -369,6 +377,11 @@ function! go#config#PlayOpenBrowser() abort
return get(g:, "go_play_open_browser", 1)
endfunction
function! go#config#RenameCommand() abort
" delegate to go#config#GorenameBin for backwards compatability.
return get(g:, "go_rename_command", go#config#GorenameBin())
endfunction
function! go#config#GorenameBin() abort
return get(g:, "go_gorename_bin", "gorename")
endfunction
@@ -464,10 +477,22 @@ function! go#config#HighlightVariableDeclarations() abort
return get(g:, 'go_highlight_variable_declarations', 0)
endfunction
function! go#config#HighlightDiagnosticErrors() abort
return get(g:, 'go_highlight_diagnostic_errors', 1)
endfunction
function! go#config#HighlightDiagnosticWarnings() abort
return get(g:, 'go_highlight_diagnostic_warnings', 1)
endfunction
function! go#config#HighlightDebug() abort
return get(g:, 'go_highlight_debug', 1)
endfunction
function! go#config#DebugBreakpointSignText() abort
return get(g:, 'go_debug_breakpoint_sign_text', '>')
endfunction
function! go#config#FoldEnable(...) abort
if a:0 > 0
return index(go#config#FoldEnable(), a:1) > -1
@@ -483,6 +508,66 @@ function! go#config#CodeCompletionEnabled() abort
return get(g:, "go_code_completion_enabled", 1)
endfunction
function! go#config#Updatetime() abort
let go_updatetime = get(g:, 'go_updatetime', 800)
return go_updatetime == 0 ? &updatetime : go_updatetime
endfunction
function! go#config#ReferrersMode() abort
return get(g:, 'go_referrers_mode', 'gopls')
endfunction
function! go#config#ImplementsMode() abort
return get(g:, 'go_implements_mode', 'guru')
endfunction
function! go#config#GoplsCompleteUnimported() abort
return get(g:, 'go_gopls_complete_unimported', v:null)
endfunction
function! go#config#GoplsDeepCompletion() abort
return get(g:, 'go_gopls_deep_completion', v:null)
endfunction
function! go#config#GoplsMatcher() abort
if !exists('g:go_gopls_matcher') && get(g:, 'g:go_gopls_fuzzy_matching', v:null) is 1
return 'fuzzy'
endif
return get(g:, 'go_gopls_matcher', v:null)
endfunction
function! go#config#GoplsStaticCheck() abort
return get(g:, 'go_gopls_staticcheck', v:null)
endfunction
function! go#config#GoplsUsePlaceholders() abort
return get(g:, 'go_gopls_use_placeholders', v:null)
endfunction
function! go#config#GoplsTempModfile() abort
return get(g:, 'go_gopls_temp_modfile', v:null)
endfunction
function! go#config#GoplsAnalyses() abort
return get(g:, 'go_gopls_analyses', v:null)
endfunction
function! go#config#GoplsLocal() abort
return get(g:, 'go_gopls_local', v:null)
endfunction
function! go#config#GoplsEnabled() abort
return get(g:, 'go_gopls_enabled', 1)
endfunction
function! go#config#DiagnosticsEnabled() abort
return get(g:, 'go_diagnostics_enabled', 0)
endfunction
function! go#config#GoplsOptions() abort
return get(g:, 'go_gopls_options', [])
endfunction
" Set the default value. A value of "1" is a shortcut for this, for
" compatibility reasons.
if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1
@@ -494,3 +579,5 @@ let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=2 ts=2 et
endif

View File

@@ -1,16 +1,39 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'graphql') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim plugin
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('g:autoloaded_graphql')
finish
endif
let g:autoloaded_graphql = 1
function! graphql#has_syntax_group(group) abort
try
silent execute 'silent highlight ' . a:group
catch
return v:false
endtry
return v:true
endfunction
function! graphql#javascript_tags() abort
return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL'])
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
" Vim completion script
" Language: HTML and XHTML
@@ -843,3 +841,5 @@ function! htmlcomplete#CheckDoctype() " {{{
endfunction
" }}}
" vim:set foldmethod=marker:
endif

View File

@@ -1,22 +1,20 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
function! jsx_pretty#comment#update_commentstring(original)
let syn_current = s:syn_name(line('.'), col('.'))
let syn_start = s:syn_name(line('.'), 1)
let line = getline(".")
let col = col('.')
if line !~# '^\s*$' && line[: col - 1] =~# '^\s*$' " skip indent
let col = indent('.') + 1
endif
let syn_start = s:syn_name(line('.'), col)
let save_cursor = getcurpos()
if syn_start =~? '^jsx'
let line = getline(".")
let start = len(matchstr(line, '^\s*'))
let syn_name = s:syn_name(line('.'), start + 1)
if line =~ '^\s*//'
let &l:commentstring = '// %s'
elseif s:syn_contains(line('.'), col('.'), 'jsxTaggedRegion')
elseif s:syn_contains(line('.'), col, 'jsxTaggedRegion')
let &l:commentstring = '<!-- %s -->'
elseif syn_name =~? '^jsxAttrib'
elseif syn_start =~? '^jsxAttrib'
let &l:commentstring = '// %s'
else
let &l:commentstring = '{/* %s */}'
@@ -39,3 +37,5 @@ function! s:syn_contains(lnum, cnum, syn_name)
let syn_names = map(stack, 'synIDattr(v:val, "name")')
return index(syn_names, a:syn_name) >= 0
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && (index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
finish
endif
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
if exists('*shiftwidth')
function! s:sw()
@@ -12,207 +10,297 @@ else
endfunction
endif
" Get the syntax group of start of line
function! s:syn_sol(lnum)
let line = getline(a:lnum)
let sol = matchstr(line, '^\s*')
return map(synstack(a:lnum, len(sol) + 1), 'synIDattr(v:val, "name")')
" Regexp for the start tag
let s:start_tag = '<\_s*\%(>\|\${\|\%(\<[-:._$A-Za-z0-9]\+\>\)\)'
" Regexp for the end tag
let s:end_tag = '\%(<\_s*/\_s*\%(\<[-:._$A-Za-z0-9]\+\>\)\_s*>\|/\_s*>\)'
function s:trim(line)
return substitute(a:line, '^\s*\|\s*$', '', 'g')
endfunction
" Get the syntax group of end of line
function! s:syn_eol(lnum)
let lnum = prevnonblank(a:lnum)
let col = strlen(getline(lnum))
return map(synstack(lnum, col), 'synIDattr(v:val, "name")')
" Get the syntax stack at the given position
function s:syntax_stack_at(lnum, col)
return map(synstack(a:lnum, a:col), 'synIDattr(v:val, "name")')
endfunction
function! s:prev_indent(lnum)
let lnum = prevnonblank(a:lnum - 1)
return indent(lnum)
" Get the syntax at the given position
function s:syntax_at(lnum, col)
return synIDattr(synID(a:lnum, a:col, 1), 'name')
endfunction
function! s:prev_line(lnum)
let lnum = prevnonblank(a:lnum - 1)
return substitute(getline(lnum), '^\s*\|\s*$', '', 'g')
" Get the start col of the non-space charactor
function s:start_col(lnum)
return len(matchstr(getline(a:lnum), '^\s*')) + 1
endfunction
function! s:syn_attr_jsx(synattr)
return a:synattr =~? "^jsx"
" Get the start syntax of a given line number
function s:start_syntax(lnum)
return s:syntax_at(a:lnum, s:start_col(a:lnum))
endfunction
function! s:syn_xmlish(syns)
return s:syn_attr_jsx(get(a:syns, -1))
" The skip function for searchpair
function s:skip_if_not(current_lnum, ...)
" Skip the match in current line
if line('.') == a:current_lnum
return 1
endif
let syntax = s:syntax_at(line('.'), col('.'))
return syntax !~? join(a:000, '\|')
endfunction
function! s:syn_jsx_element(syns)
return get(a:syns, -1) =~? 'jsxElement'
" Whether the specified stytax group is the opening tag
function s:is_opening_tag(syntax)
return a:syntax =~? 'jsxOpenPunct'
endfunction
function! s:syn_js_comment(syns)
return get(a:syns, -1) =~? 'Comment$'
" Whether the specified stytax group is the closing tag
function s:is_closing_tag(syntax)
return a:syntax =~? 'jsxClose'
endfunction
function! s:syn_jsx_escapejs(syns)
return get(a:syns, -1) =~? '\(\(js\(Template\)\?\|javaScript\(Embed\)\?\|typescript\)Braces\|javascriptTemplateSB\|typescriptInterpolationDelimiter\)' &&
\ (get(a:syns, -2) =~? 'jsxEscapeJs' ||
\ get(a:syns, -3) =~? 'jsxEscapeJs')
" Whether the specified syntax group is the jsxRegion
function s:is_jsx_region(syntax)
return a:syntax =~? 'jsxRegion'
endfunction
function! s:syn_jsx_attrib(syns)
return len(filter(copy(a:syns), 'v:val =~? "jsxAttrib"'))
" Whether the specified syntax group is the jsxElement
function s:is_jsx_element(syntax)
return a:syntax =~? 'jsxElement'
endfunction
" Whether the specified syntax group is the jsxExpressionBlock
function s:is_jsx_expression(syntax)
return a:syntax =~? 'jsxExpressionBlock'
endfunction
" Whether the specified syntax group is the jsxBraces
function s:is_jsx_brace(syntax)
return a:syntax =~? 'jsxBraces'
endfunction
" Whether the specified syntax group is the jsxComment
function s:is_jsx_comment(syntax)
return a:syntax =~? 'jsxComment'
endfunction
" Whether the specified line is comment related syntax
function s:is_comment(syntax)
return a:syntax =~? 'comment'
endfunction
" Whether the specified syntax group is the jsxComment
function s:is_jsx_backticks(syntax)
return a:syntax =~? 'jsxBackticks'
endfunction
" Get the prvious line number
function s:prev_lnum(lnum)
return prevnonblank(a:lnum - 1)
endfunction
" Whether the given pos is the parent of the given element who has
" element_count jsxElement syntax
function s:is_parent_element(pos, element_count)
let syntax_stack = s:syntax_stack_at(a:pos[0], a:pos[1])
return s:is_opening_tag(syntax_stack[-1]) &&
\ count(syntax_stack, 'jsxElement') <= a:element_count
endfunction
" Compute the indention of the trail punct
function s:jsx_indent_trail_punct(lnum)
let pair_line = searchpair('<', '', '>', 'bW', 's:skip_if_not(a:lnum, "jsxOpenPunct", "jsxClose")')
return indent(pair_line)
endfunction
" Compute the indention of the closing tag
function s:jsx_indent_closing_tag(lnum)
let pair_line = searchpair(s:start_tag, '', s:end_tag, 'bW', 's:skip_if_not(a:lnum, "jsxOpenPunct", "jsxClose")')
return pair_line ? indent(pair_line) : indent(a:lnum)
endfunction
" Compute the indentation of the jsxElement
function s:jsx_indent_element(lnum)
let syntax_stack = s:syntax_stack_at(a:lnum, s:start_col(a:lnum))
let syntax_name = syntax_stack[-1]
let element_count = count(syntax_stack, 'jsxElement')
if s:trim(getline(a:lnum)) =~ '^>'
return s:jsx_indent_trail_punct(a:lnum)
endif
" If current tag is closing tag
if s:is_closing_tag(syntax_name)
return s:jsx_indent_closing_tag(a:lnum)
endif
" Normalize the jsxElement count for opening tag
if s:is_opening_tag(syntax_name)
" <div>
" <div></div> <-- jsxRegion->jsxElement->jsxElement->jsxTag->jsxOpenTag->jsxOpenPunct
" </div>
if s:is_jsx_element(syntax_stack[-4]) && s:is_jsx_element(syntax_stack[-5])
let element_count = element_count - 1
endif
endif
let start_time = localtime()
let pos = searchpos(s:start_tag, 'bW')
while !s:is_parent_element(pos, element_count)
if localtime() - start_time >= 0.5
return -1
endif
let pos = searchpos(s:start_tag, 'bW')
endwhile
return indent(pos[0]) + s:sw()
endfunction
" Compute the indentation of the comment
function s:jsx_indent_comment(lnum)
let line = s:trim(getline(a:lnum))
if s:is_jsx_comment(s:start_syntax(a:lnum))
if line =~ '^<!--' || line =~ '^-->'
return s:jsx_indent_element(a:lnum)
else
return s:jsx_indent_element(a:lnum) + s:sw()
endif
else
if line =~ '^/\*' || line =~ '^//'
return s:jsx_indent_element(a:lnum)
else
return s:jsx_indent_element(a:lnum) + 1
endif
endif
endfunction
" Compute the indentation of jsxBackticks
function s:jsx_indent_backticks(lnum)
let tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'jsx'])
let start_tag = '\%(' . join(tags, '\|') . '\)`'
let end_tag = '\%(' . join(tags, '\|') . '\)\@<!`'
let pair_line = searchpair(start_tag, '', end_tag, 'bW', 's:skip_if_not(a:lnum)')
return indent(pair_line)
endfunction
" Syntax context types:
" - jsxRegion
" - jsxTaggedRegion
" - jsxElement
" - jsxExpressionBlock
" - Other
function s:syntax_context(lnum)
let start_col = s:start_col(a:lnum)
let syntax_stack = s:syntax_stack_at(a:lnum, start_col)
let start_syntax = syntax_stack[-1]
let reversed = reverse(syntax_stack)
let i = 0
for syntax_name in reversed
" If the current line is jsxExpressionBlock and not starts with jsxBraces
if s:is_jsx_expression(syntax_name)
return 'jsxExpressionBlock'
endif
if s:is_jsx_region(syntax_name)
return 'jsxRegion'
endif
if s:is_jsx_element(syntax_name)
" If current line starts with the opening tag
if s:is_opening_tag(start_syntax) || s:is_closing_tag(start_syntax)
" And the next syntax is jsxRegion
if s:is_jsx_region(reversed[i+1])
return 'jsxRegion'
elseif reversed[i+1] =~ 'jsxTaggedRegion'
return 'jsxTaggedRegion'
else
return 'jsxElement'
endif
elseif reversed[i+1] =~ 'jsxTaggedRegion'
return 'jsxTaggedRegion'
else
return 'jsxElement'
endif
endif
let i = i + 1
endfor
return 'Other'
endfunction
let s:start_tag = '<\s*\([-:_\.\$0-9A-Za-z]\+\|>\)'
" match `/end_tag>` and `//>`
let s:end_tag = '/\%(\s*[-:_\.\$0-9A-Za-z]*\s*\|/\)>'
let s:opfirst = '^' . get(g:,'javascript_opfirst',
\ '\C\%([<>=,.?^%|/&]\|\([-:+]\)\1\@!\|\*\+\|!=\|in\%(stanceof\)\=\>\)')
function! jsx_pretty#indent#get(js_indent)
let lnum = v:lnum
let line = substitute(getline(lnum), '^\s*\|\s*$', '', 'g')
let current_syn = s:syn_sol(lnum)
let current_syn_eol = s:syn_eol(lnum)
let prev_line_num = prevnonblank(lnum - 1)
let prev_syn_sol = s:syn_sol(prev_line_num)
let prev_syn_eol = s:syn_eol(prev_line_num)
let prev_line = s:prev_line(lnum)
let prev_ind = s:prev_indent(lnum)
let line = s:trim(getline(v:lnum))
let start_syntax = s:start_syntax(v:lnum)
if s:syn_xmlish(current_syn)
if s:is_jsx_backticks(start_syntax)
return s:jsx_indent_backticks(v:lnum)
endif
if !s:syn_xmlish(prev_syn_sol)
\ && !s:syn_jsx_escapejs(prev_syn_sol)
\ && !s:syn_jsx_escapejs(prev_syn_eol)
\ && !s:syn_js_comment(prev_syn_sol)
if line =~ '^/\s*>' || line =~ '^<\s*' . s:end_tag
return prev_ind
else
return prev_ind + s:sw()
endif
elseif !s:syn_xmlish(prev_syn_sol) && !s:syn_js_comment(prev_syn_sol) && s:syn_jsx_attrib(current_syn)
" For #79
return prev_ind + s:sw()
" {
" <div></div>
" ##} <--
elseif s:syn_jsx_element(current_syn) && line =~ '}$'
let pair_line = searchpair('{', '', '}', 'b')
return indent(pair_line)
elseif line =~ '^-->$'
if prev_line =~ '^<!--'
return prev_ind
else
return prev_ind - s:sw()
endif
elseif prev_line =~ '-->$'
return prev_ind
" close tag </tag> or /> including </>
elseif prev_line =~ s:end_tag . '$'
if line =~ '^<\s*' . s:end_tag
return prev_ind - s:sw()
elseif s:syn_jsx_attrib(prev_syn_sol)
return prev_ind - s:sw()
else
return prev_ind
endif
elseif line =~ '^\(>\|/\s*>\)'
if prev_line =~ '^<'
return prev_ind
else
return prev_ind - s:sw()
endif
elseif prev_line =~ '^\(<\|>\)' &&
\ (s:syn_xmlish(prev_syn_eol) || s:syn_js_comment(prev_syn_eol))
if line =~ '^<\s*' . s:end_tag
return prev_ind
else
return prev_ind + s:sw()
endif
elseif line =~ '^<\s*' . s:end_tag
if !s:syn_xmlish(prev_syn_sol)
if s:syn_jsx_escapejs(prev_syn_eol)
\ || s:syn_jsx_escapejs(prev_syn_sol)
return prev_ind - s:sw()
else
return prev_ind
endif
elseif prev_line =~ '^\<return'
return prev_ind
else
return prev_ind - s:sw()
endif
elseif !s:syn_xmlish(prev_syn_eol)
if prev_line =~ '\(&&\|||\|=>\|[([{]\|`\)$'
" <div>
" {
" }
" </div>
if line =~ '^[)\]}]'
return prev_ind
else
return prev_ind + s:sw()
endif
else
return prev_ind
endif
if s:is_jsx_brace(start_syntax)
return s:jsx_indent_element(v:lnum)
endif
if s:is_opening_tag(start_syntax) && line =~ '^>'
return s:jsx_indent_trail_punct(v:lnum)
endif
let syntax_context = s:syntax_context(v:lnum)
if syntax_context == 'jsxRegion'
if s:is_closing_tag(start_syntax)
return s:jsx_indent_closing_tag(v:lnum)
endif
let prev_lnum = s:prev_lnum(v:lnum)
let prev_line = s:trim(getline(prev_lnum))
if prev_line =~ '[([{=?]$'
return indent(prev_lnum) + s:sw()
elseif prev_line =~ '[:|&<>]$' &&
\ s:trim(getline(s:prev_lnum(prev_lnum))) !~ '[?:|&<>]$'
return indent(prev_lnum) + s:sw()
else
return prev_ind
return indent(prev_lnum)
endif
elseif s:syn_jsx_escapejs(current_syn)
if line =~ '^}'
let char = getline('.')[col('.') - 1]
" When pressing enter after the }, keep the indent
if char != '}' && search('}', 'b', lnum)
return indent(lnum)
else
let pair_line = searchpair('{', '', '}', 'bW')
return indent(pair_line)
endif
elseif line =~ '^{' || line =~ '^\${'
if s:syn_jsx_escapejs(prev_syn_eol)
\ || s:syn_jsx_attrib(prev_syn_sol)
return prev_ind
elseif s:syn_xmlish(prev_syn_eol) && (prev_line =~ s:end_tag || prev_line =~ '-->$')
return prev_ind
else
return prev_ind + s:sw()
endif
elseif syntax_context == 'jsxTaggedRegion'
if s:is_closing_tag(start_syntax)
return s:jsx_indent_closing_tag(v:lnum)
elseif s:is_jsx_comment(start_syntax)
return s:jsx_indent_comment(v:lnum)
else
return indent(s:prev_lnum(v:lnum)) + s:sw()
endif
elseif line =~ '^`' && s:syn_jsx_escapejs(current_syn_eol)
" For `} of template syntax
let pair_line = searchpair('{', '', '}', 'bW')
return indent(pair_line)
elseif line =~ '^/[/*]' " js comment in jsx tag
if get(prev_syn_sol, -1) =~ 'Punct'
return prev_ind + s:sw()
elseif synIDattr(synID(lnum - 1, 1, 1), 'name') =~ 'jsxTag'
return prev_ind
elseif syntax_context == 'jsxElement'
if s:is_jsx_comment(start_syntax)
return s:jsx_indent_comment(v:lnum)
endif
if s:is_comment(start_syntax)
return s:jsx_indent_comment(v:lnum)
endif
return s:jsx_indent_element(v:lnum)
elseif syntax_context == 'jsxExpressionBlock'
let prev_lnum = s:prev_lnum(v:lnum)
let prev_line = s:trim(getline(prev_lnum))
if line =~ '^?'
return indent(prev_lnum) + s:sw()
elseif line =~ '^:'
return indent(prev_lnum)
else
return a:js_indent()
endif
else
let ind = a:js_indent()
" Issue #68
" return (<div>
" |<div>)
if (line =~ '^/\s*>' || line =~ '^<\s*' . s:end_tag)
\ && !s:syn_xmlish(prev_syn_sol)
return prev_ind
endif
" If current syntax is not a jsx syntax group
if s:syn_xmlish(prev_syn_eol) && line !~ '^[)\]}]'
let sol = matchstr(line, s:opfirst)
if sol is ''
" Fix javascript continue indent
return ind - s:sw()
else
return ind
endif
endif
return ind
endif
return a:js_indent()
endfunction
endif

View File

@@ -1,32 +1,11 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
function! julia#set_syntax_version(jvers)
if &filetype != "julia"
echo "Not a Julia file"
return
endif
syntax clear
let b:julia_syntax_version = a:jvers
set filetype=julia
echo "The julia#set_syntax_version function is deprecated"
endfunction
function! julia#toggle_deprecated_syntax()
if &filetype != "julia"
echo "Not a Julia file"
return
endif
syntax clear
let hd = get(b:, "julia_syntax_highlight_deprecated",
\ get(g:, "julia_syntax_highlight_deprecated", 0))
let b:julia_syntax_highlight_deprecated = hd ? 0 : 1
set filetype=julia
if b:julia_syntax_highlight_deprecated
echo "Highlighting of deprecated syntax enabled"
else
echo "Highlighting of deprecated syntax disabled"
endif
echo "The julia#toggle_deprecated_syntax function is deprecated"
endfunction
if exists("loaded_matchit")
@@ -186,3 +165,5 @@ function! julia#gotodefinition()
return
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
" path to the julia binary to communicate with
if has('win32') || has('win64')
@@ -244,3 +242,5 @@ function! s:likely(str) abort
let output = systemlist(cmd)
return split(matchstr(output[0], '\C^search: \zs.*'))
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
" Facilities for moving around Julia blocks (e.g. if/end, function/end etc.)
" (AKA a collection of horrible hacks)
@@ -796,3 +794,5 @@ function! s:cursor_moved(...)
let b:jlblk_did_select = b:jlblk_doing_select
let b:jlblk_doing_select = 0
endfunction
endif

View File

@@ -1,9 +1,7 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
" This file is autogenerated from the script 'generate_latex_symbols_table.jl'
" The symbols are based on Julia version 1.3.0-DEV.263
" The symbols are based on Julia version 1.5.0-DEV.67
scriptencoding utf-8
@@ -660,7 +658,9 @@ function! julia_latex_symbols#get_dict()
\ '\nequiv': '≢',
\ '\Equiv': '≣',
\ '\le': '≤',
\ '\leq': '≤',
\ '\ge': '≥',
\ '\geq': '≥',
\ '\leqq': '≦',
\ '\geqq': '≧',
\ '\lneqq': '≨',
@@ -3332,3 +3332,5 @@ function! julia_latex_symbols#get_dict()
\ '\:baggage_claim:': '🛄',
\ '\:left_luggage:': '🛅'}
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'pony') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'pony') == -1
" Vim plugin file
" Language: Pony
@@ -534,3 +532,5 @@ endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'puppet') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
function! puppet#align#IndentLevel(lnum)
return indent(a:lnum) / &shiftwidth
@@ -70,3 +68,5 @@ function! puppet#align#AlignHashrockets(...) abort
endif
endfor
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'puppet') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
if !exists('s:ctags_type')
@@ -38,3 +36,5 @@ function! puppet#ctags#Type()
return s:ctags_type
endfunction
endif

View File

@@ -1,15 +1,20 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'puppet') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
"
" Simple format using puppet's l:indents and align hashrockets function
function! puppet#format#Format() abort
let l:start_lnum = v:lnum
let l:end_lnum = v:lnum + v:count - 1
call puppet#format#Indention(l:start_lnum, l:end_lnum)
call puppet#format#Hashrocket(l:start_lnum, l:end_lnum)
" Don't modify indentation or alignment if called by textwidth. We'll only
" let the fallback function do its thing in this case so that textwidth
" still performs the expected feature.
if mode() !~# '[iR]'
call puppet#format#Indention(l:start_lnum, l:end_lnum)
call puppet#format#Hashrocket(l:start_lnum, l:end_lnum)
endif
call puppet#format#Fallback(l:start_lnum, l:end_lnum)
" explicitly avoid falling back to default formatting
return 0
endfunction
""
@@ -39,10 +44,16 @@ endfunction
" lines which exeed &widthline are formated
"
function! puppet#format#Fallback(start_lnum, end_lnum) abort
" We shouldn't wrap lines based on textwidth if it is disabled
if &textwidth == 0
return
endif
" I'm using it to check if autoformat expand range
let l:eof_lnum = line('$')
let l:lnum = a:start_lnum
let l:end_lnum = a:end_lnum
while l:lnum <= l:end_lnum
if strlen(getline(l:lnum)) > &textwidth
call cursor(l:lnum)
@@ -59,3 +70,5 @@ function! puppet#format#Fallback(start_lnum, end_lnum) abort
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'python-compiler') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'python-compiler') == -1
" Sometimes Python issues debugging messages
" which don't belong to a call stack context
@@ -19,3 +17,5 @@ function! python#utils#fix_qflist() " {{{
call setqflist(l:traceback)
endif
endfunction " }}}
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'ruby') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Vim completion script
" Language: Ruby
@@ -504,13 +502,8 @@ class VimRubyCompletion
return if rails_base == nil
$:.push rails_base unless $:.index( rails_base )
rails_config = rails_base + "config/"
rails_lib = rails_base + "lib/"
$:.push rails_config unless $:.index( rails_config )
$:.push rails_lib unless $:.index( rails_lib )
bootfile = rails_config + "boot.rb"
envfile = rails_config + "environment.rb"
bootfile = rails_base + "config/boot.rb"
envfile = rails_base + "config/environment.rb"
if File.exists?( bootfile ) && File.exists?( envfile )
begin
require bootfile
@@ -878,3 +871,5 @@ call s:DefRuby()
"}}} ruby-side code
" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
endif

View File

@@ -1,8 +1,5 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
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
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
@@ -400,10 +397,19 @@ function! s:RmDir(path)
echoerr 'Attempted to delete empty path'
return 0
elseif a:path ==# '/' || a:path ==# $HOME
echoerr 'Attempted to delete protected path: ' . a:path
let l:path = expand(a:path)
if l:path ==# '/' || l:path ==# $HOME
echoerr 'Attempted to delete protected path: ' . a:path
return 0
endif
endif
if !isdirectory(a:path)
return 0
endif
return system("rm -rf " . shellescape(a:path))
" delete() returns 0 when removing file successfully
return delete(a:path, 'rf') == 0
endfunction
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
@@ -495,7 +501,15 @@ function! s:SearchTestFunctionNameUnderCursor() abort
" Search the end of test function (closing brace) to ensure that the
" cursor position is within function definition
normal! %
if maparg('<Plug>(MatchitNormalForward)') ==# ''
keepjumps normal! %
else
" Prefer matchit.vim official plugin to native % since the plugin
" provides better behavior than original % (#391)
" To load the plugin, run:
" :packadd matchit
execute 'keepjumps' 'normal' "\<Plug>(MatchitNormalForward)"
endif
if line('.') < cursor_line
return ''
endif
@@ -503,14 +517,23 @@ function! s:SearchTestFunctionNameUnderCursor() abort
return matchstr(getline(test_func_line), '\m\C^\s*fn\s\+\zs\h\w*')
endfunction
function! rust#Test(all, options) abort
function! rust#Test(mods, winsize, all, options) abort
let manifest = findfile('Cargo.toml', expand('%:p:h') . ';')
if manifest ==# ''
return rust#Run(1, '--test ' . a:options)
endif
if has('terminal') || has('nvim')
let cmd = 'terminal '
" <count> defaults to 0, but we prefer an empty string
let winsize = a:winsize ? a:winsize : ''
if has('terminal')
if has('patch-8.0.910')
let cmd = printf('%s noautocmd %snew | terminal ++curwin ', a:mods, winsize)
else
let cmd = printf('%s terminal ', a:mods)
endif
elseif has('nvim')
let cmd = printf('%s noautocmd %snew | terminal ', a:mods, winsize)
else
let cmd = '!'
let manifest = shellescape(manifest)
@@ -528,23 +551,24 @@ function! rust#Test(all, options) abort
let saved = getpos('.')
try
let func_name = s:SearchTestFunctionNameUnderCursor()
if func_name ==# ''
echohl ErrorMsg
echomsg 'No test function was found under the cursor. Please add ! to command if you want to run all tests'
echohl None
return
endif
if a:options ==# ''
execute cmd . 'cargo test --manifest-path' manifest func_name
else
execute cmd . 'cargo test --manifest-path' manifest func_name a:options
endif
return
finally
call setpos('.', saved)
endtry
if func_name ==# ''
echohl ErrorMsg
echomsg 'No test function was found under the cursor. Please add ! to command if you want to run all tests'
echohl None
return
endif
if a:options ==# ''
execute cmd . 'cargo test --manifest-path' manifest func_name
else
execute cmd . 'cargo test --manifest-path' manifest func_name a:options
endif
endfunction
" }}}1
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim
@@ -105,3 +103,5 @@ function! rust#debugging#InfoToFile(filename) abort
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
@@ -46,3 +44,5 @@ endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Tagbar support code, for the sake of not automatically overriding its
" configuration in case Universal Ctags is detected.
@@ -10,7 +8,8 @@ let s:checked_ctags = 0
function! rust#tags#IsUCtags() abort
if s:checked_ctags == 0
if system('ctags --version') =~? 'universal ctags'
let l:ctags_bin = get(g:, 'tagbar_ctags_bin', 'ctags')
if system(l:ctags_bin.' --version') =~? 'universal ctags'
let s:ctags_is_uctags = 1
endif
let s:checked_ctags = 1
@@ -19,3 +18,5 @@ function! rust#tags#IsUCtags() abort
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Author: Stephen Sugden <stephen@stephensugden.com>
"
@@ -64,18 +62,19 @@ function! s:RustfmtWriteMode()
endif
endfunction
function! s:RustfmtConfig()
function! s:RustfmtConfigOptions()
let l:rustfmt_toml = findfile('rustfmt.toml', expand('%:p:h') . ';')
if l:rustfmt_toml !=# ''
return '--config-path '.l:rustfmt_toml
return '--config-path '.fnamemodify(l:rustfmt_toml, ":p")
endif
let l:_rustfmt_toml = findfile('.rustfmt.toml', expand('%:p:h') . ';')
if l:_rustfmt_toml !=# ''
return '--config-path '.l:_rustfmt_toml
return '--config-path '.fnamemodify(l:_rustfmt_toml, ":p")
endif
return ''
" Default to edition 2018 in case no rustfmt.toml was found.
return '--edition 2018'
endfunction
function! s:RustfmtCommandRange(filename, line1, line2)
@@ -86,7 +85,7 @@ function! s:RustfmtCommandRange(filename, line1, line2)
let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]}
let l:write_mode = s:RustfmtWriteMode()
let l:rustfmt_config = s:RustfmtConfig()
let l:rustfmt_config = s:RustfmtConfigOptions()
" FIXME: When --file-lines gets to be stable, add version range checking
" accordingly.
@@ -100,21 +99,16 @@ function! s:RustfmtCommandRange(filename, line1, line2)
endfunction
function! s:RustfmtCommand()
if g:rustfmt_emit_files
let l:write_mode = "--emit=stdout"
else
let l:write_mode = "--write-mode=display"
endif
" rustfmt will pick on the right config on its own due to the
" current directory change.
return g:rustfmt_command . " ". l:write_mode . " " . g:rustfmt_options
let write_mode = g:rustfmt_emit_files ? '--emit=stdout' : '--write-mode=display'
let config = s:RustfmtConfigOptions()
return join([g:rustfmt_command, write_mode, config, g:rustfmt_options])
endfunction
function! s:DeleteLines(start, end) abort
silent! execute a:start . ',' . a:end . 'delete _'
endfunction
function! s:RunRustfmt(command, tmpname, fail_silently)
function! s:RunRustfmt(command, tmpname, from_writepre)
mkview!
let l:stderr_tmpname = tempname()
@@ -151,8 +145,10 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
let l:open_lwindow = 0
if v:shell_error == 0
" remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry
if a:from_writepre
" remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry
endif
if a:tmpname ==# ''
let l:content = l:out
@@ -172,7 +168,7 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
call setloclist(0, [])
let l:open_lwindow = 1
endif
elseif g:rustfmt_fail_silently == 0 && a:fail_silently == 0
elseif g:rustfmt_fail_silently == 0 && !a:from_writepre
" otherwise get the errors and put them in the location list
let l:errors = []
@@ -226,12 +222,12 @@ function! rustfmt#FormatRange(line1, line2)
let l:tmpname = tempname()
call writefile(getline(1, '$'), l:tmpname)
let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2)
call s:RunRustfmt(command, l:tmpname, 0)
call s:RunRustfmt(command, l:tmpname, v:false)
call delete(l:tmpname)
endfunction
function! rustfmt#Format()
call s:RunRustfmt(s:RustfmtCommand(), '', 0)
call s:RunRustfmt(s:RustfmtCommand(), '', v:false)
endfunction
function! rustfmt#Cmd()
@@ -259,8 +255,10 @@ function! rustfmt#PreWrite()
return
endif
call s:RunRustfmt(s:RustfmtCommand(), '', 1)
call s:RunRustfmt(s:RustfmtCommand(), '', v:true)
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'smt2') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'smt2') == -1
" Invokes the solver on current file
function! smt2#RunSolver()
@@ -32,3 +30,5 @@ function! smt2#PrintSolverVersion()
silent !clear
execute "!" . g:smt2_solver_command . " " . g:smt2_solver_version_switch
endfunction
endif

View File

@@ -1,25 +1,39 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'terraform') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1
let s:cpo_save = &cpoptions
set cpoptions&vim
" Ensure no conflict with arguments from the environment
let $TF_CLI_ARGS_fmt=''
function! terraform#fmt() abort
" Save the view.
let curw = winsaveview()
function! terraform#fmt()
if !filereadable(expand('%:p'))
return
endif
let l:curw = winsaveview()
" Make a fake change so that the undo point is right.
normal! ix
normal! "_x
" Execute `terraform fmt`, redirecting stderr to a temporary file.
let tmpfile = tempname()
let shellredir_save = &shellredir
let &shellredir = '>%s 2>'.tmpfile
silent execute '%!terraform fmt -no-color -'
let &shellredir = shellredir_save
" If there was an error, undo any changes and show stderr.
if v:shell_error != 0
let output = getline(1, '$')
silent undo
let output = readfile(tmpfile)
echo join(output, "\n")
endif
call winrestview(l:curw)
" Delete the temporary file, and restore the view.
call delete(tmpfile)
call winrestview(curw)
endfunction
function! terraform#align()
function! terraform#align() abort
let p = '^.*=[^>]*$'
if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g'))
@@ -30,31 +44,37 @@ function! terraform#align()
endif
endfunction
function! terraform#commands(A, L, P)
return [
\ 'apply',
\ 'console',
\ 'destroy',
\ 'env',
\ 'fmt',
\ 'get',
\ 'graph',
\ 'import',
\ 'init',
\ 'output',
\ 'plan',
\ 'providers',
\ 'refresh',
\ 'show',
\ 'taint',
\ 'untaint',
\ 'validate',
\ 'version',
\ 'workspace',
\ '0.12upgrade',
\ 'debug',
\ 'force-unlock',
\ 'push',
\ 'state'
function! terraform#commands(ArgLead, CmdLine, CursorPos) abort
let commands = [
\ 'apply',
\ 'console',
\ 'destroy',
\ 'env',
\ 'fmt',
\ 'get',
\ 'graph',
\ 'import',
\ 'init',
\ 'output',
\ 'plan',
\ 'providers',
\ 'refresh',
\ 'show',
\ 'taint',
\ 'untaint',
\ 'validate',
\ 'version',
\ 'workspace',
\ '0.12upgrade',
\ 'debug',
\ 'force-unlock',
\ 'push',
\ 'state'
\ ]
return join(commands, "\n")
endfunction
let &cpoptions = s:cpo_save
unlet s:cpo_save
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'vifm') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" common functions for vifm command-line editing buffer filetype plugins
" Maintainer: xaizek <xaizek@posteo.net>
@@ -16,3 +14,5 @@ function! vifm#edit#Init()
" Start buffer editing in insert mode
startinsert
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'vifm') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" common functions for vifm plugin related to globals
" Maintainer: xaizek <xaizek@posteo.net>
@@ -33,3 +31,5 @@ function! vifm#globals#Init()
let g:vifm_embed_term = has('gui_running')
endif
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:_plugin_name = expand('<sfile>:t:r')
@@ -11,3 +9,5 @@ endfunction
function! vital#{s:_plugin_name}#function(funcname) abort
silent! return function(a:funcname)
endfunction
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
@@ -189,3 +187,5 @@ endfunction
let &cpo = s:save_cpo
unlet s:save_cpo
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
@@ -466,3 +464,5 @@ let &cpo = s:save_cpo
unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
@@ -629,3 +627,5 @@ endfunction
let &cpo = s:save_cpo
unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
@@ -175,3 +173,5 @@ let &cpo = s:save_cpo
unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
@@ -180,3 +178,5 @@ let &cpo = s:save_cpo
unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:plugin_name = expand('<sfile>:t:r')
let s:vital_base_dir = expand('<sfile>:h')
@@ -330,3 +328,5 @@ else
return a:list
endfunction
endif
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
crystal
bee84ae23effb0510137ad177e98c94d8b3657a6
@@ -8,3 +6,5 @@ bee84ae23effb0510137ad177e98c94d8b3657a6
Process
Web.JSON
ColorEcho
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
" Vim completion for WAI-ARIA data file
" Language: HTML + WAI-ARIA
@@ -459,3 +457,5 @@ let g:xmldata_aria = {
\ 'default_role': default_role,
\ 'vimariaattrinfo': aria_attributes_value
\ }
endif

View File

@@ -1,6 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1
finish
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
" Vim completion for HTML5 data file
" Language: HTML (version 5.1 Draft 2016 Jan 13)
@@ -748,6 +746,10 @@ let g:xmldata_html5 = {
\ [],
\ global_attributes
\ ],
\ 'slot': [
\ [],
\ extend(copy(global_attributes), {'name': []})
\ ],
\ 'small': [
\ phrasing_elements,
\ global_attributes
@@ -872,3 +874,5 @@ let g:xmldata_html5 = {
\ 'wbr': ['/>', ''],
\ },
\ }
endif

Some files were not shown because too many files have changed in this diff Show More