Compare commits

...

62 Commits

Author SHA1 Message Date
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
Adam Stankiewicz
84ec4eedcd Switch typescript provider, closes #428 2019-09-06 14:32:07 +02:00
Adam Stankiewicz
66b769328c Update 2019-09-06 14:25:42 +02:00
Adam Stankiewicz
ae18284e5a Disable jsx when ts or js is disabled, closes #414 2019-09-04 17:39:23 +02:00
Adam Stankiewicz
e3024f21fc Fix build script 2019-09-04 17:01:29 +02:00
Adam Stankiewicz
31d757fc7b Update 2019-09-04 16:50:13 +02:00
Adam Stankiewicz
556c56d185 Add graphql support, closes #298 2019-09-04 16:29:56 +02:00
Adam Stankiewicz
fe84062992 Include missing file from styledcomponents, fixes #418 2019-09-04 16:25:08 +02:00
Adam Stankiewicz
8742443e69 Remove advanced stuff from r plugin, fixes #420 2019-09-04 16:08:22 +02:00
Adam Stankiewicz
832dfece76 Add dhall, closes #426 2019-09-04 16:06:18 +02:00
Adam Stankiewicz
933e42ea1f Change provider for puppet, closes #424 2019-09-04 16:04:21 +02:00
Adam Stankiewicz
cdd6d73e39 Switch fish provider, fixes #408 2019-09-04 15:55:58 +02:00
Adam Stankiewicz
a48874df4c Update elixir filedetect, closes #421 2019-09-04 15:53:42 +02:00
Adam Stankiewicz
21849c2e18 Add helm syntax, closes #422 2019-09-04 15:45:55 +02:00
Adam Stankiewicz
664aa988f6 Update 2019-09-04 15:44:43 +02:00
Adam Stankiewicz
3ddca5da46 Remove rego, fixes #415 2019-07-01 16:26:25 +02:00
Adam Stankiewicz
140430ffb7 Update 2019-07-01 16:25:37 +02:00
Adam Stankiewicz
d527002849 Update 2019-06-16 18:36:23 +02:00
Adam Stankiewicz
15727e7eb0 Add zephir support 2019-06-14 16:11:54 +02:00
Adam Stankiewicz
6b169212f8 Add svelte support, closes #410 2019-06-14 16:07:20 +02:00
Adam Stankiewicz
2edc785a5e Make typescript.tsx default filetype for tsx, fixes #409 2019-06-09 00:08:31 +02:00
Adam Stankiewicz
445e026010 Add styled-components, closes #407 2019-06-08 14:12:14 +02:00
Adam Stankiewicz
fca45b2c2b Add rego support, closes #406 2019-06-08 13:36:13 +02:00
Adam Stankiewicz
ebf9ec9d62 Add zig support, closes #405 2019-06-08 13:34:40 +02:00
Adam Stankiewicz
9caa678708 Add ion shell support, closes #404 2019-06-08 13:33:25 +02:00
Adam Stankiewicz
8f2a71643a Add hcl support, closes #403 2019-06-08 13:32:04 +02:00
Adam Stankiewicz
af763ef221 Change tmux provider, closes #402 2019-06-08 13:29:23 +02:00
Adam Stankiewicz
5ded0682bd Add dlang support, closes #401 2019-06-08 13:28:47 +02:00
Adam Stankiewicz
26c678b08d Change jsx/tsx provider, closes #400 2019-06-08 13:25:41 +02:00
Adam Stankiewicz
17ecfbdabc Add s:setf helper, fixes #399 2019-06-08 13:14:56 +02:00
Adam Stankiewicz
0217fb50fe Add tsx provider, closes #330 2019-06-08 13:03:32 +02:00
Adam Stankiewicz
5023da62ec Add hive syntax, closes #396 2019-06-08 12:50:29 +02:00
Adam Stankiewicz
957228cc25 Add log syntax, closes #394 2019-06-08 12:48:22 +02:00
Adam Stankiewicz
7aae831309 Add tptp syntax 2019-06-08 12:46:43 +02:00
Adam Stankiewicz
671078ef6c Update 2019-06-08 12:44:15 +02:00
Adam Stankiewicz
aebef2c2e7 Update 2019-05-07 16:17:56 +02:00
German Lashevich
e8245dbf17 FIx CI build freezing (#398)
* Kill vim server

* Fix incorrect usage of rspec

* Add build stage to CI

* Try using new server for each run

* Sort and uniq test files
2019-05-01 23:52:54 +02:00
Adam Stankiewicz
9fd5c11a20 Remove liquid syntax, closes #384 2019-04-23 11:49:34 +02:00
Adam Stankiewicz
679ccf0303 Change pgsql provider, closes #391 2019-04-23 11:46:52 +02:00
Adam Stankiewicz
eacf785f5a Add svg plugin, closes #388 2019-04-23 11:43:40 +02:00
Adam Stankiewicz
83bd298476 Add xdc syntax, closes #393 2019-04-23 11:38:41 +02:00
Adam Stankiewicz
415261dd1f Switch mathematica provider, closes #385 2019-04-23 11:37:21 +02:00
Adam Stankiewicz
4d18a5e5dd Update 2019-04-23 11:32:40 +02:00
Adam Stankiewicz
a55b6aa3aa Remove grapqhl, fixes #387 2019-03-29 20:30:36 +01:00
Adam Stankiewicz
1d45a6d4f0 Update readme 2019-03-11 09:22:40 +01:00
Adam Stankiewicz
420a65e9b0 Add llvm support, closes #376 2019-03-11 09:20:36 +01:00
Adam Stankiewicz
2254b83675 Update logo 2019-03-10 22:52:10 +01:00
Adam Stankiewicz
12755e3583 Add logo 2019-03-10 22:49:59 +01:00
Adam Stankiewicz
cbad6b1e0a Update issue templates 2019-03-10 22:37:36 +01:00
Adam Stankiewicz
fabb550c17 Reuse server for tests 2019-03-10 21:23:30 +01:00
Adam Stankiewicz
9d9ed14485 Add ACPI ASL and SMT2 support
closes #379
closes #378
2019-03-10 21:22:06 +01:00
Adam Stankiewicz
5005f1e27a Add csv plugin, closes #239 2019-03-10 21:16:48 +01:00
Adam Stankiewicz
571f76e6b6 Remove rare html extensions, fixes #280 2019-03-10 20:14:21 +01:00
Adam Stankiewicz
e4f906d9a5 Fix specs 2019-03-10 19:42:33 +01:00
Adam Stankiewicz
8b3a563bd0 Fix regexp 2019-03-10 19:11:11 +01:00
Adam Stankiewicz
0475f2b8d1 Fix test extensions 2019-03-10 18:49:28 +01:00
Adam Stankiewicz
1d9a032a66 Update timeout and ruby version 2019-03-10 18:46:17 +01:00
Adam Stankiewicz
86721731c7 Add lilypond support, closes #278 2019-03-05 09:34:59 +01:00
589 changed files with 21921 additions and 7808 deletions

18
.github/ISSUE_TEMPLATE/add-language.md vendored Normal file
View File

@@ -0,0 +1,18 @@
---
name: Add language
about: Add support for new language
title: ''
labels: ''
assignees: ''
---
<!--- vim-polyglot accepts only lightweight, maintained github-hosted vim plugins -->
**GitHub repository url**
**Is this plugin well maintained?**
**Is this plugin lightweight? (no advanced functionality, just indent and syntax support)**

View File

@@ -0,0 +1,20 @@
---
name: Add support for language
about: ''
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

16
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,16 @@
---
name: Bug report
about: Report vim-polyglot bug
title: ''
labels: ''
assignees: ''
---
<!-- Vim-polyglot is not responsible for bugs of plugins it uses. Please report only bugs that happen when plugin is used as part of vim-polyglot and doesn't happen when just install the plugin -->
**Does this bug happen when you install plugin without vim-polyglot?**
**Describe the bug:**
**To Reproduce:**

View File

@@ -1,12 +1,11 @@
language: ruby language: ruby
rvm: rvm:
- 1.9.3 - 2.6
sudo: false sudo: false
addons: addons:
apt: apt:
packages: packages:
- vim-gtk - vim-gtk
before_script: before_script:
- "export DISPLAY=:99.0" - "./build"
- "sh -e /etc/init.d/xvfb start" script: xvfb-run bundle exec rspec --format=documentation
script: bundle exec rspec --format=documentation

View File

@@ -1,4 +1,6 @@
# vim-polyglot [![Build Status][travis-img-url]][travis-url] [![Maintenance](https://img.shields.io/maintenance/yes/2019.svg?maxAge=2592000)]() ![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)]()
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg [travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot [travis-url]: https://travis-ci.org/sheerun/vim-polyglot
@@ -8,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. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 100+ times faster** than the <!--Package Count-->128<!--/Package Count--> packages it consists of. - It **installs and updates 120+ times faster** than the <!--Package Count-->146<!--/Package Count--> packages it consists of.
- Solid syntax and indentation support (other features skipped). Only the best language packs. - Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support). - All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages, only most popular ones (modern too, like `slim`). - No support for esoteric languages, only most popular ones (modern too, like `slim`).
@@ -43,6 +45,7 @@ If you need full functionality of any plugin, please use it directly with your p
## Language packs ## Language packs
<!--Language Packs--> <!--Language Packs-->
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl) (syntax)
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin) - [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)
- [applescript](https://github.com/mityu/vim-applescript) (syntax, indent) - [applescript](https://github.com/mityu/vim-applescript) (syntax, indent)
@@ -57,13 +60,16 @@ If you need full functionality of any plugin, please use it directly with your p
- [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin) - [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin)
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin) - [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin)
- [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent) - [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent)
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin) - [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, compiler, indent, autoload, ftplugin)
- [cql](https://github.com/elubow/cql-vim) (syntax) - [cql](https://github.com/elubow/cql-vim) (syntax)
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin) - [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin)
- [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin) - [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin)
- [csv](https://github.com/chrisbra/csv.vim) (syntax, autoload, ftplugin)
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin) - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin)
- [cue](https://github.com/mgrabovsky/vim-cuesheet) (syntax) - [cue](https://github.com/mgrabovsky/vim-cuesheet) (syntax)
- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin) - [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin)
- [dhall](https://github.com/vmchale/dhall-vim) (syntax, ftplugin)
- [dlang](https://github.com/JesseKPhillips/d.vim) (syntax, indent)
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin) - [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin)
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin) - [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin)
- [elm](https://github.com/ElmCast/elm-vim) (syntax, indent, autoload, ftplugin) - [elm](https://github.com/ElmCast/elm-vim) (syntax, indent, autoload, ftplugin)
@@ -71,7 +77,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin) - [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent) - [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent)
- [ferm](https://github.com/vim-scripts/ferm.vim) (syntax) - [ferm](https://github.com/vim-scripts/ferm.vim) (syntax)
- [fish](https://github.com/dag/vim-fish) (syntax, indent, compiler, autoload, ftplugin) - [fish](https://github.com/georgewitteman/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax) - [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax)
- [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent) - [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent)
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin) - [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
@@ -80,7 +86,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax) - [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent) - [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
- [gradle](https://github.com/tfnico/vim-gradle) (compiler) - [gradle](https://github.com/tfnico/vim-gradle) (compiler)
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, ftplugin) - [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after)
- [groovy-indent](https://github.com/vim-scripts/groovyindent-unix) (indent) - [groovy-indent](https://github.com/vim-scripts/groovyindent-unix) (indent)
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax) - [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin) - [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
@@ -88,9 +94,13 @@ If you need full functionality of any plugin, please use it directly with your p
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax) - [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax)
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin) - [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin)
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax) - [haxe](https://github.com/yaymukund/vim-haxe) (syntax)
- [hcl](https://github.com/b4b4r07/vim-hcl) (syntax, indent, ftplugin)
- [helm](https://github.com/towolf/vim-helm) (syntax)
- [hive](https://github.com/zebradil/hive.vim) (syntax, ftplugin)
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin) - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
- [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin) - [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin)
- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, 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) - [jasmine](https://github.com/glanotte/vim-jasmine) (syntax)
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftplugin, extras) - [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, compiler, ftplugin, extras)
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent) - [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent)
@@ -98,17 +108,19 @@ If you need full functionality of any plugin, please use it directly with your p
- [json5](https://github.com/GutenYe/json5.vim) (syntax) - [json5](https://github.com/GutenYe/json5.vim) (syntax)
- [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin) - [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin)
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent) - [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
- [jsx](https://github.com/amadeus/vim-jsx) (syntax, indent, ftplugin) - [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after)
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin) - [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin)
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin) - [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin) - [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin) - [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
- [liquid](https://github.com/tpope/vim-liquid) (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) - [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
- [llvm](https://github.com/rhysd/vim-llvm) (syntax, indent, ftplugin)
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax)
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent) - [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin) - [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)
- [mathematica](https://github.com/rsmenon/vim-mathematica) (syntax, ftplugin) - [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin)
- [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax) - [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax)
- [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin) - [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin)
- [moonscript](https://github.com/leafo/moonscript-vim) (syntax, indent, ftplugin) - [moonscript](https://github.com/leafo/moonscript-vim) (syntax, indent, ftplugin)
@@ -120,22 +132,22 @@ If you need full functionality of any plugin, please use it directly with your p
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax) - [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin) - [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin) - [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin)
- [pgsql](https://github.com/exu/pgsql.vim) (syntax) - [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent)
- [php](https://github.com/StanAngeloff/php.vim) (syntax) - [php](https://github.com/StanAngeloff/php.vim) (syntax)
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin) - [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin)
- [pony](https://github.com/jakwings/vim-pony) (syntax, indent, autoload, 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, ftplugin)
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent) - [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent)
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin) - [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin)
- [puppet](https://github.com/voxpupuli/vim-puppet) (syntax, indent, ftplugin) - [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin)
- [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin) - [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin)
- [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload) - [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload)
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent) - [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent)
- [python](https://github.com/vim-python/python-syntax) (syntax) - [python](https://github.com/vim-python/python-syntax) (syntax)
- [qmake](https://github.com/artoj/qmake-syntax-vim) (syntax) - [qmake](https://github.com/artoj/qmake-syntax-vim) (syntax)
- [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin) - [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin)
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin) - [r-lang](https://github.com/vim-scripts/R.vim) (syntax)
- [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, autoload, ftplugin) - [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, ftplugin)
- [ragel](https://github.com/jneen/ragel.vim) (syntax) - [ragel](https://github.com/jneen/ragel.vim) (syntax)
- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin) - [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin)
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent) - [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent)
@@ -145,32 +157,40 @@ If you need full functionality of any plugin, please use it directly with your p
- [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)
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax) - [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)
- [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, autoload, ftplugin) - [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, indent, ftplugin)
- [slim](https://github.com/slim-template/vim-slim) (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) - [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) - [solidity](https://github.com/tomlion/vim-solidity) (syntax, indent, ftplugin)
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin) - [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)
- [svelte](https://github.com/evanleck/vim-svelte) (syntax, indent)
- [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, ftplugin)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax) - [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)
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, ftplugin) - [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, autoload, ftplugin)
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin) - [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin)
- [thrift](https://github.com/solarnz/thrift.vim) (syntax) - [thrift](https://github.com/solarnz/thrift.vim) (syntax)
- [tmux](https://github.com/keith/tmux.vim) (syntax, ftplugin) - [tmux](https://github.com/ericpruitt/tmux.vim) (syntax, ftplugin)
- [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax) - [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin) - [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) - [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin)
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, indent, compiler, ftplugin) - [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin)
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent) - [vala](https://github.com/arrufat/vala.vim) (syntax, indent)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax) - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax) - [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax)
- [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin) - [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin)
- [vm](https://github.com/lepture/vim-velocity) (syntax, indent) - [vm](https://github.com/lepture/vim-velocity) (syntax, indent)
- [vue](https://github.com/posva/vim-vue) (syntax, indent, ftplugin) - [vue](https://github.com/posva/vim-vue) (syntax, indent, ftplugin)
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) (syntax)
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax) - [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
- [xml](https://github.com/amadeus/vim-xml) (syntax) - [xml](https://github.com/amadeus/vim-xml) (syntax)
- [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin) - [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin)
- [yard](https://github.com/sheerun/vim-yardoc) (syntax) - [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)
<!--/Language Packs--> <!--/Language Packs-->
## Updating ## Updating

View File

@@ -1,6 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
autocmd BufReadPost,BufNewFile *_spec.rb set syntax=rspec
autocmd BufReadPost,BufNewFile *_spec.rb setlocal commentstring=#\ %s
endif

View File

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

View File

@@ -1,9 +1,7 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'cjsx') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cjsx') == -1
finish
endif
if exists("loaded_matchit") if exists("loaded_matchit")
let b:match_ignorecase = 0 let b:match_ignorecase = 0
let b:match_words = '(:),\[:\],{:},<:>,' . let b:match_words = '(:),\[:\],{:},<:>,' .
\ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
endif endif
endif

View File

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

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'javascript') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
finish
endif
" Vim filetype plugin file " Vim filetype plugin file
" Language: JavaScript " Language: JavaScript
" Maintainer: vim-javascript community " Maintainer: vim-javascript community
@@ -14,3 +11,37 @@ if exists('b:undo_ftplugin')
else else
let b:undo_ftplugin = 'setlocal iskeyword< suffixesadd<' let b:undo_ftplugin = 'setlocal iskeyword< suffixesadd<'
endif endif
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
"
" Language: javascript.jsx
" Maintainer: MaxMEllon <maxmellon1994@gmail.com>
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" modified from html.vim
" For matchit plugin
if exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words = '(:),\[:\],{:},<:>,' .
\ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
endif
" For andymass/vim-matchup plugin
if exists("loaded_matchup")
setlocal matchpairs=(:),{:},[:],<:>
let b:match_words = '<\@<=\([^/][^ \t>]*\)\g{hlend}[^>]*\%(/\@<!>\|$\):<\@<=/\1>'
let b:match_skip = 's:comment\|string'
endif
let b:original_commentstring = &l:commentstring
augroup jsx_comment
autocmd! CursorMoved <buffer>
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:original_commentstring)
augroup end
setlocal suffixesadd+=.jsx
endif

View File

@@ -1,31 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim ftplugin file
"
" Language: JSX (JavaScript)
" Maintainer: Max Wang <mxawng@gmail.com>
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" modified from html.vim
if exists("loaded_matchit")
let b:match_ignorecase = 0
let s:jsx_match_words = '<\([a-zA-Z0-9.]\+\)\(>\|$\|\s\):<\/\1>'
if !exists('b:loaded_jsx_match_words')
let b:loaded_jsx_match_words = 0
endif
if b:loaded_jsx_match_words == 0
let b:match_words = exists('b:match_words')
\ ? b:match_words . ',' . s:jsx_match_words
\ : s:jsx_match_words
endif
let b:loaded_jsx_match_words = 1
endif
setlocal suffixesadd+=.jsx

475
after/ftplugin/llvm.vim Normal file
View File

@@ -0,0 +1,475 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'llvm') == -1
" Copyright (c) 2018 rhysd
"
" 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.
if get(g:, 'llvm_extends_official', 1) == 0
finish
endif
let g:llvm_ext_no_mapping = get(g:, 'llvm_ext_no_mapping', 0)
let g:llvm_ext_lli_executable = get(g:, 'llvm_ext_lli_executable', 'lli')
let s:KIND_BLOCK_PREC = 0
let s:KIND_BLOCK_FOLLOW = 1
let s:KIND_FUNC_BEGIN = 2
let s:KIND_FUNC_END = 3
function! s:section_delim_at(lnum) abort
let line = getline(a:lnum)
let m = matchlist(line, '^\([^:]\+\):\%( \+; preds = \(%.\+\)\)\=$')
if !empty(m)
if m[2] ==# ''
return [s:KIND_BLOCK_PREC, m[1]]
else
return [s:KIND_BLOCK_FOLLOW, m[1], split(m[2], ',\s*')]
endif
endif
if line =~# '^}$'
return [s:KIND_FUNC_END]
endif
if line =~# '^define\>'
return [s:KIND_FUNC_BEGIN]
endif
return []
endfunction
function! s:is_section_delim(line, func_delim) abort
let sec = s:section_delim_at(a:line)
if empty(sec)
return 0
endif
let kind = sec[0]
return kind == s:KIND_BLOCK_PREC || kind == s:KIND_BLOCK_FOLLOW || kind == func_delim
endfunction
function! s:next_section(stop_func_begin) abort
let func_delim = a:stop_func_begin ? s:KIND_FUNC_BEGIN : s:KIND_FUNC_END
let last = line('$') - 1
let line = line('.')
while line < last
let line += 1
if s:is_section_delim(line, func_delim)
call cursor(line, col('.'))
return
endif
endwhile
endfunction
function! s:prev_section(stop_func_begin) abort
let func_delim = a:stop_func_begin ? s:KIND_FUNC_BEGIN : s:KIND_FUNC_END
let line = line('.')
while line > 1
let line -= 1
if s:is_section_delim(line, func_delim)
call cursor(line, col('.'))
return
endif
endwhile
endfunction
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>
endif
function! s:function_range_at(linum) abort
let line = a:linum
while line >= 1
let s = getline(line)
if s =~# '^define\>'
let start = line
break
elseif s =~# '^}$'
return []
endif
let line -= 1
endwhile
if line < 1
return []
endif
let line = a:linum
let last = line('$')
while line <= last
let s = getline(line)
if s =~# '^}$'
let end = line
break
elseif s =~# '^define\>'
return []
endif
let line += 1
endwhile
if line > last
return []
endif
return [start, end]
endfunction
function! s:blocks_graph_at(linum) abort
let func_range = s:function_range_at(a:linum)
if empty(func_range)
return {}
endif
let line = func_range[0] + 1
let last = func_range[1] - 1
let graph = {}
while line <= last
let block = s:section_delim_at(line)
if empty(block)
let line += 1
continue
endif
let block_name = '%' . block[1]
if block[0] == s:KIND_BLOCK_PREC
let graph[block_name] = {'line': line, 'follows': [], 'preds': []}
elseif block[0] == s:KIND_BLOCK_FOLLOW
let graph[block_name] = {'line': line, 'follows': [], 'preds': block[2]}
for follow in block[2]
call add(graph[follow].follows, block_name)
endfor
else
echoerr 'unreachable'
endif
let line += 1
endwhile
return graph
endfunction
function! s:find_pred_block(linum) abort
let sec = s:section_delim_at(a:linum)
if empty(sec) || sec[0] != s:KIND_BLOCK_PREC && sec[0] != s:KIND_BLOCK_FOLLOW
throw 'No block is starting at line ' . a:linum
endif
if sec[0] != s:KIND_BLOCK_FOLLOW
throw printf("Block '%s' has no pred block", sec[1])
endif
let block_name = '%' . sec[1]
let pred_block = sec[2][0]
let graph = s:blocks_graph_at(a:linum)
if empty(graph)
throw 'No block is found in function at line ' . a:linum
endif
if !has_key(graph, pred_block)
throw printf("Block '%s' (pred block of '%s') not found in function", pred_block, block_name)
endif
return graph[pred_block]
endfunction
function! s:move_to_pred_block() abort
try
let b = s:find_pred_block(line('.'))
call cursor(b.line, col('.'))
catch
echohl ErrorMsg | echom v:exception | echohl None
endtry
endfunction
function! s:find_following_block(linum) abort
let sec = s:section_delim_at(a:linum)
if empty(sec) || sec[0] != s:KIND_BLOCK_PREC && sec[0] != s:KIND_BLOCK_FOLLOW
throw 'No block is starting at line ' . a:linum
endif
let block_name = '%' . sec[1]
let graph = s:blocks_graph_at(a:linum)
if empty(graph)
throw 'No block is found in function at line ' . a:linum
endif
let follows = graph[block_name].follows
if empty(follows)
throw printf("Block '%s' has no following block", block_name)
endif
echom printf("Block '%s' has %d following blocks: %s", block_name, len(follows), join(follows, ', '))
if !has_key(graph, follows[0])
throw printf("Block '%s' is not defined in function at line %d", follows[0], a:linum)
endif
return graph[follows[0]]
endfunction
function! s:move_to_following_block() abort
try
let b = s:find_following_block(line('.'))
call cursor(b.line, col('.'))
catch
echohl ErrorMsg | echom v:exception | echohl None
endtry
endfunction
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>
endif
function! s:get_func_identifiers(line) abort
let idx = stridx(a:line, '@')
if idx == -1
" Invalid signature
return []
endif
" e.g. define internal i32 @foo(...) { -> @foo(...) {
let sig = a:line[idx:]
let idx = stridx(sig, '(')
if idx == -1
" Invalid signature
return []
endif
" @foo(...) { -> @foo
let idents = [sig[:idx-1]]
" @foo(...) { -> ...) {
let params = sig[idx+1:]
let idx = strridx(sig, ')')
if idx == -1
return idents
endif
" ...) { -> ...
let params = params[:idx-1]
" Gather parameters in function signature
while params !=# ''
let m = matchlist(params, '^[^%]*\(%\%("[^"]\+"\|[[:alnum:]_.]\+\)\)\s*\(.*\)$')
if empty(m)
break
endif
let idents += [m[1]]
let params = m[2]
endwhile
return idents
endfunction
function! s:get_identifiers(line) abort
" Registers and type defs
let m = matchlist(a:line, '^\s*\(%\S\+\)\s\+=')
if !empty(m)
return [m[1]]
endif
" Constants
let m = matchlist(a:line, '^\(@\S\+\)\s\+=.\+\<constant\>')
if !empty(m)
return [m[1]]
endif
" Labels for basic blocks
let m = matchlist(a:line, '^\([^:]\+\):\%(\s\+; preds = .\+\)\=$')
if !empty(m)
return ['%' . m[1]]
endif
" Meta variables
let m = matchlist(a:line, '^\(!\S\+\)\s\+=')
if !empty(m)
return [m[1]]
endif
" Attributes
let m = matchlist(a:line, '^attributes\s\+\(#\d\+\)\s\+=')
if !empty(m)
return [m[1]]
endif
if a:line =~# '^\%(declare\|define\)\>'
return s:get_func_identifiers(a:line)
endif
return []
endfunction
function! s:extract_identifier(word) abort
if strlen(a:word) <= 1
return ''
endif
let prefix = a:word[0]
if prefix ==# '@' || prefix ==# '%' || prefix ==# '!'
if prefix ==# '!' && a:word[1] ==# '{'
return ''
endif
if a:word[1] == '"'
let idx = stridx(a:word, '"', 2)
if idx == -1
return ''
endif
" @"foo" or %"foo"
return a:word[:idx]
else
" @foo or %foo
return matchstr(a:word, '^[@%!][[:alnum:]_.]\+')
endif
endif
if prefix ==# '#'
return matchstr(a:word, '^#\d\+')
endif
return ''
endfunction
function! s:jump_to_identifier_at(linum, ident) abort
let line = getline(a:linum)
let column = stridx(line, a:ident) + 1
if column == 0
let column = col('.')
endif
call cursor(a:linum, column)
endfunction
function! s:browser_open_command() abort
if exists('g:llvm_ext_browser_open_command')
return g:llvm_ext_browser_open_command
endif
if exists('s:browser_opener')
return s:browser_opener
endif
let s:browser_opener = ''
if has('mac')
let s:browser_opener = 'open'
elseif has('win32') || has('win64')
let s:browser_opener = 'cmd /q /c start ""'
else
for cmd in ['xdg-open', 'chromium', 'google-chrome', 'firefox']
if executable(cmd)
let s:browser_opener = cmd
break
endif
endfor
endif
return s:browser_opener
endfunction
function! s:open_browser(url) abort
let cmd = s:browser_open_command()
if cmd ==# ''
throw "Failed to open a browser. I don't know how to open a browser: Please set g:llvm_ext_browser_open_command"
endif
let cmdline = cmd . ' ' . shellescape(a:url)
let out = system(cmdline)
if v:shell_error
throw printf("Failed to open a browser with command '%s': %s", cmdline, out)
endif
endfunction
function! s:goto_definition() abort
" Open language reference manual under the cursor in browser
let syn_name = synIDattr(synID(line('.'),col('.'),1),'name')
if syn_name ==# 'llvmStatement'
let word = expand('<cword>')
if word !=# ''
try
" Open browser assuming a word under the cursor is an instruction
call s:open_browser('https://llvm.org/docs/LangRef.html#' . word . '-instruction')
catch /^Failed to open a browser/
echohl ErrorMsg | echom v:exception | echohl None
endtry
endif
return
endif
" XXX: This does not support identifiers which contains spaces
let word = expand('<cWORD>')
if word ==# ''
echom 'No identifier found under the cursor'
return
endif
let ident = s:extract_identifier(word)
if ident ==# ''
echom 'No identifier found under the cursor'
return
endif
" Definition tends to be near its usages. Look back at first.
let line = line('.')
while line > 0
for found in s:get_identifiers(getline(line))
if ident ==# found
call s:jump_to_identifier_at(line, ident)
return
endif
endfor
let line -= 1
endwhile
let line = line('.') + 1
let last = line('$')
while line <= last
for found in s:get_identifiers(getline(line))
if ident ==# found
call s:jump_to_identifier_at(line, ident)
return
endif
endfor
let line += 1
endwhile
echom "No definition for '" . ident . "' found"
endfunction
if !g:llvm_ext_no_mapping
nnoremap <buffer><silent>K :<C-u>call <SID>goto_definition()<CR>
endif
function! s:run_lli(...) abort
if !has('job') || !has('channel') || !has('terminal')
echohl ErrorMsg
echomsg ':LLI requires terminal feature. Please update your Vim to 8.0+'
echohl None
return
endif
if !executable(g:llvm_ext_lli_executable)
echohl ErrorMsg
echomsg g:llvm_ext_lli_executable . ' is not executable. Please set g:llvm_ext_lli_executable'
echohl None
return
endif
if a:0 > 0
let bufnr = term_start([g:llvm_ext_lli_executable, a:1])
echo 'Run lli in termnal buffer(' . bufnr . ')'
return
endif
let tmpfile = tempname()
call writefile(getline(1, '$'), tmpfile)
let Cleanup = {ch -> filereadable(tmpfile) ? delete(tmpfile) : 0}
let bufnr = term_start([g:llvm_ext_lli_executable, tmpfile], {'close_cb': Cleanup, 'exit_cb': Cleanup})
echo 'Run lli in termnal buffer(' . bufnr . ')'
endfunction
if !exists(':LLI')
command! -buffer -nargs=? -bar -complete=file LLI call <SID>run_lli(<f-args>)
endif
endif

View File

@@ -1,20 +1,9 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'puppet') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
finish
endif
if !exists('g:puppet_align_hashes') if !exists('g:puppet_align_hashes')
let g:puppet_align_hashes = 1 let g:puppet_align_hashes = 1
endif endif
if g:puppet_align_hashes && exists(':Tabularize') if g:puppet_align_hashes
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>a inoremap <buffer> <silent> => =><Esc>:call puppet#align#AlignHashrockets()<CR>$a
function! s:puppetalign() endif
let p = '^\s*\w+\s*[=+]>.*$'
let column = strlen(substitute(getline('.')[0:col('.')],'\([^=]\|=[^>]\)','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=>\s*\zs.*'))
Tabularize /=>/l1
normal! 0
echo repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position)
call search(repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
endfunction
endif endif

View File

@@ -1,85 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'terraform') != -1
finish
endif
if !exists('g:terraform_align')
let g:terraform_align = 0
endif
if !exists('g:terraform_remap_spacebar')
let g:terraform_remap_spacebar = 0
endif
if !exists('g:terraform_fold_sections')
let g:terraform_fold_sections = 0
endif
if g:terraform_align && exists(':Tabularize')
inoremap <buffer> <silent> = =<Esc>:call <SID>terraformalign()<CR>a
function! s:terraformalign()
let p = '^.*=[^>]*$'
if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*'))
Tabularize/=/l1
normal! 0
call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
endif
endfunction
endif
if g:terraform_fold_sections
function! TerraformFolds()
let thisline = getline(v:lnum)
if match(thisline, '^resource') >= 0
return ">1"
elseif match(thisline, '^provider') >= 0
return ">1"
elseif match(thisline, '^module') >= 0
return ">1"
elseif match(thisline, '^variable') >= 0
return ">1"
elseif match(thisline, '^output') >= 0
return ">1"
elseif match(thisline, '^data') >= 0
return ">1"
elseif match(thisline, '^terraform') >= 0
return ">1"
elseif match(thisline, '^locals') >= 0
return ">1"
else
return "="
endif
endfunction
setlocal foldmethod=expr
setlocal foldexpr=TerraformFolds()
setlocal foldlevel=1
function! TerraformFoldText()
let foldsize = (v:foldend-v:foldstart)
return getline(v:foldstart).' ('.foldsize.' lines)'
endfunction
setlocal foldtext=TerraformFoldText()
endif
" Re-map the space bar to fold and unfold
if get(g:, "terraform_remap_spacebar", 1)
"inoremap <space> <C-O>za
nnoremap <space> za
onoremap <space> <C-C>za
vnoremap <space> zf
endif
" Match the identation put in place by Hashicorp and :TerraformFmt, https://github.com/hashivim/vim-terraform/issues/21
if get(g:, "terraform_align", 1)
setlocal tabstop=2
setlocal softtabstop=2
setlocal shiftwidth=2
endif
" Set the commentstring
if exists('g:terraform_commentstring')
let &l:commentstring=g:terraform_commentstring
else
setlocal commentstring=#%s
endif

