Compare commits

...

180 Commits

Author SHA1 Message Date
Adam Stankiewicz
0626cc90a2 Change fish provider, closes #626 2020-12-30 12:16:03 +01:00
Adam Stankiewicz
8af4f8e6c0 Add jsonc, closes #635 2020-12-30 12:13:50 +01:00
Adam Stankiewicz
e5668602cc Enable again swapfiles, fixes #638 2020-12-30 09:58:20 +01:00
Adam Stankiewicz
6783bd0df9 Revert "Check changes for focus event, improves #638"
It's because it additionally changes cursor to vertical bar.
I need to disable this behavior and make it compatible with
plugins that enable vertical cursor...

This reverts commit 44e79fc935.
2020-12-30 08:36:48 +01:00
Adam Stankiewicz
dc786b7641 Try to fix tests 2020-12-30 01:04:40 +01:00
Adam Stankiewicz
3f9ce1c6cf Add link to actions 2020-12-30 01:00:14 +01:00
Adam Stankiewicz
44e79fc935 Check changes for focus event, improves #638 2020-12-30 00:48:12 +01:00
Adam Stankiewicz
2fcb15afa0 Add terraform to list of packages, fixes #625 2020-12-30 00:05:20 +01:00
Adam Stankiewicz
1150adc4db Fix detecting conf filetype, closes #641 2020-12-29 23:40:05 +01:00
Adam Stankiewicz
47dcae9131 Do not mention vim-sensible, as only tiny part of it is included 2020-12-29 20:45:36 +01:00
Adam Stankiewicz
4b54ae9cd9 Move setting default tabstop to sensible part 2020-12-29 20:42:17 +01:00
Adam Stankiewicz
c5625ffedd Set shiftwidth to tabstop if greather, fixes #648
Also should fix situations like in #654
2020-12-29 20:33:47 +01:00
Adam Stankiewicz
45f2f94975 Add mint-language, closes #653
Co-authored-by: NICHTJ3 <nicholsontrent@gmail.com>
2020-12-29 20:18:29 +01:00
Adam Stankiewicz
cec808bc19 Use maxdepth instead of depth in makefile, closes #652 2020-12-29 20:08:51 +01:00
Adam Stankiewicz
95d82fdb66 Update 2020-12-29 19:44:40 +01:00
Carl-Philipp Jung
73c5187177 Removes set incsearch which was copied from vim-sensible (#640) 2020-11-27 16:10:29 +01:00
Adam Stankiewicz
ab0ff253f6 Update plugins, closes #627 2020-11-20 13:00:38 +01:00
Adam Stankiewicz
c228e993ad Update 2020-11-18 20:33:42 +01:00
Dawid Potocki
da18fe6851 Fix neovim :Tutor filetype detection (#631) 2020-11-17 16:58:46 +01:00
Adam Stankiewicz
4af1321588 Revert "Rename cpo_save variable to prevent conflicts, fixes #619"
This reverts commit d96f11bcd8.
2020-11-04 00:44:02 +01:00
Fabien RAJAONARISON
cd76812402 fix undefined cpo_save (#623) 2020-11-02 19:46:24 +01:00
Cookies
ff35c02445 Restore cpoptions before recursive ftdetect read, fixes #619 (#621) 2020-11-02 18:48:59 +01:00
Adam Stankiewicz
32f5e90737 Do not use [0:-1] syntax, fixes #616 2020-11-02 18:32:43 +01:00
Adam Stankiewicz
d96f11bcd8 Rename cpo_save variable to prevent conflicts, fixes #619 2020-11-02 18:21:43 +01:00
Adam Stankiewicz
0738ad654d Update 2020-11-02 18:19:15 +01:00
Sinos
05e21a9e25 Add support for PEG syntax (#615)
* feat: add pest syntax

* feat: add pest into packages

* feat: increase the package count
2020-10-27 12:02:41 +01:00
Adam Stankiewicz
683286b3d7 Add all paths, fixes #612 2020-10-26 16:25:24 +01:00
Adam Stankiewicz
740a60811c Use nroff filetype for man pages, closes #611 2020-10-26 08:45:34 +01:00
Adam Stankiewicz
2838800832 Fix conditions, #608 2020-10-25 21:08:27 +01:00
Adam Stankiewicz
ba3fe9e1ae Fix loading when vim8 packages are used 2020-10-25 20:40:49 +01:00
Adam Stankiewicz
45a7512dea Preserve loading order of plugins, fixes #608 2020-10-25 20:33:44 +01:00
Adam Stankiewicz
81ada1101e Remove debugging code, closes #607 2020-10-25 11:11:53 +01:00
ichizok
48d0bc7556 Fix the filter of 'rtp' (#606)
On Windows, should handle both slash and backslash as the path separator
in checking a path in 'rtp'.
2020-10-25 11:10:44 +01:00
Adam Stankiewicz
cbde2571d4 Respect symlinks for resolving vim-polyglot as fallback, closes #605 2020-10-25 03:19:58 +01:00
Adam Stankiewicz
d73c4d1562 Fix recursive loading, closes #605 2020-10-24 23:50:54 +02:00
Adam Stankiewicz
20b31f5337 Fix warning in command line window, closes #604 2020-10-24 21:46:04 +02:00
Adam Stankiewicz
8e61708b45 Use vim-polyglot only as fallback to other plugins, fixes #580 2020-10-24 18:52:18 +02:00
Adam Stankiewicz
3c148e9ef5 Do not set checktime if already set 2020-10-24 17:46:15 +02:00
Adam Stankiewicz
739102e06d Make editing same file in multiple vim instances seamless 2020-10-24 17:32:39 +02:00
Adam Stankiewicz
f52f6b9519 Allow to override incsearch, #603 2020-10-24 17:19:54 +02:00
Adam Stankiewicz
b6654c85b2 Fix shortcuts in plugins, fixes #566 2020-10-24 16:54:55 +02:00
Adam Stankiewicz
e3609fed6b Fix disabling sensible settings, closes #602 2020-10-24 16:37:45 +02:00
Adam Stankiewicz
7324528984 Fix detecting shell filetypes, closes #603 2020-10-24 16:34:29 +02:00
Adam Stankiewicz
0a2f2cc04d Fix old nvim, closes #592 2020-10-23 21:57:54 +02:00
Adam Stankiewicz
6422a5a479 Count all multiplies for given indent, fixes #592 2020-10-23 02:36:02 +02:00
Adam Stankiewicz
113f9b8949 Respect shiftwidth if set by user or plugin 2020-10-23 01:30:33 +02:00
Adam Stankiewicz
f828912a7f Set softtabstop to -1 to allow chaging shiftwidth 2020-10-23 01:22:31 +02:00
Adam Stankiewicz
2522ad2029 Set softtabstop to -1 to allow easy sw configuraton 2020-10-23 01:16:32 +02:00
Adam Stankiewicz
50a9a7345f Update 2020-10-23 01:13:09 +02:00
Adam Stankiewicz
29ec69ffa0 Set default tabstop to 2, but only if not changed 2020-10-23 01:04:53 +02:00
Adam Stankiewicz
6636144497 Prevent setting expandtab by default, closes #599 2020-10-23 00:56:41 +02:00
Adam Stankiewicz
2a205569eb Set only softtabstop, not tabstop, fixes #600 2020-10-23 00:51:16 +02:00
Adam Stankiewicz
114f731483 Add missing menu file, fixes #597 2020-10-21 14:26:54 +02:00
Adam Stankiewicz
4b8687ebca Fix deteting tab indents, closes #596 2020-10-21 14:23:28 +02:00
Adam Stankiewicz
78f6c8f318 Improve autoindent heuristics (count diff of multiple lines of same indent) 2020-10-19 20:33:52 +02:00
Adam Stankiewicz
86bf33aa3b Use conf for /etc/hosts, fixes #595 2020-10-19 19:49:44 +02:00
Adam Stankiewicz
b64fcedd82 Count only increments in indent, also respect ftplugin settings 2020-10-19 11:24:31 +02:00
Adam Stankiewicz
903793ac04 Improve indent heuristics (count increments / decrements), fixes #592 2020-10-19 11:00:16 +02:00
Adam Stankiewicz
71a21a1044 Use spaces instead of tabs 2020-10-19 10:05:33 +02:00
Adam Stankiewicz
1d7f0e4a7e Remove non-relevant sensible settings
233a817f05
2020-10-19 10:03:56 +02:00
Adam Stankiewicz
ad2df97a64 Allow 6-spaces indent and do not set tabstop if changed 2020-10-19 09:10:57 +02:00
Adam Stankiewicz
fbeca0ed90 Change link to vim repository 2020-10-19 03:14:58 +02:00
Adam Stankiewicz
8c1ec94a3c Change ascii art 2020-10-19 03:10:32 +02:00
Adam Stankiewicz
5297baf285 Add doc for polyglot 2020-10-19 03:05:39 +02:00
Adam Stankiewicz
5e2607d93f Remove docs so docs of installed plugins are up to date 2020-10-19 02:55:37 +02:00
Adam Stankiewicz
3d80a66e7b Move comment about polyglot_disabled 2020-10-19 02:52:47 +02:00
Adam Stankiewicz
0980839568 Prevent break in readme 2020-10-19 02:51:41 +02:00
Adam Stankiewicz
4ab0bdd326 Make readme little shorter 2020-10-19 02:51:16 +02:00
Adam Stankiewicz
dbfcb6dca4 Mention I recommend using plug 2020-10-19 02:50:00 +02:00
Adam Stankiewicz
6208384bd4 Improve syntax highlighting of the readme 2020-10-19 02:38:07 +02:00
Adam Stankiewicz
225c408b02 Mention nocompatible in the .vimrc 2020-10-19 02:37:33 +02:00
Adam Stankiewicz
71d9a2db9f Add docs about sensible 2020-10-19 02:34:23 +02:00
Adam Stankiewicz
233a817f05 Add vim-sensible defaults by default 2020-10-19 02:26:31 +02:00
Adam Stankiewicz
c3e825027d Allow vim-polyglot to load in non-compatible mode 2020-10-19 02:25:59 +02:00
Adam Stankiewicz
3618414fad Do not set tabstop by mistake 2020-10-19 00:10:17 +02:00
Adam Stankiewicz
88cae16fca Autodetect only 2, 3, 4, or 8 space indent, fixes #592 2020-10-18 23:57:00 +02:00
Adam Stankiewicz
6d7f437b84 Do not set nocompatible mode, fixes #593 2020-10-18 22:15:53 +02:00
Adam Stankiewicz
bb27d0efbf Add regression test 2020-10-18 13:34:01 +02:00
Adam Stankiewicz
8a790ac7bf Leave only filetype detect for context, closes #575 2020-10-18 12:27:11 +02:00
Adam Stankiewicz
c9f2aa9ae0 Leave only filetype detection for man, #576 2020-10-18 12:24:33 +02:00
Adam Stankiewicz
1fc249bafd Set nocompatible mode instead of checking it 2020-10-17 21:23:12 +02:00
Adam Stankiewicz
518d733369 Make sure custom scripts.vim are respected as well 2020-10-17 17:40:10 +02:00
Adam Stankiewicz
0021384259 Make sure polyglot_disable does not skip native vim files, fixes #591 2020-10-17 15:56:13 +02:00
Adam Stankiewicz
af3ebda710 Fix tests 2020-10-17 14:17:55 +02:00
Adam Stankiewicz
6b663ec330 Change implementation of observing, fixes #584 2020-10-17 13:49:45 +02:00
Adam Stankiewicz
6b9625ecd5 Fix detecting indentation, closes #590 2020-10-17 11:52:39 +02:00
Adam Stankiewicz
3383046210 Handle most warnings 2020-10-16 20:15:30 +02:00
Adam Stankiewicz
8f9e5ac70b Add extensions to the readme 2020-10-16 14:08:54 +02:00
Adam Stankiewicz
23d7b0931d Use language names instead of filetype names 2020-10-16 13:49:57 +02:00
Adam Stankiewicz
3ee6ab9d13 Update 2020-10-16 13:41:54 +02:00
Adam Stankiewicz
cd919c0039 Mention filetypes in the readme 2020-10-16 13:40:50 +02:00
Adam Stankiewicz
3ac0dd5a80 Alaways use native vim syntax, fixes #582 2020-10-14 23:47:17 +02:00
Adam Stankiewicz
e95c5f49aa Check indentation with 1024 lines as fallback, fixes #588 2020-10-14 23:37:38 +02:00
Adam Stankiewicz
ba11e0f1ad Improve django detection, closes #585 2020-10-14 23:26:36 +02:00
Adam Stankiewicz
c45f0b8f64 Make sure custom ftdetect is loaded, fixes #587 2020-10-14 23:23:32 +02:00
Adam Stankiewicz
bbee246aae Add and fix tests from upstream vim 2020-10-14 23:01:53 +02:00
Adam Stankiewicz
3da600ac30 Relax previous commit a bit 2020-10-09 23:00:41 +02:00
Adam Stankiewicz
0d48ba9245 Fix detecting of some filetypes, closes #579 2020-10-09 22:57:13 +02:00
Adam Stankiewicz
1993b9f68f Fix encoding of vim files 2020-10-08 08:31:09 +02:00
Adam Stankiewicz
bb3de8fa5e Fix markdown and other highlighting, #578 2020-10-08 00:40:28 +02:00
Adam Stankiewicz
b3763a917a Use neovim version of .vim highlighting, #578 2020-10-07 23:52:17 +02:00
Adam Stankiewicz
4bec20ec1a Fix test and loading of filetypes, closes #577 2020-10-07 21:51:30 +02:00
Adam Stankiewicz
9f4e2b6834 Remove context from packages, fixes #575 2020-10-07 13:01:20 +02:00
Adam Stankiewicz
619a7a854b Remove man plugin from vim, it does not work for nvim, closes #576 2020-10-07 12:48:46 +02:00
Adam Stankiewicz
3f79f795dc Remove filetype.vim for now, not clear it works 2020-10-07 12:37:21 +02:00
Adam Stankiewicz
f084509520 Fix vim 8 package manager, closes #574 2020-10-07 12:10:02 +02:00
Adam Stankiewicz
214ecc1384 Update readme 2020-10-06 19:00:50 +02:00
Adam Stankiewicz
a96c420e14 Simplify list of packages 2020-10-06 19:00:11 +02:00
Adam Stankiewicz
bc9757916e Add all vim filetypes 2020-10-06 18:54:19 +02:00
Adam Stankiewicz
c6fa4d2bf5 Add extensions to vlang 2020-10-06 11:02:00 +02:00
Adam Stankiewicz
cbc4600333 Update 2020-10-04 23:25:48 +02:00
Adam Stankiewicz
32b097f67e Add some missing filetypes 2020-10-04 22:20:23 +02:00
Adam Stankiewicz
04d110660e Fix formatting 2020-10-04 21:25:26 +02:00
Adam Stankiewicz
c0b866aac3 Add graphql indentation again, thanks @jparise! 2020-10-04 21:19:51 +02:00
Adam Stankiewicz
b4868c7ea7 Add comments for some extensions + test 2020-10-04 21:17:06 +02:00
Adam Stankiewicz
d221139bd7 Address BufWritePost error, fixes #573 2020-10-04 19:00:16 +02:00
Adam Stankiewicz
073e4d44be Actually do not use ++once, fixes #573 2020-10-02 10:39:03 +02:00
Adam Stankiewicz
5bd9f16476 Disable vim-polyglot for compatible mode 2020-10-02 03:46:08 +02:00
Adam Stankiewicz
94ec9c38e7 Do not use ++once to support older vims, fixes #7056 2020-10-02 03:42:03 +02:00
Adam Stankiewicz
bff55a54fa Update Vim 8 installation instructions 2020-10-02 00:44:02 +02:00
Adam Stankiewicz
560024abe0 Resolve issues with loading order, closes #571 2020-10-02 00:36:09 +02:00
Chayoung You
3ad297db5c Fix error when editing path for shebang (#572) 2020-09-30 11:20:29 +02:00
Adam Stankiewicz
5d7121d829 Update README.md 2020-09-30 11:03:53 +02:00
Adam Stankiewicz
8b272d6e52 Document how to install with vim8 packages 2020-09-30 05:38:14 +02:00
Adam Stankiewicz
449bb88248 Make loading faster for ambiguous extensions without heuristics 2020-09-30 01:40:34 +02:00
Adam Stankiewicz
7036147860 Brag in readme about shortened ftdetect time 2020-09-30 01:23:41 +02:00
Adam Stankiewicz
a37e7e2939 Reduce startup time by avoiding calling slow au! 2020-09-30 01:22:44 +02:00
Adam Stankiewicz
c1aac2e279 Deduplicate polyglot files 2020-09-29 23:36:28 +02:00
Adam Stankiewicz
543e8c917b Modularize lazy loading of polyglot parts 2020-09-29 21:48:38 +02:00
Adam Stankiewicz
2f133372bc Make loading faster for ambiguous extensions 2020-09-29 19:51:43 +02:00
Adam Stankiewicz
539952f922 Prevent warning for ps1xml heuristics, #570 2020-09-29 19:38:49 +02:00
Adam Stankiewicz
b5cc8fc336 Remove ambiguity for terraform files, #570 2020-09-29 19:35:05 +02:00
Adam Stankiewicz
1872af2d5e Fix detection of conf files, closes #569 2020-09-29 19:11:11 +02:00
Adam Stankiewicz
46b09b0d5b Remove {{ }} from detecting htmldjango, #560 2020-09-29 16:26:03 +02:00
Adam Stankiewicz
63f43f3b01 Make ftdetect even shorter 2020-09-28 19:35:09 +02:00
Adam Stankiewicz
046a052f18 Make generated file bit shorter 2020-09-28 19:13:59 +02:00
Adam Stankiewicz
31409eaafb Fix all warning messages 2020-09-28 18:56:36 +02:00
Adam Stankiewicz
f431aee86e Change less provider, closes #567 2020-09-28 18:28:56 +02:00
Adam Stankiewicz
6a086b0c79 Fix many extensions detection 2020-09-28 03:00:01 +02:00
Adam Stankiewicz
692db4dc29 Fix more warnings 2020-09-28 02:30:26 +02:00
Adam Stankiewicz
417df69667 Fix zsh missing filenames 2020-09-28 02:19:06 +02:00
Adam Stankiewicz
ae778bdb17 Add missing filetypes for sql 2020-09-28 01:33:57 +02:00
Adam Stankiewicz
b7598ff0c5 Add missing filetypes for systemd 2020-09-28 01:23:00 +02:00
Adam Stankiewicz
312e95099d Show warnings only for DEV build 2020-09-28 00:43:36 +02:00
Adam Stankiewicz
63369f98ef Fix missing filetypes detection 2020-09-28 00:41:10 +02:00
Adam Stankiewicz
2116dd281b Fix some missing extensions warnings 2020-09-28 00:31:39 +02:00
Adam Stankiewicz
7ec499c19f Set indentation only locally, fixes #564 2020-09-27 12:05:29 +02:00
Adam Stankiewicz
33b86476b6 Fix neovim warning, closes #563 2020-09-26 01:25:12 +02:00
Adam Stankiewicz
4f36a63813 Update filenames for gitignore 2020-09-25 00:09:44 +02:00
Adam Stankiewicz
d6479bbf0b Change gitignore provider 2020-09-25 00:07:37 +02:00
Adam Stankiewicz
d53d2189b9 Add support for .gitignore highlighting 2020-09-24 23:24:42 +02:00
Adam Stankiewicz
a6a6aeab76 Improve django filetype detection, closes #560 2020-09-24 22:52:50 +02:00
Adam Stankiewicz
444e7f184d Change maintained badge 2020-09-24 19:00:06 +02:00
Adam Stankiewicz
4c028b37bf Add warning to generated files 2020-09-24 18:56:07 +02:00
Adam Stankiewicz
9ff714cb6c Extract non-generated code to polyglot.vim 2020-09-24 18:52:58 +02:00
Adam Stankiewicz
e2bbed8acc Fix django highlighting, fixes #553 2020-09-24 10:50:19 +02:00
Adam Stankiewicz
6b4da27538 Improve html heuristics 2020-09-24 09:24:13 +02:00
Adam Stankiewicz
c284af58fa Update readme 2020-09-23 23:55:28 +02:00
Adam Stankiewicz
50aa05bd72 Allow to disable only syntax highlighting, #556 2020-09-23 23:49:57 +02:00
Adam Stankiewicz
7e2d060f88 Fix detecting jinja templates, #553 2020-09-23 23:25:01 +02:00
Adam Stankiewicz
3a298c9759 Add more advanced cpp syntax, #557 2020-09-23 22:04:29 +02:00
Adam Stankiewicz
d9ec600545 Allow to use ruby 2.5.5, closes #558 2020-09-23 20:18:38 +02:00
Adam Stankiewicz
33f0964d53 Update test script to ruby 2020-09-23 19:37:58 +02:00
Adam Stankiewicz
92cb76e33a Fix polyglot_disabled docs, closes #555 2020-09-23 09:43:36 +02:00
Adam Stankiewicz
378dcb3878 Update tests location 2020-09-22 21:47:21 +02:00
Adam Stankiewicz
6f0c50457f Build 2020-09-22 17:16:27 +02:00
Adam Stankiewicz
06548fe617 Get rid of s:Setf helper 2020-09-16 17:43:03 +02:00
Adam Stankiewicz
0118088e0a Make config more vim-independent 2020-09-16 17:24:10 +02:00
Adam Stankiewicz
17c2b630e1 Write heuristics for perl, closes #550 2020-09-16 15:50:39 +02:00
Adam Stankiewicz
271679272c Fix eruby filetype detect, closes #547 2020-09-15 11:19:56 +02:00
Adam Stankiewicz
d43d269bed Update 2020-09-15 10:45:50 +02:00
Adam Stankiewicz
4314841aa4 Fix build, closes #548 2020-09-13 09:14:21 +02:00
Adam Stankiewicz
5308fab3e9 Fix build, closes #548 2020-09-13 09:13:11 +02:00
Adam Stankiewicz
c842cbcb59 Update 2020-09-12 14:54:55 +02:00
Adam Stankiewicz
314621a395 Make warning more clear, #546 2020-09-11 13:56:24 +02:00
Adam Stankiewicz
ca8818e8ed Improve issue template 2020-09-10 16:46:31 +02:00
Adam Stankiewicz
947e6853aa Improve issue template 2020-09-10 16:44:51 +02:00
Adam Stankiewicz
05ff14bfda Add odin support, closes #544 2020-09-10 16:38:32 +02:00
Adam Stankiewicz
9243367ba3 Automatically detect script filetype when typing 2020-09-10 15:40:27 +02:00
Adam Stankiewicz
1eed30b2af Fix filetype detection and docini filetypes 2020-09-10 14:07:02 +02:00
1374 changed files with 102030 additions and 19917 deletions

View File

@@ -2,17 +2,23 @@
name: Add language
about: Add support for new language
title: ''
labels: ''
labels: 'enhancement'
assignees: ''
---
<!--- vim-polyglot accepts only lightweight, maintained github-hosted vim plugins -->
**What is the name of this language in Linguist?**
<!-- https://github.com/github/linguist/blob/master/lib/linguist/languages.yml -->
**Link to GitHub repository of Vim plugin**
**GitHub repository url**
**Is this plugin well maintained?**
**Is this plugin lightweight? (no advanced functionality, just indent and syntax support)**

View File

@@ -1,20 +0,0 @@
---
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.

View File

@@ -1,10 +1,10 @@
.PHONY: all test dev
.PHONY: build test dev
all:
build:
@ scripts/build
test:
@ scripts/test
dev:
@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\nscripts/test_extensions.vim" | DEV=1 entr bash -c 'make && make test'
@ find scripts autoload/polyglot ftdetect tests . -type f -maxdepth 1 | DEV=1 entr bash -c 'make'

384
README.md
View File

@@ -1,30 +1,34 @@
![vim-polyglot](https://i.imgur.com/9RxQK6k.png)
![build](https://github.com/sheerun/vim-polyglot/workflows/Vim%20Polyglot%20CI/badge.svg) [![Maintenance](https://img.shields.io/maintenance/yes/2020.svg?maxAge=2592000)]()
[![build](https://github.com/sheerun/vim-polyglot/workflows/Vim%20Polyglot%20CI/badge.svg)](https://github.com/sheerun/vim-polyglot/actions) [![Maintenance](https://img.shields.io/badge/maintained%20since-2013-yes)]()
A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->194<!--/Package Count--> packages it consists of.
- It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect).
- Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support).
- Automatically detect indentation (includes performance-optimized version of [vim-sleuth](https://github.com/tpope/vim-sleuth))
- Each build is tested by automated vimrunner script on CI. See `spec` directory.
- It **installs and updates 120+ times faster** than the <!--Package Count-->601<!--/Package Count--> packages it consists of.
- It is also more secure (scripts loaded for every filetype are generated by vim-polyglot)
- Best syntax and indentation support (no other features). Hand-selected language packs.
- Automatically detects indentation (includes performance-optimized version of [vim-sleuth](https://github.com/tpope/vim-sleuth), can be disabled)
\*To be completely honest, optimized `ftdetect` script takes around `19ms` to load.
\*To be completely honest, optimized `ftdetect` script takes around `10ms` to load.
## Installation
1. Install [Pathogen](https://github.com/tpope/vim-pathogen), [Vundle](https://github.com/VundleVim/Vundle.vim), [NeoBundle](https://github.com/Shougo/neobundle.vim), or [Plug](https://github.com/junegunn/vim-plug) package manager for Vim.
2. Use this repository as submodule or package.
For example when using [Plug](https://github.com/junegunn/vim-plug):
For example when using [Plug](https://github.com/junegunn/vim-plug) (which I recommend):
```vim
set nocompatible
call plug#begin()
```
Plug 'sheerun/vim-polyglot'
call plug#end()
```
Optionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory.
@@ -32,210 +36,171 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
You can also use Vim 8 built-in package manager:
```
mkdir -p ~/.vim/pack/default/start
git clone https://github.com/sheerun/vim-polyglot ~/.vim/pack/default/start/vim-polyglot
git clone --depth 1 https://github.com/sheerun/vim-polyglot ~/.vim/pack/plugins/start/vim-polyglot
```
NOTE: Not all features of individual language packs are available. We strip them from functionality slowing vim startup (for example we ignore `plugins` folder that is loaded regardless of file type, instead we prefer `ftplugin` which is loaded lazily).
If you need full functionality of any plugin, please use it directly with your plugin manager.
## Language packs
On top of all language packs from [vim repository](https://github.com/vim/vim/tree/master/runtime/syntax), vim-polyglot includes:
<!--Language Packs-->
- [8th](https://github.com/vim/vim/tree/master/runtime)
- [a2ps](https://github.com/vim/vim/tree/master/runtime)
- [a65](https://github.com/vim/vim/tree/master/runtime)
- [aap](https://github.com/vim/vim/tree/master/runtime)
- [abap](https://github.com/vim/vim/tree/master/runtime)
- [abaqus](https://github.com/vim/vim/tree/master/runtime)
- [abc](https://github.com/vim/vim/tree/master/runtime)
- [abel](https://github.com/vim/vim/tree/master/runtime)
- [acedb](https://github.com/vim/vim/tree/master/runtime)
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl)
- [ada](https://github.com/vim/vim/tree/master/runtime)
- [ahdl](https://github.com/vim/vim/tree/master/runtime)
- [aidl](https://github.com/vim/vim/tree/master/runtime)
- [alsaconf](https://github.com/vim/vim/tree/master/runtime)
- [aml](https://github.com/vim/vim/tree/master/runtime)
- [ampl](https://github.com/vim/vim/tree/master/runtime)
- [acpiasl](https://github.com/martinlroth/vim-acpi-asl) (Syntax highlighting for asl and dsl files)
- [ansible](https://github.com/pearofducks/ansible-vim)
- [ant](https://github.com/vim/vim/tree/master/runtime)
- [apache](https://github.com/vim/vim/tree/master/runtime)
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim)
- [applescript](https://github.com/mityu/vim-applescript)
- [aptconf](https://github.com/vim/vim/tree/master/runtime)
- [arch](https://github.com/vim/vim/tree/master/runtime)
- [arduino](https://github.com/sudar/vim-arduino-syntax)
- [art](https://github.com/vim/vim/tree/master/runtime)
- [asciidoc](https://github.com/asciidoc/vim-asciidoc)
- [asn](https://github.com/vim/vim/tree/master/runtime)
- [aspperl](https://github.com/vim/vim/tree/master/runtime)
- [aspvbs](https://github.com/vim/vim/tree/master/runtime)
- [atlas](https://github.com/vim/vim/tree/master/runtime)
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey)
- [autoit](https://github.com/vim/vim/tree/master/runtime)
- [automake](https://github.com/vim/vim/tree/master/runtime)
- [ave](https://github.com/vim/vim/tree/master/runtime)
- [awk](https://github.com/vim/vim/tree/master/runtime)
- [basic](https://github.com/vim/vim/tree/master/runtime)
- [blade](https://github.com/jwalton512/vim-blade)
- [apiblueprint](https://github.com/kylef/apiblueprint.vim) (API Blueprint syntax highlighting for apib files)
- [applescript](https://github.com/mityu/vim-applescript) (AppleScript syntax highlighting for applescript and scpt files)
- [arduino](https://github.com/sudar/vim-arduino-syntax) (Processing syntax highlighting for pde and ino files)
- [asciidoc](https://github.com/asciidoc/vim-asciidoc) (AsciiDoc syntax highlighting for asciidoc, adoc and asc files)
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey) (AutoHotkey syntax highlighting for ahk and ahkl files)
- [blade](https://github.com/jwalton512/vim-blade) (Blade syntax highlighting for blade and blade.php files)
- [brewfile](https://github.com/bfontaine/Brewfile.vim)
- [c/c++](https://github.com/vim-jp/vim-cpp)
- [c/c++](https://github.com/vim-jp/vim-cpp) (C++ and C syntax highlighting for cpp, c++, cc, cp, cxx and 17 more files)
- [caddyfile](https://github.com/isobit/vim-caddyfile)
- [carp](https://github.com/hellerve/carp-vim)
- [carp](https://github.com/hellerve/carp-vim) (Syntax highlighting for carp files)
- [cjsx](https://github.com/mtscout6/vim-cjsx)
- [clojure](https://github.com/guns/vim-clojure-static)
- [cmake](https://github.com/pboettch/vim-cmake-syntax)
- [coffee-script](https://github.com/kchmck/vim-coffee-script)
- [cql](https://github.com/elubow/cql-vim)
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim)
- [crystal](https://github.com/rhysd/vim-crystal)
- [csv](https://github.com/chrisbra/csv.vim)
- [cucumber](https://github.com/tpope/vim-cucumber)
- [cue](https://github.com/mgrabovsky/vim-cuesheet)
- [dart](https://github.com/dart-lang/dart-vim-plugin)
- [dhall](https://github.com/vmchale/dhall-vim)
- [dlang](https://github.com/JesseKPhillips/d.vim)
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim)
- [elf](https://github.com/vim/vim/tree/master/runtime)
- [elixir](https://github.com/elixir-lang/vim-elixir)
- [elm](https://github.com/andys8/vim-elm-syntax)
- [emberscript](https://github.com/yalesov/vim-ember-script)
- [emblem](https://github.com/yalesov/vim-emblem)
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime)
- [fennel](https://github.com/bakpakin/fennel.vim)
- [ferm](https://github.com/vim-scripts/ferm.vim)
- [fish](https://github.com/georgewitteman/vim-fish)
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers)
- [forth](https://github.com/vim/vim/tree/master/runtime)
- [fsharp](https://github.com/ionide/Ionide-vim)
- [gdscript](https://github.com/calviken/vim-gdscript3)
- [git](https://github.com/tpope/vim-git)
- [glsl](https://github.com/tikhomirov/vim-glsl)
- [gmpl](https://github.com/maelvalais/gmpl.vim)
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting)
- [go](https://github.com/fatih/vim-go)
- [clojure](https://github.com/guns/vim-clojure-static) (Clojure syntax highlighting for clj, boot, cl2, cljc, cljs, cljs.hl, cljscm, cljx, hic and edn files)
- [cmake](https://github.com/pboettch/vim-cmake-syntax) (CMake syntax highlighting for cmake and cmake.in files)
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (CoffeeScript and Literate CoffeeScript syntax highlighting for coffee, cake, cjsx, iced, coffeekup, litcoffee and coffee.md files)
- [cpp-modern](https://github.com/bfrg/vim-cpp-modern)
- [cql](https://github.com/elubow/cql-vim) (Syntax highlighting for cql files)
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (Syntax highlighting for cry, cyl, lcry and lcyl files)
- [crystal](https://github.com/rhysd/vim-crystal) (Crystal and HTML+ECR syntax highlighting for cr and ecr files)
- [csv](https://github.com/chrisbra/csv.vim) (CSV syntax highlighting for csv, tsv and tab files)
- [cucumber](https://github.com/tpope/vim-cucumber) (Gherkin syntax highlighting for feature and story files)
- [cue](https://github.com/mgrabovsky/vim-cuesheet) (Syntax highlighting for cue files)
- [dart](https://github.com/dart-lang/dart-vim-plugin) (Dart syntax highlighting for dart and drt files)
- [dhall](https://github.com/vmchale/dhall-vim) (Dhall syntax highlighting for dhall files)
- [dlang](https://github.com/JesseKPhillips/d.vim) (D syntax highlighting for d, di, lst, dd, ddoc and sdl files)
- [docker-compose](https://github.com/ekalinin/Dockerfile.vim)
- [elixir](https://github.com/elixir-lang/vim-elixir) (Elixir and HTML+EEX syntax highlighting for ex, exs, eex, html.leex and leex files)
- [elm](https://github.com/andys8/vim-elm-syntax) (Elm syntax highlighting for elm files)
- [emberscript](https://github.com/yalesov/vim-ember-script) (EmberScript syntax highlighting for em and emberscript files)
- [emblem](https://github.com/yalesov/vim-emblem) (Syntax highlighting for emblem and em files)
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (Erlang syntax highlighting for erl, app.src, es, escript, hrl, xrl, yrl, app and yaws files)
- [fennel](https://github.com/bakpakin/fennel.vim) (Syntax highlighting for fnl files)
- [ferm](https://github.com/vim-scripts/ferm.vim) (Syntax highlighting for ferm files)
- [fish](https://github.com/blankname/vim-fish) (fish syntax highlighting for fish files)
- [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (Syntax highlighting for fbs files)
- [fsharp](https://github.com/ionide/Ionide-vim) (F# syntax highlighting for fs, fsi and fsx files)
- [gdscript](https://github.com/calviken/vim-gdscript3) (GDScript syntax highlighting for gd files)
- [git](https://github.com/tpope/vim-git) (Git Config syntax highlighting for gitconfig files)
- [gitignore](https://github.com/fszymanski/fzf-gitignore)
- [glsl](https://github.com/tikhomirov/vim-glsl) (GLSL syntax highlighting for glsl, fp, frag, frg, fs and 16 more files)
- [gmpl](https://github.com/maelvalais/gmpl.vim) (Syntax highlighting for mod files)
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (Gnuplot syntax highlighting for gp, gnu, gnuplot, p, plot, plt and gpi files)
- [go](https://github.com/fatih/vim-go) (Go syntax highlighting for go and tmpl files)
- [gradle](https://github.com/tfnico/vim-gradle)
- [graphql](https://github.com/jparise/vim-graphql)
- [groovy](https://github.com/vim/vim/tree/master/runtime)
- [grub](https://github.com/vim/vim/tree/master/runtime)
- [haml](https://github.com/sheerun/vim-haml)
- [handlebars](https://github.com/sheerun/vim-mustache-handlebars)
- [haproxy](https://github.com/CH-DanReif/haproxy.vim)
- [haskell](https://github.com/neovimhaskell/haskell-vim)
- [haxe](https://github.com/yaymukund/vim-haxe)
- [hcl](https://github.com/b4b4r07/vim-hcl)
- [graphql](https://github.com/jparise/vim-graphql) (GraphQL syntax highlighting for graphql, gql and graphqls files)
- [haml](https://github.com/tpope/vim-haml) (Haml syntax highlighting for haml, haml.deface, hamlc and hamlbars files)
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (Mustache and Handlebars syntax highlighting for mustache, hogan, hulk, hjs, handlebars, hbs, hdbs and hb files)
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (HAProxy syntax highlighting)
- [haskell](https://github.com/neovimhaskell/haskell-vim) (Haskell syntax highlighting for hs, hs-boot, hsc, bpk and hsig files)
- [haxe](https://github.com/yaymukund/vim-haxe) (Haxe syntax highlighting for hx and hxsl files)
- [hcl](https://github.com/b4b4r07/vim-hcl) (HCL syntax highlighting for hcl, nomad and workflow files)
- [helm](https://github.com/towolf/vim-helm)
- [help](https://github.com/neovim/neovim/tree/master/runtime)
- [hive](https://github.com/zebradil/hive.vim)
- [html5](https://github.com/othree/html5.vim)
- [i3](https://github.com/mboughaba/i3config.vim)
- [icalendar](https://github.com/chutzpah/icalendar.vim)
- [idris2](https://github.com/edwinb/idris2-vim)
- [idris](https://github.com/idris-hackers/idris-vim)
- [ion](https://github.com/vmchale/ion-vim)
- [hive](https://github.com/zebradil/hive.vim) (HiveQL syntax highlighting for q, hql and ql files)
- [html5](https://github.com/sheerun/html5.vim)
- [i3](https://github.com/mboughaba/i3config.vim) (Syntax highlighting for i3.config and i3config files)
- [icalendar](https://github.com/chutzpah/icalendar.vim) (Syntax highlighting for ics files)
- [idris2](https://github.com/edwinb/idris2-vim) (Syntax highlighting for idr, ipkg and lidr files)
- [idris](https://github.com/idris-hackers/idris-vim) (Idris syntax highlighting for idr and lidr files)
- [ion](https://github.com/vmchale/ion-vim) (Syntax highlighting for ion files)
- [javascript-sql](https://github.com/statico/vim-javascript-sql)
- [javascript](https://github.com/pangloss/vim-javascript)
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax)
- [jinja](https://github.com/lepture/vim-jinja)
- [jq](https://github.com/vito-c/jq.vim)
- [json5](https://github.com/GutenYe/json5.vim)
- [json](https://github.com/elzr/vim-json)
- [jsonnet](https://github.com/google/vim-jsonnet)
- [jst](https://github.com/briancollins/vim-jst)
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty)
- [julia](https://github.com/JuliaEditorSupport/julia-vim)
- [kotlin](https://github.com/udalov/kotlin-vim)
- [ledger](https://github.com/ledger/vim-ledger)
- [less](https://github.com/groenewege/vim-less)
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond)
- [livescript](https://github.com/gkz/vim-ls)
- [llvm](https://github.com/rhysd/vim-llvm)
- [log](https://github.com/MTDL9/vim-log-highlighting)
- [lua](https://github.com/tbastos/vim-lua)
- [m4](https://github.com/vim/vim/tree/master/runtime)
- [mako](https://github.com/sophacles/vim-bundle-mako)
- [markdown](https://github.com/plasticboy/vim-markdown)
- [mathematica](https://github.com/voldikss/vim-mma)
- [mdx](https://github.com/jxnblk/vim-mdx-js)
- [meson](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim)
- [moonscript](https://github.com/leafo/moonscript-vim)
- [murphi](https://github.com/vim/vim/tree/master/runtime)
- [nginx](https://github.com/chr4/nginx.vim)
- [nim](https://github.com/zah/nim.vim)
- [nix](https://github.com/LnL7/vim-nix)
- [objc](https://github.com/b4winckler/vim-objc)
- [ocaml](https://github.com/rgrinberg/vim-ocaml)
- [octave](https://github.com/McSinyx/vim-octave)
- [opencl](https://github.com/petRUShka/vim-opencl)
- [perl](https://github.com/vim-perl/vim-perl)
- [pgsql](https://github.com/lifepillar/pgsql.vim)
- [php](https://github.com/StanAngeloff/php.vim)
- [plantuml](https://github.com/aklt/plantuml-syntax)
- [pony](https://github.com/jakwings/vim-pony)
- [powershell](https://github.com/PProvost/vim-ps1)
- [protobuf](https://github.com/uarun/vim-protobuf)
- [pug](https://github.com/digitaltoad/vim-pug)
- [puppet](https://github.com/rodjek/vim-puppet)
- [purescript](https://github.com/purescript-contrib/purescript-vim)
- [javascript](https://github.com/pangloss/vim-javascript) (JavaScript syntax highlighting for js, bones, cjs, es, es6 and 17 more files)
- [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (Syntax highlighting for jenkinsfile and Jenkinsfile files)
- [jq](https://github.com/vito-c/jq.vim) (JSONiq syntax highlighting for jq files)
- [json5](https://github.com/GutenYe/json5.vim) (JSON5 syntax highlighting for json5 files)
- [json](https://github.com/elzr/vim-json) (JSON syntax highlighting for json, avsc, geojson, gltf, har and 13 more files)
- [jsonc](https://github.com/neoclide/jsonc.vim) (Syntax highlighting for cjson and jsonc files)
- [jsonnet](https://github.com/google/vim-jsonnet) (Jsonnet syntax highlighting for jsonnet and libsonnet files)
- [jst](https://github.com/briancollins/vim-jst) (EJS syntax highlighting for ejs, ect and jst files)
- [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (JSX syntax highlighting for jsx files)
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (Julia syntax highlighting for jl files)
- [kotlin](https://github.com/udalov/kotlin-vim) (Kotlin syntax highlighting for kt, ktm and kts files)
- [ledger](https://github.com/ledger/vim-ledger) (Syntax highlighting for ldg, ledger and journal files)
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (LilyPond syntax highlighting for ly and ily files)
- [livescript](https://github.com/gkz/vim-ls) (LiveScript syntax highlighting for ls files)
- [llvm](https://github.com/rhysd/vim-llvm) (LLVM syntax highlighting for ll and td files)
- [log](https://github.com/MTDL9/vim-log-highlighting) (Syntax highlighting for log and LOG files)
- [lua](https://github.com/tbastos/vim-lua) (Lua syntax highlighting for lua, fcgi, nse, p8, rbxs, rockspec and wlua files)
- [mako](https://github.com/sophacles/vim-bundle-mako) (Mako syntax highlighting for mako and mao files)
- [markdown](https://github.com/plasticboy/vim-markdown) (Markdown syntax highlighting for md, markdown, mdown, mdwn, mkd, mkdn, mkdown, ronn and workbook files)
- [mathematica](https://github.com/voldikss/vim-mma) (Mathematica syntax highlighting for mathematica, cdf, m, ma, mt and 6 more files)
- [mdx](https://github.com/jxnblk/vim-mdx-js) (Syntax highlighting for mdx files)
- [meson](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim) (Meson syntax highlighting for wrap files)
- [mint](https://github.com/IrenejMarc/vim-mint) (Syntax highlighting for mint files)
- [moonscript](https://github.com/leafo/moonscript-vim) (MoonScript syntax highlighting for moon files)
- [nginx](https://github.com/chr4/nginx.vim) (Nginx syntax highlighting for nginx, nginxconf and vhost files)
- [nim](https://github.com/zah/nim.vim) (Nim syntax highlighting for nim, nim.cfg, nimble, nimrod and nims files)
- [nix](https://github.com/LnL7/vim-nix) (Nix syntax highlighting for nix files)
- [objc](https://github.com/b4winckler/vim-objc) (Objective-C syntax highlighting for m and h files)
- [ocaml](https://github.com/rgrinberg/vim-ocaml) (OCaml syntax highlighting for ml, eliom, eliomi, ml4, mli and 13 more files)
- [octave](https://github.com/McSinyx/vim-octave) (Syntax highlighting for oct and m files)
- [odin](https://github.com/Tetralux/odin.vim) (Odin syntax highlighting for odin files)
- [opencl](https://github.com/petRUShka/vim-opencl) (OpenCL syntax highlighting for cl and opencl files)
- [perl](https://github.com/vim-perl/vim-perl) (Perl syntax highlighting for pl, al, cgi, fcgi, perl and 12 more files)
- [pest](https://github.com/pest-parser/pest.vim) (Syntax highlighting for pest files)
- [pgsql](https://github.com/lifepillar/pgsql.vim) (PLpgSQL syntax highlighting for pgsql files)
- [php](https://github.com/StanAngeloff/php.vim) (PHP syntax highlighting for php, aw, ctp, fcgi, inc and 7 more files)
- [plantuml](https://github.com/aklt/plantuml-syntax) (PlantUML syntax highlighting for puml, iuml, plantuml, uml and pu files)
- [pony](https://github.com/jakwings/vim-pony) (Pony syntax highlighting for pony files)
- [powershell](https://github.com/PProvost/vim-ps1) (PowerShell syntax highlighting for ps1, psd1, psm1, pssc and ps1xml files)
- [protobuf](https://github.com/uarun/vim-protobuf) (Protocol Buffer syntax highlighting for proto files)
- [pug](https://github.com/digitaltoad/vim-pug) (Pug syntax highlighting for jade and pug files)
- [puppet](https://github.com/rodjek/vim-puppet) (Puppet syntax highlighting for pp and epp files)
- [purescript](https://github.com/purescript-contrib/purescript-vim) (PureScript syntax highlighting for purs files)
- [python-compiler](https://github.com/aliev/vim-compiler-python)
- [python-indent](https://github.com/Vimjas/vim-python-pep8-indent)
- [python](https://github.com/vim-python/python-syntax)
- [qmake](https://github.com/artoj/qmake-syntax-vim)
- [qml](https://github.com/peterhoeg/vim-qml)
- [r-lang](https://github.com/vim-scripts/R.vim)
- [racket](https://github.com/wlangstroth/vim-racket)
- [ragel](https://github.com/jneen/ragel.vim)
- [raku](https://github.com/Raku/vim-raku)
- [raml](https://github.com/IN3D/vim-raml)
- [razor](https://github.com/adamclerk/vim-razor)
- [reason](https://github.com/reasonml-editor/vim-reason-plus)
- [requirements](https://github.com/raimon49/requirements.txt.vim)
- [python](https://github.com/vim-python/python-syntax) (Python syntax highlighting for py, cgi, fcgi, gyp, gypi and 14 more files)
- [qmake](https://github.com/artoj/qmake-syntax-vim) (QMake syntax highlighting for pro and pri files)
- [qml](https://github.com/peterhoeg/vim-qml) (QML syntax highlighting for qml and qbs files)
- [r-lang](https://github.com/vim-scripts/R.vim) (R syntax highlighting for r, rsx, s, S and rd files)
- [racket](https://github.com/wlangstroth/vim-racket) (Racket syntax highlighting for rkt, rktd, rktl and scrbl files)
- [ragel](https://github.com/jneen/ragel.vim) (Ragel syntax highlighting for rl files)
- [raku](https://github.com/Raku/vim-raku) (Raku syntax highlighting for 6pl, 6pm, nqp, p6, p6l and 12 more files)
- [raml](https://github.com/IN3D/vim-raml) (RAML syntax highlighting for raml files)
- [razor](https://github.com/adamclerk/vim-razor) (HTML+Razor syntax highlighting for cshtml and razor files)
- [reason](https://github.com/reasonml-editor/vim-reason-plus) (Reason syntax highlighting for re and rei files)
- [requirements](https://github.com/raimon49/requirements.txt.vim) (Syntax highlighting for pip files)
- [rspec](https://github.com/keith/rspec.vim)
- [rst](https://github.com/marshallward/vim-restructuredtext)
- [ruby](https://github.com/vim-ruby/vim-ruby)
- [rust](https://github.com/rust-lang/rust.vim)
- [sbt](https://github.com/derekwyatt/vim-sbt)
- [scala](https://github.com/derekwyatt/vim-scala)
- [scss](https://github.com/cakebaker/scss-syntax.vim)
- [sh](https://github.com/arzg/vim-sh)
- [slim](https://github.com/slim-template/vim-slim)
- [slime](https://github.com/slime-lang/vim-slime-syntax)
- [smt2](https://github.com/bohlender/vim-smt2)
- [solidity](https://github.com/tomlion/vim-solidity)
- [stylus](https://github.com/wavded/vim-stylus)
- [svelte](https://github.com/evanleck/vim-svelte/tree/main)
- [rst](https://github.com/marshallward/vim-restructuredtext) (reStructuredText syntax highlighting for rst, rest, rest.txt and rst.txt files)
- [ruby](https://github.com/vim-ruby/vim-ruby) (Ruby and HTML+ERB syntax highlighting for rb, builder, eye, fcgi, gemspec and 25 more files)
- [rust](https://github.com/rust-lang/rust.vim) (Rust syntax highlighting for rs and rs.in files)
- [scala](https://github.com/derekwyatt/vim-scala) (Scala syntax highlighting for scala, kojo and sc files)
- [scss](https://github.com/cakebaker/scss-syntax.vim) (SCSS syntax highlighting for scss files)
- [sh](https://github.com/arzg/vim-sh) (Shell syntax highlighting for sh, bash, bats, cgi, command and 7 more files)
- [slim](https://github.com/slim-template/vim-slim) (Slim syntax highlighting for slim files)
- [slime](https://github.com/slime-lang/vim-slime-syntax) (Syntax highlighting for slime files)
- [smt2](https://github.com/bohlender/vim-smt2) (SMT syntax highlighting for smt2 and smt files)
- [solidity](https://github.com/tomlion/vim-solidity) (Solidity syntax highlighting for sol files)
- [stylus](https://github.com/wavded/vim-stylus) (Stylus syntax highlighting for styl and stylus files)
- [svelte](https://github.com/evanleck/vim-svelte/tree/main) (Svelte syntax highlighting for svelte files)
- [svg-indent](https://github.com/jasonshell/vim-svg-indent)
- [svg](https://github.com/vim-scripts/svg.vim)
- [swift](https://github.com/keith/swift.vim)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax)
- [terraform](https://github.com/hashivim/vim-terraform)
- [textile](https://github.com/timcharper/textile.vim)
- [thrift](https://github.com/solarnz/thrift.vim)
- [svg](https://github.com/vim-scripts/svg.vim) (SVG syntax highlighting for svg files)
- [swift](https://github.com/keith/swift.vim) (Swift syntax highlighting for swift files)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (Syntax highlighting for sxhkdrc files)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (Syntax highlighting for automount, dnssd, link, mount, netdev and 9 more files)
- [terraform](https://github.com/hashivim/vim-terraform) (Syntax highlighting for tf and tfvars files)
- [textile](https://github.com/timcharper/textile.vim) (Textile syntax highlighting for textile files)
- [thrift](https://github.com/solarnz/thrift.vim) (Thrift syntax highlighting for thrift files)
- [tmux](https://github.com/ericpruitt/tmux.vim/tree/master/vim)
- [toml](https://github.com/cespare/vim-toml)
- [tptp](https://github.com/c-cube/vim-tptp)
- [trasys](https://github.com/vim/vim/tree/master/runtime)
- [twig](https://github.com/lumiliet/vim-twig)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim)
- [unison](https://github.com/unisonweb/unison/tree/trunk/editor-support/vim)
- [v](https://github.com/ollykel/v-vim)
- [vala](https://github.com/arrufat/vala.vim)
- [vbnet](https://github.com/vim-scripts/vbnet.vim)
- [vcl](https://github.com/smerrill/vcl-vim-plugin)
- [velocity](https://github.com/lepture/vim-velocity)
- [visual-basic](https://github.com/vim/vim/tree/master/runtime)
- [vmasm](https://github.com/vim/vim/tree/master/runtime)
- [vue](https://github.com/posva/vim-vue)
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax)
- [xml](https://github.com/amadeus/vim-xml)
- [xsl](https://github.com/vim-scripts/XSLT-syntax)
- [yaml](https://github.com/vim/vim/tree/df44a27b53586fccfc6a3aedc89061fdd9a515ff/runtime)
- [yard](https://github.com/sheerun/vim-yardoc)
- [zephir](https://github.com/xwsoul/vim-zephir)
- [zig](https://github.com/ziglang/zig.vim)
- [toml](https://github.com/cespare/vim-toml) (TOML syntax highlighting for toml files)
- [tptp](https://github.com/c-cube/vim-tptp) (Syntax highlighting for p, tptp and ax files)
- [twig](https://github.com/lumiliet/vim-twig) (Twig syntax highlighting for twig and xml.twig files)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (TypeScript and TSX syntax highlighting for ts and tsx files)
- [unison](https://github.com/unisonweb/unison/tree/trunk/editor-support/vim) (Syntax highlighting for u and uu files)
- [v](https://github.com/ollykel/v-vim) (V syntax highlighting for v, vv and vsh files)
- [vala](https://github.com/arrufat/vala.vim) (Vala syntax highlighting for vala, vapi and valadoc files)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (Visual Basic .NET syntax highlighting for vb and vbhtml files)
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (VCL syntax highlighting for vcl files)
- [velocity](https://github.com/lepture/vim-velocity) (Syntax highlighting for vm files)
- [vue](https://github.com/posva/vim-vue) (Vue syntax highlighting for vue and wpy files)
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) (Syntax highlighting for xdc files)
- [xml](https://github.com/amadeus/vim-xml) (XML syntax highlighting for xml, adml, admx, ant, axml and 94 more files)
- [xsl](https://github.com/vim-scripts/XSLT-syntax) (XSLT syntax highlighting for xslt and xsl files)
- [yard](https://github.com/noprompt/vim-yardoc)
- [zephir](https://github.com/xwsoul/vim-zephir) (Zephir syntax highlighting for zep files)
- [zig](https://github.com/ziglang/zig.vim) (Zig syntax highlighting for zir, zig and zir files)
- [zinit](https://github.com/zinit-zsh/zplugin-vim-syntax)
<!--/Language Packs-->
@@ -245,17 +210,27 @@ You can either wait for new patch release with updates or run `make` by yourself
## Troubleshooting
Please make sure you have `syntax on` in your `.vimrc` (or use something like [sheerun/vimrc](https://github.com/sheerun/vimrc))
Please make sure you have `set nocompatible` in your `.vimrc` (or use something like [sheerun/vimrc](https://github.com/sheerun/vimrc))
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
**Please declare this variable before polyglot is loaded (at the top of .vimrc)**
```vim
let g:polyglot_disabled = ['css']
let g:polyglot_disabled = ['markdown']
```
*Please declare this variable before polyglot is loaded (at the top of .vimrc)*
The list of available languages to disable is shown above.
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are loaded lazily, on demand.
If you wish to use filetype detection by Vim Polyglot but you'd like to use your own syntax-highlighting plugin, you can append `.plugin` to disabled entry, like below. Disabling Vim Polyglot filetype plugin won't disable native Vim filetype plugin.
```vim
let g:polyglot_disabled = ['markdown.plugin']
```
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are lazily loaded only when they are really needed.
## Autoindent
Vim Polyglot tries to automatically detect indentation settings (just like vim-sleuth). If this feature is not working for you for some reason, please file an issue and disable it temporarily with:
@@ -263,6 +238,15 @@ Vim Polyglot tries to automatically detect indentation settings (just like vim-s
let g:polyglot_disabled = ['autoindent']
```
## Default settings
Vim Polyglot includes vim-sensible plugin, which is usually necessary for editing any language. This can be disabled with:
```vim
let g:polyglot_disabled = ['sensible']
```
## Contributing
Language packs are periodically updated using automated `scripts/build` script.

View File

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

View File

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

View File

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

13
after/ftplugin/html.vim Normal file
View File

@@ -0,0 +1,13 @@
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Maintainer: othree <othree@gmail.com>
" URL: http://github.com/othree/html5.vim
" Last Change: 2014-05-02
" License: MIT
" Changes: Add - to keyword
" setlocal iskeyword+=-
setlocal commentstring=<!--%s-->

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
if has_key(g:polyglot_is_disabled, 'javascript')
finish
endif
" Vim filetype plugin file
" Language: JavaScript
@@ -12,5 +14,3 @@ if exists('b:undo_ftplugin')
else
let b:undo_ftplugin = 'setlocal iskeyword< suffixesadd<'
endif
endif

View File

@@ -1,9 +1,9 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
if get(g:, 'vim_jsx_pretty_disable_js', 0)
finish
endif
source <sfile>:h/jsx.vim
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim ftplugin file
@@ -31,5 +33,3 @@ augroup jsx_comment
augroup end
setlocal suffixesadd+=.jsx
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'llvm') == -1
if has_key(g:polyglot_is_disabled, 'llvm')
finish
endif
" Copyright (c) 2018 rhysd
"
@@ -483,5 +485,3 @@ endfunction
if !exists(':LLI')
command! -buffer -nargs=? -bar -complete=file LLI call <SID>run_lli(<f-args>)
endif
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
" modified from html.vim
" For matchit plugin
@@ -28,5 +30,3 @@ augroup jsx_comment
augroup end
setlocal suffixesadd+=.tsx
endif

View File

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

1064
after/indent/html.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
if get(g:, 'vim_jsx_pretty_disable_js', 0)
finish
endif
source <sfile>:h/jsx.vim

View File

@@ -0,0 +1,46 @@
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('*GetJavascriptGraphQLIndent') && !empty(&indentexpr)
finish
endif
runtime! indent/graphql.vim
" Set the indentexpr with our own version that will call GetGraphQLIndent when
" we're inside of a GraphQL string and otherwise defer to the base function.
let b:indentexpr_base = &indentexpr
setlocal indentexpr=GetJavascriptGraphQLIndent()
function GetJavascriptGraphQLIndent()
let l:stack = map(synstack(v:lnum, 1), "synIDattr(v:val, 'name')")
if get(l:stack, 0, '') ==# 'graphqlTemplateString'
return GetGraphQLIndent()
endif
return eval(b:indentexpr_base)
endfunction

View File

@@ -1,9 +1,3 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if get(g:, 'vim_jsx_pretty_disable_js', 0)
finish
endif
source <sfile>:h/jsx.vim
endif
" Polyglot metafile
source <sfile>:h/javascript-1.vim
source <sfile>:h/javascript-2.vim

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim indent file
@@ -29,5 +31,3 @@ endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
endif

View File

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

46
after/indent/php.vim Normal file
View File

@@ -0,0 +1,46 @@
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('*GetPHPGraphQLIndent') && !empty(&indentexpr)
finish
endif
runtime! indent/graphql.vim
" Set the indentexpr with our own version that will call GetGraphQLIndent when
" we're inside of a GraphQL string and otherwise defer to the base function.
let b:indentexpr_base = &indentexpr
setlocal indentexpr=GetPHPGraphQLIndent()
function GetPHPGraphQLIndent()
let l:stack = map(synstack(v:lnum, 1), "synIDattr(v:val, 'name')")
if get(l:stack, 0, '') ==# 'phpRegion' && count(l:stack, 'graphqlFold') > 0
return GetGraphQLIndent()
endif
return eval(b:indentexpr_base)
endfunction

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim indent file
@@ -36,5 +38,3 @@ endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
endif

View File

@@ -0,0 +1,46 @@
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('*GetTypescriptGraphQLIndent') && !empty(&indentexpr)
finish
endif
runtime! indent/graphql.vim
" Set the indentexpr with our own version that will call GetGraphQLIndent when
" we're inside of a GraphQL string and otherwise defer to the base function.
let b:indentexpr_base = &indentexpr
setlocal indentexpr=GetTypescriptGraphQLIndent()
function GetTypescriptGraphQLIndent()
let l:stack = map(synstack(v:lnum, 1), "synIDattr(v:val, 'name')")
if get(l:stack, 0, '') ==# 'graphqlTemplateString'
return GetGraphQLIndent()
endif
return eval(b:indentexpr_base)
endfunction

View File

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

66
after/syntax/c.vim Normal file
View File

@@ -0,0 +1,66 @@
if has_key(g:polyglot_is_disabled, 'cpp-modern')
finish
endif
" ==============================================================================
" Vim syntax file
" Language: C Additions
" Original Author: Mikhail Wolfson <mywolfson@gmail.com>
" Maintainer: bfrg <https://github.com/bfrg>
" Website: https://github.com/bfrg/vim-cpp-modern
" Last Change: Nov 23, 2020
"
" This syntax file is based on:
" https://github.com/octol/vim-cpp-enhanced-highlight
" ==============================================================================
" Highlight additional keywords in the comments
syn keyword cTodo contained BUG NOTE
" Highlight function names
if !get(g:, 'cpp_no_function_highlight', 0)
syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cParen,cCppParen
hi def link cUserFunction Function
endif
" Highlight struct/class member variables
if get(g:, 'cpp_member_highlight', 0)
syn match cMemberAccess "\.\|->" nextgroup=cStructMember,cppTemplateKeyword
syn match cStructMember "\<\h\w*\>\%((\|<\)\@!" contained
syn cluster cParenGroup add=cStructMember
syn cluster cPreProcGroup add=cStructMember
syn cluster cMultiGroup add=cStructMember
hi def link cStructMember Identifier
if &filetype ==# 'cpp'
syn keyword cppTemplateKeyword template
hi def link cppTemplateKeyword cppStructure
endif
endif
" Common ANSI-standard Names
syn keyword cAnsiName
\ PRId8 PRIi16 PRIo32 PRIu64 PRId16 PRIi32 PRIo64 PRIuLEAST8 PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16 PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32 PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64 PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8 PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16 PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32 PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64 PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR PRIdFAST64 PRIiMAX PRIoPTR PRIx8 PRIdMAX PRIiPTR PRIu8 PRIx16 PRIdPTR PRIo8 PRIu16 PRIx32 PRIi8 PRIo16 PRIu32 PRIx64 PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32 PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64 PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8 PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16 PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32 PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64 PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8 PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16 PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32 PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64 PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8 PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16 PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32 PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64 PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8 PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16 PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32 PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64 PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR PRIXMAX SCNiFAST8 SCNuLEAST8 PRIXPTR SCNiFAST16 SCNuLEAST16 STDC CX_LIMITED_RANGE STDC FENV_ACCESS STDC FP_CONTRACT
\ errno environ and bitor not_eq xor and_eq compl or xor_eq bitand not or_eq
" Booleans
syn keyword cBoolean true false TRUE FALSE
" Default highlighting
hi def link cBoolean Boolean
hi def link cAnsiName Identifier
" Highlight all standard C keywords as Statement
" This is very similar to what other IDEs and editors do
if get(g:, 'cpp_simple_highlight', 0)
hi! def link cStorageClass Statement
hi! def link cStructure Statement
hi! def link cTypedef Statement
hi! def link cLabel Statement
endif

View File

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

212
after/syntax/cpp.vim Normal file
View File

@@ -0,0 +1,212 @@
if has_key(g:polyglot_is_disabled, 'cpp-modern')
finish
endif
" ==============================================================================
" Vim syntax file
" Language: C++ (Standard library including C++11/14/17/20)
" Original Author: Jon Haggblad <https://github.com/octol>
" Maintainer: bfrg <https://github.com/bfrg>
" Website: https://github.com/bfrg/vim-cpp-modern
" Last Change: Nov 23, 2020
"
" This syntax file is based on:
" https://github.com/octol/vim-cpp-enhanced-highlight
" ==============================================================================
" C++ attributes {{{1
if get(g:, 'cpp_attributes_highlight', 0)
syntax region cppAttribute matchgroup=cppAttributeBrackets start='\[\[' end=']]' contains=cString
hi def link cppAttribute Macro
hi def link cppAttributeBrackets Identifier
endif
" Standard library {{{1
syntax keyword cppSTLdefine
\ MB_CUR_MAX MB_LEN_MAX WCHAR_MAX WCHAR_MIN WEOF __STDC_UTF_16__ __STDC_UTF_32__
syntax keyword cppSTLnamespace
\ std experimental rel_ops
syntax keyword cppSTLconstant
\ badbit digits digits10 eofbit failbit goodbit has_denorm has_denorm_loss has_infinity has_quiet_NaN has_signaling_NaN is_bounded is_exact is_iec559 is_integer is_modulo is_signed is_specialized max_exponent max_exponent10 min_exponent min_exponent10 npos radix round_style tinyness_before traps
syntax keyword cppSTLvariable
\ cerr cin clog cout wcerr wcin wclog wcout nothrow
syntax keyword cppSTLexception
\ bad_alloc bad_exception bad_typeid bad_cast domain_error exception failure invalid_argument length_error logic_error out_of_range overflow_error range_error runtime_error underflow_error
syntax keyword cppSTLios
\ endl ends flush resetiosflags setbase setfill setiosflags setprecision setw ws
syntax keyword cppSTLios
\ boolalpha dec defaultfloat fixed hex hexfloat internal left noboolalpha noshowbase noshowpoint noshowpos noskipws nounitbuf nouppercase oct right scientific showbase showpoint showpos skipws unitbuf uppercase
syntax keyword cppSTLtype
\ fmtflags iostate openmode Init allocator auto_ptr basic_filebuf basic_fstream basic_ifstream basic_ios basic_iostream basic_istream basic_istringstream basic_ofstream basic_ostream basic_ostringstream basic_streambuf basic_string basic_stringbuf basic_stringstream binary_compose binder1st binder2nd bitset char_traits char_type const_mem_fun1_t const_mem_fun_ref1_t const_mem_fun_ref_t const_mem_fun_t const_pointer const_reference container_type deque difference_type div_t event_callback filebuf first_type float_denorm_style float_round_style fpos fstream gslice_array ifstream imaxdiv_t indirect_array int_type ios ios_base iostream istream istringstream istrstream iterator_category iterator_traits key_compare key_type ldiv_t list lldiv_t map mapped_type mask_array mbstate_t mem_fun1_t mem_fun_ref1_t mem_fun_ref_t mem_fun_t multimap multiset nothrow_t numeric_limits off_type ofstream ostream ostringstream ostrstream pair pointer pointer_to_binary_function pointer_to_unary_function pos_type priority_queue queue reference second_type seekdir sequence_buffer set size_type slice_array stack state_type stream streambuf streamoff streampos streamsize string stringbuf stringstream strstream strstreambuf temporary_buffer test_type tm traits_type type_info u16string u32string unary_compose unary_negate valarray value_compare value_type vector wfilebuf wfstream wifstream wios wiostream wistream wistringstream wofstream wostream wostringstream wstreambuf wstreampos wstring wstringbuf wstringstream codecvt codecvt_base codecvt_byname collate collate_byname ctype ctype_base ctype_byname locale messages messages_base messages_byname money_base money_get money_put moneypunct moneypunct_byname num_get num_put numpunct numpunct_byname time_base time_get time_get_byname time_put time_put_byname binary_function binary_negate bit_and bit_not bit_or divides equal_to greater greater_equal less less_equal logical_and logical_not logical_or minus modulus multiplies negate not_equal_to plus unary_function unary_negate bidirectional_iterator_tag forward_iterator_tag input_iterator_tag output_iterator_tag random_access_iterator_tag
syntax keyword cppSTLtypedef
\ time_t sig_atomic_t wctrans_t wctype_t wint_t
syntax keyword cppSTLiterator
\ back_insert_iterator bidirectional_iterator const_iterator const_reverse_iterator forward_iterator front_insert_iterator input_iterator insert_iterator istream_iterator istreambuf_iterator iterator ostream_iterator ostreambuf_iterator output_iterator random_access_iterator raw_storage_iterator reverse_bidirectional_iterator reverse_iterator
" Function templates that are called with template parameters
syntax keyword cppSTLfunction
\ use_facet has_facet get
" Some of these keywords can be highlighted as cppSTLios or cppSTLconstant
" syntax keyword cppSTLconstant
" \ adjustfield app ate basefield binary floatfield in out trunc boolalpha dec fixed hex internal left oct right scientific showbase showpoint showpos skipws unitbuf uppercase
" C++11 extensions {{{1
if !exists('cpp_no_cpp11')
syntax keyword cppStatement nullptr
syntax keyword cppType char16_t char32_t
syntax keyword cppSTLnamespace chrono this_thread
syntax keyword cppSTLtype
\ array atomic atomic_bool atomic_char atomic_flag atomic_int atomic_llong atomic_long atomic_schar atomic_short atomic_uchar atomic_uint atomic_ullong atomic_ulong atomic_ushort duration duration_values high_resolution_clock hours microseconds milliseconds minutes nanoseconds seconds steady_clock system_clock time_point treat_as_floating_point condition_variable exception_ptr nested_exception hash is_bind_expression is_placeholder reference_wrapper forward_list future packaged_task promise shared_future initializer_list codecvt_mode codecvt_utf16 codecvt_utf8 codecvt_utf8_utf16 wbuffer_convert wstring_convert allocator_traits allocator_type default_delete enable_shared_from_this is_always_equal owner_less pointer_safety pointer_traits propagate_on_container_copy_assignment propagate_on_container_move_assignment propagate_on_container_swap rebind_alloc rebind_traits shared_ptr unique_ptr uses_allocator void_pointer const_void_pointer weak_ptr condition_variable_any lock_guard mutex once_flag recursive_mutex recursive_timed_mutex timed_mutex unique_lock bernoulli_distribution binomial_distribution cauchy_distribution chi_squared_distribution default_random_engine discard_block_engine discrete_distribution exponential_distribution extreme_value_distribution fisher_f_distribution gamma_distribution geometric_distribution independent_bits_engine knuth_b linear_congruential_engine lognormal_distribution mersenne_twister_engine minstd_rand minstd_rand0 mt19937 mt19937_64 negative_binomial_distribution normal_distribution piecewise_constant_distribution piecewise_linear_distribution poisson_distribution random_device ranlux24 ranlux24_base ranlux48 ranlux48_base seed_seq shuffle_order_engine student_t_distribution subtract_with_carry_engine uniform_int_distribution uniform_real_distribution weibull_distribution atto centi deca deci exa femto giga hecto kilo mega micro milli nano peta pico ratio ratio_add ratio_divide ratio_equal ratio_greater ratio_greater_equal ratio_less ratio_less_equal ratio_multiply ratio_not_equal ratio_subtract tera yocto yotta zepto zetta basic_regex match_results regex_traits sub_match syntax_option_type match_flag_type error_type scoped_allocator_adaptor outer_allocator_type inner_allocator_type error_code error_condition error_category is_error_code_enum is_error_condition_enum thread tuple tuple_size tuple_element type_index add_const add_cv add_lvalue_reference add_pointer add_rvalue_reference add_volatile aligned_storage aligned_union alignment_of common_type conditional decay enable_if extent false_type has_virtual_destructor integral_constant is_abstract is_arithmetic is_array is_assignable is_base_of is_class is_compound is_const is_constructible is_convertible is_copy_assignable is_copy_constructible is_default_constructible is_destructible is_empty is_enum is_floating_point is_function is_fundamental is_integral is_literal_type is_lvalue_reference is_member_function_pointer is_member_object_pointer is_member_pointer is_move_assignable is_move_constructible is_nothrow_assignable is_nothrow_constructible is_nothrow_copy_assignable is_nothrow_copy_constructible is_nothrow_default_constructible is_nothrow_destructible is_nothrow_move_assignable is_nothrow_move_constructible is_object is_pod is_pointer is_polymorphic is_reference is_rvalue_reference is_same is_scalar is_signed is_standard_layout is_trivial is_trivially_assignable is_trivially_constructible is_trivially_copy_assignable is_trivially_copy_constructible is_trivially_copyable is_trivially_default_constructible is_trivially_destructible is_trivially_move_assignable is_trivially_move_constructible is_union is_unsigned is_void is_volatile make_signed make_unsigned rank remove_all_extents remove_const remove_cv remove_extent remove_pointer remove_reference remove_volatile result_of true_type underlying_type hasher key_equal unordered_map unordered_multimap unordered_multiset unordered_set function
syntax keyword cppSTLtypedef
\ atomic_char16_t atomic_char32_t atomic_int_fast16_t atomic_int_fast32_t atomic_int_fast64_t atomic_int_fast8_t atomic_int_least16_t atomic_int_least32_t atomic_int_least64_t atomic_int_least8_t atomic_intmax_t atomic_intptr_t atomic_ptrdiff_t atomic_size_t atomic_uint_fast16_t atomic_uint_fast32_t atomic_uint_fast64_t atomic_uint_fast8_t atomic_uint_least16_t atomic_uint_least32_t atomic_uint_least64_t atomic_uint_least8_t atomic_uintmax_t atomic_uintptr_t atomic_wchar_t nullptr_t max_align_t allocator_arg_t adopt_lock_t defer_lock_t try_to_lock_t piecewise_construct_t
syntax keyword cppSTLconstant max_digits10
syntax keyword cppSTLvariable
\ _1 _2 _3 _4 _5 _6 _7 _8 _9 defer_lock try_to_lock adopt_lock allocator_arg
syntax keyword cppSTLdefine
\ math_errhandling FLT_EVAL_METHOD FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO HUGE_VALF HUGE_VALL INFINITY MATH_ERREXCEPT MATH_ERRNO NAN
syntax keyword cppSTLenum
\ memory_order future_status future_errc launch io_errc cv_status errc
syntax keyword cppSTLfunction
\ duration_cast time_point_cast mem_fn const_pointer_cast dynamic_pointer_cast static_pointer_cast allocate_shared make_shared isblank generate_canonical forward_as_tuple make_tuple tie tuple_cat declval forward move move_if_noexcept
syntax keyword cppSTLexception
\ bad_function_call future_error regex_error system_error bad_weak_ptr bad_array_new_length
" syntax keyword cppSTLiterator contained
syntax keyword cppSTLiterator
\ move_iterator regex_iterator regex_token_iterator const_local_iterator local_iterator
" Note: ignore is also a function
syntax match cppSTLvariable "\<ignore\>(\@!"
endif
" C++14 extensions {{{1
if !exists('cpp_no_cpp14')
syntax keyword cppSTLnamespace literals chrono_literals string_literals
syntax keyword cppSTLfunction make_unique
syntax keyword cppSTLtype
\ index_sequence index_sequence_for integer_sequence make_index_sequence make_integer_sequence shared_lock shared_timed_mutex is_null_pointer
syntax keyword cppSTLtypedef
\ tuple_element_t add_const_t add_cv_t add_lvalue_reference_t add_pointer_t add_rvalue_reference_t add_volatile_t aligned_storage_t aligned_union_t common_type_t conditional_t decay_t enable_if_t make_signed_t make_unsigned_t remove_all_extents_t remove_const_t remove_cv_t remove_extent_t remove_pointer_t remove_reference_t remove_volatile_t result_of_t underlying_type_t
endif
" C++17 extensions {{{1
if !exists('cpp_no_cpp17')
syntax keyword cppSTLnamespace filesystem execution
syntax keyword cppSTLtype
\ any is_execution_policy parallel_policy parallel_unsequenced_policy sequenced_policy directory_entry directory_iterator file_status file_time_type path recursive_directory_iterator space_info default_order default_searcher boyer_moore_searcher boyer_moore_horspool_searcher memory_resource monotonic_buffer_resource polymorphic_allocator pool_options synchronized_pool_resource unsynchronized_pool_resource scoped_lock optional shared_mutex basic_string_view string_view u16string_view u32string_view wstring_view bool_constant conjunction disjunction has_unique_object_representations invoke_result is_aggregate is_callable is_invocable is_invocable_r is_nothrow_invocable is_nothrow_invocable_r is_nothrow_swappable is_nothrow_swappable_with is_nowthrow_callable is_swappable is_swappable_with negation node_type insert_return_type in_place_tag monostate variant variant_size variant_alternative
syntax keyword cppSTLtypedef
\ invoke_result_t default_order_t nullopt_t void_t in_place_t in_place_type_t in_place_index_t variant_alternative_t
syntax keyword cppSTLexception
\ bad_any_cast filesystem_error bad_optional_access bad_variant_access
syntax keyword cppSTLconstant
\ is_always_lock_free seq par par_unseq copy_symlinks auto_format create_hard_links create_symlinks directories_only follow_directory_symlink generic_format group_all group_exec group_read group_write native_format others_all others_exec others_read others_write overwrite_existing owner_all owner_exec owner_read owner_write preferred_separator recursive set_gid set_uid skip_existing skip_permission_denied skip_symlinks sticky_bit update_existing hardware_destructive_interference_size hardware_constructive_interference_size tuple_size_v nullopt alignment_of_v rank_v extent_v variant_npos variant_size_v
syntax keyword cppSTLbool
\ treat_as_floating_point_v is_execution_policy_v is_bind_expression_v is_placeholder_v is_error_code_enum_v is_error_condition_enum_v uses_allocator_v conjunction_v disjunction_v has_unique_object_representations_v has_virtual_destructor_v is_abstract_v is_aggregate_v is_arithmetic_v is_array_v is_assignable_v is_base_of_v is_callable_v is_class_v is_compound_v is_const_v is_constructible_v is_convertible_v is_copy_assignable_v is_copy_constructible_v is_default_constructible_v is_destructible_v is_empty_v is_enum_v is_floating_point_v is_function_v is_fundamental_v is_integral_v is_invocable_r_v is_invocable_v is_literal_type_v is_lvalue_reference_v is_member_function_pointer_v is_member_object_pointer_v is_member_pointer_v is_move_assignable_v is_move_constructible_v is_nothrow_assignable_v is_nothrow_constructible_v is_nothrow_copy_assignable_v is_nothrow_copy_constructible_v is_nothrow_default_constructible_v is_nothrow_destructible_v is_nothrow_invocable_r_v is_nothrow_invocable_v is_nothrow_move_assignable_v is_nothrow_move_constructible_v is_nothrow_swappable_v is_nothrow_swappable_with_v is_nowthrow_callable_v is_null_pointer_v is_object_v is_pod_v is_pointer_v is_polymorphic_v is_reference_v is_rvalue_reference_v is_same_v is_scalar_v is_signed_v is_standard_layout_v is_swappable_v is_swappable_with_v is_trivial_v is_trivially_assignable_v is_trivially_constructible_v is_trivially_copy_assignable_v is_trivially_copy_constructible_v is_trivially_copyable_v is_trivially_default_constructible_v is_trivially_destructible_v is_trivially_move_assignable_v is_trivially_move_constructible_v is_union_v is_unsigned_v is_void_v is_volatile_v negation_v
syntax keyword cppSTLfunction
\ reinterpret_pointer_cast make_from_tuple make_optional any_cast
syntax keyword cppSTLenum
\ copy_options directory_options file_type perm_options perms
" Note: There is std::filesystem::path::format and std::format() in <format>
syntax match cppSTLenum "\<format\>(\@!"
" Note: these can be both member objects and methods
syntax match cppSTLvariable "\<\%(capacity\|free\|available\)\>(\@!"
" Note: these keywords are very likely to coincide with user-defined variables
" syntax keyword cppSTLconstant
" \ all mask unknown replace add remove nofollow none not_found regular directory symlink block character fifo socket unknown
endif
" C++20 extensions {{{1
if !exists('cpp_no_cpp20')
syntax keyword cppSTLnamespace ranges views
syntax keyword cppSTLconstant dynamic_extent
syntax keyword cppSTLvariable default_sentinel unreachable_sentinel
syntax keyword cppSTLtype
\ atomic_ref endian weak_ordering strong_ordering partial_ordering weak_equality strong_equality common_comparison_category contract_violation coroutine_traits coroutine_handle noop_coroutine_handle noop_coroutine_promise suspend_never suspend_always remove_cvref is_bounded_array is_layout_compatible is_unbounded_array is_nothrow_convertible has_strong_structural_equality is_pointer_interconvertible_base_of unwrap_reference unwrap_ref_decay basic_common_reference common_reference dangling ref_view filter_view transform_view iota_view join_view empty_view single_view split_view common_view reverse_view view_interface span basic_syncbuf basic_osyncstream syncbuf wsyncbuf osyncstream wosyncstream jthread latch barrier stop_token stop_source stop_callback counting_semaphore binary_semaphore source_location compare_three_way_result contiguous_iterator_tag incrementable_traits indirectly_readable_traits move_sentinel common_iterator counted_iterator projected type_identity
syntax keyword cppSTLtypedef
\ common_comparison_category_t remove_cvref_t unwrap_reference_t unwrap_ref_decay_t common_reference_t iterator_t sentinel_t safe_iterator_t safe_subrange_t compare_three_way_result_t iter_value_t iter_reference_t iter_difference_t iter_rvalue_reference_t iter_common_reference_t default_sentinel_t unreachable_sentinel_t indirect_result_t type_identity_t
syntax keyword cppSTLfunction
\ make_unique_default_init make_shared_default_init allocate_shared_default_init uses_allocator_construction_args make_obj_using_allocator is_corresponding_member subspan in_range is_pointer_interconvertible_with_class
syntax keyword cppSTLbool
\ is_bounded_array_v is_layout_compatible_v is_unbounded_array_v is_nothrow_convertible_v has_strong_structural_equality_v is_pointer_interconvertible_base_of_v disable_sized_sentinel_for disable_sized_range enable_borrowed_range enable_view
syntax keyword cppSTLconcept
\ assignable_from boolean common_reference_with common_with constructible_from convertible_to copy_constructible copyable default_constructible derived_from destructible equality_comparable equality_comparable_with equivalence_relation floating_point integral invocable movable move_constructible predicate regular regular_invocable relation same_as semiregular signed_integral strict_weak_order swappable swappable_with totally_ordered totally_ordered_with unsigned_integral default_initializable range sized_range view input_range output_range forward_range bidirectional_range random_access_range contiguous_range common_range viewable_range three_way_comparable three_way_comparable_with indirectly_readable indirectly_writable weakly_incrementable incrementable input_or_output_iterator sentinel_for sized_sentinel_for input_iterator output_iterator forward_iterator bidirectional_iterator random_access_iterator contiguous_iterator indirectly_unary_invocable indirectly_regular_unary_invocable indirect_unary_predicate indirect_binary_predicate indirect_equivalence_relation indirect_strict_weak_order indirectly_movable indirectly_movable_storable indirectly_copyable indirectly_copyable_storable indirectly_swappable indirectly_comparable permutable mergeable sortable
endif
" Boost {{{1
if !exists('cpp_no_boost')
syntax keyword cppSTLnamespace boost
syntax keyword cppSTLfunction lexical_cast
endif
" }}}
" Default highlighting
hi def link cppSTLbool Boolean
hi def link cppStatement Statement
hi def link cppSTLfunction Function
hi def link cppSTLdefine Constant
hi def link cppSTLconstant Constant
hi def link cppSTLnamespace Constant
hi def link cppSTLexception Type
hi def link cppSTLiterator Type
hi def link cppSTLtype Type
hi def link cppSTLtypedef Typedef
hi def link cppSTLenum Typedef
hi def link cppSTLios Function
hi def link cppSTLconcept Typedef
hi def link cppSTLvariable Identifier
" The keywords {inline, virtual, explicit, export, override, final} are
" standard C++ keywords and NOT types!
hi! def link cppModifier Statement
" Highlight all standard C++ keywords as Statement
if get(g:, 'cpp_simple_highlight', 0)
hi! def link cppStructure Statement
hi! def link cppExceptions Statement
hi! def link cppStorageClass Statement
endif

View File

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

View File

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

View File

@@ -1,16 +1,200 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Vim syntax file
" Language: HTML (version 5.1)
" Last Change: 2017 Feb 15
" SVG (SVG 1.1 Second Edition)
" MathML (MathML 3.0 Second Edition)
" Last Change: 2017 Mar 07
" License: Public domain
" (but let me know if you like :) )
"
" Note: This file just add new tags from HTML 5
" and don't replace default html.vim syntax file
"
" Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com )
" Changes: update to Draft 2016 Jan 13
" add microdata Attributes
" Maintainer: Rodrigo Machado <rcmachado@gmail.com>
" URL: http://rm.blog.br/vim/syntax/html.vim
" Modified: htdebeer <H.T.de.Beer@gmail.com>
" Changes: add common SVG elements and attributes for inline SVG
" Patch 7.4.1142
if has("patch-7.4-1142")
if has("win32")
syn iskeyword @,48-57,_,128-167,224-235,-
else
syn iskeyword @,48-57,_,192-255,-
endif
endif
" HTML 5 tags
syn keyword htmlTagName contained article aside audio canvas command
syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer
syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output
syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data
syn keyword htmlTagName contained template content shadow slot
syn keyword htmlTagName contained wbr bdi
syn keyword htmlTagName contained picture
" SVG tags
" http://www.w3.org/TR/SVG/
" as found in http://www.w3.org/TR/SVG/eltindex.html
syn keyword htmlTagName contained svg
syn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem
syn keyword htmlTagName contained animate animateColor animateMotion animateTransform
syn keyword htmlTagName contained circle ellipse rect line polyline polygon image path
syn keyword htmlTagName contained clipPath color-profile cursor
syn keyword htmlTagName contained defs desc g symbol view use switch foreignObject
syn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence
syn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri
syn keyword htmlTagName contained glyph glyphRef hkern
syn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop
syn keyword htmlTagName contained missing-glyph mpath
syn keyword htmlTagName contained text textPath tref tspan vkern
syn keyword htmlTagName contained metadata title
" MathML tags
" https://www.w3.org/TR/MathML3/appendixi.html#index.elem
syn keyword htmlTagName contained abs and annotation annotation-xml apply approx arccos arccosh arccot arccoth
syn keyword htmlTagName contained arccsc arccsch arcsec arcsech arcsin arcsinh arctan arctanh arg bind
syn keyword htmlTagName contained bvar card cartesianproduct cbytes ceiling cerror ci cn codomain complexes
syn keyword htmlTagName contained compose condition conjugate cos cosh cot coth cs csc csch
syn keyword htmlTagName contained csymbol curl declare degree determinant diff divergence divide domain domainofapplication
syn keyword htmlTagName contained emptyset eq equivalent eulergamma exists exp exponentiale factorial factorof false
syn keyword htmlTagName contained floor fn forall gcd geq grad gt ident image imaginary
syn keyword htmlTagName contained imaginaryi implies in infinity int integers intersect interval inverse lambda
syn keyword htmlTagName contained laplacian lcm leq limit list ln log logbase lowlimit lt
syn keyword htmlTagName contained maction maligngroup malignmark math matrix matrixrow max mean median menclose
syn keyword htmlTagName contained merror mfenced mfrac mglyph mi mi" min minus mlabeledtr mlongdiv
syn keyword htmlTagName contained mmultiscripts mn mo mode moment momentabout mover mpadded mphantom mprescripts
syn keyword htmlTagName contained mroot mrow ms mscarries mscarry msgroup msline mspace msqrt msrow
syn keyword htmlTagName contained mstack mstyle msub msubsup msup mtable mtd mtext mtr munder
syn keyword htmlTagName contained munderover naturalnumbers neq none not notanumber notin notprsubset notsubset or
syn keyword htmlTagName contained otherwise outerproduct partialdiff pi piece piecewise plus power primes product
syn keyword htmlTagName contained prsubset quotient rationals real reals reln rem root scalarproduct sdev
syn keyword htmlTagName contained sec sech selector semantics sep set setdiff share sin sinh
syn keyword htmlTagName contained span subset sum tan tanh tendsto times transpose true union
syn keyword htmlTagName contained uplimit variance vector vectorproduct xor
" Custom Element
syn match htmlTagName contained "\<[a-z][-.0-9_a-z]*-[-.0-9_a-z]*\>"
syn match htmlTagName contained "[.0-9_a-z]\@<=-[-.0-9_a-z]*\>"
" HTML 5 arguments
" Core Attributes
syn keyword htmlArg contained accesskey class contenteditable contextmenu dir
syn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate
" Event-handler Attributes
syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange
syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover
syn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange
syn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata
syn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup
syn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange
syn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate
syn keyword htmlArg contained onvolumechange onwaiting
" XML Attributes
syn keyword htmlArg contained xml:lang xml:space xml:base xmlns
" new features
" <body>
syn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload
syn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload
" <video>, <audio>, <source>, <track>
syn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track playsinline
" <form>, <input>, <button>
syn keyword htmlArg contained form autocomplete autofocus list min max step
syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate
syn keyword htmlArg contained required placeholder pattern
" <command>, <details>, <time>
syn keyword htmlArg contained label icon open datetime-local pubdate
" <script>
syn keyword htmlArg contained async
" <content>
syn keyword htmlArg contained select
" <iframe>
syn keyword htmlArg contained seamless srcdoc sandbox allowfullscreen allowusermedia allowpaymentrequest allowpresentation
" <picture>
syn keyword htmlArg contained srcset sizes
" <a>
syn keyword htmlArg contained download media
" <script>, <style>
syn keyword htmlArg contained nonce
" <area>, <a>, <img>, <iframe>, <link>
syn keyword htmlArg contained referrerpolicy
" https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute
syn keyword htmlArg contained integrity crossorigin
" <link>
syn keyword htmlArg contained prefetch
" syn keyword htmlArg contained preload
" <img>
syn keyword htmlArg contained decoding
" https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers
syn keyword htmlArg contained onselectstart onselectionchange
" https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/loading
syn keyword htmlArg contained loading
" Custom Data Attributes
" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes
syn match htmlArg "\<data[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained
" Vendor Extension Attributes
" http://w3c.github.io/html/single-page.html#conformance-requirements-extensibility
syn match htmlArg "\<x[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained
" Microdata
" http://dev.w3.org/html5/md/
syn keyword htmlArg contained itemid itemscope itemtype itemprop itemref
" SVG
" http://www.w3.org/TR/SVG/
" Some common attributes from http://www.w3.org/TR/SVG/attindex.html
syn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth
syn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by
syn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy
syn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy
syn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired
syn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy
syn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits
syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-x horiz-origin-y
syn keyword htmlArg contained id ideographic in in2 intercept
syn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes
syn keyword htmlArg contained lang lengthAdjust limitingConeAngle local
syn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name
syn keyword htmlArg contained numOctaves
syn keyword htmlArg contained offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness
syn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits
syn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry
syn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage
syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type
syn keyword htmlArg contained u1 u2 underline-position underline-thickness unicode unicode-range units-per-em
syn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget
syn keyword htmlArg contained width widths
syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space
syn keyword htmlArg contained y y1 y2 yChannelSelector
syn keyword htmlArg contained z zoomAndPan
syn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode
" MathML attributes
" https://www.w3.org/TR/MathML3/chapter2.html#interf.toplevel.atts
syn keyword htmlArg contained accent accentunder actiontype align alignmentscope altimg altimg-height altimg-valign altimg-width alttext
syn keyword htmlArg contained annotation-xml background base baseline bevelled cd cdgroup charalign charspacing close
syn keyword htmlArg contained closure color columnalign columnalignment columnlines columnspacing columnspan columnwidth crossout decimalpoint
syn keyword htmlArg contained definitionURL denomalign depth display displaystyle edge encoding equalcolumns equalrows fence
syn keyword htmlArg contained fontfamily fontsize fontstyle fontweight form frame framespacing groupalign height indentalign
syn keyword htmlArg contained indentalignfirst indentalignlast indentshift indentshiftfirst indentshiftlast indenttarget index infixlinebreakstyle integer largeop
syn keyword htmlArg contained leftoverhang length linebreak linebreakmultchar linebreakstyle lineleading linethickness location longdivstyle lquote
syn keyword htmlArg contained lspace ltr macros math mathbackground mathcolor mathsize mathvariant maxsize maxwidth
syn keyword htmlArg contained mediummathspace menclose minlabelspacing minsize mode movablelimits msgroup mslinethickness name nargs
syn keyword htmlArg contained newline notation numalign number occurrence open order other overflow position
syn keyword htmlArg contained rightoverhang role rowalign rowlines rowspacing rowspan rquote rspace schemaLocation scope
syn keyword htmlArg contained scriptlevel scriptminsize scriptsize scriptsizemultiplier selection separator separators shift side stackalign
syn keyword htmlArg contained stretchy subscriptshift superscriptshift symmetric thickmathspace thinmathspace type valign verythickmathspace verythinmathspace
syn keyword htmlArg contained veryverythickmathspace veryverythinmathspace voffset width xref
" Comment
" https://github.com/w3c/html/issues/694
syntax region htmlComment start=+<!--+ end=+-->+ contains=@Spell
syntax region htmlComment start=+<!DOCTYPE+ keepend end=+>+
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Vim syntax file
" Language: WAI-ARIA
@@ -75,5 +77,3 @@ syn match htmlArg contained "\<aria-\%(\|labelledby\|owns\|posinset\|setsize\
syn match htmlArg contained "\<aria-\%(\|colcount\|colindex\|colspan\)\>"
syn match htmlArg contained "\<aria-\%(\|rowcount\|rowindex\|rowspan\)\>"
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Vim syntax file
" Language: Electron
@@ -15,5 +17,3 @@ syn keyword htmlArg contained useragent disablewebsecurity partition allowpopups
syn keyword htmlArg contained webpreferences blinkfeatures disableblinkfeatures
syn keyword htmlArg contained guestinstance disableguestresize
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Vim syntax file
" Language: RDFa
@@ -11,5 +13,3 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
" RDFa
" http://www.w3.org/TR/rdfa-syntax/#s_syntax
syn keyword htmlArg contained about content datatype href inlist prefix property rel resource rev src typeof vocab
endif

View File

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

View File

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

View File

@@ -1,9 +1,9 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
if get(g:, 'vim_jsx_pretty_disable_js', 0)
finish
endif
source <sfile>:h/jsx.vim
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
@@ -27,7 +29,11 @@ if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
let b:graphql_nested_syntax = 1
syn include @GraphQLSyntax syntax/graphql.vim
unlet b:graphql_nested_syntax
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
@@ -36,22 +42,26 @@ let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)'
if graphql#has_syntax_group('jsTemplateExpression')
" pangloss/vim-javascript
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax region graphqlTemplateString matchgroup=jsTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend
syntax region graphqlTemplateString matchgroup=jsTemplateString start=+`#\s\{,4\}gql\>\s*$+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend
hi def link graphqlTemplateString jsTemplateString
hi def link graphqlTaggedTemplate jsTaggedTemplate
hi def link graphqlTemplateExpression jsTemplateExpression
syn cluster jsExpression add=graphqlTaggedTemplate
syn cluster jsExpression add=graphqlTemplateString,graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
elseif graphql#has_syntax_group('javaScriptStringT')
" runtime/syntax/javascript.vim
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend'
exec 'syntax region graphqlTemplateString matchgroup=javaScriptStringT start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=@javaScriptEmbededExpr containedin=graphqlFold keepend
syntax region graphqlTemplateString matchgroup=javaScriptStringT start=+`#\s\{,4\}gql\>\s*$+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend
hi def link graphqlTemplateString javaScriptStringT
hi def link graphqlTaggedTemplate javaScriptEmbed
hi def link graphqlTemplateExpression javaScriptEmbed
@@ -60,5 +70,3 @@ elseif graphql#has_syntax_group('javaScriptStringT')
syn cluster javaScriptEmbededExpr add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1
if has_key(g:polyglot_is_disabled, 'html5')
finish
endif
" Vim syntax file
" Language: HTML5 New Stuff
@@ -49,5 +51,3 @@ syn keyword javascriptDomElemAttrs indeterminate
" select https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers
syn keyword javascriptDomElemAttrs onselectstart onselectchange
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript-sql') == -1
if has_key(g:polyglot_is_disabled, 'javascript-sql')
finish
endif
" Vim plugin
" Language: JavaScript
@@ -22,5 +24,3 @@ hi def link sqlTaggedTemplate jsTaggedTemplate
syn cluster jsExpression add=sqlTaggedTemplate
syn cluster sqlTaggedTemplate add=sqlTemplateString
endif

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
@@ -55,5 +57,3 @@ let b:current_syntax = 'javascript.jsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
let s:highlight_close_tag = get(g:, 'vim_jsx_pretty_highlight_close_tag', 0)
@@ -138,7 +140,7 @@ exe 'syntax match jsxTagName
" and
" <tag id='sample'>
" ~~~~~~~~
syntax region jsxString start=+\z(["']\)+ skip=+\\\\\|\\\z1\|\\\n+ end=+\z1+ contained contains=@Spell
syntax region jsxString start=+\z(["']\)+ skip=+\\\\\|\\\z1\|\\\n+ end=+\z1+ extend contained contains=@Spell
let s:tags = get(g:, 'vim_jsx_pretty_template_tags', ['html', 'jsx'])
let s:enable_tagged_jsx = !empty(s:tags)
@@ -221,5 +223,3 @@ if s:vim_jsx_pretty_colorful_config == 1
highlight def link jsArrowFuncArgs Type
highlight def link jsFuncArgs Type
endif
endif

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mathematica') == -1
if has_key(g:polyglot_is_disabled, 'mathematica')
finish
endif
"Vim conceal file
" Language: Mathematica
@@ -1442,5 +1444,3 @@ endif
hi! link Conceal Normal
setlocal conceallevel=2
endif

View File

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

View File

@@ -0,0 +1,42 @@
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
let b:graphql_nested_syntax = 1
syn include @GraphQLSyntax syntax/graphql.vim
unlet b:graphql_nested_syntax
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(gql\)\c\(\i*\)\)\2$" end="^\s*\z1\>" contained contains=@GraphQLSyntax,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend
syntax region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(gql\)\c\(\i*\)\)'$" end="^\s*\z1\>" contained contains=@GraphQLSyntax,@Spell keepend extend

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
@@ -27,11 +29,13 @@ if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
let b:graphql_nested_syntax = 1
syn include @GraphQLSyntax syntax/graphql.vim
unlet b:graphql_nested_syntax
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
syntax region graphqlExtensionPoint matchgroup=Noise start=+\[%graphql\_s*{|+lc=10 end=+|}\_s*]+he=s+1 contains=@GraphQLSyntax keepend
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rspec') == -1
if has_key(g:polyglot_is_disabled, 'rspec')
finish
endif
"
" An rspec syntax file
@@ -189,5 +191,3 @@ highlight link rspecMatchers Function
highlight link rspecMessageExpectation Function
let b:current_syntax = 'rspec'
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yard') == -1
if has_key(g:polyglot_is_disabled, 'yard')
finish
endif
" Ruby syntax extensions for highlighting YARD documentation.
"
@@ -22,6 +24,7 @@ syn match yardNote "@note" contained
syn match yardOption "@option" contained
syn match yardOverload "@overload" contained
syn match yardParam "@param" contained
syn match yardParamName /@param \h\+/hs=s+7 contained contains=yardParam
syn match yardPrivate "@private" contained
syn match yardRaise "@raise" contained
syn match yardReturn "@return" contained
@@ -32,7 +35,7 @@ syn match yardVersion "@version" contained
syn match yardYield "@yield" contained
syn match yardYieldParam "@yieldparam" contained
syn match yardYieldReturn "@yieldreturn" contained
syn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn
syn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardParamName,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Directives
@@ -101,9 +104,9 @@ hi def link yardSee yardGenericTag
hi def link yardSince yardGenericTag
hi def link yardTodo yardGenericTag
hi def link yardVersion yardGenericTag
hi def link yield yardGenericTag
hi def link yieldparam yardGenericTag
hi def link yieldreturn yardGenericTag
hi def link yardYield yardGenericTag
hi def link yardYieldParam yardGenericTag
hi def link yardYieldReturn yardGenericTag
" Directives
hi def link yardGenericDirective rubyKeyword
hi def link yardAttribute yardGenericDirective
@@ -126,5 +129,3 @@ hi def link yardParametricType yardComment
hi def link yardArrow yardComment
hi def link yardHashAngle yardComment
hi def link yardHashCurly yardComment
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
@@ -59,5 +61,3 @@ let b:current_syntax = 'typescript.tsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
@@ -27,14 +29,18 @@ if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
let b:graphql_nested_syntax = 1
syn include @GraphQLSyntax syntax/graphql.vim
unlet b:graphql_nested_syntax
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
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 matchgroup=typescriptTemplate start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateSubstitution extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
" Support expression interpolation ((${...})) inside template strings.
@@ -45,5 +51,3 @@ hi def link graphqlTemplateExpression typescriptTemplateSubstitution
syn cluster typescriptExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'zinit') == -1
if has_key(g:polyglot_is_disabled, 'zinit')
finish
endif
" Copyright (c) 2019 Sebastian Gniazdowski
"
@@ -122,5 +124,3 @@ highlight def link ZinitSnippetUrl2 Macro
highlight def link ZinitSnippetUrl3 Macro
highlight def link ZinitSnippetUrl4 Macro
highlight def link ZinitTrailingWhiteSpace Error
endif

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ada') == -1
if has_key(g:polyglot_is_disabled, 'ada')
finish
endif
"------------------------------------------------------------------------------
" Description: Perform Ada specific completion & tagging.
@@ -637,5 +639,3 @@ finish " 1}}}
"------------------------------------------------------------------------------
" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
" vim: foldmethod=marker
endif

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
if has_key(g:polyglot_is_disabled, 'crystal')
finish
endif
" Variables {{{1
" =========
@@ -1040,5 +1042,4 @@ endfunction
" }}}1
" vim:sw=2 sts=2 ts=8 fdm=marker et:
endif
" vim:sw=2 sts=2 ts=8 fdm=marker et:

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
if has_key(g:polyglot_is_disabled, 'crystal')
finish
endif
let s:V = vital#crystal#new()
let s:P = s:V.import('Process')
@@ -363,5 +365,3 @@ function! crystal_lang#expand(file, pos, ...) abort
endfunction
" vim: sw=2 sts=2 et:
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'csv') == -1
if has_key(g:polyglot_is_disabled, 'csv')
finish
endif
" Filetype plugin for editing CSV files. "{{{1
" Author: Christian Brabandt <cb@256bit.org>
@@ -75,9 +77,13 @@ fu! csv#Init(start, end, ...) "{{{3
endif
if empty(b:delimiter) && !exists("b:csv_fixed_width")
call csv#Warn("No delimiter found. See :h csv-delimiter to set it manually!")
" Use a sane default as delimiter:
let b:delimiter = ','
if !exists("g:csv_default_delim")
call csv#Warn("No delimiter found. See :h csv-delimiter to set it manually!")
" Use a sane default as delimiter:
let b:delimiter = ','
else
let b:delimiter = g:csv_default_delim
endif
endif
let s:del='\%(' . b:delimiter . '\|$\)'
@@ -3192,5 +3198,3 @@ endfun
" Vim Modeline " {{{2
" vim: set foldmethod=marker et sw=0 sts=-1 ts=4:
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1
if has_key(g:polyglot_is_disabled, 'dart')
finish
endif
function! s:error(text) abort
@@ -183,5 +185,3 @@ function! dart#setModifiable() abort
setlocal nomodifiable
endif
endfunction
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
if has_key(g:polyglot_is_disabled, 'crystal')
finish
endif
let s:ecrystal_extensions = {
\ 'cr': 'crystal',
@@ -32,5 +34,3 @@ function! ecrystal#SetSubtype() abort
endfunction
" vim: sw=2 sts=2 et:
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
if has_key(g:polyglot_is_disabled, 'elixir')
finish
endif
if !exists("g:elixir_indent_max_lookbehind")
let g:elixir_indent_max_lookbehind = 30
@@ -276,12 +278,14 @@ function! elixir#indent#handle_inside_block(context)
" hack - handle do: better
let block_info = searchpairpos(start_pattern, '', end_pattern, 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip() || getline(line('.')) =~ 'do:'", max([0, a:context.lnum - g:elixir_indent_max_lookbehind]))
let block_start_lnum = block_info[0]
call s:debug("block_start_lnum=" . block_start_lnum)
let block_start_col = block_info[1]
if block_start_lnum != 0 || block_start_col != 0
let block_text = getline(block_start_lnum)
let block_start_char = block_text[block_start_col - 1]
call s:debug("block_start_char=" . block_start_char)
let never_match = '\(a\)\@=b'
let never_match = ''
let config = {
\'f': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
\'c': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
@@ -293,17 +297,25 @@ function! elixir#indent#handle_inside_block(context)
\'(': {'aligned_clauses': ')', 'pattern_match_clauses': never_match}
\}
" if `with` clause...
if block_start_char == 'w'
call s:debug("testing s:handle_with")
return s:handle_with(block_start_lnum, block_start_col, a:context)
else
let block_config = config[block_start_char]
" if aligned clause (closing tag/`else` clause/etc...) then indent this
" at the same level as the block open tag (e.g. `if`/`case`/etc...)
if s:starts_with(a:context, block_config.aligned_clauses)
call s:debug("clause")
return indent(block_start_lnum)
else
let clause_lnum = searchpair(block_config.pattern_match_clauses, '', '*', 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip()", block_start_lnum)
let relative_lnum = max([clause_lnum, block_start_lnum])
if block_config.pattern_match_clauses == never_match
let relative_lnum = block_start_lnum
else
let clause_lnum = searchpair(block_config.pattern_match_clauses, '', '*', 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip()", block_start_lnum)
call s:debug("clause_lum=" . clause_lnum)
let relative_lnum = max([clause_lnum, block_start_lnum])
end
call s:debug("pattern matching relative to lnum " . relative_lnum)
return s:do_handle_pattern_match_block(relative_lnum, a:context)
endif
@@ -361,5 +373,3 @@ function! elixir#indent#handle_inside_generic_block(context)
return -1
endif
endfunction
endif

View File

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

View File

@@ -1,43 +1,113 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1
if has_key(g:polyglot_is_disabled, 'fish')
finish
endif
function! s:IsString(lnum, col)
" Returns "true" if syntax item at the given position is part of fishString.
let l:stack = map(synstack(a:lnum, a:col), 'synIDattr(v:val, "name")')
return len(filter(l:stack, 'v:val ==# "fishString"'))
endfunction
function! s:IsContinuedLine(lnum)
" Returns "true" if the given line is a continued line.
return getline(a:lnum - 1) =~ '\v\\$'
endfunction
function! s:FindPrevLnum(lnum)
" Starting on the given line, search backwards for a line that is not
" empty, not part of a string and not a continued line.
if a:lnum < 1 || a:lnum > line('$')
" First line or wrong value, follow prevnonblank() behaviour and
" return zero.
return 0
endif
let l:lnum = prevnonblank(a:lnum)
while l:lnum > 0 && ( s:IsContinuedLine(l:lnum) || s:IsString(l:lnum, 1) )
let l:lnum = prevnonblank(l:lnum - 1)
endwhile
return l:lnum
endfunction
function! s:IsSwitch(lnum)
" Returns "true" if the given line is part of a switch block.
let l:lnum = a:lnum
let l:line = getline(l:lnum)
let l:in_block = 0
let l:stop_pat = '\v^\s*%(if|else|while|for|begin)>'
let l:block_start_pat = '\v^\s*%(if|while|for|switch|begin)>'
while l:lnum > 0
let l:lnum = prevnonblank(l:lnum - 1)
let l:line = getline(l:lnum)
if l:line =~# '\v^\s*end>'
let l:in_block += 1
elseif l:in_block && l:line =~# l:block_start_pat
let l:in_block -= 1
elseif !l:in_block && l:line =~# l:stop_pat
return 0
elseif !l:in_block && l:line =~# '\v^\s*switch>'
return 1
endif
endwhile
return 0
endfunction
function! fish#Indent()
let l:prevlnum = prevnonblank(v:lnum - 1)
if l:prevlnum ==# 0
return 0
endif
let l:prevline = getline(l:prevlnum)
let l:line = getline(v:lnum)
let l:shiftwidth = shiftwidth()
let l:previndent = indent(l:prevlnum)
let l:indent = l:previndent
if l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|switch|case)>'
let l:indent += l:shiftwidth
if s:IsString(v:lnum, 1)
return indent(v:lnum)
endif
if l:line =~# '\v^\s*end>'
let l:indent -= l:shiftwidth
" If we're inside a case, dedent twice because it ends the switch.
if l:prevline =~# '\v^\s*case>'
" Previous line starts the case.
let l:indent -= l:shiftwidth
else
" Scan back to a dedented line to find whether we're in a case.
let l:i = l:prevlnum
while l:i >= 1 && indent(l:i) >= l:previndent
let l:i = prevnonblank(l:i - 1)
endwhile
if indent(l:i) < l:previndent && getline(l:i) =~# '\v^\s*case>'
let l:indent -= l:shiftwidth
endif
endif
elseif l:line =~# '\v^\s*else>'
let l:indent -= l:shiftwidth
elseif l:prevline !~# '\v^\s*switch>' && l:line =~# '\v^\s*case>'
let l:indent -= l:shiftwidth
" shiftwidth can be misleading in recent versions, use shiftwidth() if
" it is available.
if exists('*shiftwidth')
let l:shiftwidth = shiftwidth()
else
let l:shiftwidth = &shiftwidth
endif
if l:indent < 0
let l:prevlnum = s:FindPrevLnum(v:lnum - 1)
if l:prevlnum == 0
return 0
endif
return l:indent
let l:shift = 0
let l:prevline = getline(l:prevlnum)
let l:previndent = indent(l:prevlnum)
if s:IsContinuedLine(v:lnum)
" It is customary to increment indentation of continued lines by three
" or a custom value defined by the user if available.
let l:previndent = indent(v:lnum - 1)
if s:IsContinuedLine(v:lnum - 1)
return l:previndent
elseif exists('g:fish_indent_cont')
return l:previndent + g:fish_indent_cont
elseif exists('g:indent_cont')
return l:previndent + g:indent_cont
else
return l:previndent + 3
endif
endif
if l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case|switch)>'
" First line inside a block, increase by one.
let l:shift += 1
endif
if l:line =~# '\v^\s*%(end|case|else)>'
" "end", "case" or "else", decrease by one.
let l:shift -= 1
endif
if l:line =~# '\v^\s*<case>' && l:prevline =~# '\v<switch>'
" "case" following "switch", increase by one.
let l:shift += 1
endif
if l:line =~# '\v\s*end>' && s:IsSwitch(v:lnum)
" "end" ends switch block, decrease by one more so it matches
" the indentation of "switch".
let l:shift -= 1
endif
if l:prevline =~# '\v^\s*%(if|while|for|else|switch|end)>.*<begin>'
" "begin" after start of block, increase by one.
let l:shift += 1
endif
let l:indent = l:previndent + l:shift * l:shiftwidth
" Only return zero or positive numbers.
return l:indent < 0 ? 0 : l:indent
endfunction
function! fish#Format()
@@ -47,6 +117,8 @@ function! fish#Format()
let l:command = v:lnum.','.(v:lnum+v:count-1).'!fish_indent'
echo l:command
execute l:command
" Fix indentation and replace tabs with spaces if necessary.
normal! '[=']
endif
endfunction
@@ -85,5 +157,3 @@ endfunction
function! fish#errorformat()
return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s'
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1
if has_key(g:polyglot_is_disabled, 'fsharp')
finish
endif
" Vim autoload functions
@@ -330,7 +332,7 @@ function! s:download(branch)
let zip = s:script_root_dir . "fsac.zip"
call system(
\ 'curl -fLo ' . zip . ' --create-dirs ' .
\ '"https://ci.appveyor.com/api/projects/fsautocomplete/fsautocomplete/artifacts/bin/pkgs/fsautocomplete.netcore.zip?branch=' . a:branch . '"'
\ '"https://github.com/fsharp/FsAutoComplete/releases/latest/download/fsautocomplete.netcore.zip"'
\ )
if v:shell_error == 0
call system('unzip -o -d ' . s:script_root_dir . "/fsac " . zip)
@@ -465,10 +467,10 @@ function! fsharp#sendFsi(text)
if fsharp#openFsi(!g:fsharp#fsi_focus_on_send) > 0
" Neovim
if has('nvim')
call chansend(s:fsi_job, a:text . ";;". "\n")
call chansend(s:fsi_job, a:text . "\n" . ";;". "\n")
" Vim 8
else
call term_sendkeys(s:fsi_buffer, a:text . ";;" . "\<cr>")
call term_sendkeys(s:fsi_buffer, a:text . "\<cr>" . ";;" . "\<cr>")
call term_wait(s:fsi_buffer)
endif
endif
@@ -513,5 +515,3 @@ let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=4 et sts=4
endif

View File

@@ -0,0 +1,41 @@
if has_key(g:polyglot_is_disabled, 'gitignore')
finish
endif
scriptencoding utf-8
" Copyright (c) 2017-2020 Filip Szymański. All rights reserved.
" Use of this source code is governed by an MIT license that can be
" found in the LICENSE file.
function! s:template_sink(templates) abort
try
let l:lines = _fzf_gitignore_create(a:templates)
catch /^Vim(\(let\|return\)):/
return
endtry
new
setlocal filetype=gitignore
call setline(1, l:lines)
$-2,$delete _
normal! gg
endfunction
function! fzf_gitignore#run() abort
try
let l:opts = {
\ 'source': _fzf_gitignore_get_all_templates(),
\ 'sink*': function('s:template_sink'),
\ 'options': '-m --prompt="Template> " --header="gitignore.io"'
\ }
catch /^Vim(\(let\|return\)):/
return
endtry
call fzf#run(fzf#wrap(l:opts))
endfunction
" vim: ts=2 et sw=2

View File

@@ -1,13 +1,11 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
if has_key(g:polyglot_is_disabled, 'go')
finish
endif
" don't spam the user when Vim is started in Vi compatibility mode
let s:cpo_save = &cpo
set cpo&vim
function! go#config#AutodetectGopath() abort
return get(g:, 'go_autodetect_gopath', 0)
endfunction
function! go#config#ListTypeCommands() abort
return get(g:, 'go_list_type_commands', {})
endfunction
@@ -266,15 +264,25 @@ function! go#config#SetTemplateAutocreate(value) abort
endfunction
function! go#config#MetalinterCommand() abort
return get(g:, "go_metalinter_command", "golangci-lint")
return get(g:, 'go_metalinter_command', 'golangci-lint')
endfunction
function! go#config#MetalinterAutosaveEnabled() abort
return get(g:, "go_metalinter_autosave_enabled", ["govet", "golint"])
let l:default = []
if get(g:, 'go_metalinter_command', 'golangci-lint') == 'golangci-lint'
let l:default = ['govet', 'golint']
endif
return get(g:, 'go_metalinter_autosave_enabled', l:default)
endfunction
function! go#config#MetalinterEnabled() abort
return get(g:, "go_metalinter_enabled", ["vet", "golint", "errcheck"])
let l:default = []
if get(g:, 'go_metalinter_command', 'golangci-lint') == 'golangci-lint'
let l:default = ['vet', 'golint', 'errcheck']
endif
return get(g:, 'go_metalinter_enabled', l:default)
endfunction
function! go#config#GolintBin() abort
@@ -514,7 +522,7 @@ function! go#config#ReferrersMode() abort
endfunction
function! go#config#ImplementsMode() abort
return get(g:, 'go_implements_mode', 'guru')
return get(g:, 'go_implements_mode', 'gopls')
endfunction
function! go#config#GoplsCompleteUnimported() abort
@@ -564,14 +572,44 @@ function! go#config#GoplsEnabled() abort
return get(g:, 'go_gopls_enabled', 1)
endfunction
" TODO(bc): remove support for g:go_diagnostics_enabled;
" g:go_diagnostics_level is the replacement.
function! go#config#DiagnosticsEnabled() abort
return get(g:, 'go_diagnostics_enabled', 0)
endfunction
function! go#config#DiagnosticsLevel() abort
let l:default = 0
if has_key(g:, 'go_diagnostics_enabled') && g:go_diagnostics_enabled
let l:default = 2
endif
return get(g:, 'go_diagnostics_level', l:default)
endfunction
function! go#config#GoplsOptions() abort
return get(g:, 'go_gopls_options', ['-remote=auto'])
endfunction
function! go#config#FillStructMode() abort
return get(g:, 'go_fillstruct_mode', 'fillstruct')
endfunction
function! go#config#DebugMappings() abort
let l:default = {
\ '(go-debug-continue)': {'key': '<F5>'},
\ '(go-debug-print)': {'key': '<F6>'},
\ '(go-debug-breakpoint)': {'key': '<F9>'},
\ '(go-debug-next)': {'key': '<F10>'},
\ '(go-debug-step)': {'key': '<F11>'},
\ '(go-debug-halt)': {'key': '<F8>'},
\ }
let l:user = deepcopy(get(g:, 'go_debug_mappings', {}))
return extend(l:user, l:default, 'keep')
endfunction
" Set the default value. A value of "1" is a shortcut for this, for
" compatibility reasons.
if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1
@@ -583,5 +621,3 @@ let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=2 ts=2 et
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
if has_key(g:polyglot_is_disabled, 'graphql')
finish
endif
" Copyright (c) 2016-2020 Jon Parise <jon@indelible.org>
"
@@ -35,5 +37,3 @@ endfunction
function! graphql#javascript_tags() abort
return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL'])
endfunction
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsonnet') == -1
if has_key(g:polyglot_is_disabled, 'jsonnet')
finish
endif
@@ -125,5 +127,3 @@ function! jsonnet#Format()
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
function! jsx_pretty#comment#update_commentstring(original)
let line = getline(".")
@@ -37,5 +39,3 @@ function! s:syn_contains(lnum, cnum, syn_name)
let syn_names = map(stack, 'synIDattr(v:val, "name")')
return index(syn_names, a:syn_name) >= 0
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || (index(g:polyglot_disabled, 'javascript') == -1 && index(g:polyglot_disabled, 'jsx') == -1)
if has_key(g:polyglot_is_disabled, 'jsx')
finish
endif
if exists('*shiftwidth')
function! s:sw()
@@ -302,5 +304,3 @@ function! jsx_pretty#indent#get(js_indent)
return a:js_indent()
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
if has_key(g:polyglot_is_disabled, 'julia')
finish
endif
function! julia#set_syntax_version(jvers)
echo "The julia#set_syntax_version function is deprecated"
@@ -165,5 +167,3 @@ function! julia#gotodefinition()
return
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
if has_key(g:polyglot_is_disabled, 'julia')
finish
endif
" path to the julia binary to communicate with
if has('win32') || has('win64')
@@ -37,7 +39,7 @@ let s:NODOCPATTERN = '\C\VNo documentation found.'
function! julia#doc#lookup(keyword, ...) abort
let juliapath = get(a:000, 0, g:julia#doc#juliapath)
let keyword = escape(a:keyword, '"\')
let cmd = printf('%s -E "@doc %s"', juliapath, keyword)
let cmd = printf('%s --compile=min --optimize=0 -E "@doc %s"', juliapath, keyword)
return systemlist(cmd)
endfunction
@@ -238,9 +240,7 @@ endfunction
function! s:likely(str) abort
" escape twice
let str = escape(escape(a:str, '"\'), '"\')
let cmd = printf('%s -E "%s(\"%s\")"', g:julia#doc#juliapath, s:REPL_SEARCH, str)
let cmd = printf('%s --compile=min --optimize=0 -E "%s(\"%s\")"', g:julia#doc#juliapath, s:REPL_SEARCH, str)
let output = systemlist(cmd)
return split(matchstr(output[0], '\C^search: \zs.*'))
endfunction
endif

View File

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

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1
if has_key(g:polyglot_is_disabled, 'julia')
finish
endif
" This file is autogenerated from the script 'generate_latex_symbols_table.jl'
" The symbols are based on Julia version 1.5.0-DEV.67
@@ -3332,5 +3334,3 @@ function! julia_latex_symbols#get_dict()
\ '\:baggage_claim:': '🛄',
\ '\:left_luggage:': '🛅'}
endfunction
endif

View File

@@ -1,4 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ledger') == -1
if has_key(g:polyglot_is_disabled, 'ledger')
finish
endif
scriptencoding utf-8
" vim:ts=2:sw=2:sts=2:foldmethod=marker
@@ -442,6 +444,19 @@ function! ledger#align_commodity() abort
endif
endf
" Align the commodity on the entire buffer
function! ledger#align_commodity_buffer() abort
" Store the viewport position
let view = winsaveview()
" Call ledger#align_commodity for every line
%call ledger#align_commodity()
" Restore the viewport position
call winrestview(view)
unlet view
endf
" Align the amount under the cursor and append/prepend the default currency.
function! ledger#align_amount_at_cursor() abort
" Select and cut text:
@@ -740,5 +755,3 @@ function! ledger#show_balance(file, ...) abort
endif
endf
" }}}
endif

View File

@@ -1,9 +1,11 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
if has_key(g:polyglot_is_disabled, 'nim')
finish
endif
let g:nim_log = []
let s:plugin_path = escape(expand('<sfile>:p:h'), '\')
if !exists("g:nim_caas_enabled")
if !exists('g:nim_caas_enabled')
let g:nim_caas_enabled = 0
endif
@@ -11,27 +13,25 @@ if !executable('nim')
echoerr "the Nim compiler must be in your system's PATH"
endif
if has("python3")
exe 'py3file ' . fnameescape(s:plugin_path) . '/nim_vim.py'
elseif has("python")
exe 'pyfile ' . fnameescape(s:plugin_path) . '/nim_vim.py'
if has('pythonx')
exe 'pyxfile ' . fnameescape(s:plugin_path) . '/nim_vim.py'
endif
fun! nim#init()
let cmd = printf("nim --dump.format:json --verbosity:0 dump %s", s:CurrentNimFile())
fun! nim#init() abort
let cmd = printf('nim --dump.format:json --verbosity:0 dump %s', s:CurrentNimFile())
let raw_dumpdata = system(cmd)
if !v:shell_error && expand("%:e") == "nim"
if !v:shell_error && expand('%:e') ==# 'nim'
let false = 0 " Needed for eval of json
let true = 1 " Needed for eval of json
let dumpdata = eval(substitute(raw_dumpdata, "\n", "", "g"))
let dumpdata = eval(substitute(raw_dumpdata, "\n", '', 'g'))
let b:nim_project_root = dumpdata['project_path']
let b:nim_defined_symbols = dumpdata['defined_symbols']
let b:nim_caas_enabled = g:nim_caas_enabled || index(dumpdata['defined_symbols'], 'forcecaas') != -1
for path in dumpdata['lib_paths']
if finddir(path) == path
let &l:path = path . "," . &l:path
if finddir(path) ==# path
let &l:path = path . ',' . &l:path
endif
endfor
else
@@ -39,7 +39,7 @@ fun! nim#init()
endif
endf
fun! s:UpdateNimLog()
fun! s:UpdateNimLog() abort
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal noswapfile
@@ -56,32 +56,32 @@ endf
augroup NimVim
au!
au BufEnter log://nim call s:UpdateNimLog()
if has("python3") || has("python")
" au QuitPre * :py nimTerminateAll()
au VimLeavePre * :py nimTerminateAll()
if has('pythonx')
" au QuitPre * :pyx nimTerminateAll()
au VimLeavePre * :pyx nimTerminateAll()
endif
augroup END
command! NimLog :e log://nim
command! NimTerminateService
\ :exe printf("py nimTerminateService('%s')", b:nim_project_root)
\ :exe printf("pyx nimTerminateService('%s')", b:nim_project_root)
command! NimRestartService
\ :exe printf("py nimRestartService('%s')", b:nim_project_root)
\ :exe printf("pyx nimRestartService('%s')", b:nim_project_root)
fun! s:CurrentNimFile()
fun! s:CurrentNimFile() abort
let save_cur = getpos('.')
call cursor(0, 0, 0)
let PATTERN = "\\v^\\#\\s*included from \\zs.*\\ze"
let l = search(PATTERN, "n")
let PATTERN = '\v^\#\s*included from \zs.*\ze'
let l = search(PATTERN, 'n')
if l != 0
let f = matchstr(getline(l), PATTERN)
let l:to_check = expand('%:h') . "/" . f
let l:to_check = expand('%:h') . '/' . f
else
let l:to_check = expand("%")
let l:to_check = expand('%')
endif
call setpos('.', save_cur)
@@ -108,42 +108,42 @@ let g:nim_symbol_types = {
\ 'skEnumField': 'v',
\ }
fun! NimExec(op)
let isDirty = getbufvar(bufnr('%'), "&modified")
fun! NimExec(op) abort
let isDirty = getbufvar(bufnr('%'), '&modified')
if isDirty
let tmp = tempname() . bufname("%") . "_dirty.nim"
silent! exe ":w " . tmp
let tmp = tempname() . bufname('%') . '_dirty.nim'
silent! exe ':w ' . tmp
let cmd = printf("idetools %s --trackDirty:\"%s,%s,%d,%d\" \"%s\"",
let cmd = printf('idetools %s --trackDirty:"%s,%s,%d,%d" "%s"',
\ a:op, tmp, expand('%:p'), line('.'), col('.')-1, s:CurrentNimFile())
else
let cmd = printf("idetools %s --track:\"%s,%d,%d\" \"%s\"",
let cmd = printf('idetools %s --track:"%s,%d,%d" "%s"',
\ a:op, expand('%:p'), line('.'), col('.')-1, s:CurrentNimFile())
endif
if b:nim_caas_enabled
exe printf("py nimExecCmd('%s', '%s', False)", b:nim_project_root, cmd)
let output = l:py_res
exe printf("pyx nimExecCmd('%s', '%s', False)", b:nim_project_root, cmd)
let output = get(l:, 'py_res', '')
else
let output = system("nim " . cmd)
let output = system('nim ' . cmd)
endif
call add(g:nim_log, "nim " . cmd . "\n" . output)
call add(g:nim_log, 'nim ' . cmd . "\n" . output)
return output
endf
fun! NimExecAsync(op, Handler)
fun! NimExecAsync(op, Handler) abort
let result = NimExec(a:op)
call a:Handler(result)
endf
fun! NimComplete(findstart, base)
if b:nim_caas_enabled == 0
fun! NimComplete(findstart, base) abort
if b:nim_caas_enabled ==# 0
return -1
endif
if a:findstart
if synIDattr(synIDtrans(synID(line("."),col("."),1)), "name") == 'Comment'
if synIDattr(synIDtrans(synID(line('.'),col('.'),1)), 'name') ==# 'Comment'
return -1
endif
let line = getline('.')
@@ -154,10 +154,10 @@ fun! NimComplete(findstart, base)
return start
else
let result = []
let sugOut = NimExec("--suggest")
let sugOut = NimExec('--suggest')
for line in split(sugOut, '\n')
let lineData = split(line, '\t')
if len(lineData) > 0 && lineData[0] == "sug"
if len(lineData) > 0 && lineData[0] ==# 'sug'
let word = split(lineData[2], '\.')[-1]
if a:base ==? '' || word =~# '^' . a:base
let kind = get(g:nim_symbol_types, lineData[1], '')
@@ -170,7 +170,7 @@ fun! NimComplete(findstart, base)
endif
endf
if !exists("g:neocomplcache_omni_patterns")
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns['nim'] = '[^. *\t]\.\w*'
@@ -182,7 +182,7 @@ let g:neocomplete#sources#omni#input_patterns['nim'] = '[^. *\t]\.\w*'
let g:nim_completion_callbacks = {}
fun! NimAsyncCmdComplete(cmd, output)
fun! NimAsyncCmdComplete(cmd, output) abort
call add(g:nim_log, a:output)
echom g:nim_completion_callbacks
if has_key(g:nim_completion_callbacks, a:cmd)
@@ -190,55 +190,53 @@ fun! NimAsyncCmdComplete(cmd, output)
call Callback(a:output)
" remove(g:nim_completion_callbacks, a:cmd)
else
echom "ERROR, Unknown Command: " . a:cmd
echom 'ERROR, Unknown Command: ' . a:cmd
endif
return 1
endf
fun! GotoDefinition_nim_ready(def_output)
fun! GotoDefinition_nim_ready(def_output) abort
if v:shell_error
echo "nim was unable to locate the definition. exit code: " . v:shell_error
echo 'nim was unable to locate the definition. exit code: ' . v:shell_error
" echoerr a:def_output
return 0
endif
let rawDef = matchstr(a:def_output, 'def\t\([^\n]*\)')
if rawDef == ""
echo "the current cursor position does not match any definitions"
if rawDef == ''
echo 'the current cursor position does not match any definitions'
return 0
endif
let defBits = split(rawDef, '\t')
let file = defBits[4]
let line = defBits[5]
exe printf("e +%d %s", line, file)
exe printf('e +%d %s', line, file)
return 1
endf
fun! GotoDefinition_nim()
call NimExecAsync("--def", function("GotoDefinition_nim_ready"))
fun! GotoDefinition_nim() abort
call NimExecAsync('--def', function('GotoDefinition_nim_ready'))
endf
fun! FindReferences_nim()
setloclist()
fun! FindReferences_nim() abort
"setloclist()
endf
" Syntastic syntax checking
fun! SyntaxCheckers_nim_nim_GetLocList()
fun! SyntaxCheckers_nim_nim_GetLocList() abort
let makeprg = 'nim check --hints:off --listfullpaths ' . s:CurrentNimFile()
let errorformat = &errorformat
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
endf
function! SyntaxCheckers_nim_nim_IsAvailable()
return executable("nim")
function! SyntaxCheckers_nim_nim_IsAvailable() abort
return executable('nim')
endfunction
if exists("g:SyntasticRegistry")
if exists('g:SyntasticRegistry')
call g:SyntasticRegistry.CreateAndRegisterChecker({
\ 'filetype': 'nim',
\ 'name': 'nim'})
endif
endif

View File

@@ -1,291 +0,0 @@
" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
func! polyglot#Heuristics()
" Try to detect filetype from shebang
let l:filetype = polyglot#Shebang()
if l:filetype != ""
exec "setf " . l:filetype
return
endif
endfunc
let s:interpreters = {
\ 'osascript': 'applescript',
\ 'tcc': 'c',
\ 'coffee': 'coffee',
\ 'crystal': 'crystal',
\ 'dart': 'dart',
\ 'elixir': 'elixir',
\ 'escript': 'erlang',
\ 'fish': 'fish',
\ 'gnuplot': 'gnuplot',
\ 'groovy': 'groovy',
\ 'runhaskell': 'haskell',
\ 'chakra': 'javascript',
\ 'd8': 'javascript',
\ 'gjs': 'javascript',
\ 'js': 'javascript',
\ 'node': 'javascript',
\ 'nodejs': 'javascript',
\ 'qjs': 'javascript',
\ 'rhino': 'javascript',
\ 'v8': 'javascript',
\ 'v8-shell': 'javascript',
\ 'julia': 'julia',
\ 'lua': 'lua',
\ 'moon': 'moon',
\ 'ocaml': 'ocaml',
\ 'ocamlrun': 'ocaml',
\ 'ocamlscript': 'ocaml',
\ 'cperl': 'perl',
\ 'perl': 'perl',
\ 'php': 'php',
\ 'pwsh': 'ps1',
\ 'python': 'python',
\ 'python2': 'python',
\ 'python3': 'python',
\ 'qmake': 'qmake',
\ 'Rscript': 'r',
\ 'racket': 'racket',
\ 'perl6': 'raku',
\ 'raku': 'raku',
\ 'rakudo': 'raku',
\ 'ruby': 'ruby',
\ 'macruby': 'ruby',
\ 'rake': 'ruby',
\ 'jruby': 'ruby',
\ 'rbx': 'ruby',
\ 'scala': 'scala',
\ 'ash': 'sh',
\ 'bash': 'sh',
\ 'dash': 'sh',
\ 'ksh': 'sh',
\ 'mksh': 'sh',
\ 'pdksh': 'sh',
\ 'rc': 'sh',
\ 'sh': 'sh',
\ 'zsh': 'sh',
\ 'boolector': 'smt2',
\ 'cvc4': 'smt2',
\ 'mathsat5': 'smt2',
\ 'opensmt': 'smt2',
\ 'smtinterpol': 'smt2',
\ 'smt-rat': 'smt2',
\ 'stp': 'smt2',
\ 'verit': 'smt2',
\ 'yices2': 'smt2',
\ 'z3': 'smt2',
\ 'deno': 'typescript',
\ 'ts-node': 'typescript',
\ }
let s:r_hashbang = '^#!\s*\(\S\+\)\s*\(.*\)\s*'
let s:r_envflag = '%(\S\+=\S\+\|-[iS]\|--ignore-environment\|--split-string\)'
let s:r_env = '^\%(\' . s:r_envflag . '\s\+\)*\(\S\+\)'
func! polyglot#Shebang()
let l:line1 = getline(1)
if l:line1 !~# "^#!"
return
endif
let l:pathrest = matchlist(l:line1, s:r_hashbang)
if len(l:pathrest) == 0
return
endif
let [_, l:path, l:rest; __] = l:pathrest
let l:script = split(l:path, "/")[-1]
if l:script == "env"
let l:argspath = matchlist(l:rest, s:r_env)
if len(l:argspath) == 0
return
endif
let l:script = l:argspath[1]
endif
if has_key(s:interpreters, l:script)
return s:interpreters[l:script]
endif
for interpreter in keys(s:interpreters)
if l:script =~# '^' . interpreter
return s:interpreters[interpreter]
endif
endfor
endfunc
func! polyglot#DetectInpFiletype()
let line = getline(1)
if line =~# '^\*'
setf abaqus | return
endif
for lnum in range(1, min([line("$"), 500]))
let line = getline(lnum)
if line =~? '^header surface data'
setf trasys | return
endif
endfor
endfunc
func! polyglot#DetectAsaFiletype()
if exists("g:filetype_asa")
exe "setf " . g:filetype_asa | return
endif
setf aspvbs | return
endfunc
func! polyglot#DetectAspFiletype()
if exists("g:filetype_asp")
exe "setf " . g:filetype_asp | return
endif
for lnum in range(1, min([line("$"), 3]))
let line = getline(lnum)
if line =~? 'perlscript'
setf aspperl | return
endif
endfor
setf aspvbs | return
endfunc
func! polyglot#DetectHFiletype()
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
if exists("g:c_syntax_for_h")
setf objc | return
endif
setf objcpp | return
endif
endfor
if exists("g:c_syntax_for_h")
setf c | return
endif
if exists("g:ch_syntax_for_h")
setf ch | return
endif
setf cpp | return
endfunc
func! polyglot#DetectMFiletype()
let saw_comment = 0
for lnum in range(1, min([line("$"), 100]))
let line = getline(lnum)
if line =~# '^\s*/\*'
let saw_comment = 1
endif
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
setf objc | return
endif
if line =~# '^\s*%'
setf octave | return
endif
if line =~# '^\s*(\*'
setf mma | return
endif
if line =~? '^\s*\(\(type\|var\)\(\<\|\>\)\|--\)'
setf murphi | return
endif
endfor
if saw_comment
setf objc | return
endif
if exists("g:filetype_m")
exe "setf " . g:filetype_m | return
endif
setf octave | return
endfunc
func! polyglot#DetectFsFiletype()
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\(: \|new-device\)'
setf forth | return
endif
if line =~# '^\s*\(#light\|import\|let\|module\|namespace\|open\|type\)'
setf fsharp | return
endif
if line =~# '\s*\(#version\|precision\|uniform\|varying\|vec[234]\)'
setf glsl | return
endif
endfor
if exists("g:filetype_fs")
exe "setf " . g:filetype_fs | return
endif
setf forth | return
endfunc
func! polyglot#DetectReFiletype()
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*#\%(\%(if\|ifdef\|define\|pragma\)\s\+\w\|\s*include\s\+[<"]\|template\s*<\)'
setf cpp | return
endif
setf reason | return
endfor
endfunc
func! polyglot#DetectIdrFiletype()
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~# '^\s*--.*[Ii]dris \=1'
setf idris | return
endif
if line =~# '^\s*--.*[Ii]dris \=2'
setf idris2 | return
endif
endfor
for lnum in range(1, min([line("$"), 30]))
let line = getline(lnum)
if line =~# '^pkgs =.*'
setf idris | return
endif
if line =~# '^depends =.*'
setf idris2 | return
endif
if line =~# '^%language \(TypeProviders\|ElabReflection\)'
setf idris | return
endif
if line =~# '^%language PostfixProjections'
setf idris2 | return
endif
if line =~# '^%access .*'
setf idris | return
endif
if exists("g:filetype_idr")
exe "setf " . g:filetype_idr | return
endif
endfor
setf idris2 | return
endfunc
func! polyglot#DetectLidrFiletype()
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^>\s*--.*[Ii]dris \=1'
setf lidris | return
endif
endfor
setf lidris2 | return
endfunc
func! polyglot#DetectBasFiletype()
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
setf vb | return
endif
endfor
setf basic | return
endfunc
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,314 @@
" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
func! polyglot#detect#Inp(...)
if a:0 != 1 && did_filetype()
return
endif
let line = getline(nextnonblank(1))
if line =~# '^\*'
set ft=abaqus | return
endif
for lnum in range(1, min([line("$"), 500]))
let line = getline(lnum)
if line =~? '^header surface data'
set ft=trasys | return
endif
endfor
endfunc
func! polyglot#detect#Asa(...)
if a:0 != 1 && did_filetype()
return
endif
if exists("g:filetype_asa")
let &ft = g:filetype_asa | return
endif
set ft=aspvbs | return
endfunc
func! polyglot#detect#Asp(...)
if a:0 != 1 && did_filetype()
return
endif
if exists("g:filetype_asp")
let &ft = g:filetype_asp | return
endif
for lnum in range(1, min([line("$"), 3]))
let line = getline(lnum)
if line =~? 'perlscript'
set ft=aspperl | return
endif
endfor
set ft=aspvbs | return
endfunc
func! polyglot#detect#H(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
if exists("g:c_syntax_for_h")
set ft=objc | return
endif
set ft=objcpp | return
endif
endfor
if exists("g:c_syntax_for_h")
set ft=c | return
endif
if exists("g:ch_syntax_for_h")
set ft=ch | return
endif
set ft=cpp | return
endfunc
func! polyglot#detect#M(...)
if a:0 != 1 && did_filetype()
return
endif
let saw_comment = 0
for lnum in range(1, min([line("$"), 100]))
let line = getline(lnum)
if line =~# '^\s*/\*'
let saw_comment = 1
endif
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
set ft=objc | return
endif
if line =~# '^\s*%'
set ft=octave | return
endif
if line =~# '^\s*(\*'
set ft=mma | return
endif
if line =~? '^\s*\(\(type\|var\)\(\<\|\>\)\|--\)'
set ft=murphi | return
endif
endfor
if saw_comment
set ft=objc | return
endif
if exists("g:filetype_m")
let &ft = g:filetype_m | return
endif
set ft=octave | return
endfunc
func! polyglot#detect#Fs(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\(: \|new-device\)'
set ft=forth | return
endif
if line =~# '^\s*\(#light\|import\|let\|module\|namespace\|open\|type\)'
set ft=fsharp | return
endif
if line =~# '\s*\(#version\|precision\|uniform\|varying\|vec[234]\)'
set ft=glsl | return
endif
endfor
if exists("g:filetype_fs")
let &ft = g:filetype_fs | return
endif
set ft=forth | return
endfunc
func! polyglot#detect#Re(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*#\%(\%(if\|ifdef\|define\|pragma\)\s\+\w\|\s*include\s\+[<"]\|template\s*<\)'
set ft=cpp | return
endif
set ft=reason | return
endfor
endfunc
func! polyglot#detect#Idr(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~# '^\s*--.*[Ii]dris \=1'
set ft=idris | return
endif
if line =~# '^\s*--.*[Ii]dris \=2'
set ft=idris2 | return
endif
endfor
for lnum in range(1, min([line("$"), 30]))
let line = getline(lnum)
if line =~# '^pkgs =.*'
set ft=idris | return
endif
if line =~# '^depends =.*'
set ft=idris2 | return
endif
if line =~# '^%language \(TypeProviders\|ElabReflection\)'
set ft=idris | return
endif
if line =~# '^%language PostfixProjections'
set ft=idris2 | return
endif
if line =~# '^%access .*'
set ft=idris | return
endif
endfor
if exists("g:filetype_idr")
let &ft = g:filetype_idr | return
endif
set ft=idris2 | return
endfunc
func! polyglot#detect#Lidr(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^>\s*--.*[Ii]dris \=1'
set ft=lidris | return
endif
endfor
set ft=lidris2 | return
endfunc
func! polyglot#detect#Bas(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
set ft=vb | return
endif
endfor
set ft=basic | return
endfunc
func! polyglot#detect#Pm(...)
if a:0 != 1 && did_filetype()
return
endif
let line = getline(nextnonblank(1))
if line =~# 'XPM2'
set ft=xpm2 | return
endif
if line =~# 'XPM'
set ft=xpm | return
endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
set ft=raku | return
endif
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
set ft=perl | return
endif
endfor
if exists("g:filetype_pm")
let &ft = g:filetype_pm | return
endif
if polyglot#shebang#Detect() | return | endif
set ft=perl | return
endfunc
func! polyglot#detect#Pl(...)
if a:0 != 1 && did_filetype()
return
endif
let line = getline(nextnonblank(1))
if line =~# '^[^#]*:-' || line =~# '^\s*\%(%\|/\*\)' || line =~# '\.\s*$'
set ft=prolog | return
endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
set ft=raku | return
endif
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
set ft=perl | return
endif
endfor
if exists("g:filetype_pl")
let &ft = g:filetype_pl | return
endif
if polyglot#shebang#Detect() | return | endif
set ft=perl | return
endfunc
func! polyglot#detect#T(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~# '^\.'
set ft=nroff | return
endif
endfor
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
set ft=raku | return
endif
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
set ft=perl | return
endif
endfor
if exists("g:filetype_t")
let &ft = g:filetype_t | return
endif
if polyglot#shebang#Detect() | return | endif
set ft=perl | return
endfunc
func! polyglot#detect#Tt2(...)
if a:0 != 1 && did_filetype()
return
endif
for lnum in range(1, min([line("$"), 3]))
let line = getline(lnum)
if line =~? '<\%(!DOCTYPE HTML\|[%?]\|html\)'
set ft=tt2html | return
endif
endfor
set ft=tt2 | return
endfunc
func! polyglot#detect#Html(...)
if a:0 != 1 && did_filetype()
return
endif
let line = getline(nextnonblank(1))
if line =~# '^\(%\|<[%&].*>\)'
set ft=mason | return
endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '{%-\=\s*\(end.*\|extends\|block\|macro\|set\|if\|for\|include\|trans\|load\)\(\<\|\>\)\|{#\s\+'
set ft=htmldjango | return
endif
if line =~# '\(\<\|\>\)DTD\s\+XHTML\s'
set ft=xhtml | return
endif
endfor
set ft=html | return
endfunc
" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE
let &cpo = s:cpo_save
unlet s:cpo_save

757
autoload/polyglot/ft.vim Normal file
View File

@@ -0,0 +1,757 @@
" Vim functions for file type detection
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2020 Aug 17
" These functions are moved here from runtime/filetype.vim to make startup
" faster.
" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
func polyglot#ft#Check_inp()
if getline(1) =~ '^\*'
setf abaqus
else
let n = 1
if line("$") > 500
let nmax = 500
else
let nmax = line("$")
endif
while n <= nmax
if getline(n) =~? "^header surface data"
setf trasys
break
endif
let n = n + 1
endwhile
endif
endfunc
" This function checks for the kind of assembly that is wanted by the user, or
" can be detected from the first five lines of the file.
func polyglot#ft#FTasm()
" make sure b:asmsyntax exists
if !exists("b:asmsyntax")
let b:asmsyntax = ""
endif
if b:asmsyntax == ""
call polyglot#ft#FTasmsyntax()
endif
" if b:asmsyntax still isn't set, default to asmsyntax or GNU
if b:asmsyntax == ""
if exists("g:asmsyntax")
let b:asmsyntax = g:asmsyntax
else
let b:asmsyntax = "asm"
endif
endif
exe "setf " . fnameescape(b:asmsyntax)
endfunc
func polyglot#ft#FTasmsyntax()
" see if file contains any asmsyntax=foo overrides. If so, change
" b:asmsyntax appropriately
let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
\" ".getline(5)." "
let match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s')
if match != ''
let b:asmsyntax = match
elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
let b:asmsyntax = "vmasm"
endif
endfunc
" Check if one of the first five lines contains "VB_Name". In that case it is
" probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype.
func polyglot#ft#FTVB(alt)
if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
setf vb
else
exe "setf " . a:alt
endif
endfunc
func polyglot#ft#FTbtm()
if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm
setf dosbatch
else
setf btm
endif
endfunc
func polyglot#ft#BindzoneCheck(default)
if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA'
setf bindzone
elseif a:default != ''
exe 'setf ' . a:default
endif
endfunc
func polyglot#ft#FTlpc()
if exists("g:lpc_syntax_for_c")
let lnum = 1
while lnum <= 12
if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)'
setf lpc
return
endif
let lnum = lnum + 1
endwhile
endif
setf c
endfunc
func polyglot#ft#FTheader()
if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
if exists("g:c_syntax_for_h")
setf objc
else
setf objcpp
endif
elseif exists("g:c_syntax_for_h")
setf c
elseif exists("g:ch_syntax_for_h")
setf ch
else
setf cpp
endif
endfunc
" This function checks if one of the first ten lines start with a '@'. In
" that case it is probably a change file.
" If the first line starts with # or ! it's probably a ch file.
" If a line has "main", "include", "//" or "/*" it's probably ch.
" Otherwise CHILL is assumed.
func polyglot#ft#FTchange()
let lnum = 1
while lnum <= 10
if getline(lnum)[0] == '@'
setf change
return
endif
if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!')
setf ch
return
endif
if getline(lnum) =~ "MODULE"
setf chill
return
endif
if getline(lnum) =~ 'main\s*(\|#\s*include\|//'
setf ch
return
endif
let lnum = lnum + 1
endwhile
setf chill
endfunc
func polyglot#ft#FTent()
" This function checks for valid cl syntax in the first five lines.
" Look for either an opening comment, '#', or a block start, '{".
" If not found, assume SGML.
let lnum = 1
while lnum < 6
let line = getline(lnum)
if line =~ '^\s*[#{]'
setf cl
return
elseif line !~ '^\s*$'
" Not a blank line, not a comment, and not a block start,
" so doesn't look like valid cl code.
break
endif
let lnum = lnum + 1
endw
setf dtd
endfunc
func polyglot#ft#EuphoriaCheck()
if exists('g:filetype_euphoria')
exe 'setf ' . g:filetype_euphoria
else
setf euphoria3
endif
endfunc
func polyglot#ft#DtraceCheck()
let lines = getline(1, min([line("$"), 100]))
if match(lines, '^module\>\|^import\>') > -1
" D files often start with a module and/or import statement.
setf d
elseif match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
setf dtrace
else
setf d
endif
endfunc
func polyglot#ft#FTe()
if exists('g:filetype_euphoria')
exe 'setf ' . g:filetype_euphoria
else
let n = 1
while n < 100 && n <= line("$")
if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$"
setf specman
return
endif
let n = n + 1
endwhile
setf eiffel
endif
endfunc
" Distinguish between HTML, XHTML and Django
func polyglot#ft#FThtml()
let n = 1
while n < 10 && n <= line("$")
if getline(n) =~ '\<DTD\s\+XHTML\s'
setf xhtml
return
endif
if getline(n) =~ '{%\s*\(extends\|block\|load\)\>\|{#\s\+'
setf htmldjango
return
endif
let n = n + 1
endwhile
setf FALLBACK html
endfunc
" Distinguish between standard IDL and MS-IDL
func polyglot#ft#FTidl()
let n = 1
while n < 50 && n <= line("$")
if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"'
setf msidl
return
endif
let n = n + 1
endwhile
setf idl
endfunc
" Distinguish between "default" and Cproto prototype file. */
func polyglot#ft#ProtoCheck(default)
" Cproto files have a comment in the first line and a function prototype in
" the second line, it always ends in ";". Indent files may also have
" comments, thus we can't match comments to see the difference.
" IDL files can have a single ';' in the second line, require at least one
" chacter before the ';'.
if getline(2) =~ '.;$'
setf cpp
else
exe 'setf ' . a:default
endif
endfunc
func polyglot#ft#FTm()
let n = 1
let saw_comment = 0 " Whether we've seen a multiline comment leader.
while n < 100
let line = getline(n)
if line =~ '^\s*/\*'
" /* ... */ is a comment in Objective C and Murphi, so we can't conclude
" it's either of them yet, but track this as a hint in case we don't see
" anything more definitive.
let saw_comment = 1
endif
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|//\)'
setf objc
return
endif
if line =~ '^\s*%'
setf matlab
return
endif
if line =~ '^\s*(\*'
setf mma
return
endif
if line =~ '^\c\s*\(\(type\|var\)\>\|--\)'
setf murphi
return
endif
let n = n + 1
endwhile
if saw_comment
" We didn't see anything definitive, but this looks like either Objective C
" or Murphi based on the comment leader. Assume the former as it is more
" common.
setf objc
elseif exists("g:filetype_m")
" Use user specified default filetype for .m
exe "setf " . g:filetype_m
else
" Default is matlab
setf matlab
endif
endfunc
func polyglot#ft#FTmms()
let n = 1
while n < 20
let line = getline(n)
if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
setf mmix
return
endif
if line =~ '^\s*#'
setf make
return
endif
let n = n + 1
endwhile
setf mmix
endfunc
" This function checks if one of the first five lines start with a dot. In
" that case it is probably an nroff file: 'filetype' is set and 1 is returned.
func polyglot#ft#FTnroff()
if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
setf nroff
return 1
endif
return 0
endfunc
func polyglot#ft#FTmm()
let n = 1
while n < 20
let line = getline(n)
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)'
setf objcpp
return
endif
let n = n + 1
endwhile
setf nroff
endfunc
func polyglot#ft#FTpl()
if exists("g:filetype_pl")
exe "setf " . g:filetype_pl
else
" recognize Prolog by specific text in the first non-empty line
" require a blank after the '%' because Perl uses "%list" and "%translate"
let l = getline(nextnonblank(1))
if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-'
setf prolog
else
setf perl
endif
endif
endfunc
func polyglot#ft#FTinc()
if exists("g:filetype_inc")
exe "setf " . g:filetype_inc
else
let lines = getline(1).getline(2).getline(3)
if lines =~? "perlscript"
setf aspperl
elseif lines =~ "<%"
setf aspvbs
elseif lines =~ "<?"
setf php
else
call polyglot#ft#FTasmsyntax()
if exists("b:asmsyntax")
exe "setf " . fnameescape(b:asmsyntax)
else
setf pov
endif
endif
endif
endfunc
func polyglot#ft#FTprogress_cweb()
if exists("g:filetype_w")
exe "setf " . g:filetype_w
return
endif
if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE'
setf progress
else
setf cweb
endif
endfunc
func polyglot#ft#FTprogress_asm()
if exists("g:filetype_i")
exe "setf " . g:filetype_i
return
endif
" This function checks for an assembly comment the first ten lines.
" If not found, assume Progress.
let lnum = 1
while lnum <= 10 && lnum < line('$')
let line = getline(lnum)
if line =~ '^\s*;' || line =~ '^\*'
call polyglot#ft#FTasm()
return
elseif line !~ '^\s*$' || line =~ '^/\*'
" Not an empty line: Doesn't look like valid assembly code.
" Or it looks like a Progress /* comment
break
endif
let lnum = lnum + 1
endw
setf progress
endfunc
func polyglot#ft#FTprogress_pascal()
if exists("g:filetype_p")
exe "setf " . g:filetype_p
return
endif
" This function checks for valid Pascal syntax in the first ten lines.
" Look for either an opening comment or a program start.
" If not found, assume Progress.
let lnum = 1
while lnum <= 10 && lnum < line('$')
let line = getline(lnum)
if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
\ || line =~ '^\s*{' || line =~ '^\s*(\*'
setf pascal
return
elseif line !~ '^\s*$' || line =~ '^/\*'
" Not an empty line: Doesn't look like valid Pascal code.
" Or it looks like a Progress /* comment
break
endif
let lnum = lnum + 1
endw
setf progress
endfunc
func polyglot#ft#FTr()
let max = line("$") > 50 ? 50 : line("$")
for n in range(1, max)
" Rebol is easy to recognize, check for that first
if getline(n) =~? '\<REBOL\>'
setf rebol
return
endif
endfor
for n in range(1, max)
" R has # comments
if getline(n) =~ '^\s*#'
setf r
return
endif
" Rexx has /* comments */
if getline(n) =~ '^\s*/\*'
setf rexx
return
endif
endfor
" Nothing recognized, use user default or assume Rexx
if exists("g:filetype_r")
exe "setf " . g:filetype_r
else
" Rexx used to be the default, but R appears to be much more popular.
setf r
endif
endfunc
func polyglot#ft#McSetf()
" Rely on the file to start with a comment.
" MS message text files use ';', Sendmail files use '#' or 'dnl'
for lnum in range(1, min([line("$"), 20]))
let line = getline(lnum)
if line =~ '^\s*\(#\|dnl\)'
setf m4 " Sendmail .mc file
return
elseif line =~ '^\s*;'
setf msmessages " MS Message text file
return
endif
endfor
setf m4 " Default: Sendmail .mc file
endfunc
" Called from filetype.vim and scripts.vim.
func polyglot#ft#SetFileTypeSH(name)
if did_filetype()
" Filetype was already detected
return
endif
if expand("<amatch>") =~ g:ft_ignore_pat
return
endif
if a:name =~ '\<csh\>'
" Some .sh scripts contain #!/bin/csh.
call polyglot#ft#SetFileTypeShell("csh")
return
elseif a:name =~ '\<tcsh\>'
" Some .sh scripts contain #!/bin/tcsh.
call polyglot#ft#SetFileTypeShell("tcsh")
return
elseif a:name =~ '\<zsh\>'
" Some .sh scripts contain #!/bin/zsh.
call polyglot#ft#SetFileTypeShell("zsh")
return
elseif a:name =~ '\<ksh\>'
let b:is_kornshell = 1
if exists("b:is_bash")
unlet b:is_bash
endif
if exists("b:is_sh")
unlet b:is_sh
endif
elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
let b:is_bash = 1
if exists("b:is_kornshell")
unlet b:is_kornshell
endif
if exists("b:is_sh")
unlet b:is_sh
endif
elseif a:name =~ '\<sh\>'
let b:is_sh = 1
if exists("b:is_kornshell")
unlet b:is_kornshell
endif
if exists("b:is_bash")
unlet b:is_bash
endif
endif
call polyglot#ft#SetFileTypeShell("sh")
endfunc
" For shell-like file types, check for an "exec" command hidden in a comment,
" as used for Tcl.
" Also called from scripts.vim, thus can't be local to this script.
func polyglot#ft#SetFileTypeShell(name)
if did_filetype()
" Filetype was already detected
return
endif
if expand("<amatch>") =~ g:ft_ignore_pat
return
endif
let l = 2
while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
" Skip empty and comment lines.
let l = l + 1
endwhile
if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
" Found an "exec" line after a comment with continuation
let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
if n =~ '\<tclsh\|\<wish'
setf tcl
return
endif
endif
exe "setf " . a:name
endfunc
func polyglot#ft#CSH()
if did_filetype()
" Filetype was already detected
return
endif
if exists("g:filetype_csh")
call polyglot#ft#SetFileTypeShell(g:filetype_csh)
elseif &shell =~ "tcsh"
call polyglot#ft#SetFileTypeShell("tcsh")
else
call polyglot#ft#SetFileTypeShell("csh")
endif
endfunc
let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
func polyglot#ft#FTRules()
let path = expand('<amatch>:p')
if path =~ '/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|\%(usr/\)\=lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
setf udevrules
return
endif
if path =~ '^/etc/ufw/'
setf conf " Better than hog
return
endif
if path =~ '^/\(etc\|usr/share\)/polkit-1/rules\.d'
setf javascript
return
endif
try
let config_lines = readfile('/etc/udev/udev.conf')
catch /^Vim\%((\a\+)\)\=:E484/
setf hog
return
endtry
let dir = expand('<amatch>:p:h')
for line in config_lines
if line =~ s:ft_rules_udev_rules_pattern
let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
if dir == udev_rules
setf udevrules
endif
break
endif
endfor
setf hog
endfunc
func polyglot#ft#SQL()
if exists("g:filetype_sql")
exe "setf " . g:filetype_sql
else
setf sql
endif
endfunc
" If the file has an extension of 't' and is in a directory 't' or 'xt' then
" it is almost certainly a Perl test file.
" If the first line starts with '#' and contains 'perl' it's probably a Perl
" file.
" (Slow test) If a file contains a 'use' statement then it is almost certainly
" a Perl file.
func polyglot#ft#FTperl()
let dirname = expand("%:p:h:t")
if expand("%:e") == 't' && (dirname == 't' || dirname == 'xt')
setf perl
return 1
endif
if getline(1)[0] == '#' && getline(1) =~ 'perl'
setf perl
return 1
endif
let save_cursor = getpos('.')
call cursor(1,1)
let has_use = search('^use\s\s*\k', 'c', 30)
call setpos('.', save_cursor)
if has_use
setf perl
return 1
endif
return 0
endfunc
" Choose context, plaintex, or tex (LaTeX) based on these rules:
" 1. Check the first line of the file for "%&<format>".
" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
" 3. Default to "plain" or to g:tex_flavor, can be set in user's vimrc.
func polyglot#ft#FTtex()
let firstline = getline(1)
if firstline =~ '^%&\s*\a\+'
let format = tolower(matchstr(firstline, '\a\+'))
let format = substitute(format, 'pdf', '', '')
if format == 'tex'
let format = 'latex'
elseif format == 'plaintex'
let format = 'plain'
endif
elseif expand('%') =~ 'tex/context/.*/.*.tex'
let format = 'context'
else
" Default value, may be changed later:
let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
" Save position, go to the top of the file, find first non-comment line.
let save_cursor = getpos('.')
call cursor(1,1)
let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
\ 'cnp', firstNC + 1000)
if kwline == 1 " lpat matched
let format = 'latex'
elseif kwline == 2 " cpat matched
let format = 'context'
endif " If neither matched, keep default set above.
" let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000)
" let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000)
" if cline > 0
" let format = 'context'
" endif
" if lline > 0 && (cline == 0 || cline > lline)
" let format = 'tex'
" endif
endif " firstNC
call setpos('.', save_cursor)
endif " firstline =~ '^%&\s*\a\+'
" Translation from formats to file types. TODO: add AMSTeX, RevTex, others?
if format == 'plain'
setf plaintex
elseif format == 'context'
setf context
else " probably LaTeX
setf tex
endif
return
endfunc
func polyglot#ft#FTxml()
let n = 1
while n < 100 && n <= line("$")
let line = getline(n)
" DocBook 4 or DocBook 5.
let is_docbook4 = line =~ '<!DOCTYPE.*DocBook'
let is_docbook5 = line =~ ' xmlns="http://docbook.org/ns/docbook"'
if is_docbook4 || is_docbook5
let b:docbk_type = "xml"
if is_docbook5
let b:docbk_ver = 5
else
let b:docbk_ver = 4
endif
setf docbk
return
endif
if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
setf xbl
return
endif
let n += 1
endwhile
setf xml
endfunc
func polyglot#ft#FTy()
let n = 1
while n < 100 && n <= line("$")
let line = getline(n)
if line =~ '^\s*%'
setf yacc
return
endif
if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
setf racc
return
endif
let n = n + 1
endwhile
setf yacc
endfunc
func polyglot#ft#Redif()
let lnum = 1
while lnum <= 5 && lnum < line('$')
if getline(lnum) =~ "^\ctemplate-type:"
setf redif
return
endif
let lnum = lnum + 1
endwhile
endfunc
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,538 @@
" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
func! polyglot#shebang#Detect()
let ft = s:Filetype()
if ft != ""
let &ft = ft
return 1
endif
let err = polyglot#shebang#VimDetect()
if err == ""
return 1
endif
return 0
endfunc
let s:r_hashbang = '^#!\s*\(\S\+\)\s*\(.*\)\s*'
let s:r_envflag = '%(\S\+=\S\+\|-[iS]\|--ignore-environment\|--split-string\)'
let s:r_env = '^\%(\' . s:r_envflag . '\s\+\)*\(\S\+\)'
func! s:Filetype()
let l:line1 = getline(1)
if l:line1 !~# "^#!"
return
endif
let l:pathrest = matchlist(l:line1, s:r_hashbang)
if len(l:pathrest) == 0
return
endif
let [_, l:path, l:rest; __] = l:pathrest
let l:pathparts = split(l:path, "/")
if len(l:pathparts) == 0
return
endif
let l:script = l:pathparts[-1]
if l:script == "env"
let l:argspath = matchlist(l:rest, s:r_env)
if len(l:argspath) == 0
return
endif
let l:script = l:argspath[1]
endif
if has_key(s:interpreters, l:script)
return s:interpreters[l:script]
endif
for interpreter in keys(s:interpreters)
if l:script =~# '^' . interpreter
return s:interpreters[interpreter]
endif
endfor
endfunc
func! polyglot#shebang#VimDetect()
let line1 = getline(1)
if line1 =~# "^#!"
" A script that starts with "#!".
" Check for a line like "#!/usr/bin/env {options} bash". Turn it into
" "#!/usr/bin/bash" to make matching easier.
" Recognize only a few {options} that are commonly used.
if line1 =~# '^#!\s*\S*\<env\s'
let line1 = substitute(line1, '\S\+=\S\+', '', 'g')
let line1 = substitute(line1, '\(-[iS]\|--ignore-environment\|--split-string\)', '', '')
let line1 = substitute(line1, '\<env\s\+', '', '')
endif
" Get the program name.
" Only accept spaces in PC style path "#!c:/program files/perl [args]".
" If the word env is used, use the first word after the space:
" "#!/usr/bin/env perl [path/args]"
" If there is no path use the first word: "#!perl [path/args]".
" Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]".
if line1 =~# '^#!\s*\a:[/\\]'
let name = substitute(line1, '^#!.*[/\\]\(\i\+\).*', '\1', '')
elseif line1 =~# '^#!.*\<env\>'
let name = substitute(line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '')
elseif line1 =~# '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)'
let name = substitute(line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '')
else
let name = substitute(line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '')
endif
" tcl scripts may have #!/bin/sh in the first line and "exec wish" in the
" third line. Suggested by Steven Atkinson.
if getline(3) =~# '^exec wish'
let name = 'wish'
endif
" Bourne-like shell script bash bash2 ksh ksh93 sh
if name =~# '^\(bash\d*\|\|ksh\d*\|sh\)\>'
call dist#ft#SetFileTypeSH(line1) " defined in filetype.vim
return
" csh scripts
elseif name =~# '^csh\>'
if exists("g:filetype_csh")
call dist#ft#SetFileTypeShell(g:filetype_csh)
return
else
call dist#ft#SetFileTypeShell("csh")
return
endif
" tcsh scripts
elseif name =~# '^tcsh\>'
call dist#ft#SetFileTypeShell("tcsh")
return
" Z shell scripts
elseif name =~# '^zsh\>'
set ft=zsh | return
" TCL scripts
elseif name =~# '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
set ft=tcl | return
" Expect scripts
elseif name =~# '^expect\>'
set ft=expect | return
" Gnuplot scripts
elseif name =~# '^gnuplot\>'
set ft=gnuplot | return
" Makefiles
elseif name =~# 'make\>'
set ft=make | return
" Pike
elseif name =~# '^pike\%(\>\|[0-9]\)'
set ft=pike | return
" Lua
elseif name =~# 'lua'
set ft=lua | return
" Perl 6
elseif name =~# 'perl6'
set ft=perl6 | return
" Perl
elseif name =~# 'perl'
set ft=perl | return
" PHP
elseif name =~# 'php'
set ft=php | return
" Python
elseif name =~# 'python'
set ft=python | return
" Groovy
elseif name =~# '^groovy\>'
set ft=groovy | return
" Ruby
elseif name =~# 'ruby'
set ft=ruby | return
" JavaScript
elseif name =~# 'node\(js\)\=\>\|js\>' || name =~# 'rhino\>'
set ft=javascript | return
" BC calculator
elseif name =~# '^bc\>'
set ft=bc | return
" sed
elseif name =~# 'sed\>'
set ft=sed | return
" OCaml-scripts
elseif name =~# 'ocaml'
set ft=ocaml | return
" Awk scripts; also finds "gawk"
elseif name =~# 'awk\>'
set ft=awk | return
" Website MetaLanguage
elseif name =~# 'wml'
set ft=wml | return
" Scheme scripts
elseif name =~# 'scheme'
set ft=scheme | return
" CFEngine scripts
elseif name =~# 'cfengine'
set ft=cfengine | return
" Erlang scripts
elseif name =~# 'escript'
set ft=erlang | return
" Haskell
elseif name =~# 'haskell'
set ft=haskell | return
" Scala
elseif name =~# 'scala\>'
set ft=scala | return
" Clojure
elseif name =~# 'clojure'
set ft=clojure | return
endif
unlet name
else
" File does not start with "#!".
let line2 = getline(2)
let line3 = getline(3)
let line4 = getline(4)
let line5 = getline(5)
" Bourne-like shell script sh ksh bash bash2
if line1 =~# '^:$'
call dist#ft#SetFileTypeSH(line1) " defined in filetype.vim
return
" Z shell scripts
elseif line1 =~# '^#compdef\>' || line1 =~# '^#autoload\>' ||
\ "\n".line1."\n".line2."\n".line3."\n".line4."\n".line5 =~# '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
set ft=zsh | return
" ELM Mail files
elseif line1 =~# '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
set ft=mail | return
" Mason
elseif line1 =~# '^<[%&].*>'
set ft=mason | return
" Vim scripts (must have '" vim' as the first line to trigger this)
elseif line1 =~# '^" *[vV]im$'
set ft=vim | return
" libcxx and libstdc++ standard library headers like "iostream" do not have
" an extension, recognize the Emacs file mode.
elseif line1 =~? '-\*-.*C++.*-\*-'
set ft=cpp | return
" MOO
elseif line1 =~# '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
set ft=moo | return
" Diff file:
" - "diff" in first line (context diff)
" - "Only in " in first line
" - "--- " in first line and "+++ " in second line (unified diff).
" - "*** " in first line and "--- " in second line (context diff).
" - "# It was generated by makepatch " in the second line (makepatch diff).
" - "Index: <filename>" in the first line (CVS file)
" - "=== ", line of "=", "---", "+++ " (SVK diff)
" - "=== ", "--- ", "+++ " (bzr diff, common case)
" - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
" - "# HG changeset patch" in first line (Mercurial export format)
elseif line1 =~# '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)'
\ || (line1 =~# '^--- ' && line2 =~# '^+++ ')
\ || (line1 =~# '^\* looking for ' && line2 =~# '^\* comparing to ')
\ || (line1 =~# '^\*\*\* ' && line2 =~# '^--- ')
\ || (line1 =~# '^=== ' && ((line2 =~# '^=\{66\}' && line3 =~# '^--- ' && line4 =~# '^+++') || (line2 =~# '^--- ' && line3 =~# '^+++ ')))
\ || (line1 =~# '^=== \(removed\|added\|renamed\|modified\)')
set ft=diff | return
" PostScript Files (must have %!PS as the first line, like a2ps output)
elseif line1 =~# '^%![ \t]*PS'
set ft=postscr | return
" M4 script Guess there is a line that starts with "dnl".
elseif line1 =~# '^\s*dnl\>'
\ || line2 =~# '^\s*dnl\>'
\ || line3 =~# '^\s*dnl\>'
\ || line4 =~# '^\s*dnl\>'
\ || line5 =~# '^\s*dnl\>'
set ft=m4 | return
" AmigaDos scripts
elseif $TERM == "amiga"
\ && (line1 =~# "^;" || line1 =~? '^\.bra')
set ft=amiga | return
" SiCAD scripts (must have procn or procd as the first line to trigger this)
elseif line1 =~? '^ *proc[nd] *$'
set ft=sicad | return
" Purify log files start with "**** Purify"
elseif line1 =~# '^\*\*\*\* Purify'
set ft=purifylog | return
" XML
elseif line1 =~# '<?\s*xml.*?>'
set ft=xml | return
" XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
elseif line1 =~# '\<DTD\s\+XHTML\s'
set ft=xhtml | return
" HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
" Avoid "doctype html", used by slim.
elseif line1 =~? '<!DOCTYPE\s\+html\>'
set ft=html | return
" PDF
elseif line1 =~# '^%PDF-'
set ft=pdf | return
" XXD output
elseif line1 =~# '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
set ft=xxd | return
" RCS/CVS log output
elseif line1 =~# '^RCS file:' || line2 =~# '^RCS file:'
set ft=rcslog | return
" CVS commit
elseif line2 =~# '^CV' || getline("$") =~# '^CV '
set ft=cvs | return
" Prescribe
elseif line1 =~# '^!R!'
set ft=prescribe | return
" Send-pr
elseif line1 =~# '^SEND-PR:'
set ft=sendpr | return
" SNNS files
elseif line1 =~# '^SNNS network definition file'
set ft=snnsnet | return
elseif line1 =~# '^SNNS pattern definition file'
set ft=snnspat | return
elseif line1 =~# '^SNNS result file'
set ft=snnsres | return
" Virata
elseif line1 =~# '^%.\{-}[Vv]irata'
\ || line2 =~# '^%.\{-}[Vv]irata'
\ || line3 =~# '^%.\{-}[Vv]irata'
\ || line4 =~# '^%.\{-}[Vv]irata'
\ || line5 =~# '^%.\{-}[Vv]irata'
set ft=virata | return
" Strace
elseif line1 =~# '[0-9:.]* *execve(' || line1 =~# '^__libc_start_main'
set ft=strace | return
" VSE JCL
elseif line1 =~# '^\* $$ JOB\>' || line1 =~# '^// *JOB\>'
set ft=vsejcl | return
" TAK and SINDA
elseif line4 =~# 'K & K Associates' || line2 =~# 'TAK 2000'
set ft=takout | return
elseif line3 =~# 'S Y S T E M S I M P R O V E D '
set ft=sindaout | return
elseif getline(6) =~# 'Run Date: '
set ft=takcmp | return
elseif getline(9) =~# 'Node File 1'
set ft=sindacmp | return
" DNS zone files
elseif line1.line2.line3.line4 =~# '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA'
set ft=bindzone | return
" BAAN
elseif line1 =~# '|\*\{1,80}' && line2 =~# 'VRC '
\ || line2 =~# '|\*\{1,80}' && line3 =~# 'VRC '
set ft=baan | return
" Valgrind
elseif line1 =~# '^==\d\+== valgrind' || line3 =~# '^==\d\+== Using valgrind'
set ft=valgrind | return
" Go docs
elseif line1 =~# '^PACKAGE DOCUMENTATION$'
set ft=godoc | return
" Renderman Interface Bytestream
elseif line1 =~# '^##RenderMan'
set ft=rib | return
" Scheme scripts
elseif line1 =~# 'exec\s\+\S*scheme' || line2 =~# 'exec\s\+\S*scheme'
set ft=scheme | return
" Git output
elseif line1 =~# '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$'
set ft=git | return
" Gprof (gnu profiler)
elseif line1 == 'Flat profile:'
\ && line2 == ''
\ && line3 =~# '^Each sample counts as .* seconds.$'
set ft=gprof | return
" Erlang terms
" (See also: http://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html#Choosing-Modes)
elseif line1 =~? '-\*-.*erlang.*-\*-'
set ft=erlang | return
" YAML
elseif line1 =~# '^%YAML'
set ft=yaml | return
" CVS diff
else
let lnum = 1
while getline(lnum) =~# "^? " && lnum < line("$")
let lnum += 1
endwhile
if getline(lnum) =~# '^Index:\s\+\f\+$'
set ft=diff | return
" locale input file Formal Definitions of Cultural Conventions
" filename must be like en_US, fr_FR@euro or en_US.UTF-8
elseif expand("%") =~# '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
let lnum = 1
while lnum < 100 && lnum < line("$")
if getline(lnum) =~# '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
setf fdcc | return
break
endif
let lnum += 1
endwhile
endif
unlet lnum
endif
endif
if line1 =~ '^# ' || getline(2) =~ '^# ' || getline(3) =~ '^# ' || getline(4) =~ '^# ' || getline(5) =~ '^# '
setf FALLBACK conf
return 1
endif
return 1
endfunc
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
let s:interpreters = {
\ 'osascript': 'applescript',
\ 'tcc': 'c',
\ 'coffee': 'coffee',
\ 'crystal': 'crystal',
\ 'dart': 'dart',
\ 'elixir': 'elixir',
\ 'escript': 'erlang',
\ 'fish': 'fish',
\ 'gnuplot': 'gnuplot',
\ 'groovy': 'groovy',
\ 'runghc': 'haskell',
\ 'runhaskell': 'haskell',
\ 'runhugs': 'haskell',
\ 'chakra': 'javascript',
\ 'd8': 'javascript',
\ 'gjs': 'javascript',
\ 'js': 'javascript',
\ 'node': 'javascript',
\ 'nodejs': 'javascript',
\ 'qjs': 'javascript',
\ 'rhino': 'javascript',
\ 'v8': 'javascript',
\ 'v8-shell': 'javascript',
\ 'julia': 'julia',
\ 'lua': 'lua',
\ 'moon': 'moon',
\ 'ocaml': 'ocaml',
\ 'ocamlrun': 'ocaml',
\ 'ocamlscript': 'ocaml',
\ 'cperl': 'perl',
\ 'perl': 'perl',
\ 'php': 'php',
\ 'swipl': 'prolog',
\ 'yap': 'prolog',
\ 'pwsh': 'ps1',
\ 'python': 'python',
\ 'python2': 'python',
\ 'python3': 'python',
\ 'qmake': 'qmake',
\ 'Rscript': 'r',
\ 'racket': 'racket',
\ 'perl6': 'raku',
\ 'raku': 'raku',
\ 'rakudo': 'raku',
\ 'ruby': 'ruby',
\ 'macruby': 'ruby',
\ 'rake': 'ruby',
\ 'jruby': 'ruby',
\ 'rbx': 'ruby',
\ 'scala': 'scala',
\ 'ash': 'sh',
\ 'bash': 'sh',
\ 'dash': 'sh',
\ 'ksh': 'sh',
\ 'mksh': 'sh',
\ 'pdksh': 'sh',
\ 'rc': 'sh',
\ 'sh': 'sh',
\ 'boolector': 'smt2',
\ 'cvc4': 'smt2',
\ 'mathsat5': 'smt2',
\ 'opensmt': 'smt2',
\ 'smtinterpol': 'smt2',
\ 'smt-rat': 'smt2',
\ 'stp': 'smt2',
\ 'verit': 'smt2',
\ 'yices2': 'smt2',
\ 'z3': 'smt2',
\ 'deno': 'typescript',
\ 'ts-node': 'typescript',
\ 'zsh': 'zsh',
\ }
" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,645 @@
" Restore 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
let s:globs = {
\ '8th': '*.8th',
\ 'Jenkinsfile': '*.jenkinsfile,*.Jenkinsfile,Jenkinsfile,Jenkinsfile*',
\ 'a2ps': 'a2psrc,.a2psrc',
\ 'a65': '*.a65',
\ 'aap': '*.aap',
\ 'abap': '*.abap',
\ 'abaqus': '*.inp',
\ 'abc': '*.abc',
\ 'abel': '*.abl',
\ 'acedb': '*.wrm',
\ 'ada': '*.adb,*.ads,*.ada,*.adc,*.gpr,*.ada_m',
\ 'ahdl': '*.tdf',
\ 'aidl': '*.aidl',
\ 'alsaconf': '.asoundrc',
\ 'aml': '*.aml',
\ 'ampl': '*.run',
\ 'ant': 'build.xml',
\ 'apache': '.htaccess,access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*',
\ 'apachestyle': 'proftpd.conf*',
\ 'apiblueprint': '*.apib',
\ 'applescript': '*.applescript,*.scpt',
\ 'aptconf': 'apt.conf',
\ 'arch': '.arch-inventory,=tagging-method',
\ 'arduino': '*.pde,*.ino',
\ 'art': '*.art',
\ 'asciidoc': '*.asciidoc,*.adoc,*.asc',
\ 'asl': '*.asl,*.dsl',
\ 'asn': '*.asn,*.asn1',
\ 'aspperl': '*.asp',
\ 'aspvbs': '*.asa,*.asp',
\ 'asterisk': '',
\ 'asteriskvm': '',
\ 'atlas': '*.atl,*.as',
\ 'autohotkey': '*.ahk,*.ahkl',
\ 'autoit': '*.au3',
\ 'automake': '[mM]akefile.am,GNUmakefile.am',
\ 'ave': '*.ave',
\ 'awk': '*.awk,*.gawk',
\ 'b': '*.mch,*.ref,*.imp',
\ 'basic': '*.basic',
\ 'bc': '*.bc',
\ 'bdf': '*.bdf',
\ 'bib': '*.bib',
\ 'bindzone': 'named.root',
\ 'blade': '*.blade,*.blade.php',
\ 'blank': '*.bl',
\ 'brewfile': 'Brewfile',
\ 'bsdl': '*.bsdl,*bsd',
\ 'bst': '*.bst',
\ 'bzl': '*.bzl,*.bazel,*.BUILD,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE',
\ 'bzr': 'bzr_log.*',
\ 'c': '*.c,*.cats,*.h,*.idc,*.qc',
\ 'cabal': '*.cabal',
\ 'caddyfile': 'Caddyfile',
\ 'calendar': 'calendar',
\ 'carp': '*.carp',
\ 'catalog': 'catalog,sgml.catalog*',
\ 'cdl': '*.cdl',
\ 'cdrdaoconf': '.cdrdao',
\ 'cdrtoc': '*.toc',
\ 'cf': '*.cfm,*.cfi,*.cfc',
\ 'cfengine': 'cfengine.conf',
\ 'cfg': '*.cfg,*.hgrc,*hgrc',
\ 'ch': '*.chf',
\ 'chaiscript': '*.chai',
\ 'chaskell': '*.chs',
\ 'chill': '*..ch',
\ 'chordpro': '*.chopro,*.crd,*.cho,*.crdpro,*.chordpro',
\ 'cl': '*.eni',
\ 'clean': '*.dcl,*.icl',
\ 'clojure': '*.clj,*.boot,*.cl2,*.cljc,*.cljs,*.cljs.hl,*.cljscm,*.cljx,*.hic,*.edn,riemann.config,build.boot,profile.boot',
\ 'cmake': '*.cmake,*.cmake.in,CMakeLists.txt',
\ 'cmod': '*.cmod',
\ 'cmusrc': '',
\ 'cobol': '*.cbl,*.cob,*.lib',
\ 'coco': '*.atg',
\ 'coffee': '*.coffee,*._coffee,*.cake,*.cjsx,*.iced,*.coffeekup,Cakefile',
\ 'conaryrecipe': '*.recipe',
\ 'conf': '*.conf,auto.master,config',
\ 'config': 'configure.in,configure.ac,Pipfile',
\ 'context': '*.mkii,*.mkiv,*.mkvi',
\ 'cpp': '*.cpp,*.c++,*.cc,*.cp,*.cxx,*.h,*.h++,*.hh,*.hpp,*.hxx,*.inc,*.inl,*.ipp,*.tcc,*.tpp,*.moc,*.tlh',
\ 'cql': '*.cql',
\ 'crm': '*.crm',
\ 'crontab': 'crontab,crontab.*',
\ 'cryptol': '*.cry,*.cyl,*.lcry,*.lcyl',
\ 'crystal': '*.cr,Projectfile',
\ 'cs': '*.cs',
\ 'csc': '*.csc',
\ 'csdl': '*.csdl',
\ 'csp': '*.csp,*.fdr',
\ 'css': '*.css',
\ 'csv': '*.csv,*.tsv,*.tab',
\ 'cterm': '*.con',
\ 'cucumber': '*.feature,*.story',
\ 'cuda': '*.cu,*.cuh',
\ 'cuesheet': '*.cue',
\ 'cupl': '*.pld',
\ 'cuplsim': '*.si',
\ 'cvs': 'cvs\d\+',
\ 'cvsrc': '.cvsrc',
\ 'cynpp': '*.cyn',
\ 'd': '*.d,*.di',
\ 'dart': '*.dart,*.drt',
\ 'datascript': '*.ds',
\ 'dcd': '*.dcd',
\ 'dcov': '*.lst',
\ 'dd': '*.dd',
\ 'ddoc': '*.ddoc',
\ 'debchangelog': 'changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch',
\ 'debcontrol': '',
\ 'debcopyright': '',
\ 'debsources': '',
\ 'def': '*.def',
\ 'denyhosts': 'denyhosts.conf',
\ 'desc': '*.desc',
\ 'desktop': '*.desktop,*.directory',
\ 'dhall': '*.dhall',
\ 'dictconf': 'dict.conf,.dictrc',
\ 'dictdconf': 'dictd.conf',
\ 'diff': '*.diff,*.rej',
\ 'dircolors': '.dir_colors,.dircolors',
\ 'dnsmasq': '',
\ 'dockerfile': '*.Dockerfile,*.dock,Containerfile,Dockerfile,dockerfile,Dockerfile*',
\ 'dosbatch': '*.bat,*.sys',
\ 'dosini': '*.wrap,*.ini,*.dof,*.lektorproject,*.prefs,*.pro,*.properties,buildozer.spec,.editorconfig,.npmrc,php.ini-*',
\ 'dot': '*.dot,*.gv',
\ 'dracula': '*.drac,*.drc,*lvs,*lpe,drac.*',
\ 'dsdl': '*.sdl',
\ 'dsl': '*.dsl',
\ 'dtd': '*.dtd',
\ 'dts': '*.dts,*.dtsi',
\ 'dune': 'jbuild,dune,dune-project,dune-workspace',
\ 'dylan': '*.dylan',
\ 'dylanintr': '*.intr',
\ 'dylanlid': '*.lid',
\ 'ecd': '*.ecd',
\ 'ecrystal': '*.ecr',
\ 'edif': '*.ed\(f\|if\|o\)',
\ 'eelixir': '*.eex,*.html.leex,*.leex',
\ 'elf': '*.am',
\ 'elinks': 'elinks.conf',
\ 'elixir': '*.ex,*.exs,mix.lock',
\ 'elm': '*.elm',
\ 'elmfilt': 'filter-rules',
\ 'embeddedpuppet': '*.epp',
\ 'ember-script': '*.em,*.emberscript',
\ 'emblem': '*.emblem,*.em',
\ 'erlang': '*.erl,*.app.src,*.es,*.escript,*.hrl,*.xrl,*.yrl,*.app,*.yaws,Emakefile,rebar.config,rebar.config.lock,rebar.lock',
\ 'eruby': '*.erb,*.erb.deface,*.rhtml',
\ 'esmtprc': '*esmtprc',
\ 'esqlc': '*.ec,*.EC',
\ 'esterel': '*.strl',
\ 'eterm': '',
\ 'exim': 'exim.conf',
\ 'expect': '*.exp',
\ 'exports': 'exports',
\ 'factor': '*.factor',
\ 'falcon': '*.fal',
\ 'fan': '*.fan,*.fwt',
\ 'fbs': '*.fbs',
\ 'fennel': '*.fnl',
\ 'ferm': '*.ferm,ferm.conf',
\ 'fetchmail': '.fetchmailrc',
\ 'fgl': '*.4gl,*.4gh,*.m4gl',
\ 'fish': '*.fish',
\ 'flow': '*.flow',
\ 'focexec': '*.fex,*.focexec',
\ 'forth': '*.fs,*.ft,*.fth',
\ 'fortran': '*.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08',
\ 'framescript': '*.fsl',
\ 'freebasic': '*.fb,*.bi',
\ 'fsharp': '*.fs,*.fsi,*.fsx',
\ 'fstab': 'fstab,mtab',
\ 'fvwm': '',
\ 'gdb': '.gdbinit',
\ 'gdmo': '*.mo,*.gdmo',
\ 'gdscript3': '*.gd',
\ 'gedcom': '*.ged,lltxxxxx.txt',
\ 'gitcommit': 'COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG',
\ 'gitconfig': '*.gitconfig,.gitconfig,.gitmodules',
\ 'gitignore': '.gitignore',
\ 'gitolite': 'gitolite.conf',
\ 'gitrebase': 'git-rebase-todo',
\ 'gitsendemail': '.gitsendemail.*',
\ 'gkrellmrc': 'gkrellmrc,gkrellmrc_?',
\ 'glsl': '*.glsl,*.fp,*.frag,*.frg,*.fs,*.fsh,*.fshader,*.geo,*.geom,*.glslf,*.glslv,*.gs,*.gshader,*.shader,*.tesc,*.tese,*.vert,*.vrx,*.vsh,*.vshader,*.comp',
\ 'gmpl': '*.mod',
\ 'gnash': 'gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc',
\ 'gnuplot': '*.gp,*.gnu,*.gnuplot,*.p,*.plot,*.plt,*.gpi',
\ 'go': '*.go',
\ 'gohtmltmpl': '*.tmpl',
\ 'gomod': 'go.mod',
\ 'gp': '*.gp,.gprc',
\ 'gpg': '',
\ 'grads': '*.gs',
\ 'graphql': '*.graphql,*.gql,*.graphqls',
\ 'gretl': '*.gretl',
\ 'groovy': '*.groovy,*.grt,*.gtpl,*.gvy,*.gradle,Jenkinsfile',
\ 'group': '',
\ 'grub': '',
\ 'gsp': '*.gsp',
\ 'gtkrc': '.gtkrc,gtkrc,.gtkrc*,gtkrc*',
\ 'haml': '*.haml,*.haml.deface,*.hamlc,*.hamlbars',
\ 'hamster': '*.hsc,*.hsm',
\ 'haproxy': 'haproxy*.conf*,haproxy*.cfg*',
\ 'haskell': '*.hs,*.hs-boot,*.hsc,*.bpk,*.hsig',
\ 'haste': '*.ht',
\ 'hastepreproc': '*.htpp',
\ 'haxe': '*.hx,*.hxsl',
\ 'hb': '*.hb',
\ 'hcl': '*.hcl,*.nomad,*.workflow,Appfile',
\ 'helm': '',
\ 'help': '',
\ 'hercules': '*.vc,*.ev,*.sum,*.errsum',
\ 'hex': '*.hex,*.h32',
\ 'hgcommit': 'hg-editor-*.txt',
\ 'hive': '*.q,*.hql,*.ql',
\ 'hog': '*.hog,snort.conf,vision.conf',
\ 'hollywood': '*.hws',
\ 'hostconf': '',
\ 'hostsaccess': '',
\ 'html': '*.html,*.htm,*.html.hl,*.inc,*.st,*.xht,*.xhtml',
\ 'html.handlebars': '*.handlebars,*.hbs,*.hdbs,*.hb',
\ 'html.mustache': '*.mustache,*.hogan,*.hulk,*.hjs',
\ 'html.twig': '*.twig',
\ 'htmldjango': '*.jinja,*.j2,*.jinja2,*.njk',
\ 'htmlm4': '*.html.m4',
\ 'httest': '*.htt,*.htb',
\ 'i3config': '*.i3.config,*.i3config,i3.config,i3config,.i3.config,.i3config',
\ 'ibasic': '*.iba,*.ibi',
\ 'icalendar': '*.ics',
\ 'icemenu': '',
\ 'icon': '*.icn',
\ 'idris': '*.idr,*.lidr,idris-response',
\ 'idris2': '*.idr,*.ipkg,idris-response',
\ 'indent': '.indent.pro,indentrc',
\ 'inform': '*.inf,*.INF',
\ 'initng': '*.ii',
\ 'inittab': 'inittab',
\ 'ion': '*.ion',
\ 'ipfilter': 'ipf.conf,ipf6.conf,ipf.rules',
\ 'iss': '*.iss',
\ 'ist': '*.ist,*.mst',
\ 'j': '*.ijs',
\ 'jal': '*.jal,*.JAL',
\ 'jam': '*.jpl,*.jpr,Prl*.*,JAM*.*',
\ 'java': '*.java,*.jav',
\ 'javacc': '*.jj,*.jjt',
\ 'javascript': '*.js,*._js,*.bones,*.cjs,*.es,*.es6,*.frag,*.gs,*.jake,*.jsb,*.jscad,*.jsfl,*.jsm,*.jss,*.mjs,*.njs,*.pac,*.sjs,*.ssjs,*.xsjs,*.xsjslib,*.javascript,Jakefile',
\ 'javascriptreact': '*.jsx',
\ 'jess': '*.clp',
\ 'jgraph': '*.jgr',
\ 'jovial': '*.jov,*.j73,*.jovial',
\ 'jproperties': '*.properties,*.properties_??,*.properties_??_??,*.properties_??_??_*',
\ 'jq': '*.jq,.jqrc,.jqrc*',
\ 'json': '*.json,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.JSON-tmLanguage,*.jsonl,*.mcmeta,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,*.jsonp,*.template,.arcconfig,.htmlhintrc,.tern-config,.tern-project,.watchmanconfig,composer.lock,mcmod.info,Pipfile.lock',
\ 'json5': '*.json5',
\ 'jsonc': '*.cjson,*.jsonc,coc-settings.json,.eslintrc.json,.babelrc,.jshintrc,.jslintrc,.mocharc.json,coffeelint.json,tsconfig.json,jsconfig.json',
\ 'jsonnet': '*.jsonnet,*.libsonnet',
\ 'jsp': '*.jsp',
\ 'jst': '*.ejs,*.ect,*.jst',
\ 'julia': '*.jl',
\ 'kconfig': 'Kconfig,Kconfig.debug,Kconfig.*',
\ 'kivy': '*.kv',
\ 'kix': '*.kix',
\ 'kotlin': '*.kt,*.ktm,*.kts',
\ 'kscript': '*.ks',
\ 'kwt': '*.k',
\ 'lace': '*.ace,*.ACE',
\ 'latte': '*.latte,*.lte',
\ 'ld': '*.ld',
\ 'ldif': '*.ldif',
\ 'ledger': '*.ldg,*.ledger,*.journal',
\ 'less': '*.less',
\ 'lex': '*.lex,*.l,*.lxx,*.l++',
\ 'lftp': 'lftp.conf,.lftprc',
\ 'lhaskell': '*.lhs',
\ 'libao': '',
\ 'lidris2': '*.lidr',
\ 'lifelines': '*.ll',
\ 'lilo': 'lilo.conf,lilo.conf*',
\ 'lilypond': '*.ly,*.ily',
\ 'limits': '',
\ 'liquid': '*.liquid',
\ 'lisp': '*.lsp,*.lisp,*.el,*.cl,.emacs,.sawfishrc,sbclrc,.sbclrc',
\ 'litcoffee': '*.litcoffee,*.coffee.md',
\ 'lite': '*.lite,*.lt',
\ 'litestep': '',
\ 'livescript': '*.ls,*._ls,Slakefile',
\ 'llvm': '*.ll',
\ 'log': '*.log,*.LOG,*_log,*_LOG',
\ 'logcheck': '',
\ 'loginaccess': '',
\ 'logindefs': '',
\ 'logtalk': '*.lgt',
\ 'lotos': '*.lot,*.lotos',
\ 'lout': '*.lou,*.lout',
\ 'lpc': '*.lpc,*.ulpc',
\ 'lprolog': '*.sig',
\ 'lsl': '*.lsl',
\ 'lss': '*.lss',
\ 'lua': '*.lua,*.fcgi,*.nse,*.p8,*.pd_lua,*.rbxs,*.rockspec,*.wlua,.luacheckrc',
\ 'lynx': 'lynx.cfg',
\ 'm4': '*.m4,*.at',
\ 'mail': '*.eml,snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,{neo,}mutt[[:alnum:]._-]\\\{6\},reportbug-*',
\ 'mailaliases': '',
\ 'mailcap': '.mailcap,mailcap',
\ 'make': '*.mak,*.dsp,*.mk,*[mM]akefile',
\ 'mako': '*.mako,*.mao',
\ 'mallard': '*.page',
\ 'manconf': 'man.config',
\ 'map': '*.map',
\ 'maple': '*.mv,*.mpl,*.mws',
\ 'markdown': '*.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr',
\ 'markdown.mdx': '*.mdx',
\ 'mason': '*.mason,*.mhtml,*.comp',
\ 'master': '*.mas,*.master',
\ 'mel': '*.mel',
\ 'meson': 'meson.build,meson_options.txt',
\ 'messages': '',
\ 'mf': '*.mf',
\ 'mgl': '*.mgl',
\ 'mgp': '*.mgp',
\ 'mib': '*.mib,*.my',
\ 'mint': '*.mint',
\ 'mix': '*.mix,*.mixal',
\ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls,*.mma',
\ 'mmp': '*.mmp',
\ 'modconf': '',
\ 'modula2': '*.m2,*.DEF,*.MOD,*.mi',
\ 'modula3': '*.[mi][3g]',
\ 'monk': '*.isc,*.monk,*.ssc,*.tsc',
\ 'moo': '*.moo',
\ 'moon': '*.moon',
\ 'mp': '*.mp',
\ 'mplayerconf': 'mplayer.conf',
\ 'mrxvtrc': 'mrxvtrc,.mrxvtrc',
\ 'msidl': '*.odl,*.mof',
\ 'msql': '*.msql',
\ 'mupad': '*.mu',
\ 'murphi': '*.m',
\ 'mush': '*.mush',
\ 'muttrc': '.mutt{ng,}rc*,mutt{ng,}rc*,Mutt{ng,}rc*,Mutt{ng,}rc',
\ 'mysql': '*.mysql',
\ 'n1ql': '*.n1ql,*.nql',
\ 'named': 'named*.conf,rndc*.conf,rndc*.key',
\ 'nanorc': '*.nanorc',
\ 'natural': '*.NS[ACGLMNPS]',
\ 'ncf': '*.ncf',
\ 'neomuttrc': 'Neomuttrc,.neomuttrc*,neomuttrc*,Neomuttrc*',
\ 'netrc': '.netrc',
\ 'nginx': '*.nginx,*.nginxconf,*.vhost,nginx.conf,nginx*.conf,*nginx.conf',
\ 'nim': '*.nim,*.nim.cfg,*.nimble,*.nimrod,*.nims,nim.cfg',
\ 'ninja': '*.ninja',
\ 'nix': '*.nix',
\ 'nqc': '*.nqc',
\ 'nroff': '*.1,*.1in,*.1m,*.1x,*.2,*.3,*.3in,*.3m,*.3p,*.3pm,*.3qt,*.3x,*.4,*.5,*.6,*.7,*.8,*.9,*.man,*.mdoc,*.tr,*.nr,*.roff,*.tmac,*.mom,tmac.*',
\ 'nsis': '*.nsi,*.nsh',
\ 'oasis': '_oasis',
\ 'obj': '*.obj',
\ 'objc': '*.m,*.h',
\ 'ocaml': '*.ml,*.eliom,*.eliomi,*.ml4,*.mli,*.mll,*.mly,*.mlt,*.mlp,*.mlip,*.mli.cppo,*.ml.cppo,.ocamlinit',
\ 'ocamlbuild_tags': '_tags',
\ 'occam': '*.occ',
\ 'ocpbuild': '*.ocp',
\ 'ocpbuildroot': '*.root',
\ 'octave': '*.oct,*.m',
\ 'odin': '*.odin',
\ 'omake': '*.om,OMakefile,OMakeroot,OMakeroot.in',
\ 'omnimark': '*.xom,*.xin',
\ 'opam': '*.opam,*.opam.template,opam',
\ 'opencl': '*.cl,*.opencl',
\ 'openroad': '*.or',
\ 'opl': '*.[Oo][Pp][Ll]',
\ 'ora': '*.ora',
\ 'pamconf': '',
\ 'pamenv': 'pam_env.conf,.pam_environment',
\ 'papp': '*.papp,*.pxml,*.pxsl',
\ 'pascal': '*.pas,*.pp,*.dpr,*.lpr',
\ 'passwd': '',
\ 'pccts': '*.g',
\ 'pcmk': '*.pcmk',
\ 'pdf': '*.pdf',
\ 'perl': '*.pl,*.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.pm,*.psgi,*.t,Makefile.PL,Rexfile,ack,cpanfile,example.gitolite.rc,.gitolite.rc',
\ 'pest': '*.pest',
\ 'pf': 'pf.conf',
\ 'pfmain': 'main.cf',
\ 'php': '*.php,*.aw,*.ctp,*.fcgi,*.inc,*.php3,*.php4,*.php5,*.phps,*.phpt,*.phtml,*.php9,.php,.php_cs,.php_cs.dist,Phakefile',
\ 'pike': '*.pike,*.pmod',
\ 'pilrc': '*.rcp',
\ 'pine': '.pinerc,pinerc,.pinercex,pinercex',
\ 'pinfo': '',
\ 'plantuml': '*.puml,*.iuml,*.plantuml,*.uml,*.pu',
\ 'pli': '*.pli,*.pl1',
\ 'plm': '*.plm,*.p36,*.pac',
\ 'plp': '*.plp',
\ 'plsql': '*.pls,*.plsql',
\ 'po': '*.po,*.pot',
\ 'pod': '*.pod',
\ 'pony': '*.pony',
\ 'postscr': '*.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai',
\ 'pov': '*.pov',
\ 'povini': '.povrayrc',
\ 'ppd': '*.ppd',
\ 'ppwiz': '*.it,*.ih',
\ 'privoxy': '*.action',
\ 'proc': '*.pc',
\ 'procmail': '.procmail,.procmailrc',
\ 'prolog': '*.pl,*.pro,*.prolog,*.yap,*.pdb',
\ 'promela': '*.pml',
\ 'proto': '*.proto',
\ 'protocols': '',
\ 'ps1': '*.ps1,*.psd1,*.psm1,*.pssc',
\ 'ps1xml': '*.ps1xml',
\ 'psf': '*.psf',
\ 'pug': '*.jade,*.pug',
\ 'pullrequest': 'PULLREQ_EDITMSG',
\ 'puppet': '*.pp,Modulefile',
\ 'purescript': '*.purs',
\ 'pyrex': '*.pyx,*.pxd',
\ 'python': '*.py,*.cgi,*.fcgi,*.gyp,*.gypi,*.lmi,*.py3,*.pyde,*.pyi,*.pyp,*.pyt,*.pyw,*.rpy,*.smk,*.spec,*.tac,*.wsgi,*.xpy,*.ptl,.gclient,DEPS,SConscript,SConstruct,Snakefile,wscript,.pythonrc,.pythonstartup',
\ 'qmake': '*.pro,*.pri',
\ 'qml': '*.qml,*.qbs',
\ 'quake': '',
\ 'r': '*.r,*.rsx,*.s,*.S,.Rprofile,expr-dist',
\ 'racket': '*.rkt,*.rktd,*.rktl,*.scrbl',
\ 'radiance': '*.rad,*.mat',
\ 'ragel': '*.rl',
\ 'raku': '*.6pl,*.6pm,*.nqp,*.p6,*.p6l,*.p6m,*.pl,*.pl6,*.pm,*.pm6,*.t,*.rakudoc,*.rakutest,*.raku,*.rakumod,*.pod6,*.t6',
\ 'raml': '*.raml',
\ 'ratpoison': '.ratpoisonrc,ratpoisonrc',
\ 'razor': '*.cshtml,*.razor',
\ 'rc': '*.rc,*.rch',
\ 'rcs': '*\,v',
\ 'readline': '.inputrc,inputrc',
\ 'reason': '*.re,*.rei',
\ 'rego': '*.rego',
\ 'remind': '*.remind,*.rem,.reminders,.reminders*',
\ 'requirements': '*.pip,*requirements.{txt,in},*require.{txt,in},constraints.{txt,in}',
\ 'resolv': 'resolv.conf',
\ 'reva': '*.frt',
\ 'rexx': '*.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit',
\ 'rhelp': '*.rd',
\ 'rib': '*.rib',
\ 'rmd': '*.rmd,*.smd',
\ 'rnc': '*.rnc',
\ 'rng': '*.rng',
\ 'rnoweb': '*.rnw,*.snw',
\ 'robots': 'robots.txt',
\ 'rpcgen': '*.x',
\ 'rpl': '*.rpl',
\ 'rrst': '*.rrst,*.srst',
\ 'rst': '*.rst,*.rest,*.rest.txt,*.rst.txt',
\ 'rtf': '*.rtf',
\ 'ruby': '*.rb,*.builder,*.eye,*.fcgi,*.gemspec,*.god,*.jbuilder,*.mspec,*.pluginspec,*.podspec,*.rabl,*.rake,*.rbi,*.rbuild,*.rbw,*.rbx,*.ru,*.ruby,*.spec,*.thor,*.watchr,*.rxml,*.rjs,*.rant,*.axlsx,*.cap,*.opal,.irbrc,.pryrc,.simplecov,Appraisals,Berksfile,Buildfile,Capfile,Dangerfile,Deliverfile,Fastfile,Gemfile,Gemfile.lock,Guardfile,Jarfile,Mavenfile,Podfile,Puppetfile,Rakefile,Snapfile,Thorfile,Vagrantfile,buildfile,[Rr]antfile,.autotest,Cheffile,KitchenSink,Routefile,.Guardfile,.Brewfile,vagrantfile,[Rr]akefile*,*_spec.rb',
\ 'rust': '*.rs,*.rs.in',
\ 'samba': 'smb.conf',
\ 'sas': '*.sas',
\ 'sass': '*.sass',
\ 'sather': '*.sa',
\ 'sbt': '*.sbt',
\ 'scala': '*.scala,*.kojo,*.sc',
\ 'scheme': '*.scm,*.ss,*.rkt',
\ 'scilab': '*.sci,*.sce',
\ 'screen': '.screenrc,screenrc',
\ 'scss': '*.scss',
\ 'sd': '*.sd',
\ 'sdc': '*.sdc',
\ 'sdl': '*.sdl,*.pr',
\ 'sed': '*.sed',
\ 'sensors': '',
\ 'services': '',
\ 'setserial': '',
\ 'sexplib': '*.sexp',
\ 'sh': '*.sh,*.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh.in,*.tmux,*.tool,.bash_aliases,.bash_history,.bash_logout,.bash_profile,.bashrc,.cshrc,.env,.env.example,.flaskenv,.login,.profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile',
\ 'sieve': '*.siv,*.sieve',
\ 'sil': '*.sil',
\ 'simula': '*.sim',
\ 'sinda': '*.sin,*.s85',
\ 'sisu': '*.sst,*.ssm,*.ssi,*.-sst,*._sst,*.sst.meta,*.-sst.meta,*._sst.meta',
\ 'skill': '*.il,*.ils,*.cdf',
\ 'slang': '*.sl',
\ 'slice': '*.ice',
\ 'slim': '*.slim',
\ 'slime': '*.slime',
\ 'slpconf': '',
\ 'slpreg': '',
\ 'slpspi': '',
\ 'slrnrc': '.slrnrc',
\ 'slrnsc': '*.score',
\ 'sm': 'sendmail.cf',
\ 'smarty': '*.tpl',
\ 'smcl': '*.hlp,*.ihlp,*.smcl',
\ 'smith': '*.smt,*.smith',
\ 'sml': '*.sml',
\ 'smt2': '*.smt2,*.smt',
\ 'snobol4': '*.sno,*.spt',
\ 'solidity': '*.sol',
\ 'spec': '*.spec',
\ 'spice': '*.sp,*.spice',
\ 'spup': '*.speedup,*.spdata,*.spd',
\ 'spyce': '*.spy,*.spi',
\ 'sql': '*.pgsql,*.pls,*.bdy,*.ddl,*.fnc,*.pck,*.pkb,*.pks,*.plb,*.plsql,*.prc,*.spc,*.sql,*.tpb,*.tps,*.trg,*.vw,*.tyb,*.typ,*.tyc',
\ 'sqlj': '*.sqlj',
\ 'sqr': '*.sqr,*.sqi',
\ 'squid': 'squid.conf',
\ 'srec': '*.s19,*.s28,*.s37,*.mot,*.srec',
\ 'sshconfig': 'ssh_config',
\ 'sshdconfig': 'sshd_config',
\ 'st': '*.st',
\ 'stata': '*.ado,*.do,*.imata,*.mata',
\ 'stp': '*.stp',
\ 'stylus': '*.styl,*.stylus',
\ 'sudoers': 'sudoers.tmp',
\ 'svelte': '*.svelte',
\ 'svg': '*.svg',
\ 'svn': 'svn-commit*.tmp',
\ 'swift': '*.swift',
\ 'swiftgyb': '*.swift.gyb',
\ 'sxhkdrc': '*.sxhkdrc,sxhkdrc',
\ 'sysctl': '',
\ 'systemd': '*.automount,*.dnssd,*.link,*.mount,*.netdev,*.network,*.nspawn,*.path,*.service,*.slice,*.socket,*.swap,*.target,*.timer,*.#*',
\ 'systemverilog': '*.sv,*.svh',
\ 'tablegen': '*.td',
\ 'tads': '*.t',
\ 'tags': 'tags',
\ 'tak': '*.tak',
\ 'taskdata': '{pending,completed,undo}.data',
\ 'taskedit': '*.task',
\ 'tcl': '*.tcl,*.tk,*.itcl,*.itk,*.jacl',
\ 'template': '*.tmpl',
\ 'teraterm': '*.ttl',
\ 'terminfo': '*.ti',
\ 'terraform': '*.tf,*.tfvars',
\ 'tex': '*.latex,*.sty,*.dtx,*.ltx,*.bbl',
\ 'texinfo': '*.texinfo,*.texi,*.txi',
\ 'texmf': 'texmf.cnf',
\ 'text': '*.text,README',
\ 'textile': '*.textile',
\ 'tf': '*.tf,.tfrc,tfrc',
\ 'thrift': '*.thrift',
\ 'tidy': '.tidyrc,tidyrc,tidy.conf',
\ 'tilde': '*.t.html',
\ 'tli': '*.tli',
\ 'tmux': '.tmux*.conf',
\ 'toml': '*.toml,Cargo.lock,Gopkg.lock,poetry.lock,Pipfile',
\ 'tpp': '*.tpp',
\ 'tptp': '*.p,*.tptp,*.ax',
\ 'trasys': '*.inp',
\ 'treetop': '*.treetop',
\ 'trustees': 'trustees.conf',
\ 'tsalt': '*.slt',
\ 'tsscl': '*.tsscl',
\ 'tssgm': '*.tssgm',
\ 'tssop': '*.tssop',
\ 'tt2': '*.tt2',
\ 'tt2html': '*.tt2',
\ 'tutor': '*.tutor',
\ 'typescript': '*.ts',
\ 'typescriptreact': '*.tsx',
\ 'uc': '*.uc',
\ 'udevconf': '',
\ 'udevperm': '',
\ 'uil': '*.uit,*.uil',
\ 'unison': '*.u,*.uu',
\ 'updatedb': '',
\ 'upstart': '',
\ 'upstreamdat': '*.upstream.dat\c,upstream.dat\c,upstream.*.dat\c',
\ 'upstreaminstalllog': '*.upstreaminstall.log\c,upstreaminstall.log\c,upstreaminstall.*.log\c',
\ 'upstreamlog': '*.upstream.log\c,fdrupstream.log,upstream.log\c,upstream.*.log\c,UPSTREAM-*.log\c',
\ 'usserverlog': '*.usserver.log\c,usserver.log\c,usserver.*.log\c',
\ 'usw2kagtlog': '*.usw2kagt.log\c,usw2kagt.log\c,usw2kagt.*.log\c',
\ 'vala': '*.vala,*.vapi,*.valadoc',
\ 'vb': '*.bas,*.cls,*.frm,*.frx,*.vba,*.vbs,*.dsm,*.ctl,*.sba',
\ 'vbnet': '*.vb,*.vbhtml',
\ 'vcl': '*.vcl',
\ 'velocity': '*.vm',
\ 'vera': '*.vr,*.vri,*.vrh',
\ 'verilog': '*.v',
\ 'verilogams': '*.va,*.vams',
\ 'vgrindefs': 'vgrindefs',
\ 'vhdl': '*.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho,*.vhdl_[0-9]*',
\ 'vim': '*.vim,*.vba,.exrc,_exrc,*vimrc*',
\ 'viminfo': '.viminfo,_viminfo',
\ 'vlang': '*.v,*.vv,*.vsh',
\ 'vmasm': '*.mar',
\ 'voscm': '*.cm',
\ 'vrml': '*.wrl',
\ 'vroom': '*.vroom',
\ 'vue': '*.vue,*.wpy',
\ 'wast': '*.wast,*.wat',
\ 'webmacro': '*.wm',
\ 'wget': '.wgetrc,wgetrc',
\ 'winbatch': '*.wbt',
\ 'wml': '*.wml',
\ 'wsh': '*.ws[fc]',
\ 'wsml': '*.wsml',
\ 'wvdial': 'wvdial.conf,.wvdialrc',
\ 'xdc': '*.xdc',
\ 'xdefaults': '*.ad,.Xdefaults,.Xpdefaults,.Xresources,xdm-config,Xresources*',
\ 'xf86conf': 'XF86Config-4*,XF86Config*,xorg.conf,xorg.conf-4',
\ 'xhtml': '*.xhtml,*.xht',
\ 'xinetd': '',
\ 'xmath': '*.msc,*.msf',
\ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.psc1,*.pt,*.rdf,*.res,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,*.tpm,*.csproj.user,*.wpl,.classpath,.cproject,.project,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config,*fglrxrc',
\ 'xml.twig': '*.xml.twig',
\ 'xmodmap': '*Xmodmap,*xmodmap*',
\ 'xpm': '*.xpm,*.pm',
\ 'xpm2': '*.xpm2',
\ 'xquery': '*.xq,*.xql,*.xqm,*.xquery,*.xqy',
\ 'xs': '*.xs',
\ 'xsd': '*.xsd',
\ 'xsl': '*.xslt,*.xsl',
\ 'xslt': '*.xsl,*.xslt',
\ 'yacc': '*.yy,*.yxx,*.y++',
\ 'yaml': '*.yml,*.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml.mysql,.clang-format,.clang-tidy,.gemrc,glide.lock,yarn.lock,fish_history,fish_read_history',
\ 'yaml.ansible': 'playbook.y{a,}ml,site.y{a,}ml,main.y{a,}ml,local.y{a,}ml,requirements.y{a,}ml,tasks.*.y{a,}ml,roles.*.y{a,}ml,handlers.*.y{a,}ml',
\ 'yaml.docker-compose': 'docker-compose*.yaml,docker-compose*.yml',
\ 'z8a': '*.z8a',
\ 'zephir': '*.zep',
\ 'zig': '*.zig,*.zir',
\ 'zimbu': '*.zu',
\ 'zimbutempl': '*.zut',
\ 'zir': '*.zir',
\ 'zsh': '*.zsh,.zshrc,.zshenv,.zlogin,.zprofile,.zlogout,.zlog*,.zcompdump*,.zfbfmarks,.zsh*',
\}
" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE
func! polyglot#sleuth#GlobForFiletype(type)
return get(s:globs, a:type, '')
endfunc
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save

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