View File

@@ -0,0 +1,25 @@
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 exists("loaded_matchit")
let b:match_ignorecase = 0
let b:match_words = '(:),\[:\],{:},<:>,' .
\ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
endif
" For andymass/vim-matchup plugin
if exists("loaded_matchup")
setlocal matchpairs=(:),{:},[:],<:>
let b:match_words = '<\@<=\([^/][^ \t>]*\)\g{hlend}[^>]*\%(/\@<!>\|$\):<\@<=/\1>'
let b:match_skip = 's:comment\|string'
endif
let b:original_commentstring = &l:commentstring
augroup jsx_comment
autocmd! CursorMoved <buffer>
autocmd CursorMoved <buffer> call jsx_pretty#comment#update_commentstring(b:original_commentstring)
augroup end
setlocal suffixesadd+=.tsx
endif

View File

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

View File

@@ -1,37 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'coffee-script') != -1
finish
endif
" Language: CoffeeScript
" Maintainer: Mick Koch <mick@kochm.co>
" URL: http://github.com/kchmck/vim-coffee-script
" License: WTFPL
" Load the coffee and html indent functions.
silent! unlet b:did_indent
runtime indent/coffee.vim
let s:coffeeIndentExpr = &l:indentexpr
" Load html last so it can overwrite coffee settings.
silent! unlet b:did_indent
runtime indent/html.vim
let s:htmlIndentExpr = &l:indentexpr
" Inject our wrapper indent function.
setlocal indentexpr=GetCoffeeHtmlIndent(v:lnum)
function! GetCoffeeHtmlIndent(curlinenum)
" See if we're inside a coffeescript block.
let scriptlnum = searchpair('<script [^>]*type=[''"]\?text/coffeescript[''"]\?[^>]*>', '',
\ '</script>', 'bWn')
let prevlnum = prevnonblank(a:curlinenum)
" If we're in the script block and the previous line isn't the script tag
" itself, use coffee indenting.
if scriptlnum && scriptlnum != prevlnum
exec 'return ' s:coffeeIndentExpr
endif
" Otherwise use html indenting.
exec 'return ' s:htmlIndentExpr
endfunction

View File

@@ -0,0 +1,31 @@
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
"
" Language: javascript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if exists('b:did_indent')
let s:did_indent = b:did_indent
unlet b:did_indent
endif
let s:keepcpo = &cpo
set cpo&vim
if exists('s:did_indent')
let b:did_indent = s:did_indent
endif
setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e,*<Return>,<>>,<<>,/
function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetJavascriptIndent'))
endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
endif

View File

@@ -1,118 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim indent file
"
" Language: JSX (JavaScript)
" Maintainer: Max Wang <mxawng@gmail.com>
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Save the current JavaScript indentexpr.
let b:jsx_js_indentexpr = &indentexpr
" Prologue; load in XML indentation.
if exists('b:did_indent')
let s:did_indent=b:did_indent
unlet b:did_indent
endif
exe 'runtime! indent/xml.vim'
if exists('s:did_indent')
let b:did_indent=s:did_indent
endif
setlocal indentexpr=GetJsxIndent()
" JS indentkeys
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
" XML indentkeys
setlocal indentkeys+=*<Return>,<>>,<<>,/
" Multiline end tag regex (line beginning with '>' or '/>')
let s:endtag = '^\s*\/\?>\s*;\='
" Get all syntax types at the beginning of a given line.
fu! SynSOL(lnum)
return map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
endfu
" Get all syntax types at the end of a given line.
fu! SynEOL(lnum)
let lnum = prevnonblank(a:lnum)
let col = strlen(getline(lnum))
return map(synstack(lnum, col), 'synIDattr(v:val, "name")')
endfu
" Check if a syntax attribute is XMLish.
fu! SynAttrXMLish(synattr)
return a:synattr =~ "^xml" || a:synattr =~ "^jsx"
endfu
" Check if a synstack is XMLish (i.e., has an XMLish last attribute).
fu! SynXMLish(syns)
return SynAttrXMLish(get(a:syns, -1))
endfu
" Check if a synstack denotes the end of a JSX block.
fu! SynJSXBlockEnd(syns)
return get(a:syns, -1) =~ '\%(js\|javascript\)Braces' &&
\ SynAttrXMLish(get(a:syns, -2))
endfu
" Determine how many jsxRegions deep a synstack is.
fu! SynJSXDepth(syns)
return len(filter(copy(a:syns), 'v:val ==# "jsxRegion"'))
endfu
" Check whether `cursyn' continues the same jsxRegion as `prevsyn'.
fu! SynJSXContinues(cursyn, prevsyn)
let curdepth = SynJSXDepth(a:cursyn)
let prevdepth = SynJSXDepth(a:prevsyn)
" In most places, we expect the nesting depths to be the same between any
" two consecutive positions within a jsxRegion (e.g., between a parent and
" child node, between two JSX attributes, etc.). The exception is between
" sibling nodes, where after a completed element (with depth N), we return
" to the parent's nesting (depth N - 1). This case is easily detected,
" since it is the only time when the top syntax element in the synstack is
" jsxRegion---specifically, the jsxRegion corresponding to the parent.
return prevdepth == curdepth ||
\ (prevdepth == curdepth + 1 && get(a:cursyn, -1) ==# 'jsxRegion')
endfu
" Cleverly mix JS and XML indentation.
fu! GetJsxIndent()
let cursyn = SynSOL(v:lnum)
let prevsyn = SynEOL(v:lnum - 1)
" Use XML indenting iff:
" - the syntax at the end of the previous line was either JSX or was the
" closing brace of a jsBlock whose parent syntax was JSX; and
" - the current line continues the same jsxRegion as the previous line.
if (SynXMLish(prevsyn) || SynJSXBlockEnd(prevsyn)) &&
\ SynJSXContinues(cursyn, prevsyn)
let ind = XmlIndentGet(v:lnum, 0)
" Align '/>' and '>' with '<' for multiline tags.
if getline(v:lnum) =~? s:endtag
let ind = ind - &sw
endif
" Then correct the indentation of any JSX following '/>' or '>'.
if getline(v:lnum - 1) =~? s:endtag
let ind = ind + &sw
endif
else
if len(b:jsx_js_indentexpr)
" Invoke the base JS package's custom indenter. (For vim-javascript,
" e.g., this will be GetJavascriptIndent().)
let ind = eval(b:jsx_js_indentexpr)
else
let ind = cindent(v:lnum)
endif
endif
return ind
endfu

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'objc') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1
finish
endif
" Vim indent file " Vim indent file
" Language: Objective-C " Language: Objective-C
" Maintainer: Bjorn Winckler <bjorn.winckler@gmail.com> " Maintainer: Bjorn Winckler <bjorn.winckler@gmail.com>
@@ -95,3 +92,4 @@ endfunction
" Restore 'cpo' options " Restore 'cpo' options
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
endif

View File

@@ -0,0 +1,32 @@
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
"
" Language: typescript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if exists('b:did_indent')
let s:did_indent = b:did_indent
unlet b:did_indent
endif
let s:keepcpo = &cpo
set cpo&vim
if exists('s:did_indent')
let b:did_indent = s:did_indent
endif
setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e,*<Return>,<>>,<<>,/
function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetTypescriptIndent'))
endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'c++11') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
finish
endif
" Vim syntax file " Vim syntax file
" Language: C Additions " Language: C Additions
" Maintainer: Jon Haggblad <jon@haeggblad.com> " Maintainer: Jon Haggblad <jon@haeggblad.com>
@@ -306,3 +303,4 @@ hi def link cBoolean Boolean
"hi def link cDelimiter Delimiter "hi def link cDelimiter Delimiter
" foldmethod=syntax fix, courtesy of Ivan Freitas " foldmethod=syntax fix, courtesy of Ivan Freitas
"hi def link cBraces Delimiter "hi def link cBraces Delimiter
endif

View File

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

View File

@@ -1,12 +1,9 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'c++11') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
finish
endif
" Vim syntax file " Vim syntax file
" Language: C++ Additions " Language: C++ Additions
" Maintainer: Jon Haggblad <jon@haeggblad.com> " Maintainer: Jon Haggblad <jon@haeggblad.com>
" URL: http://www.haeggblad.com " URL: http://www.haeggblad.com
" Last Change: 1 Feb 2018 " Last Change: 29 Jun 2019
" Version: 0.6 " Version: 0.6
" Changelog: " Changelog:
" 0.1 - initial version. " 0.1 - initial version.
@@ -964,6 +961,12 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype atomic_uintmax_t syntax keyword cppSTLtype atomic_uintmax_t
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
syntax keyword cppSTLenum memory_order syntax keyword cppSTLenum memory_order
syntax keyword cppSTLtype memory_order_relaxed
syntax keyword cppSTLtype memory_order_consume
syntax keyword cppSTLtype memory_order_acquire
syntax keyword cppSTLtype memory_order_release
syntax keyword cppSTLtype memory_order_acq_rel
syntax keyword cppSTLtype memory_order_seq_cst
syntax keyword cppSTLfunction is_lock_free syntax keyword cppSTLfunction is_lock_free
syntax keyword cppSTLfunction compare_exchange_weak syntax keyword cppSTLfunction compare_exchange_weak
syntax keyword cppSTLfunction compare_exchange_strong syntax keyword cppSTLfunction compare_exchange_strong
@@ -1983,6 +1986,9 @@ endif " C++17
if !exists("cpp_no_cpp20") if !exists("cpp_no_cpp20")
" type_traits " type_traits
syntax keyword cppSTLtype remove_cvref remove_cvref_t 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
endif endif
@@ -2094,3 +2100,4 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
HiLink cppRawDelimiter Delimiter HiLink cppRawDelimiter Delimiter
delcommand HiLink delcommand HiLink
endif endif
endif

View File

@@ -1,27 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'coffee-script') != -1
finish
endif
" Language: CoffeeScript
" Maintainer: Sven Felix Oberquelle <Svelix.Github@gmail.com>
" URL: http://github.com/kchmck/vim-coffee-script
" License: WTFPL
if exists('b:current_syntax')
let s:current_syntax_save = b:current_syntax
endif
" Inherit coffee from html so coffeeComment isn't redefined and given higher
" priority than hamlInterpolation.
syn cluster hamlCoffeescript contains=@htmlCoffeeScript
syn region hamlCoffeescriptFilter matchgroup=hamlFilter
\ start="^\z(\s*\):coffee\z(script\)\?\s*$"
\ end="^\%(\z1 \| *$\)\@!"
\ contains=@hamlCoffeeScript,hamlInterpolation
\ keepend
if exists('s:current_syntax_save')
let b:current_syntax = s:current_syntax_save
unlet s:current_syntax_save
endif

15
after/syntax/haskell.vim Normal file
View File

@@ -0,0 +1,15 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dhall') == -1
" store and remove current syntax value
let old_syntax = b:current_syntax
unlet b:current_syntax
syn include @dhall syntax/dhall.vim
unlet b:current_syntax
syn region dhallBlock matchgroup=quasiQuote start=/\[\$\?staticDhallExpression|/ end=/|\]/ contains=@dhall
hi def link quasiQuote Underlined
" restore current syntax value
let b:current_syntax = old_syntax
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'scala') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1
finish
endif
" Extends standard help syntax with highlighting of Scala code. " Extends standard help syntax with highlighting of Scala code.
" "
" Place code between !sc! and !/sc! delimiters. These will be hidden if Vim is " Place code between !sc! and !/sc! delimiters. These will be hidden if Vim is
@@ -16,3 +13,4 @@ if has('conceal')
else else
syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode
endif endif
endif

View File

@@ -1,44 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'coffee-script') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
finish
endif
" Language: CoffeeScript
" Maintainer: Mick Koch <mick@kochm.co>
" URL: http://github.com/kchmck/vim-coffee-script
" License: WTFPL
if exists('b:current_syntax')
let s:current_syntax_save = b:current_syntax
endif
" Syntax highlighting for text/coffeescript script tags
syn include @htmlCoffeeScript syntax/coffee.vim
syn region coffeeScript start=#<script [^>]*type=['"]\?text/coffeescript['"]\?[^>]*>#
\ end=#</script>#me=s-1 keepend
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
\ containedin=htmlHead
if exists('s:current_syntax_save')
let b:current_syntax = s:current_syntax_save
unlet s:current_syntax_save
endif
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'glsl') != -1
finish
endif
" Language: OpenGL Shading Language
" Maintainer: Sergey Tikhomirov <sergey@tikhomirov.io>
syn include @GLSL syntax/glsl.vim
syn region ShaderScript
\ start="<script [^>]*type=\('\|\"\)x-shader/x-\(vertex\|fragment\)\('\|\"\)[^>]*>"
\ keepend
\ end="</script>"me=s-1
\ contains=@GLSL,htmlScriptTag,@htmlPreproc
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1
finish
endif
" Vim syntax file " Vim syntax file
" Language: HTML (version 5.1) " Language: HTML (version 5.1)
" Last Change: 2017 Feb 15 " Last Change: 2017 Feb 15
@@ -51,33 +11,4 @@ endif
" https://github.com/w3c/html/issues/694 " https://github.com/w3c/html/issues/694
syntax region htmlComment start=+<!--+ end=+-->+ contains=@Spell syntax region htmlComment start=+<!--+ end=+-->+ contains=@Spell
syntax region htmlComment start=+<!DOCTYPE+ keepend end=+>+ syntax region htmlComment start=+<!DOCTYPE+ keepend end=+>+
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'less') != -1
finish
endif
if !exists("g:less_html_style_tags")
let g:less_html_style_tags = 1
endif
if !g:less_html_style_tags
finish
endif
" Unset (but preserve) so that less will run.
if exists("b:current_syntax")
let s:pre_less_cur_syn = b:current_syntax
unlet b:current_syntax
endif
" Inspired by code from github.com/kchmck/vim-coffee-script
" and the html syntax file included with vim 7.4.
syn include @htmlLess syntax/less.vim
" We have to explicitly add to htmlHead (containedin) as that region specifies 'contains'.
syn region lessStyle start=+<style [^>]*type *=[^>]*text/less[^>]*>+ keepend end=+</style>+ contains=@htmlLess,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc containedin=htmlHead
" Reset since 'less' isn't really the current_syntax.
if exists("s:pre_less_cur_syn")
let b:current_syntax = s:pre_less_cur_syn
endif endif

View File

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

View File

@@ -0,0 +1,60 @@
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>
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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
if hlexists("jsNoise") " 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
" add a javaScriptBlock group for build-in syntax
syntax region javaScriptBlockBuildIn
\ contained
\ matchgroup=javaScriptBraces
\ start="{"
\ end="}"
\ extend
\ contains=javaScriptBlockBuildIn,@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.*
endif
runtime syntax/jsx_pretty.vim
let b:current_syntax = 'javascript.jsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'graphql') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
finish
endif
if exists('b:current_syntax') if exists('b:current_syntax')
let s:current_syntax = b:current_syntax let s:current_syntax = b:current_syntax
unlet b:current_syntax unlet b:current_syntax
@@ -11,7 +8,7 @@ if exists('s:current_syntax')
let b:current_syntax = s:current_syntax let b:current_syntax = s:current_syntax
endif endif
let s:tags = '\%(' . join(g:graphql_javascript_tags, '\|') . '\)' let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)'
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend' exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
@@ -25,3 +22,4 @@ hi def link graphqlTemplateExpression jsTemplateExpression
syn cluster jsExpression add=graphqlTaggedTemplate syn cluster jsExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

@@ -1,83 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: JSX (JavaScript)
" Maintainer: Max Wang <mxawng@gmail.com>
" Depends: pangloss/vim-javascript
"
" CREDITS: Inspired by Facebook.
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Prologue; load in XML syntax.
if exists('b:current_syntax')
let s:current_syntax=b:current_syntax
unlet b:current_syntax
endif
syn include @XMLSyntax syntax/xml.vim
if exists('s:current_syntax')
let b:current_syntax=s:current_syntax
endif
" Officially, vim-jsx depends on the pangloss/vim-javascript syntax package
" (and is tested against it exclusively). However, in practice, we make some
" effort towards compatibility with other packages.
"
" These are the plugin-to-syntax-element correspondences:
"
" - pangloss/vim-javascript: jsBlock, jsExpression
" - jelera/vim-javascript-syntax: javascriptBlock
" - othree/yajs.vim: javascriptNoReserved
" JSX attributes should color as JS. Note the trivial end pattern; we let
" jsBlock take care of ending the region.
syn region xmlString contained start=+{+ end=++ contains=jsBlock,javascriptBlock
" JSX comments inside XML tag should color as comment. Note the trivial end pattern; we let
" jsComment take care of ending the region.
syn region xmlString contained start=+//+ end=++ contains=jsComment
" JSX child blocks behave just like JSX attributes, except that (a) they are
" syntactically distinct, and (b) they need the syn-extend argument, or else
" nested XML end-tag patterns may end the outer jsxRegion.
syn region jsxChild contained start=+{+ end=++ contains=jsBlock,javascriptBlock
\ extend
" Highlight JSX regions as XML; recursively match.
"
" Note that we prohibit JSX tags from having a < or word character immediately
" preceding it, to avoid conflicts with, respectively, the left shift operator
" and generic Flow type annotations (http://flowtype.org/).
syn region jsxRegion
\ contains=@Spell,@XMLSyntax,jsxRegion,jsxChild,jsBlock,javascriptBlock
\ start=+\%(<\|\w\)\@<!<\z([a-zA-Z_][a-zA-Z0-9:\-.]*\>[:,]\@!\)\([^>]*>(\)\@!+
\ skip=+<!--\_.\{-}-->+
\ end=+</\z1\_\s\{-}>+
\ end=+/>+
\ keepend
\ extend
" Shorthand fragment support
"
" Note that since the main jsxRegion contains @XMLSyntax, we cannot simply
" adjust the regex above since @XMLSyntax will highlight the opening `<` as an
" XMLError. Instead we create a new group with the same name that does not
" include @XMLSyntax and instead uses matchgroup to get the same highlighting.
syn region jsxRegion
\ contains=@Spell,jsxRegion,jsxChild,jsBlock,javascriptBlock
\ matchgroup=xmlTag
\ start=/<>/
\ end=/<\/>/
\ keepend
\ extend
" Add jsxRegion to the lowest-level JS syntax cluster.
syn cluster jsExpression add=jsxRegion
" Allow jsxRegion to contain reserved words.
syn cluster javascriptNoReserved add=jsxRegion

214
after/syntax/jsx_pretty.vim Normal file
View File

@@ -0,0 +1,214 @@
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)
" <tag id="sample">
" ~~~~~~~~~~~~~~~~~
" and self close tag
" <tag id="sample" />
" ~~~~~~~~~~~~~~~~~~~
syntax region jsxTag
\ start=+<+
\ matchgroup=jsxOpenPunct
\ end=+>+
\ matchgroup=NONE
\ end=+\(/\_s*>\)\@=+
\ contained
\ contains=jsxOpenTag,jsxEscapeJs,jsxAttrib,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment,jsxSpreadOperator
\ keepend
\ extend
" <tag></tag>
" ~~~~~~~~~~~
" and fragment
" <></>
" ~~~~~
" and self close tag
" <tag />
" ~~~~~~~
syntax region jsxElement
\ start=+<\_s*\(>\|\${\|\z(\<[-:_\.\$0-9A-Za-z]\+\>\)\)+
\ end=+/\_s*>+
\ end=+<\_s*/\_s*\z1\_s*>+
\ contains=jsxElement,jsxEscapeJs,jsxTag,jsxComment,jsxCloseString,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
" <>
" ~~
exe 'syntax region jsxOpenTag
\ matchgroup=jsxOpenPunct
\ start=+<+
\ end=+>+
\ matchgroup=NONE
\ end=+\>+
\ contained
\ contains=jsxTagName
\ nextgroup=jsxAttrib
\ skipwhite
\ skipempty ' .(s:highlight_close_tag ? 'transparent' : '')
" <foo.bar>
" ~
syntax match jsxDot +\.+ contained display
" <foo:bar>
" ~
syntax match jsxNamespace +:+ contained display
" <tag id="sample">
" ~
syntax match jsxEqual +=+ contained display nextgroup=jsxString,jsxEscapeJs,jsxRegion skipwhite
" <tag />
" ~~
syntax match jsxCloseString +/\_s*>+ contained
" </tag>
" ~~~~~~
" and fragment close tag
" </>
" ~~~
syntax region jsxCloseTag
\ matchgroup=jsxClosePunct
\ start=+<\_s*/+
\ end=+>+
\ contained
\ contains=jsxTagName
" <tag key={this.props.key}>
" ~~~
syntax match jsxAttrib
\ +\<[-A-Za-z_][-:_\$0-9A-Za-z]*\>+
\ contained
\ nextgroup=jsxEqual
\ skipwhite
\ skipempty
\ contains=jsxAttribKeyword
\ display
" <MyComponent ...>
" ~~~~~~~~~~~
" NOT
" <someCamel ...>
" ~~~~~
exe 'syntax match jsxComponentName
\ +\<[A-Z][\$0-9A-Za-z]\+\>+
\ contained
\ display ' .(s:highlight_close_tag ? 'transparent' : '')
" <tag key={this.props.key}>
" ~~~
exe 'syntax match jsxTagName
\ +\<[-:_\.\$0-9A-Za-z]\+\>+
\ contained
\ contains=jsxComponentName,jsxDot,jsxNamespace
\ nextgroup=jsxAttrib
\ skipempty
\ skipwhite
\ display ' .(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
let s:tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'raw'])
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'
syntax region jsxEscapeJs
\ start=+\${+
\ end=++
\ extend
\ contained
\ contains=jsTemplateExpression,javascriptTemplateSubstitution,javaScriptEmbed,typescriptInterpolation
syntax region jsxOpenTag
\ matchgroup=jsxOpenPunct
\ start=+<\%(\${\)\@=+
\ matchgroup=NONE
\ end=++
\ contained
\ contains=jsxEscapeJs
\ nextgroup=jsxAttrib,jsxSpreadOperator
\ skipwhite
\ skipempty
syntax keyword jsxAttribKeyword class contained display
syntax match jsxSpreadOperator +\.\.\.+ contained display nextgroup=jsxEscapeJs skipwhite
syntax match jsxCloseTag +<//>+ display
syntax match jsxComment +<!--\_.\{-}-->+ display
endif
" Highlight the tag name
highlight def link jsxTag Function
highlight def link jsxTagName Identifier
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 jsxDot Operator
highlight def link jsxNamespace Operator
if s:highlight_close_tag
highlight def link jsxCloseString Identifier
highlight def link jsxOpenPunct jsxTag
else
" Highlight the jsxCloseString (i.e. />), jsxPunct (i.e. <,>) and jsxCloseTag (i.e. <//>)
highlight def link jsxCloseString Comment
highlight def link jsxOpenPunct jsxPunct
endif
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
highlight def link jsObjectKey Label
highlight def link jsArrowFuncArgs Type
highlight def link jsFuncArgs Type
endif
endif

24
after/syntax/llvm.vim Normal file
View File

@@ -0,0 +1,24 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'llvm') == -1
" Copyright (c) 2018 rhysd
"
" 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.
syn keyword llvmKeyword attributes
syn match llvmNoName /#\d\+\>/
endif

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'objc') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1
finish
endif
" ARC type modifiers " ARC type modifiers
syn keyword objcTypeModifier __bridge __bridge_retained __bridge_transfer __autoreleasing __strong __weak __unsafe_unretained syn keyword objcTypeModifier __bridge __bridge_retained __bridge_transfer __autoreleasing __strong __weak __unsafe_unretained
@@ -21,3 +18,4 @@ syn match objcDirective "@property\|@synthesize\|@dynamic\|@package"
" Highlight property attributes as if they were type modifiers " Highlight property attributes as if they were type modifiers
hi def link objcPropertyAttribute objcTypeModifier hi def link objcPropertyAttribute objcTypeModifier
endif

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rspec') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
finish
endif
" "
" An rspec syntax file " An rspec syntax file
" Originally from http://www.vim.org/scripts/script.php?script_id=2286 " Originally from http://www.vim.org/scripts/script.php?script_id=2286
@@ -34,3 +31,4 @@ syntax keyword rspecMessageExpectation advise any_args any_number_of_times anyth
highlight link rspecMessageExpectation Function highlight link rspecMessageExpectation Function
let b:current_syntax = 'rspec' let b:current_syntax = 'rspec'
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'yard') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yard') == -1
finish
endif
" Ruby syntax extensions for highlighting YARD documentation. " Ruby syntax extensions for highlighting YARD documentation.
" "
" Author: Joel Holdbrooks <https://github.com/noprompt> " Author: Joel Holdbrooks <https://github.com/noprompt>
@@ -128,3 +125,4 @@ hi def link yardParametricType yardComment
hi def link yardArrow yardComment hi def link yardArrow yardComment
hi def link yardHashAngle yardComment hi def link yardHashAngle yardComment
hi def link yardHashCurly yardComment hi def link yardHashCurly yardComment
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
scriptencoding utf-8 scriptencoding utf-8
if !get(g:, 'rust_conceal', 0) || !has('conceal') || &encoding !=# 'utf-8' if !get(g:, 'rust_conceal', 0) || !has('conceal') || &encoding !=# 'utf-8'
@@ -43,3 +40,4 @@ if !get(g:, 'rust_conceal_mod_path', 0)
endif endif
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

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

View File

@@ -0,0 +1,48 @@
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
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'graphql') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
finish
endif
if exists('b:current_syntax') if exists('b:current_syntax')
let s:current_syntax = b:current_syntax let s:current_syntax = b:current_syntax
unlet b:current_syntax unlet b:current_syntax
@@ -11,7 +8,7 @@ if exists('s:current_syntax')
let b:current_syntax = s:current_syntax let b:current_syntax = s:current_syntax
endif endif
let s:tags = '\%(' . join(g:graphql_javascript_tags, '\|') . '\)' let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)'
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateSubstitution extend' exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateSubstitution extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
@@ -24,3 +21,4 @@ hi def link graphqlTemplateExpression typescriptTemplateSubstitution
syn cluster typescriptExpression add=graphqlTaggedTemplate syn cluster typescriptExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'yaml') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yaml') == -1
finish
endif
" To make this file do stuff, add something like the following (without the " To make this file do stuff, add something like the following (without the
" leading ") to your ~/.vimrc: " leading ") to your ~/.vimrc:
" au BufNewFile,BufRead *.yaml,*.yml so ~/src/PyYaml/YAML.vim " au BufNewFile,BufRead *.yaml,*.yml so ~/src/PyYaml/YAML.vim
@@ -63,3 +60,4 @@ hi link yamlInline Operator
hi link yamlBlock Operator hi link yamlBlock Operator
hi link yamlString String hi link yamlString String
hi link yamlEscape Special hi link yamlEscape Special
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Support for LaTex-to-Unicode conversion as in the Julia REPL " " Support for LaTex-to-Unicode conversion as in the Julia REPL "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -652,3 +649,4 @@ function! LaTeXtoUnicode#Toggle()
endif endif
return return
endfunction endfunction
endif

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
function! cargo#Load() function! cargo#Load()
" Utility call to get this script loaded, for debugging " Utility call to get this script loaded, for debugging
endfunction endfunction
@@ -117,3 +114,4 @@ function! cargo#runtarget(args)
endfunction endfunction
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
function! cargo#quickfix#CmdPre() abort function! cargo#quickfix#CmdPre() abort
if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# 'cargo' if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# 'cargo'
" Preserve the current directory, and 'lcd' to the nearest Cargo file. " Preserve the current directory, and 'lcd' to the nearest Cargo file.
@@ -28,3 +25,4 @@ function! cargo#quickfix#CmdPost() abort
endfunction endfunction
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'clojure') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1
finish
endif
" Vim completion script " Vim completion script
" Language: Clojure " Language: Clojure
" Maintainer: Sung Pae <self@sungpae.com> " Maintainer: Sung Pae <self@sungpae.com>
@@ -24,3 +21,4 @@ function! clojurecomplete#Complete(findstart, base)
endfunction endfunction
" vim:sts=8:sw=8:ts=8:noet " vim:sts=8:sw=8:ts=8:noet
endif

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
@@ -37,21 +34,45 @@ function! s:run_cmd(cmd) abort
return s:P.system(a:cmd) return s:P.system(a:cmd)
endfunction endfunction
function! s:find_root_by_spec(d) abort function! s:find_root_by(search_dir, d) abort
let dir = finddir('spec', a:d . ';') let found_dir = finddir(a:search_dir, a:d . ';')
if dir ==# '' if found_dir ==# ''
return '' return ''
endif endif
" Note: ':h:h' for {root}/spec/ -> {root}/spec -> {root} " Note: ':h:h' for {root}/{search_dir}/ -> {root}/{search_dir} -> {root}
return fnamemodify(dir, ':p:h:h') return fnamemodify(found_dir, ':p:h:h')
endfunction
" Search the root directory containing a 'spec/' and a 'src/' directories.
"
" Searching for the 'spec/' directory is not enough: for example the crystal
" 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 '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 ''
endfunction endfunction
function! crystal_lang#entrypoint_for(file_path) abort function! crystal_lang#entrypoint_for(file_path) abort
let parent_dir = fnamemodify(a:file_path, ':p:h') let parent_dir = fnamemodify(a:file_path, ':p:h')
let root_dir = s:find_root_by_spec(parent_dir) let root_dir = s:find_root_by_spec_and_src(parent_dir)
if root_dir ==# '' if root_dir ==# ''
" No spec diretory found. No need to make temporary file " No spec directory found. No need to make temporary file
return a:file_path return a:file_path
endif endif
@@ -232,7 +253,7 @@ endfunction
function! crystal_lang#run_all_spec(...) abort function! crystal_lang#run_all_spec(...) abort
let path = a:0 == 0 ? expand('%:p:h') : a:1 let path = a:0 == 0 ? expand('%:p:h') : a:1
let root_path = s:find_root_by_spec(path) let root_path = s:find_root_by_spec_and_src(path)
if root_path ==# '' if root_path ==# ''
return s:echo_error("'spec' directory is not found") return s:echo_error("'spec' directory is not found")
endif endif
@@ -250,9 +271,9 @@ function! crystal_lang#run_current_spec(...) abort
let source_dir = fnamemodify(path, ':h') let source_dir = fnamemodify(path, ':h')
" /foo/bar " /foo/bar
let root_dir = s:find_root_by_spec(source_dir) let root_dir = s:find_root_by_spec_and_src(source_dir)
if root_dir ==# '' if root_dir ==# ''
return s:echo_error("'spec' directory is not found") return s:echo_error("Root directory with 'src/' and 'spec/' not found")
endif endif
" src " src
@@ -318,3 +339,4 @@ endfunction
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
endif

3189
autoload/csv.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'dart') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
finish
endif
function! s:error(text) abort function! s:error(text) abort
echohl Error echohl Error
@@ -9,22 +6,35 @@ function! s:error(text) abort
echohl None echohl None
endfunction endfunction
function! s:cexpr(errorformat, joined_lines) abort function! s:cexpr(errorformat, lines, reason) abort
let temp_errorfomat = &errorformat call setqflist([], ' ', {
try \ 'lines': a:lines,
let &errorformat = a:errorformat \ 'efm': a:errorformat,
cexpr a:joined_lines \ 'context': {'reason': a:reason},
copen \})
finally copen
let &errorformat = temp_errorfomat endfunction
endtry
" If the quickfix list has a context matching [reason], clear and close it.
function! s:clearQfList(reason) abort
let context = get(getqflist({'context': 1}), 'context', {})
if type(context) == v:t_dict &&
\ has_key(context, 'reason') &&
\ context.reason == a:reason
call setqflist([], 'r')
cclose
endif
endfunction endfunction
function! dart#fmt(q_args) abort function! dart#fmt(q_args) abort
if executable('dartfmt') if executable('dartfmt')
let buffer_content = join(getline(1, '$'), "\n") let buffer_content = join(getline(1, '$'), "\n")
let joined_lines = system(printf('dartfmt %s', a:q_args), buffer_content) let args = '--stdin-name '.expand('%').' '.a:q_args
if buffer_content ==# joined_lines[:-2] | return | endif 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 if 0 == v:shell_error
let win_view = winsaveview() let win_view = winsaveview()
let lines = split(joined_lines, "\n") let lines = split(joined_lines, "\n")
@@ -33,12 +43,11 @@ function! dart#fmt(q_args) abort
silent keepjumps execute string(len(lines)+1).',$ delete' silent keepjumps execute string(len(lines)+1).',$ delete'
endif endif
call winrestview(win_view) call winrestview(win_view)
call s:clearQfList('dartfmt')
else else
let errors = split(joined_lines, "\n")[2:] let errors = split(joined_lines, "\n")[2:]
let file_path = expand('%') let error_format = '%Aline %l\, column %c of %f: %m,%C%.%#'
call map(errors, 'file_path.":".v:val') call s:cexpr(error_format, errors, 'dartfmt')
let error_format = '%A%f:line %l\, column %c of stdin: %m,%C%.%#'
call s:cexpr(error_format, join(errors, "\n"))
endif endif
else else
call s:error('cannot execute binary file: dartfmt') call s:error('cannot execute binary file: dartfmt')
@@ -49,8 +58,9 @@ function! dart#analyzer(q_args) abort
if executable('dartanalyzer') if executable('dartanalyzer')
let path = expand('%:p:gs:\:/:') let path = expand('%:p:gs:\:/:')
if filereadable(path) if filereadable(path)
let joined_lines = system(printf('dartanalyzer %s %s', a:q_args, shellescape(path))) let command = printf('dartanalyzer %s %s', a:q_args, shellescape(path))
call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines) let lines = systemlist(command)
call s:cexpr('%m (%f\, line %l\, col %c)', lines, 'dartanalyzer')
else else
call s:error(printf('cannot read a file: "%s"', path)) call s:error(printf('cannot read a file: "%s"', path))
endif endif
@@ -63,8 +73,9 @@ function! dart#tojs(q_args) abort
if executable('dart2js') if executable('dart2js')
let path = expand('%:p:gs:\:/:') let path = expand('%:p:gs:\:/:')
if filereadable(path) if filereadable(path)
let joined_lines = system(printf('dart2js %s %s', a:q_args, shellescape(path))) let command = printf('dart2js %s %s', a:q_args, shellescape(path))
call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines) let lines = systemlist(command)
call s:cexpr('%m (%f\, line %l\, col %c)', lines, 'dart2js')
else else
call s:error(printf('cannot read a file: "%s"', path)) call s:error(printf('cannot read a file: "%s"', path))
endif endif
@@ -172,3 +183,4 @@ function! dart#setModifiable() abort
setlocal nomodifiable setlocal nomodifiable
endif endif
endfunction endfunction
endif

View File

@@ -0,0 +1,22 @@
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')])
function! s:repo_list() abort
return map(systemlist(s:cmd), 'split(v:val)')
endfunction
function! db#adapter#ecto#canonicalize(url) abort
for l:item in s:repo_list()
let l:name = get(l:item, 0)
let l:url = get(l:item, 1)
if !empty(l:name) && 'ecto:'.l:name ==# a:url
return l:url
endif
endfor
endfunction
function! db#adapter#ecto#complete_opaque(url) abort
return map(s:repo_list(), 'v:val[0]')
endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elixir') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
finish
endif
if !exists("g:elixir_indent_max_lookbehind") if !exists("g:elixir_indent_max_lookbehind")
let g:elixir_indent_max_lookbehind = 30 let g:elixir_indent_max_lookbehind = 30
endif endif
@@ -25,6 +22,7 @@ function! elixir#indent#indent(lnum)
let handlers = [ let handlers = [
\'top_of_file', \'top_of_file',
\'starts_with_string_continuation',
\'following_trailing_binary_operator', \'following_trailing_binary_operator',
\'starts_with_pipe', \'starts_with_pipe',
\'starts_with_binary_operator', \'starts_with_binary_operator',
@@ -35,9 +33,14 @@ function! elixir#indent#indent(lnum)
\] \]
for handler in handlers for handler in handlers
call s:debug('testing handler elixir#indent#handle_'.handler) call s:debug('testing handler elixir#indent#handle_'.handler)
let context = {'lnum': lnum, 'text': text, 'prev_nb_lnum': prev_nb_lnum, 'prev_nb_text': prev_nb_text} let context = {'lnum': lnum, 'text': text, 'first_nb_char_idx': match(text, '\w'), 'prev_nb_lnum': prev_nb_lnum, 'prev_nb_text': prev_nb_text}
let indent = function('elixir#indent#handle_'.handler)(context) let indent = function('elixir#indent#handle_'.handler)(context)
if indent != -1 if indent == -2
" Keep indent the same
call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned -2; returning indent of -1')
call cursor(curs_lnum, curs_col)
return -1
elseif indent != -1
call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent) call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent)
call cursor(curs_lnum, curs_col) call cursor(curs_lnum, curs_col)
return indent return indent
@@ -102,7 +105,11 @@ endfunction
" Returns 0 or 1 based on whether or not the given line number and column " Returns 0 or 1 based on whether or not the given line number and column
" number pair is a string or comment " number pair is a string or comment
function! s:is_string_or_comment(line, col) function! s:is_string_or_comment(line, col)
return synIDattr(synID(a:line, a:col, 1), "name") =~ '\%(String\|Comment\)' return s:syntax_name(a:line, a:col) =~ '\%(String\|Comment\)'
endfunction
function! s:syntax_name(line, col)
return synIDattr(synID(a:line, a:col, 1), "name")
endfunction endfunction
" Skip expression for searchpair. Returns 0 or 1 based on whether the value " Skip expression for searchpair. Returns 0 or 1 based on whether the value
@@ -158,6 +165,14 @@ function! elixir#indent#handle_top_of_file(context)
end end
endfunction endfunction
function! elixir#indent#handle_starts_with_string_continuation(context)
if s:syntax_name(a:context.lnum, a:context.first_nb_char_idx) =~ '\(String\|Comment\)$'
return -2
else
return -1
end
endfunction
function! elixir#indent#handle_follow_prev_nb(context) function! elixir#indent#handle_follow_prev_nb(context)
return s:get_base_indent(a:context.prev_nb_lnum, a:context.prev_nb_text) return s:get_base_indent(a:context.prev_nb_lnum, a:context.prev_nb_text)
endfunction endfunction
@@ -345,3 +360,4 @@ function! elixir#indent#handle_inside_generic_block(context)
return -1 return -1
endif endif
endfunction endfunction
endif

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elm') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
finish
endif
let s:errors = [] let s:errors = []
function! s:elmOracle(...) abort function! s:elmOracle(...) abort
@@ -383,3 +380,4 @@ function! s:ExecuteInRoot(cmd) abort
return l:out return l:out
endfunction endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'elm') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
finish
endif
" IsWin returns 1 if current OS is Windows or 0 otherwise " IsWin returns 1 if current OS is Windows or 0 otherwise
fun! elm#util#IsWin() abort fun! elm#util#IsWin() abort
let l:win = ['win16', 'win32', 'win32unix', 'win64', 'win95'] let l:win = ['win16', 'win32', 'win32unix', 'win64', 'win95']
@@ -136,7 +133,13 @@ function! elm#util#GoToModule(name)
endfunction endfunction
function! s:findLocalModule(rel_path, root) function! s:findLocalModule(rel_path, root)
let l:package_json = a:root . '/elm-package.json' 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') if exists('*json_decode')
let l:package = json_decode(readfile(l:package_json)) let l:package = json_decode(readfile(l:package_json))
let l:source_roots = l:package['source-directories'] let l:source_roots = l:package['source-directories']
@@ -176,3 +179,4 @@ function! s:error(msg)
echohl NONE echohl NONE
let v:errmsg = a:msg let v:errmsg = a:msg
endfunction endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'fish') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
finish
endif
function! fish#Indent() function! fish#Indent()
let l:shiftwidth = shiftwidth() let l:shiftwidth = shiftwidth()
let l:prevlnum = prevnonblank(v:lnum - 1) let l:prevlnum = prevnonblank(v:lnum - 1)
@@ -11,15 +8,15 @@ function! fish#Indent()
let l:indent = 0 let l:indent = 0
let l:prevline = getline(l:prevlnum) let l:prevline = getline(l:prevlnum)
if l:prevline =~# '\v^\s*switch>' if l:prevline =~# '\v^\s*switch>'
let l:indent = l:shiftwidth * 2 return indent(l:prevlnum) + l:shiftwidth
elseif l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case)>' elseif l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case)>'
let l:indent = l:shiftwidth let l:indent = l:shiftwidth
endif endif
let l:line = getline(v:lnum) let l:line = getline(v:lnum)
if l:line =~# '\v^\s*end>' if l:line =~# '\v^\s*end>'
return indent(v:lnum) - (l:indent ==# 0 ? l:shiftwidth : l:indent) return indent(l:prevlnum) - (l:indent ==# 0 ? l:shiftwidth : l:indent)
elseif l:line =~# '\v^\s*%(case|else)>' elseif l:line =~# '\v^\s*%(case|else)>'
return indent(v:lnum) - l:shiftwidth return indent(l:prevlnum) - l:shiftwidth
endif endif
return indent(l:prevlnum) + l:indent return indent(l:prevlnum) + l:indent
endfunction endfunction
@@ -69,3 +66,4 @@ endfunction
function! fish#errorformat() function! fish#errorformat()
return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s' return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s'
endfunction endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'go') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
finish
endif
" don't spam the user when Vim is started in Vi compatibility mode " don't spam the user when Vim is started in Vi compatibility mode
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo&vim set cpo&vim
@@ -25,10 +22,12 @@ endfunction
function! go#config#SetBuildTags(value) abort function! go#config#SetBuildTags(value) abort
if a:value is '' if a:value is ''
silent! unlet g:go_build_tags silent! unlet g:go_build_tags
call go#lsp#ResetWorkspaceDirectories()
return return
endif endif
let g:go_build_tags = a:value let g:go_build_tags = a:value
call go#lsp#ResetWorkspaceDirectories()
endfunction endfunction
function! go#config#TestTimeout() abort function! go#config#TestTimeout() abort
@@ -51,8 +50,16 @@ function! go#config#TermMode() abort
return get(g:, 'go_term_mode', 'vsplit') return get(g:, 'go_term_mode', 'vsplit')
endfunction endfunction
function! go#config#TermCloseOnExit() abort
return get(g:, 'go_term_close_on_exit', 1)
endfunction
function! go#config#SetTermCloseOnExit(value) abort
let g:go_term_close_on_exit = a:value
endfunction
function! go#config#TermEnabled() abort function! go#config#TermEnabled() abort
return get(g:, 'go_term_enabled', 0) return has('nvim') && get(g:, 'go_term_enabled', 0)
endfunction endfunction
function! go#config#SetTermEnabled(value) abort function! go#config#SetTermEnabled(value) abort
@@ -118,7 +125,7 @@ function! go#config#ListAutoclose() abort
endfunction endfunction
function! go#config#InfoMode() abort function! go#config#InfoMode() abort
return get(g:, 'go_info_mode', 'gocode') return get(g:, 'go_info_mode', 'gopls')
endfunction endfunction
function! go#config#GuruScope() abort function! go#config#GuruScope() abort
@@ -178,12 +185,15 @@ function! go#config#DocUrl() abort
return godoc_url return godoc_url
endfunction endfunction
function! go#config#DocPopupWindow() abort
return get(g:, 'go_doc_popup_window', 0)
endfunction
function! go#config#DefReuseBuffer() abort function! go#config#DefReuseBuffer() abort
return get(g:, 'go_def_reuse_buffer', 0) return get(g:, 'go_def_reuse_buffer', 0)
endfunction endfunction
function! go#config#DefMode() abort function! go#config#DefMode() abort
return get(g:, 'go_def_mode', 'guru') return get(g:, 'go_def_mode', 'gopls')
endfunction endfunction
function! go#config#DeclsIncludes() abort function! go#config#DeclsIncludes() abort
@@ -214,6 +224,16 @@ function! go#config#DebugCommands() abort
return g:go_debug_commands return g:go_debug_commands
endfunction endfunction
function! go#config#DebugLogOutput() abort
return get(g:, 'go_debug_log_output', 'debugger, rpc')
endfunction
function! go#config#LspLog() abort
" make sure g:go_lsp_log is set so that it can be added to easily.
let g:go_lsp_log = get(g:, 'go_lsp_log', [])
return g:go_lsp_log
endfunction
function! go#config#SetDebugDiag(value) abort function! go#config#SetDebugDiag(value) abort
let g:go_debug_diag = a:value let g:go_debug_diag = a:value
endfunction endfunction
@@ -239,19 +259,27 @@ function! go#config#SetTemplateAutocreate(value) abort
endfunction endfunction
function! go#config#MetalinterCommand() abort function! go#config#MetalinterCommand() abort
return get(g:, "go_metalinter_command", "") return get(g:, "go_metalinter_command", "gometalinter")
endfunction endfunction
function! go#config#MetalinterAutosaveEnabled() abort function! go#config#MetalinterAutosaveEnabled() abort
return get(g:, 'go_metalinter_autosave_enabled', ['vet', 'golint']) let l:default_enabled = ["vet", "golint"]
if go#config#MetalinterCommand() == "golangci-lint"
let l:default_enabled = ["govet", "golint"]
endif
return get(g:, "go_metalinter_autosave_enabled", default_enabled)
endfunction endfunction
function! go#config#MetalinterEnabled() abort function! go#config#MetalinterEnabled() abort
return get(g:, "go_metalinter_enabled", ['vet', 'golint', 'errcheck']) let l:default_enabled = ["vet", "golint", "errcheck"]
endfunction
function! go#config#MetalinterDisabled() abort if go#config#MetalinterCommand() == "golangci-lint"
return get(g:, "go_metalinter_disabled", []) let l:default_enabled = ["govet", "golint"]
endif
return get(g:, "go_metalinter_enabled", default_enabled)
endfunction endfunction
function! go#config#GolintBin() abort function! go#config#GolintBin() abort
@@ -448,6 +476,9 @@ function! go#config#EchoGoInfo() abort
return get(g:, "go_echo_go_info", 1) return get(g:, "go_echo_go_info", 1)
endfunction endfunction
function! go#config#CodeCompletionEnabled() abort
return get(g:, "go_code_completion_enabled", 1)
endfunction
" Set the default value. A value of "1" is a shortcut for this, for " Set the default value. A value of "1" is a shortcut for this, for
" compatibility reasons. " compatibility reasons.
@@ -460,3 +491,4 @@ let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save
" vim: sw=2 ts=2 et " vim: sw=2 ts=2 et
endif

14
autoload/graphql.vim Normal file
View File

@@ -0,0 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim plugin
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('g:autoloaded_graphql')
finish
endif
let g:autoloaded_graphql = 1
function! graphql#javascript_tags() abort
return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL'])
endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
finish
endif
" Vim completion script " Vim completion script
" Language: HTML and XHTML " Language: HTML and XHTML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
@@ -843,3 +840,4 @@ function! htmlcomplete#CheckDoctype() " {{{
endfunction endfunction
" }}} " }}}
" vim:set foldmethod=marker: " vim:set foldmethod=marker:
endif

View File

@@ -0,0 +1,39 @@
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 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')
let &l:commentstring = '<!-- %s -->'
elseif syn_name =~? '^jsxAttrib'
let &l:commentstring = '// %s'
else
let &l:commentstring = '{/* %s */}'
endif
else
let &l:commentstring = a:original
endif
" Restore the cursor position
call setpos('.', save_cursor)
endfunction
function! s:syn_name(lnum, cnum)
let syn_id = get(synstack(a:lnum, a:cnum), -1)
return synIDattr(syn_id, "name")
endfunction
function! s:syn_contains(lnum, cnum, syn_name)
let stack = synstack(a:lnum, a:cnum)
let syn_names = map(stack, 'synIDattr(v:val, "name")')
return index(syn_names, a:syn_name) >= 0
endfunction
endif

View File

@@ -0,0 +1,216 @@
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()
return shiftwidth()
endfunction
else
function! s:sw()
return &sw
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")')
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")')
endfunction
function! s:prev_indent(lnum)
let lnum = prevnonblank(a:lnum - 1)
return indent(lnum)
endfunction
function! s:prev_line(lnum)
let lnum = prevnonblank(a:lnum - 1)
return substitute(getline(lnum), '^\s*\|\s*$', '', 'g')
endfunction
function! s:syn_attr_jsx(synattr)
return a:synattr =~? "^jsx"
endfunction
function! s:syn_xmlish(syns)
return s:syn_attr_jsx(get(a:syns, -1))
endfunction
function! s:syn_jsx_element(syns)
return get(a:syns, -1) =~? 'jsxElement'
endfunction
function! s:syn_js_comment(syns)
return get(a:syns, -1) =~? 'Comment$'
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')
endfunction
function! s:syn_jsx_attrib(syns)
return len(filter(copy(a:syns), 'v:val =~? "jsxAttrib"'))
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)
if s:syn_xmlish(current_syn)
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
else
return prev_ind
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
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
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
endfunction
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
finish
endif
function! julia#set_syntax_version(jvers) function! julia#set_syntax_version(jvers)
if &filetype != "julia" if &filetype != "julia"
echo "Not a Julia file" echo "Not a Julia file"
@@ -186,3 +183,4 @@ function! julia#gotodefinition()
return return
endfunction endfunction
endif

View File

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

View File

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

View File

@@ -1,9 +1,6 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'julia') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
finish
endif
" This file is autogenerated from the script 'generate_latex_symbols_table.jl' " This file is autogenerated from the script 'generate_latex_symbols_table.jl'
" The symbols are based on Julia version 1.1.0-DEV.695 " The symbols are based on Julia version 1.3.0-DEV.263
scriptencoding utf-8 scriptencoding utf-8
@@ -392,6 +389,7 @@ function! julia_latex_symbols#get_dict()
\ '\trademark': '™', \ '\trademark': '™',
\ '\:tm:': '™', \ '\:tm:': '™',
\ '\bbZ': '', \ '\bbZ': '',
\ '\ohm': 'Ω',
\ '\mho': '℧', \ '\mho': '℧',
\ '\frakZ': '', \ '\frakZ': '',
\ '\turnediota': '℩', \ '\turnediota': '℩',
@@ -498,8 +496,8 @@ function! julia_latex_symbols#get_dict()
\ '\circlearrowright': '↻', \ '\circlearrowright': '↻',
\ '\leftharpoonup': '↼', \ '\leftharpoonup': '↼',
\ '\leftharpoondown': '↽', \ '\leftharpoondown': '↽',
\ '\upharpoonleft': '↾', \ '\upharpoonright': '↾',
\ '\upharpoonright': '↿', \ '\upharpoonleft': '↿',
\ '\rightharpoonup': '⇀', \ '\rightharpoonup': '⇀',
\ '\rightharpoondown': '⇁', \ '\rightharpoondown': '⇁',
\ '\downharpoonright': '⇂', \ '\downharpoonright': '⇂',
@@ -3331,3 +3329,4 @@ function! julia_latex_symbols#get_dict()
\ '\:baggage_claim:': '🛄', \ '\:baggage_claim:': '🛄',
\ '\:left_luggage:': '🛅'} \ '\:left_luggage:': '🛅'}
endfunction endfunction
endif

View File

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

70
autoload/puppet/align.vim Normal file
View File

@@ -0,0 +1,70 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
function! puppet#align#IndentLevel(lnum)
return indent(a:lnum) / &shiftwidth
endfunction
function! puppet#align#LinesInBlock(lnum)
let lines = []
let indent_level = puppet#align#IndentLevel(a:lnum)
let marker = a:lnum - 1
while marker >= 1
let line_text = getline(marker)
let line_indent = puppet#align#IndentLevel(marker)
if line_text =~? '\v\S'
if line_indent < indent_level
break
elseif line_indent == indent_level
call add(lines, marker)
endif
endif
let marker -= 1
endwhile
let marker = a:lnum
while marker <= line('$')
let line_text = getline(marker)
let line_indent = puppet#align#IndentLevel(marker)
if line_text =~? '\v\S'
if line_indent < indent_level
break
elseif line_indent == indent_level
call add(lines, marker)
endif
endif
let marker += 1
endwhile
return lines
endfunction
""
" Format lines with hashrocket (=>)
" @param a:1 a line where function should search for first hashrocket
" expression, if param is not given, line with active cursor is used
function! puppet#align#AlignHashrockets(...) abort
let l:lnum = get(a:, 1, line('.'))
let lines_in_block = puppet#align#LinesInBlock(l:lnum)
let max_left_len = 0
let indent_str = printf('%' . indent(l:lnum) . 's', '')
for line_num in lines_in_block
let data = matchlist(getline(line_num), '^\s*\(.\{-}\S\)\s*=>\s*\(.*\)$')
if !empty(data)
let max_left_len = max([max_left_len, strlen(data[1])])
endif
endfor
for line_num in lines_in_block
let data = matchlist(getline(line_num), '^\s*\(.\{-}\S\)\s*=>\s*\(.*\)$')
if !empty(data)
let new_line = printf('%s%-' . max_left_len . 's => %s', indent_str, data[1], data[2])
call setline(line_num, new_line)
endif
endfor
endfunction
endif

38
autoload/puppet/ctags.vim Normal file
View File

@@ -0,0 +1,38 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
if !exists('s:ctags_type')
let s:ctags_type = 0
endif
let s:ctags_options_dir = expand('<sfile>:p:h:h:h') . '/ctags/'
" Return full path to option file for ctags application
function! puppet#ctags#OptionFile()
if puppet#ctags#Type() == 'universal'
let l:ctags_options = 'puppet_u.ctags'
else
let l:ctags_options = 'puppet.ctags'
endif
return s:ctags_options_dir . l:ctags_options
endfunction
" Return type of installed ctags application,
" can be 'universal' or 'exuberant'
function! puppet#ctags#Type()
if !s:ctags_type
let l:version = system('ctags --version')
if l:version =~ 'Universal Ctags'
let s:ctags_type = 'universal'
elseif l:version =~ 'Exuberant Ctags'
let s:ctags_type = 'exuberant'
else
echoerr 'Unknown version of Ctags'
endif
endif
return s:ctags_type
endfunction
endif

View File

@@ -0,0 +1,59 @@
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)
call puppet#format#Fallback(l:start_lnum, l:end_lnum)
endfunction
""
" Format hashrockets expressions in every line in range start_lnum and
" end_lnum, both ends included
"
" TODO way of using AlignHashrockets function is ineffective, because it
" formats same lines again and again, find better way to do it
function! puppet#format#Hashrocket(start_lnum, end_lnum) abort
let l:lnum = a:start_lnum
while l:lnum <= a:end_lnum
call puppet#align#AlignHashrockets(l:lnum)
let l:lnum += 1
endwhile
endfunction
""
" Format indention in every line in range start_lnum and end_lnum, both ends
" included
"
function! puppet#format#Indention(start_lnum, end_lnum) abort
execute 'normal! ' . a:start_lnum . 'gg=' . a:end_lnum . 'gg'
endfunction
""
" Use internal vim default autoformat method for every line in range, only
" lines which exeed &widthline are formated
"
function! puppet#format#Fallback(start_lnum, end_lnum) abort
" 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)
execute 'normal! gww'
" Checking if autoformat expand number of lines if yes, I will extend
" range too
if l:eof_lnum < line('$')
let l:end_lnum += line('$') - l:eof_lnum
let l:eof_lnum = line('$')
endif
endif
let l:lnum += 1
endwhile
endfunction
endif

View File

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

View File

@@ -1,7 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'racket') != -1
finish
endif
if !exists("g:raco_command")
let g:raco_command = system("which raco")
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'ruby') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
finish
endif
" Vim completion script " Vim completion script
" Language: Ruby " Language: Ruby
" Maintainer: Mark Guzman <segfault@hasno.info> " Maintainer: Mark Guzman <segfault@hasno.info>
@@ -878,3 +875,4 @@ call s:DefRuby()
"}}} ruby-side code "}}} ruby-side code
" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl: " vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
" Author: Kevin Ballard " Author: Kevin Ballard
" Description: Helper functions for Rust commands/mappings " Description: Helper functions for Rust commands/mappings
" Last Modified: May 27, 2014 " Last Modified: May 27, 2014
@@ -509,7 +506,7 @@ function! rust#Test(all, options) abort
return rust#Run(1, '--test ' . a:options) return rust#Run(1, '--test ' . a:options)
endif endif
if exists(':terminal') if has('terminal') || has('nvim')
let cmd = 'terminal ' let cmd = 'terminal '
else else
let cmd = '!' let cmd = '!'
@@ -530,7 +527,7 @@ function! rust#Test(all, options) abort
let func_name = s:SearchTestFunctionNameUnderCursor() let func_name = s:SearchTestFunctionNameUnderCursor()
if func_name ==# '' if func_name ==# ''
echohl ErrorMsg echohl ErrorMsg
echo 'No test function was found under the cursor. Please add ! to command if you want to run all tests' echomsg 'No test function was found under the cursor. Please add ! to command if you want to run all tests'
echohl None echohl None
return return
endif endif
@@ -548,3 +545,4 @@ endfunction
" }}}1 " }}}1
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,10 +1,8 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
" For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim " For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim
let s:global_variable_list = [ let s:global_variable_list = [
\ '_rustfmt_autosave_because_of_config',
\ 'ftplugin_rust_source_path', \ 'ftplugin_rust_source_path',
\ 'loaded_syntastic_rust_cargo_checker', \ 'loaded_syntastic_rust_cargo_checker',
\ 'loaded_syntastic_rust_filetype', \ 'loaded_syntastic_rust_filetype',
@@ -32,7 +30,6 @@ let s:global_variable_list = [
\ 'rustc_makeprg_no_percent', \ 'rustc_makeprg_no_percent',
\ 'rustc_path', \ 'rustc_path',
\ 'rustfmt_autosave', \ 'rustfmt_autosave',
\ 'rustfmt_autosave_because_of_config',
\ 'rustfmt_autosave_if_config_present', \ 'rustfmt_autosave_if_config_present',
\ 'rustfmt_command', \ 'rustfmt_command',
\ 'rustfmt_emit_files', \ 'rustfmt_emit_files',
@@ -48,7 +45,9 @@ endfunction
function! s:EchoGlobalVariables() abort function! s:EchoGlobalVariables() abort
for l:key in s:global_variable_list for l:key in s:global_variable_list
call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null))) if l:key !~# '^_'
call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null)))
endif
if has_key(b:, l:key) if has_key(b:, l:key)
call s:Echo('let b:' . l:key . ' = ' . string(b:[l:key])) call s:Echo('let b:' . l:key . ' = ' . string(b:[l:key]))
@@ -103,3 +102,4 @@ function! rust#debugging#InfoToFile(filename) abort
endfunction endfunction
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate' let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
" For this buffer, when delimitMate issues the `User delimitMate_map` " For this buffer, when delimitMate issues the `User delimitMate_map`
@@ -46,3 +43,4 @@ endfunction
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

19
autoload/rust/tags.vim Normal file
View File

@@ -0,0 +1,19 @@
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.
let s:ctags_is_uctags = 0
let s:checked_ctags = 0
function! rust#tags#IsUCtags() abort
if s:checked_ctags == 0
if system('ctags --version') =~? 'universal ctags'
let s:ctags_is_uctags = 1
endif
let s:checked_ctags = 1
endif
return s:ctags_is_uctags
endfunction
" vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'rust') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
finish
endif
" Author: Stephen Sugden <stephen@stephensugden.com> " Author: Stephen Sugden <stephen@stephensugden.com>
" "
" Adapted from https://github.com/fatih/vim-go " Adapted from https://github.com/fatih/vim-go
@@ -149,6 +146,7 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
call delete(l:stderr_tmpname) call delete(l:stderr_tmpname)
let l:open_lwindow = 0
if v:shell_error == 0 if v:shell_error == 0
" remove undo point caused via BufWritePre " remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry try | silent undojoin | catch | endtry
@@ -169,7 +167,7 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
if s:got_fmt_error if s:got_fmt_error
let s:got_fmt_error = 0 let s:got_fmt_error = 0
call setloclist(0, []) call setloclist(0, [])
lwindow let l:open_lwindow = 1
endif endif
elseif g:rustfmt_fail_silently == 0 && a:fail_silently == 0 elseif g:rustfmt_fail_silently == 0 && a:fail_silently == 0
" otherwise get the errors and put them in the location list " otherwise get the errors and put them in the location list
@@ -201,7 +199,7 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
endif endif
let s:got_fmt_error = 1 let s:got_fmt_error = 1
lwindow let l:open_lwindow = 1
endif endif
" Restore the current directory if needed " Restore the current directory if needed
@@ -213,6 +211,11 @@ function! s:RunRustfmt(command, tmpname, fail_silently)
endif endif
endif endif
" Open lwindow after we have changed back to the previous directory
if l:open_lwindow == 1
lwindow
endif
silent! loadview silent! loadview
endfunction endfunction
@@ -234,10 +237,18 @@ function! rustfmt#Cmd()
endfunction endfunction
function! rustfmt#PreWrite() function! rustfmt#PreWrite()
if !filereadable(expand("%@"))
return
endif
if rust#GetConfigVar('rustfmt_autosave_if_config_present', 0) if rust#GetConfigVar('rustfmt_autosave_if_config_present', 0)
if findfile('rustfmt.toml', '.;') !=# '' || findfile('.rustfmt.toml', '.;') !=# '' if findfile('rustfmt.toml', '.;') !=# '' || findfile('.rustfmt.toml', '.;') !=# ''
let b:rustfmt_autosave = 1 let b:rustfmt_autosave = 1
let b:rustfmt_autosave_because_of_config = 1 let b:_rustfmt_autosave_because_of_config = 1
endif
else
if has_key(b:, '_rustfmt_autosave_because_of_config')
unlet b:_rustfmt_autosave_because_of_config
unlet b:rustfmt_autosave
endif endif
endif endif
@@ -250,3 +261,4 @@ endfunction
" vim: set et sw=4 sts=4 ts=8: " vim: set et sw=4 sts=4 ts=8:
endif

View File

@@ -1,41 +0,0 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'scss') != -1
finish
endif
" usage:
" set indentexpr=scss_indent#GetIndent(v:lnum)
fun! scss_indent#GetIndent(lnum)
" { -> increase indent
" } -> decrease indent
if a:lnum == 1
" start at 0 indentation
return 0
endif
" try to find last line ending with { or }
" ignoring // comments
let regex = '\([{}]\)\%(\/\/.*\)\?$'
let nr = search(regex, 'bnW')
if nr > 0
let last = indent(nr)
let m = matchlist(getline(nr), regex)
let m_curr = matchlist(getline(a:lnum), regex)
echoe string(m).string(m_curr)
if !empty(m_curr) && m_curr[1] == '}' && m[1] == '{'
" last was open, current is close, use same indent
return last
elseif !empty(m_curr) && m_curr[1] == '}' && m[1] == '}'
" } line and last line was }: decrease
return last - &sw
endif
if m[1] == '{'
" line after {: increase indent
return last + &sw
else
" line after } or { - same indent
return last
endif
else
return 0
endif
endfun

32
autoload/smt2.vim Normal file
View File

@@ -0,0 +1,32 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'smt2') == -1
" Invokes the solver on current file
function! smt2#RunSolver()
silent !clear
execute "!" . g:smt2_solver_command . " " . bufname("%")
endfunction
" Puts the solver's output in new split (replaces old split)
function! smt2#RunSolverAndShowResult()
let output = system(g:smt2_solver_command . " " . bufname("%") . " 2>&1")
" Create split (or reuse existent)
if exists("s:outputbufnr") && bufwinnr(s:outputbufnr) > 0
execute bufwinnr(s:outputbufnr) . 'wincmd w'
else
silent! vnew
let s:outputbufnr=bufnr('%')
endif
" Clear & (re-)fill contents
silent! normal! ggdG
setlocal filetype=smt2 buftype=nofile nobuflisted noswapfile
call append(0, split(output, '\v\n'))
normal! gg
endfunction
" Requests the solver's version
function! smt2#PrintSolverVersion()
silent !clear
execute "!" . g:smt2_solver_command . " " . g:smt2_solver_version_switch
endfunction
endif

58
autoload/terraform.vim Normal file
View File

@@ -0,0 +1,58 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1
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
silent execute '%!terraform fmt -no-color -'
if v:shell_error != 0
let output = getline(1, '$')
silent undo
echo join(output, "\n")
endif
call winrestview(l:curw)
endfunction
function! terraform#align()
let p = '^.*=[^>]*$'
if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*'))
Tabularize/=/l1
normal! 0
call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
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'
\ ]
endfunction
endif

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
" ___vital___ " ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize. " NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___' " Do not mofidify the code nor insert new lines before '" ___vital___'
@@ -189,3 +186,4 @@ endfunction
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
" ___vital___ " ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize. " NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___' " Do not mofidify the code nor insert new lines before '" ___vital___'
@@ -466,3 +463,4 @@ let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0: " vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
" ___vital___ " ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize. " NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___' " Do not mofidify the code nor insert new lines before '" ___vital___'
@@ -629,3 +626,4 @@ endfunction
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0: " vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
" ___vital___ " ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize. " NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___' " Do not mofidify the code nor insert new lines before '" ___vital___'
@@ -175,3 +172,4 @@ let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0: " vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'crystal') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
finish
endif
" ___vital___ " ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize. " NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___' " Do not mofidify the code nor insert new lines before '" ___vital___'
@@ -180,3 +177,4 @@ let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0: " vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

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

View File

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

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
finish
endif
" Vim completion for WAI-ARIA data file " Vim completion for WAI-ARIA data file
" Language: HTML + WAI-ARIA " Language: HTML + WAI-ARIA
" Maintainer: othree <othree@gmail.com> " Maintainer: othree <othree@gmail.com>
@@ -459,3 +456,4 @@ let g:xmldata_aria = {
\ 'default_role': default_role, \ 'default_role': default_role,
\ 'vimariaattrinfo': aria_attributes_value \ 'vimariaattrinfo': aria_attributes_value
\ } \ }
endif

View File

@@ -1,7 +1,4 @@
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'html5') != -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
finish
endif
" Vim completion for HTML5 data file " Vim completion for HTML5 data file
" Language: HTML (version 5.1 Draft 2016 Jan 13) " Language: HTML (version 5.1 Draft 2016 Jan 13)
" Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com ) " Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com )
@@ -872,3 +869,4 @@ let g:xmldata_html5 = {
\ 'wbr': ['/>', ''], \ 'wbr': ['/>', ''],
\ }, \ },
\ } \ }
endif

41
autoload/zig/config.vim Normal file
View File

@@ -0,0 +1,41 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zig') == -1
function! zig#config#ListTypeCommands() abort
return get(g:, 'zig_list_type_commands', {})
endfunction
function! zig#config#ListType() abort
return get(g:, 'zig_list_type', '')
endfunction
function! zig#config#ListAutoclose() abort
return get(g:, 'zig_list_autoclose', 1)
endfunction
function! zig#config#ListHeight() abort
return get(g:, "zig_list_height", 0)
endfunction
function! zig#config#FmtAutosave() abort
return get(g:, "zig_fmt_autosave", 0)
endfunction
function! zig#config#SetFmtAutosave(value) abort
let g:zig_fmt_autosave = a:value
endfunction
function! zig#config#FmtCommand() abort
return get(g:, "zig_fmt_command", ['zig', 'fmt', '--color', 'off'])
endfunction
function! zig#config#FmtFailSilently() abort
return get(g:, "zig_fmt_fail_silently", 0)
endfunction
function! zig#config#FmtExperimental() abort
return get(g:, "zig_fmt_experimental", 0)
endfunction
function! zig#config#Debug() abort
return get(g:, 'zig_debug', [])
endfunction
endif

168
autoload/zig/fmt.vim Normal file
View File

@@ -0,0 +1,168 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zig') == -1
" Adapted from fatih/vim-go: autoload/go/fmt.vim
"
" Copyright 2011 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
"
function! zig#fmt#Format() abort
if zig#config#FmtExperimental()
" Using winsaveview to save/restore cursor state has the problem of
" closing folds on save:
" https://github.com/fatih/vim-go/issues/502
" One fix is to use mkview instead. Unfortunately, this sometimes causes
" other bad side effects:
" https://github.com/fatih/vim-go/issues/728
" and still closes all folds if foldlevel>0:
" https://github.com/fatih/vim-go/issues/732
let l:curw = {}
try
mkview!
catch
let l:curw = winsaveview()
endtry
" save our undo file to be restored after we are done. This is needed to
" prevent an additional undo jump due to BufWritePre auto command and also
" restore 'redo' history because it's getting being destroyed every
" BufWritePre
let tmpundofile = tempname()
exe 'wundo! ' . tmpundofile
else
" Save cursor position and many other things.
let l:curw = winsaveview()
endif
" Save cursor position and many other things.
let l:curw = winsaveview()
let bin_name = zig#config#FmtCommand()
" Get current position in file
let current_col = col('.')
let orig_line_count = line('$')
" Save current buffer first, else fmt will run on the original file and we
" will lose our changes.
silent! execute 'write' expand('%')
let [l:out, l:err] = zig#fmt#run(bin_name, expand('%'))
if l:err == 0
call zig#fmt#update_file(expand('%'))
elseif !zig#config#FmtFailSilently()
let errors = s:parse_errors(expand('%'), out)
call s:show_errors(errors)
endif
let diff_offset = line('$') - orig_line_count
if zig#config#FmtExperimental()
" restore our undo history
silent! exe 'rundo ' . tmpundofile
call delete(tmpundofile)
" Restore our cursor/windows positions, folds, etc.
if empty(l:curw)
silent! loadview
else
call winrestview(l:curw)
endif
else
" Restore our cursor/windows positions.
call winrestview(l:curw)
endif
" be smart and jump to the line the new statement was added/removed
call cursor(line('.') + diff_offset, current_col)
" Syntax highlighting breaks less often.
syntax sync fromstart
endfunction
" update_file updates the target file with the given formatted source
function! zig#fmt#update_file(target)
" remove undo point caused via BufWritePre
try | silent undojoin | catch | endtry
" reload buffer to reflect latest changes
silent edit!
let l:listtype = zig#list#Type("ZigFmt")
" the title information was introduced with 7.4-2200
" https://github.com/vim/vim/commit/d823fa910cca43fec3c31c030ee908a14c272640
if has('patch-7.4.2200')
" clean up previous list
if l:listtype == "quickfix"
let l:list_title = getqflist({'title': 1})
else
let l:list_title = getloclist(0, {'title': 1})
endif
else
" can't check the title, so assume that the list was for go fmt.
let l:list_title = {'title': 'Format'}
endif
if has_key(l:list_title, "title") && l:list_title['title'] == "Format"
call zig#list#Clean(l:listtype)
endif
endfunction
" run runs the gofmt/goimport command for the given source file and returns
" the output of the executed command. Target is the real file to be formatted.
function! zig#fmt#run(bin_name, target)
let l:cmd = []
call extend(cmd, a:bin_name)
call extend(cmd, [a:target])
return zig#util#Exec(l:cmd)
endfunction
" parse_errors parses the given errors and returns a list of parsed errors
function! s:parse_errors(filename, content) abort
let splitted = split(a:content, '\n')
" list of errors to be put into location list
let errors = []
for line in splitted
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
if !empty(tokens)
call add(errors,{
\"filename": a:filename,
\"lnum": tokens[2],
\"col": tokens[3],
\"text": tokens[4],
\ })
endif
endfor
return errors
endfunction
" show_errors opens a location list and shows the given errors. If the given
" errors is empty, it closes the the location list
function! s:show_errors(errors) abort
let l:listtype = zig#list#Type("ZigFmt")
if !empty(a:errors)
call zig#list#Populate(l:listtype, a:errors, 'Format')
echohl Error | echomsg "zig fmt returned error" | echohl None
endif
" this closes the window if there are no errors or it opens
" it if there is any
call zig#list#Window(l:listtype, len(a:errors))
endfunction
function! zig#fmt#ToggleFmtAutoSave() abort
if zig#config#FmtAutosave()
call zig#config#SetFmtAutosave(0)
call zig#util#EchoProgress("auto fmt disabled")
return
end
call zig#config#SetFmtAutosave(1)
call zig#util#EchoProgress("auto fmt enabled")
endfunction
" vim: sw=2 ts=2 et
endif

160
autoload/zig/list.vim Normal file
View File

@@ -0,0 +1,160 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zig') == -1
" Adapted from fatih/vim-go: autoload/go/list.vim
"
" Copyright 2011 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
"
" Window opens the list with the given height up to 10 lines maximum.
" Otherwise g:zig_loclist_height is used.
"
" If no or zero height is given it closes the window by default.
" To prevent this, set g:zig_list_autoclose = 0
function! zig#list#Window(listtype, ...) abort
" we don't use lwindow to close the location list as we need also the
" ability to resize the window. So, we are going to use lopen and lclose
" for a better user experience. If the number of errors in a current
" location list increases/decreases, cwindow will not resize when a new
" updated height is passed. lopen in the other hand resizes the screen.
if !a:0 || a:1 == 0
call zig#list#Close(a:listtype)
return
endif
let height = zig#config#ListHeight()
if height == 0
" prevent creating a large location height for a large set of numbers
if a:1 > 10
let height = 10
else
let height = a:1
endif
endif
if a:listtype == "locationlist"
exe 'lopen ' . height
else
exe 'copen ' . height
endif
endfunction
" Get returns the current items from the list
function! zig#list#Get(listtype) abort
if a:listtype == "locationlist"
return getloclist(0)
else
return getqflist()
endif
endfunction
" Populate populate the list with the given items
function! zig#list#Populate(listtype, items, title) abort
if a:listtype == "locationlist"
call setloclist(0, a:items, 'r')
" The last argument ({what}) is introduced with 7.4.2200:
" https://github.com/vim/vim/commit/d823fa910cca43fec3c31c030ee908a14c272640
if has("patch-7.4.2200") | call setloclist(0, [], 'a', {'title': a:title}) | endif
else
call setqflist(a:items, 'r')
if has("patch-7.4.2200") | call setqflist([], 'a', {'title': a:title}) | endif
endif
endfunction
" Parse parses the given items based on the specified errorformat and
" populates the list.
function! zig#list#ParseFormat(listtype, errformat, items, title) abort
" backup users errorformat, will be restored once we are finished
let old_errorformat = &errorformat
" parse and populate the location list
let &errorformat = a:errformat
try
call zig#list#Parse(a:listtype, a:items, a:title)
finally
"restore back
let &errorformat = old_errorformat
endtry
endfunction
" Parse parses the given items based on the global errorformat and
" populates the list.
function! zig#list#Parse(listtype, items, title) abort
if a:listtype == "locationlist"
lgetexpr a:items
if has("patch-7.4.2200") | call setloclist(0, [], 'a', {'title': a:title}) | endif
else
cgetexpr a:items
if has("patch-7.4.2200") | call setqflist([], 'a', {'title': a:title}) | endif
endif
endfunction
" JumpToFirst jumps to the first item in the location list
function! zig#list#JumpToFirst(listtype) abort
if a:listtype == "locationlist"
ll 1
else
cc 1
endif
endfunction
" Clean cleans and closes the location list
function! zig#list#Clean(listtype) abort
if a:listtype == "locationlist"
lex []
else
cex []
endif
call zig#list#Close(a:listtype)
endfunction
" Close closes the location list
function! zig#list#Close(listtype) abort
let autoclose_window = zig#config#ListAutoclose()
if !autoclose_window
return
endif
if a:listtype == "locationlist"
lclose
else
cclose
endif
endfunction
function! s:listtype(listtype) abort
let listtype = zig#config#ListType()
if empty(listtype)
return a:listtype
endif
return listtype
endfunction
" s:default_list_type_commands is the defaults that will be used for each of
" the supported commands (see documentation for g:zig_list_type_commands). When
" defining a default, quickfix should be used if the command operates on
" multiple files, while locationlist should be used if the command operates on a
" single file or buffer. Keys that begin with an underscore are not supported
" in g:zig_list_type_commands.
let s:default_list_type_commands = {
\ "ZigFmt": "locationlist",
\ }
function! zig#list#Type(for) abort
let l:listtype = s:listtype(get(s:default_list_type_commands, a:for))
if l:listtype == "0"
call zig#util#EchoError(printf(
\ "unknown list type command value found ('%s'). Please open a bug report in the zig.vim repo.",
\ a:for))
let l:listtype = "quickfix"
endif
return get(zig#config#ListTypeCommands(), a:for, l:listtype)
endfunction
" vim: sw=2 ts=2 et
endif

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