mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
79 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
676e9dd82e | ||
|
|
23af3f70da | ||
|
|
b79385fecc | ||
|
|
03dd22587a | ||
|
|
bbc6be1099 | ||
|
|
7f2e366334 | ||
|
|
04f868b94a | ||
|
|
4071c094c6 | ||
|
|
617b01a5b6 | ||
|
|
bd35da8e9c | ||
|
|
91da1ec2a5 | ||
|
|
964107c604 | ||
|
|
c0560d6199 | ||
|
|
15db2d7120 | ||
|
|
4935f02217 | ||
|
|
438d222b95 | ||
|
|
90b24287de | ||
|
|
5f1223fbc5 | ||
|
|
a59f644d49 | ||
|
|
33dd4b2741 | ||
|
|
d6866fcced | ||
|
|
7208e89a13 | ||
|
|
56a815be94 | ||
|
|
45273d44d4 | ||
|
|
e961fa8037 | ||
|
|
1b61c48d46 | ||
|
|
8f483aee0f | ||
|
|
b36260d015 | ||
|
|
6c198a3ca9 | ||
|
|
a4c9223257 | ||
|
|
d681cb59d3 | ||
|
|
0b50acdddf | ||
|
|
daa6fc6958 | ||
|
|
610f4c5701 | ||
|
|
f3833f5a39 | ||
|
|
fe26a3a7e6 | ||
|
|
548f7d672a | ||
|
|
10b28c4175 | ||
|
|
95bc6710a4 | ||
|
|
94f72a68c3 | ||
|
|
9b3b092d15 | ||
|
|
959a2ffa3d | ||
|
|
d51b8fd17e | ||
|
|
fa57320919 | ||
|
|
9a2b4f5cd8 | ||
|
|
f211f02d1e | ||
|
|
e45b23b6ee | ||
|
|
a0c5f3ee55 | ||
|
|
6b8c72637f | ||
|
|
d330fdc01b | ||
|
|
c225bf8826 | ||
|
|
20125ac3ac | ||
|
|
9f19823a30 | ||
|
|
56d5fc498b | ||
|
|
ab679f37dd | ||
|
|
ca95a47a93 | ||
|
|
a26bebbeb9 | ||
|
|
edd5ee63e6 | ||
|
|
8a255002df | ||
|
|
b2d556d384 | ||
|
|
30c1920e4f | ||
|
|
57cfac7ae3 | ||
|
|
085aad28a4 | ||
|
|
e108a087b4 | ||
|
|
b3257271db | ||
|
|
e9d8c39608 | ||
|
|
04e6a8a73c | ||
|
|
b6a2261cc2 | ||
|
|
811fe888a6 | ||
|
|
2b19388166 | ||
|
|
a531f6b104 | ||
|
|
90d87abd30 | ||
|
|
d6710f1b57 | ||
|
|
0db9bdbfd6 | ||
|
|
c069f0661a | ||
|
|
235a5631f9 | ||
|
|
edf1aa4a1c | ||
|
|
88bd82d6c9 | ||
|
|
2686fb60f4 |
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -2,3 +2,7 @@
|
|||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
build export-ignore
|
build export-ignore
|
||||||
README.md export-ignore
|
README.md export-ignore
|
||||||
|
/spec export-ignore
|
||||||
|
Gemfile export-ignore
|
||||||
|
Gemfile.lock export-ignore
|
||||||
|
.travis.yml export-ignore
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ before_install: sudo apt-get install vim-gtk
|
|||||||
before_script:
|
before_script:
|
||||||
- "export DISPLAY=:99.0"
|
- "export DISPLAY=:99.0"
|
||||||
- "sh -e /etc/init.d/xvfb start"
|
- "sh -e /etc/init.d/xvfb start"
|
||||||
script: bundle exec rspec
|
script: bundle exec rspec --format=documentation
|
||||||
|
|||||||
53
README.md
53
README.md
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
A collection of language packs for Vim.
|
A collection of language packs for Vim.
|
||||||
|
|
||||||
One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
||||||
|
|
||||||
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
||||||
- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.
|
- It **installs 50+ times faster** than 50+ packages it consist of.
|
||||||
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).
|
- Solid syntax and indentation support. Only the best language packs.
|
||||||
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.
|
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||||
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).
|
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||||
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.
|
- Each build is tested by automated vimrunner script on CI. See `spec` directory.
|
||||||
|
|
||||||
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
|
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
|
||||||
|
|
||||||
@@ -25,48 +25,69 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
|
|
||||||
## Language packs
|
## Language packs
|
||||||
|
|
||||||
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, ftdetect)
|
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
|
||||||
|
- [blade](https://github.com/xsbeats/vim-blade) (syntax, indent, ftdetect)
|
||||||
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
||||||
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
|
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
|
||||||
|
- [c-extensions](https://github.com/kergoth/aftersyntaxc.vim) (syntax)
|
||||||
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
|
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [css-color](https://github.com/ap/vim-css-color) (syntax)
|
- [css](https://github.com/JulesWang/css.vim) (syntax)
|
||||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
|
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
|
||||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
|
- [emberscript](https://github.com/heartsentwined/vim-ember-script) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [emblem](https://github.com/heartsentwined/vim-emblem) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [erlang](https://github.com/hcs42/vim-erlang-runtime) (syntax, indent)
|
||||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
|
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, autoload, ftplugin, ftdetect)
|
- [go](https://github.com/fatih/vim-go) (syntax, indent, ftdetect)
|
||||||
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [handlebars](https://github.com/nono/vim-handlebars) (syntax, ftplugin, ftdetect)
|
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, ftplugin, ftdetect)
|
||||||
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
|
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
|
||||||
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload)
|
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax, ftdetect)
|
||||||
|
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
|
||||||
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
|
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect)
|
||||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
|
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
|
||||||
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
|
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
|
||||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
||||||
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
||||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
||||||
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
|
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
|
||||||
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
||||||
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
|
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
|
||||||
|
- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
||||||
- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect)
|
- [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
||||||
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)
|
- [python](https://github.com/mitsuhiko/vim-python-combined) (syntax, indent)
|
||||||
- [rspec](https://github.com/skwp/vim-rspec) (syntax)
|
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
||||||
|
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
||||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
|
- [rust](https://github.com/wting/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
||||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
|
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
||||||
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [systemd](https://github.com/kurayama/systemd-vim-syntax) (syntax, ftdetect)
|
||||||
|
- [swift](https://github.com/toyamarinyon/vim-swift) (syntax, indent, ftdetect)
|
||||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)
|
- [tmux](https://github.com/tejr/vim-tmux) (syntax, ftdetect)
|
||||||
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
|
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
|
||||||
|
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)
|
||||||
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
||||||
|
- [thrift](https://github.com/solarnz/thrift.vim) (syntax, ftdetect)
|
||||||
|
- [toml](https://github.com/cespare/vim-toml) (syntax, ftdetect)
|
||||||
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
|
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
|
||||||
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
||||||
|
- [vala](https://github.com/tkztmk/vim-vala) (syntax, indent, ftdetect)
|
||||||
|
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
|
||||||
|
- [css-color](https://github.com/ap/vim-css-color) (autoload, syntax)
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
16
after/ftplugin/puppet.vim
Normal file
16
after/ftplugin/puppet.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
if !exists('g:puppet_align_hashes')
|
||||||
|
let g:puppet_align_hashes = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:puppet_align_hashes && exists(':Tabularize')
|
||||||
|
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>a
|
||||||
|
function! s:puppetalign()
|
||||||
|
let p = '^\s*\w+\s*[=+]>.*$'
|
||||||
|
let column = strlen(substitute(getline('.')[0:col('.')],'\([^=]\|=[^>]\)','','g'))
|
||||||
|
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=>\s*\zs.*'))
|
||||||
|
Tabularize /=>/l1
|
||||||
|
normal! 0
|
||||||
|
echo repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position)
|
||||||
|
call search(repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
" Load the coffee and html indent functions.
|
" Load the coffee and html indent functions.
|
||||||
unlet b:did_indent
|
silent! unlet b:did_indent
|
||||||
runtime indent/coffee.vim
|
runtime indent/coffee.vim
|
||||||
let s:coffeeIndentExpr = &l:indentexpr
|
let s:coffeeIndentExpr = &l:indentexpr
|
||||||
|
|
||||||
" Load html last so it can overwrite coffee settings.
|
" Load html last so it can overwrite coffee settings.
|
||||||
unlet b:did_indent
|
silent! unlet b:did_indent
|
||||||
runtime indent/html.vim
|
runtime indent/html.vim
|
||||||
let s:htmlIndentExpr = &l:indentexpr
|
let s:htmlIndentExpr = &l:indentexpr
|
||||||
|
|
||||||
|
|||||||
570
after/syntax/c.vim
Normal file
570
after/syntax/c.vim
Normal file
@@ -0,0 +1,570 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: C Additions
|
||||||
|
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||||
|
" Contributor: Mikhail Wolfson <mywolfson@gmail.com>
|
||||||
|
" URL: http://www.haeggblad.com
|
||||||
|
" Last Change: 6 Sep 2014
|
||||||
|
" Version: 0.3
|
||||||
|
" Changelog:
|
||||||
|
" 0.3 - integration of aftersyntaxc.vim
|
||||||
|
" 0.2 - Cleanup
|
||||||
|
" 0.1 - initial version.
|
||||||
|
"
|
||||||
|
" Syntax highlighting for functions in C.
|
||||||
|
"
|
||||||
|
" Based on:
|
||||||
|
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Highlight function names.
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||||
|
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
||||||
|
hi def link cCustomFunc Function
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Source: aftersyntaxc.vim
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Common ANSI-standard functions
|
||||||
|
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
|
||||||
|
syn keyword cAnsiFunction main typeof
|
||||||
|
syn keyword cAnsiFunction open close read write lseek dup dup2
|
||||||
|
syn keyword cAnsiFunction fcntl ioctl
|
||||||
|
syn keyword cAnsiFunction wctrans towctrans towupper
|
||||||
|
syn keyword cAnsiFunction towlower wctype iswctype
|
||||||
|
syn keyword cAnsiFunction iswxdigit iswupper iswspace
|
||||||
|
syn keyword cAnsiFunction iswpunct iswprint iswlower
|
||||||
|
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
|
||||||
|
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
|
||||||
|
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
|
||||||
|
syn keyword cAnsiFunction mbrlen mbsinit wctob
|
||||||
|
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
|
||||||
|
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
|
||||||
|
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
|
||||||
|
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
|
||||||
|
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
|
||||||
|
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
|
||||||
|
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
|
||||||
|
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
|
||||||
|
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
|
||||||
|
syn keyword cAnsiFunction wcstol wcstold wcstof
|
||||||
|
syn keyword cAnsiFunction wcstod ungetwc putwchar
|
||||||
|
syn keyword cAnsiFunction putwc getwchar getwc
|
||||||
|
syn keyword cAnsiFunction fwide fputws fputwc
|
||||||
|
syn keyword cAnsiFunction fgetws fgetwc wscanf
|
||||||
|
syn keyword cAnsiFunction wprintf vwscanf vwprintf
|
||||||
|
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
|
||||||
|
syn keyword cAnsiFunction vfwprintf swscanf swprintf
|
||||||
|
syn keyword cAnsiFunction fwscanf fwprintf zonetime
|
||||||
|
syn keyword cAnsiFunction strfxtime strftime localtime
|
||||||
|
syn keyword cAnsiFunction gmtime ctime asctime
|
||||||
|
syn keyword cAnsiFunction time mkxtime mktime
|
||||||
|
syn keyword cAnsiFunction difftime clock strlen
|
||||||
|
syn keyword cAnsiFunction strerror memset strtok
|
||||||
|
syn keyword cAnsiFunction strstr strspn strrchr
|
||||||
|
syn keyword cAnsiFunction strpbrk strcspn strchr
|
||||||
|
syn keyword cAnsiFunction memchr strxfrm strncmp
|
||||||
|
syn keyword cAnsiFunction strcoll strcmp memcmp
|
||||||
|
syn keyword cAnsiFunction strncat strcat strncpy
|
||||||
|
syn keyword cAnsiFunction strcpy memmove memcpy
|
||||||
|
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
|
||||||
|
syn keyword cAnsiFunction mbtowc mblen lldiv
|
||||||
|
syn keyword cAnsiFunction ldiv div llabs
|
||||||
|
syn keyword cAnsiFunction labs abs qsort
|
||||||
|
syn keyword cAnsiFunction bsearch system getenv
|
||||||
|
syn keyword cAnsiFunction exit atexit abort
|
||||||
|
syn keyword cAnsiFunction realloc malloc free
|
||||||
|
syn keyword cAnsiFunction calloc srand rand
|
||||||
|
syn keyword cAnsiFunction strtoull strtoul strtoll
|
||||||
|
syn keyword cAnsiFunction strtol strtold strtof
|
||||||
|
syn keyword cAnsiFunction strtod atoll atol
|
||||||
|
syn keyword cAnsiFunction atoi atof perror
|
||||||
|
syn keyword cAnsiFunction ferror feof clearerr
|
||||||
|
syn keyword cAnsiFunction rewind ftell fsetpos
|
||||||
|
syn keyword cAnsiFunction fseek fgetpos fwrite
|
||||||
|
syn keyword cAnsiFunction fread ungetc puts
|
||||||
|
syn keyword cAnsiFunction putchar putc gets
|
||||||
|
syn keyword cAnsiFunction getchar getc fputs
|
||||||
|
syn keyword cAnsiFunction fputc fgets fgetc
|
||||||
|
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
|
||||||
|
syn keyword cAnsiFunction vscanf vprintf vfscanf
|
||||||
|
syn keyword cAnsiFunction vfprintf sscanf sprintf
|
||||||
|
syn keyword cAnsiFunction snprintf scanf printf
|
||||||
|
syn keyword cAnsiFunction fscanf fprintf setvbuf
|
||||||
|
syn keyword cAnsiFunction setbuf freopen fopen
|
||||||
|
syn keyword cAnsiFunction fflush fclose tmpnam
|
||||||
|
syn keyword cAnsiFunction tmpfile rename remove
|
||||||
|
syn keyword cAnsiFunction offsetof va_start va_end
|
||||||
|
syn keyword cAnsiFunction va_copy va_arg raise signal
|
||||||
|
syn keyword cAnsiFunction longjmp setjmp isunordered
|
||||||
|
syn keyword cAnsiFunction islessgreater islessequal isless
|
||||||
|
syn keyword cAnsiFunction isgreaterequal isgreater fmal
|
||||||
|
syn keyword cAnsiFunction fmaf fma fminl
|
||||||
|
syn keyword cAnsiFunction fminf fmin fmaxl
|
||||||
|
syn keyword cAnsiFunction fmaxf fmax fdiml
|
||||||
|
syn keyword cAnsiFunction fdimf fdim nextafterxl
|
||||||
|
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
|
||||||
|
syn keyword cAnsiFunction nextafterf nextafter nanl
|
||||||
|
syn keyword cAnsiFunction nanf nan copysignl
|
||||||
|
syn keyword cAnsiFunction copysignf copysign remquol
|
||||||
|
syn keyword cAnsiFunction remquof remquo remainderl
|
||||||
|
syn keyword cAnsiFunction remainderf remainder fmodl
|
||||||
|
syn keyword cAnsiFunction fmodf fmod truncl
|
||||||
|
syn keyword cAnsiFunction truncf trunc llroundl
|
||||||
|
syn keyword cAnsiFunction llroundf llround lroundl
|
||||||
|
syn keyword cAnsiFunction lroundf lround roundl
|
||||||
|
syn keyword cAnsiFunction roundf round llrintl
|
||||||
|
syn keyword cAnsiFunction llrintf llrint lrintl
|
||||||
|
syn keyword cAnsiFunction lrintf lrint rintl
|
||||||
|
syn keyword cAnsiFunction rintf rint nearbyintl
|
||||||
|
syn keyword cAnsiFunction nearbyintf nearbyint floorl
|
||||||
|
syn keyword cAnsiFunction floorf floor ceill
|
||||||
|
syn keyword cAnsiFunction ceilf ceil tgammal
|
||||||
|
syn keyword cAnsiFunction tgammaf tgamma lgammal
|
||||||
|
syn keyword cAnsiFunction lgammaf lgamma erfcl
|
||||||
|
syn keyword cAnsiFunction erfcf erfc erfl
|
||||||
|
syn keyword cAnsiFunction erff erf sqrtl
|
||||||
|
syn keyword cAnsiFunction sqrtf sqrt powl
|
||||||
|
syn keyword cAnsiFunction powf pow hypotl
|
||||||
|
syn keyword cAnsiFunction hypotf hypot fabsl
|
||||||
|
syn keyword cAnsiFunction fabsf fabs cbrtl
|
||||||
|
syn keyword cAnsiFunction cbrtf cbrt scalblnl
|
||||||
|
syn keyword cAnsiFunction scalblnf scalbln scalbnl
|
||||||
|
syn keyword cAnsiFunction scalbnf scalbn modfl
|
||||||
|
syn keyword cAnsiFunction modff modf logbl
|
||||||
|
syn keyword cAnsiFunction logbf logb log2l
|
||||||
|
syn keyword cAnsiFunction log2f log2 log1pl
|
||||||
|
syn keyword cAnsiFunction log1pf log1p log10l
|
||||||
|
syn keyword cAnsiFunction log10f log10 logl
|
||||||
|
syn keyword cAnsiFunction logf log ldexpl
|
||||||
|
syn keyword cAnsiFunction ldexpf ldexp ilogbl
|
||||||
|
syn keyword cAnsiFunction ilogbf ilogb frexpl
|
||||||
|
syn keyword cAnsiFunction frexpf frexp expm1l
|
||||||
|
syn keyword cAnsiFunction expm1f expm1 exp2l
|
||||||
|
syn keyword cAnsiFunction exp2f exp2 expl
|
||||||
|
syn keyword cAnsiFunction expf exp tanhl
|
||||||
|
syn keyword cAnsiFunction tanhf tanh sinhl
|
||||||
|
syn keyword cAnsiFunction sinhf sinh coshl
|
||||||
|
syn keyword cAnsiFunction coshf cosh atanhl
|
||||||
|
syn keyword cAnsiFunction atanhf atanh asinhl
|
||||||
|
syn keyword cAnsiFunction asinhf asinh acoshl
|
||||||
|
syn keyword cAnsiFunction acoshf acosh tanl
|
||||||
|
syn keyword cAnsiFunction tanf tan sinl
|
||||||
|
syn keyword cAnsiFunction sinf sin cosl
|
||||||
|
syn keyword cAnsiFunction cosf cos atan2l
|
||||||
|
syn keyword cAnsiFunction atan2f atan2 atanl
|
||||||
|
syn keyword cAnsiFunction atanf atan asinl
|
||||||
|
syn keyword cAnsiFunction asinf asin acosl
|
||||||
|
syn keyword cAnsiFunction acosf acos signbit
|
||||||
|
syn keyword cAnsiFunction isnormal isnan isinf
|
||||||
|
syn keyword cAnsiFunction isfinite fpclassify localeconv
|
||||||
|
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
|
||||||
|
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
|
||||||
|
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
|
||||||
|
syn keyword cAnsiFunction fesetround fegetround fetestexcept
|
||||||
|
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
|
||||||
|
syn keyword cAnsiFunction feclearexcept toupper tolower
|
||||||
|
syn keyword cAnsiFunction isxdigit isupper isspace
|
||||||
|
syn keyword cAnsiFunction ispunct isprint islower
|
||||||
|
syn keyword cAnsiFunction isgraph isdigit iscntrl
|
||||||
|
syn keyword cAnsiFunction isalpha isalnum creall
|
||||||
|
syn keyword cAnsiFunction crealf creal cprojl
|
||||||
|
syn keyword cAnsiFunction cprojf cproj conjl
|
||||||
|
syn keyword cAnsiFunction conjf conj cimagl
|
||||||
|
syn keyword cAnsiFunction cimagf cimag cargl
|
||||||
|
syn keyword cAnsiFunction cargf carg csqrtl
|
||||||
|
syn keyword cAnsiFunction csqrtf csqrt cpowl
|
||||||
|
syn keyword cAnsiFunction cpowf cpow cabsl
|
||||||
|
syn keyword cAnsiFunction cabsf cabs clogl
|
||||||
|
syn keyword cAnsiFunction clogf clog cexpl
|
||||||
|
syn keyword cAnsiFunction cexpf cexp ctanhl
|
||||||
|
syn keyword cAnsiFunction ctanhf ctanh csinhl
|
||||||
|
syn keyword cAnsiFunction csinhf csinh ccoshl
|
||||||
|
syn keyword cAnsiFunction ccoshf ccosh catanhl
|
||||||
|
syn keyword cAnsiFunction catanhf catanh casinhl
|
||||||
|
syn keyword cAnsiFunction casinhf casinh cacoshl
|
||||||
|
syn keyword cAnsiFunction cacoshf cacosh ctanl
|
||||||
|
syn keyword cAnsiFunction ctanf ctan csinl
|
||||||
|
syn keyword cAnsiFunction csinf csin ccosl
|
||||||
|
syn keyword cAnsiFunction ccosf ccos catanl
|
||||||
|
syn keyword cAnsiFunction catanf catan casinl
|
||||||
|
syn keyword cAnsiFunction casinf casin cacosl
|
||||||
|
syn keyword cAnsiFunction cacosf cacos assert
|
||||||
|
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
|
||||||
|
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
|
||||||
|
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
|
||||||
|
|
||||||
|
" Common ANSI-standard Names
|
||||||
|
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
|
||||||
|
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
|
||||||
|
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
|
||||||
|
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
|
||||||
|
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
|
||||||
|
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
|
||||||
|
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
|
||||||
|
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
|
||||||
|
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
|
||||||
|
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
|
||||||
|
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
|
||||||
|
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
|
||||||
|
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
|
||||||
|
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
|
||||||
|
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
|
||||||
|
|
||||||
|
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
|
||||||
|
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
|
||||||
|
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
|
||||||
|
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
|
||||||
|
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
|
||||||
|
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
|
||||||
|
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
|
||||||
|
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
|
||||||
|
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
|
||||||
|
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
|
||||||
|
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
|
||||||
|
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
|
||||||
|
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
|
||||||
|
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
|
||||||
|
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
|
||||||
|
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
|
||||||
|
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
|
||||||
|
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
|
||||||
|
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
|
||||||
|
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
|
||||||
|
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
|
||||||
|
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
|
||||||
|
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
|
||||||
|
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
|
||||||
|
|
||||||
|
syn keyword cAnsiName errno environ
|
||||||
|
|
||||||
|
syn keyword cAnsiName STDC CX_LIMITED_RANGE
|
||||||
|
syn keyword cAnsiName STDC FENV_ACCESS
|
||||||
|
syn keyword cAnsiName STDC FP_CONTRACT
|
||||||
|
|
||||||
|
syn keyword cAnsiName and bitor not_eq xor
|
||||||
|
syn keyword cAnsiName and_eq compl or xor_eq
|
||||||
|
syn keyword cAnsiName bitand not or_eq
|
||||||
|
|
||||||
|
hi def link cAnsiFunction cFunction
|
||||||
|
hi def link cAnsiName cIdentifier
|
||||||
|
hi def link cFunction Function
|
||||||
|
hi def link cIdentifier Identifier
|
||||||
|
|
||||||
|
" Booleans
|
||||||
|
syn keyword cBoolean true false TRUE FALSE
|
||||||
|
hi def link cBoolean Boolean
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Additional optional highlighting
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Operators
|
||||||
|
"syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
||||||
|
"syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
||||||
|
"syn match cOperator "[.!~*&%<>^|=,+-]"
|
||||||
|
"syn match cOperator "/[^/*=]"me=e-1
|
||||||
|
"syn match cOperator "/$"
|
||||||
|
"syn match cOperator "&&\|||"
|
||||||
|
"syn match cOperator "[][]"
|
||||||
|
"
|
||||||
|
"" Preprocs
|
||||||
|
"syn keyword cDefined defined contained containedin=cDefine
|
||||||
|
"hi def link cDefined cDefine
|
||||||
|
|
||||||
|
"" Functions
|
||||||
|
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||||
|
"syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
|
||||||
|
"
|
||||||
|
"hi def link cUserFunction cFunction
|
||||||
|
"hi def link cUserFunctionPointer cFunction
|
||||||
|
"
|
||||||
|
"" Delimiters
|
||||||
|
"syn match cDelimiter "[();\\]"
|
||||||
|
"" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
"syn match cBraces display "[{}]"
|
||||||
|
|
||||||
|
" Links
|
||||||
|
"hi def link cDelimiter Delimiter
|
||||||
|
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
"hi def link cBraces Delimiter
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: C Additions
|
||||||
|
" Maintainer: Mikhail Wolfson <mywolfson@gmail.com>
|
||||||
|
" URL: http://web.mit.edu/wolfsonm
|
||||||
|
" Last Change: 2010 Dec. 3
|
||||||
|
" Version: 0.4
|
||||||
|
"
|
||||||
|
" Changelog:
|
||||||
|
" 0.4 - updates and fixes to cDelimiter to fix break with foldmethod=syntax,
|
||||||
|
" entirely suggested and solved by Ivan Freitas
|
||||||
|
" <ivansichfreitas@gmail.com>
|
||||||
|
" 0.3 - updates and fixes to cUserFunctionPointer, thanks to
|
||||||
|
" Alexei <lxmzhv@gmail.com>
|
||||||
|
" 0.2 - change [] to operator
|
||||||
|
" 0.1 - initial upload, modification from vimscript#1201, Extended c.vim
|
||||||
|
|
||||||
|
|
||||||
|
" Common ANSI-standard functions
|
||||||
|
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
|
||||||
|
syn keyword cAnsiFunction main typeof
|
||||||
|
syn keyword cAnsiFunction open close read write lseek dup dup2
|
||||||
|
syn keyword cAnsiFunction fcntl ioctl
|
||||||
|
syn keyword cAnsiFunction wctrans towctrans towupper
|
||||||
|
syn keyword cAnsiFunction towlower wctype iswctype
|
||||||
|
syn keyword cAnsiFunction iswxdigit iswupper iswspace
|
||||||
|
syn keyword cAnsiFunction iswpunct iswprint iswlower
|
||||||
|
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
|
||||||
|
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
|
||||||
|
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
|
||||||
|
syn keyword cAnsiFunction mbrlen mbsinit wctob
|
||||||
|
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
|
||||||
|
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
|
||||||
|
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
|
||||||
|
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
|
||||||
|
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
|
||||||
|
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
|
||||||
|
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
|
||||||
|
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
|
||||||
|
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
|
||||||
|
syn keyword cAnsiFunction wcstol wcstold wcstof
|
||||||
|
syn keyword cAnsiFunction wcstod ungetwc putwchar
|
||||||
|
syn keyword cAnsiFunction putwc getwchar getwc
|
||||||
|
syn keyword cAnsiFunction fwide fputws fputwc
|
||||||
|
syn keyword cAnsiFunction fgetws fgetwc wscanf
|
||||||
|
syn keyword cAnsiFunction wprintf vwscanf vwprintf
|
||||||
|
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
|
||||||
|
syn keyword cAnsiFunction vfwprintf swscanf swprintf
|
||||||
|
syn keyword cAnsiFunction fwscanf fwprintf zonetime
|
||||||
|
syn keyword cAnsiFunction strfxtime strftime localtime
|
||||||
|
syn keyword cAnsiFunction gmtime ctime asctime
|
||||||
|
syn keyword cAnsiFunction time mkxtime mktime
|
||||||
|
syn keyword cAnsiFunction difftime clock strlen
|
||||||
|
syn keyword cAnsiFunction strerror memset strtok
|
||||||
|
syn keyword cAnsiFunction strstr strspn strrchr
|
||||||
|
syn keyword cAnsiFunction strpbrk strcspn strchr
|
||||||
|
syn keyword cAnsiFunction memchr strxfrm strncmp
|
||||||
|
syn keyword cAnsiFunction strcoll strcmp memcmp
|
||||||
|
syn keyword cAnsiFunction strncat strcat strncpy
|
||||||
|
syn keyword cAnsiFunction strcpy memmove memcpy
|
||||||
|
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
|
||||||
|
syn keyword cAnsiFunction mbtowc mblen lldiv
|
||||||
|
syn keyword cAnsiFunction ldiv div llabs
|
||||||
|
syn keyword cAnsiFunction labs abs qsort
|
||||||
|
syn keyword cAnsiFunction bsearch system getenv
|
||||||
|
syn keyword cAnsiFunction exit atexit abort
|
||||||
|
syn keyword cAnsiFunction realloc malloc free
|
||||||
|
syn keyword cAnsiFunction calloc srand rand
|
||||||
|
syn keyword cAnsiFunction strtoull strtoul strtoll
|
||||||
|
syn keyword cAnsiFunction strtol strtold strtof
|
||||||
|
syn keyword cAnsiFunction strtod atoll atol
|
||||||
|
syn keyword cAnsiFunction atoi atof perror
|
||||||
|
syn keyword cAnsiFunction ferror feof clearerr
|
||||||
|
syn keyword cAnsiFunction rewind ftell fsetpos
|
||||||
|
syn keyword cAnsiFunction fseek fgetpos fwrite
|
||||||
|
syn keyword cAnsiFunction fread ungetc puts
|
||||||
|
syn keyword cAnsiFunction putchar putc gets
|
||||||
|
syn keyword cAnsiFunction getchar getc fputs
|
||||||
|
syn keyword cAnsiFunction fputc fgets fgetc
|
||||||
|
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
|
||||||
|
syn keyword cAnsiFunction vscanf vprintf vfscanf
|
||||||
|
syn keyword cAnsiFunction vfprintf sscanf sprintf
|
||||||
|
syn keyword cAnsiFunction snprintf scanf printf
|
||||||
|
syn keyword cAnsiFunction fscanf fprintf setvbuf
|
||||||
|
syn keyword cAnsiFunction setbuf freopen fopen
|
||||||
|
syn keyword cAnsiFunction fflush fclose tmpnam
|
||||||
|
syn keyword cAnsiFunction tmpfile rename remove
|
||||||
|
syn keyword cAnsiFunction offsetof va_start va_end
|
||||||
|
syn keyword cAnsiFunction va_copy va_arg raise signal
|
||||||
|
syn keyword cAnsiFunction longjmp setjmp isunordered
|
||||||
|
syn keyword cAnsiFunction islessgreater islessequal isless
|
||||||
|
syn keyword cAnsiFunction isgreaterequal isgreater fmal
|
||||||
|
syn keyword cAnsiFunction fmaf fma fminl
|
||||||
|
syn keyword cAnsiFunction fminf fmin fmaxl
|
||||||
|
syn keyword cAnsiFunction fmaxf fmax fdiml
|
||||||
|
syn keyword cAnsiFunction fdimf fdim nextafterxl
|
||||||
|
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
|
||||||
|
syn keyword cAnsiFunction nextafterf nextafter nanl
|
||||||
|
syn keyword cAnsiFunction nanf nan copysignl
|
||||||
|
syn keyword cAnsiFunction copysignf copysign remquol
|
||||||
|
syn keyword cAnsiFunction remquof remquo remainderl
|
||||||
|
syn keyword cAnsiFunction remainderf remainder fmodl
|
||||||
|
syn keyword cAnsiFunction fmodf fmod truncl
|
||||||
|
syn keyword cAnsiFunction truncf trunc llroundl
|
||||||
|
syn keyword cAnsiFunction llroundf llround lroundl
|
||||||
|
syn keyword cAnsiFunction lroundf lround roundl
|
||||||
|
syn keyword cAnsiFunction roundf round llrintl
|
||||||
|
syn keyword cAnsiFunction llrintf llrint lrintl
|
||||||
|
syn keyword cAnsiFunction lrintf lrint rintl
|
||||||
|
syn keyword cAnsiFunction rintf rint nearbyintl
|
||||||
|
syn keyword cAnsiFunction nearbyintf nearbyint floorl
|
||||||
|
syn keyword cAnsiFunction floorf floor ceill
|
||||||
|
syn keyword cAnsiFunction ceilf ceil tgammal
|
||||||
|
syn keyword cAnsiFunction tgammaf tgamma lgammal
|
||||||
|
syn keyword cAnsiFunction lgammaf lgamma erfcl
|
||||||
|
syn keyword cAnsiFunction erfcf erfc erfl
|
||||||
|
syn keyword cAnsiFunction erff erf sqrtl
|
||||||
|
syn keyword cAnsiFunction sqrtf sqrt powl
|
||||||
|
syn keyword cAnsiFunction powf pow hypotl
|
||||||
|
syn keyword cAnsiFunction hypotf hypot fabsl
|
||||||
|
syn keyword cAnsiFunction fabsf fabs cbrtl
|
||||||
|
syn keyword cAnsiFunction cbrtf cbrt scalblnl
|
||||||
|
syn keyword cAnsiFunction scalblnf scalbln scalbnl
|
||||||
|
syn keyword cAnsiFunction scalbnf scalbn modfl
|
||||||
|
syn keyword cAnsiFunction modff modf logbl
|
||||||
|
syn keyword cAnsiFunction logbf logb log2l
|
||||||
|
syn keyword cAnsiFunction log2f log2 log1pl
|
||||||
|
syn keyword cAnsiFunction log1pf log1p log10l
|
||||||
|
syn keyword cAnsiFunction log10f log10 logl
|
||||||
|
syn keyword cAnsiFunction logf log ldexpl
|
||||||
|
syn keyword cAnsiFunction ldexpf ldexp ilogbl
|
||||||
|
syn keyword cAnsiFunction ilogbf ilogb frexpl
|
||||||
|
syn keyword cAnsiFunction frexpf frexp expm1l
|
||||||
|
syn keyword cAnsiFunction expm1f expm1 exp2l
|
||||||
|
syn keyword cAnsiFunction exp2f exp2 expl
|
||||||
|
syn keyword cAnsiFunction expf exp tanhl
|
||||||
|
syn keyword cAnsiFunction tanhf tanh sinhl
|
||||||
|
syn keyword cAnsiFunction sinhf sinh coshl
|
||||||
|
syn keyword cAnsiFunction coshf cosh atanhl
|
||||||
|
syn keyword cAnsiFunction atanhf atanh asinhl
|
||||||
|
syn keyword cAnsiFunction asinhf asinh acoshl
|
||||||
|
syn keyword cAnsiFunction acoshf acosh tanl
|
||||||
|
syn keyword cAnsiFunction tanf tan sinl
|
||||||
|
syn keyword cAnsiFunction sinf sin cosl
|
||||||
|
syn keyword cAnsiFunction cosf cos atan2l
|
||||||
|
syn keyword cAnsiFunction atan2f atan2 atanl
|
||||||
|
syn keyword cAnsiFunction atanf atan asinl
|
||||||
|
syn keyword cAnsiFunction asinf asin acosl
|
||||||
|
syn keyword cAnsiFunction acosf acos signbit
|
||||||
|
syn keyword cAnsiFunction isnormal isnan isinf
|
||||||
|
syn keyword cAnsiFunction isfinite fpclassify localeconv
|
||||||
|
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
|
||||||
|
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
|
||||||
|
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
|
||||||
|
syn keyword cAnsiFunction fesetround fegetround fetestexcept
|
||||||
|
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
|
||||||
|
syn keyword cAnsiFunction feclearexcept toupper tolower
|
||||||
|
syn keyword cAnsiFunction isxdigit isupper isspace
|
||||||
|
syn keyword cAnsiFunction ispunct isprint islower
|
||||||
|
syn keyword cAnsiFunction isgraph isdigit iscntrl
|
||||||
|
syn keyword cAnsiFunction isalpha isalnum creall
|
||||||
|
syn keyword cAnsiFunction crealf creal cprojl
|
||||||
|
syn keyword cAnsiFunction cprojf cproj conjl
|
||||||
|
syn keyword cAnsiFunction conjf conj cimagl
|
||||||
|
syn keyword cAnsiFunction cimagf cimag cargl
|
||||||
|
syn keyword cAnsiFunction cargf carg csqrtl
|
||||||
|
syn keyword cAnsiFunction csqrtf csqrt cpowl
|
||||||
|
syn keyword cAnsiFunction cpowf cpow cabsl
|
||||||
|
syn keyword cAnsiFunction cabsf cabs clogl
|
||||||
|
syn keyword cAnsiFunction clogf clog cexpl
|
||||||
|
syn keyword cAnsiFunction cexpf cexp ctanhl
|
||||||
|
syn keyword cAnsiFunction ctanhf ctanh csinhl
|
||||||
|
syn keyword cAnsiFunction csinhf csinh ccoshl
|
||||||
|
syn keyword cAnsiFunction ccoshf ccosh catanhl
|
||||||
|
syn keyword cAnsiFunction catanhf catanh casinhl
|
||||||
|
syn keyword cAnsiFunction casinhf casinh cacoshl
|
||||||
|
syn keyword cAnsiFunction cacoshf cacosh ctanl
|
||||||
|
syn keyword cAnsiFunction ctanf ctan csinl
|
||||||
|
syn keyword cAnsiFunction csinf csin ccosl
|
||||||
|
syn keyword cAnsiFunction ccosf ccos catanl
|
||||||
|
syn keyword cAnsiFunction catanf catan casinl
|
||||||
|
syn keyword cAnsiFunction casinf casin cacosl
|
||||||
|
syn keyword cAnsiFunction cacosf cacos assert
|
||||||
|
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
|
||||||
|
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
|
||||||
|
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
|
||||||
|
|
||||||
|
" Common ANSI-standard Names
|
||||||
|
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
|
||||||
|
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
|
||||||
|
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
|
||||||
|
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
|
||||||
|
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
|
||||||
|
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
|
||||||
|
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
|
||||||
|
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
|
||||||
|
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
|
||||||
|
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
|
||||||
|
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
|
||||||
|
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
|
||||||
|
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
|
||||||
|
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
|
||||||
|
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
|
||||||
|
|
||||||
|
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
|
||||||
|
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
|
||||||
|
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
|
||||||
|
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
|
||||||
|
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
|
||||||
|
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
|
||||||
|
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
|
||||||
|
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
|
||||||
|
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
|
||||||
|
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
|
||||||
|
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
|
||||||
|
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
|
||||||
|
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
|
||||||
|
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
|
||||||
|
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
|
||||||
|
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
|
||||||
|
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
|
||||||
|
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
|
||||||
|
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
|
||||||
|
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
|
||||||
|
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
|
||||||
|
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
|
||||||
|
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
|
||||||
|
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
|
||||||
|
|
||||||
|
syn keyword cAnsiName errno environ
|
||||||
|
|
||||||
|
syn keyword cAnsiName STDC CX_LIMITED_RANGE
|
||||||
|
syn keyword cAnsiName STDC FENV_ACCESS
|
||||||
|
syn keyword cAnsiName STDC FP_CONTRACT
|
||||||
|
|
||||||
|
syn keyword cAnsiName and bitor not_eq xor
|
||||||
|
syn keyword cAnsiName and_eq compl or xor_eq
|
||||||
|
syn keyword cAnsiName bitand not or_eq
|
||||||
|
|
||||||
|
hi def link cAnsiFunction cFunction
|
||||||
|
hi def link cAnsiName cIdentifier
|
||||||
|
|
||||||
|
" Operators
|
||||||
|
syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
||||||
|
syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
||||||
|
syn match cOperator "[.!~*&%<>^|=,+-]"
|
||||||
|
syn match cOperator "/[^/*=]"me=e-1
|
||||||
|
syn match cOperator "/$"
|
||||||
|
syn match cOperator "&&\|||"
|
||||||
|
syn match cOperator "[][]"
|
||||||
|
|
||||||
|
" Preprocs
|
||||||
|
syn keyword cDefined defined contained containedin=cDefine
|
||||||
|
hi def link cDefined cDefine
|
||||||
|
|
||||||
|
" Functions
|
||||||
|
syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||||
|
syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
|
||||||
|
|
||||||
|
hi def link cUserFunction cFunction
|
||||||
|
hi def link cUserFunctionPointer cFunction
|
||||||
|
|
||||||
|
" Delimiters
|
||||||
|
syn match cDelimiter "[();\\]"
|
||||||
|
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
syn match cBraces display "[{}]"
|
||||||
|
|
||||||
|
|
||||||
|
" Booleans
|
||||||
|
syn keyword cBoolean true false TRUE FALSE
|
||||||
|
|
||||||
|
|
||||||
|
" Links
|
||||||
|
hi def link cFunction Function
|
||||||
|
hi def link cIdentifier Identifier
|
||||||
|
hi def link cDelimiter Delimiter
|
||||||
|
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||||
|
hi def link cBraces Delimiter
|
||||||
|
hi def link cBoolean Boolean
|
||||||
|
|
||||||
@@ -2,14 +2,18 @@
|
|||||||
" Language: C++ Additions
|
" Language: C++ Additions
|
||||||
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||||
" URL: http://www.haeggblad.com
|
" URL: http://www.haeggblad.com
|
||||||
" Last Change: 17 May 2013
|
" Last Change: 21 Sep 2014
|
||||||
" Version: 0.1
|
" Version: 0.5
|
||||||
" Changelog:
|
" Changelog:
|
||||||
" 0.1 - initial version.
|
" 0.1 - initial version.
|
||||||
|
" 0.2 - C++14
|
||||||
|
" 0.3 - Incorporate lastest changes from Mizuchi/STL-Syntax
|
||||||
|
" 0.4 - Add template function highlight
|
||||||
|
" 0.5 - Redo template function highlight to be more robust. Add options.
|
||||||
"
|
"
|
||||||
" Additional Vim syntax highlighting for C++ (including C++11)
|
" Additional Vim syntax highlighting for C++ (including C++11/14)
|
||||||
"
|
"
|
||||||
" This file contains additional syntax highlighting that I use for my C++11
|
" This file contains additional syntax highlighting that I use for C++11/14
|
||||||
" development in Vim. Compared to the standard syntax highlighting for C++ it
|
" development in Vim. Compared to the standard syntax highlighting for C++ it
|
||||||
" adds highlighting of (user defined) functions and the containers and types
|
" adds highlighting of (user defined) functions and the containers and types
|
||||||
" in the standard library / boost.
|
" in the standard library / boost.
|
||||||
@@ -27,21 +31,35 @@
|
|||||||
" Based on the discussion in:
|
" Based on the discussion in:
|
||||||
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
|
||||||
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
|
||||||
syn match cCustomScope "::"
|
|
||||||
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
|
|
||||||
|
|
||||||
|
" Functions
|
||||||
|
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||||
|
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
||||||
hi def link cCustomFunc Function
|
hi def link cCustomFunc Function
|
||||||
|
|
||||||
" Uncomment this to also highlight 'class::' and 'namespace::'
|
" Template functions
|
||||||
"hi def link cCustomClass Function
|
if exists('g:cpp_experimental_template_highlight') && g:cpp_experimental_template_highlight
|
||||||
|
syn region cCustomAngleBrackets matchgroup=AngleBracketContents start="\v%(<operator\_s*)@<!%(%(\_i|template\_s*)@<=\<[<=]@!|\<@<!\<[[:space:]<=]@!)" end='>' contains=@cppSTLgroup,cppStructure,cType,cCustomClass,cCustomAngleBrackets,cNumbers
|
||||||
|
syn match cCustomBrack "<\|>" contains=cCustomAngleBrackets
|
||||||
|
syn match cCustomTemplateFunc "\w\+\s*<.*>(\@=" contains=cCustomBrack,cCustomAngleBrackets
|
||||||
|
hi def link cCustomTemplateFunc Function
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Class and namespace scope
|
||||||
|
if exists('g:cpp_class_scope_highlight') && g:cpp_class_scope_highlight
|
||||||
|
syn match cCustomScope "::"
|
||||||
|
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
|
||||||
|
hi def link cCustomClass Function " disabled for now
|
||||||
|
endif
|
||||||
|
|
||||||
" Alternative syntax that is used in:
|
" Alternative syntax that is used in:
|
||||||
" http://www.vim.org/scripts/script.php?script_id=3064
|
" http://www.vim.org/scripts/script.php?script_id=3064
|
||||||
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
"syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
|
||||||
"hi def link cCustomFunc Function
|
"hi def link cCustomFunc Function
|
||||||
|
|
||||||
|
" Cluster for all the stdlib functions defined below
|
||||||
|
syn cluster cppSTLgroup contains=cppSTLfunction,cppSTLfunctional,cppSTLconstant,cppSTLnamespace,cppSTLtype,cppSTLexception,cppSTLiterator,cppSTLiterator_tagcppSTLenumcppSTLioscppSTLcast
|
||||||
|
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
" Standard library types and functions.
|
" Standard library types and functions.
|
||||||
"
|
"
|
||||||
@@ -53,6 +71,10 @@ hi def link cCustomFunc Function
|
|||||||
" http://www.vim.org/scripts/script.php?script_id=1640
|
" http://www.vim.org/scripts/script.php?script_id=1640
|
||||||
" -----------------------------------------------------------------------------
|
" -----------------------------------------------------------------------------
|
||||||
syntax keyword cppSTLconstant badbit
|
syntax keyword cppSTLconstant badbit
|
||||||
|
syntax keyword cppSTLconstant cerr
|
||||||
|
syntax keyword cppSTLconstant cin
|
||||||
|
syntax keyword cppSTLconstant clog
|
||||||
|
syntax keyword cppSTLconstant cout
|
||||||
syntax keyword cppSTLconstant digits
|
syntax keyword cppSTLconstant digits
|
||||||
syntax keyword cppSTLconstant digits10
|
syntax keyword cppSTLconstant digits10
|
||||||
syntax keyword cppSTLconstant eofbit
|
syntax keyword cppSTLconstant eofbit
|
||||||
@@ -81,6 +103,10 @@ syntax keyword cppSTLconstant radix
|
|||||||
syntax keyword cppSTLconstant round_style
|
syntax keyword cppSTLconstant round_style
|
||||||
syntax keyword cppSTLconstant tinyness_before
|
syntax keyword cppSTLconstant tinyness_before
|
||||||
syntax keyword cppSTLconstant traps
|
syntax keyword cppSTLconstant traps
|
||||||
|
syntax keyword cppSTLconstant wcerr
|
||||||
|
syntax keyword cppSTLconstant wcin
|
||||||
|
syntax keyword cppSTLconstant wclog
|
||||||
|
syntax keyword cppSTLconstant wcout
|
||||||
syntax keyword cppSTLexception bad_alloc
|
syntax keyword cppSTLexception bad_alloc
|
||||||
syntax keyword cppSTLexception bad_array_new_length
|
syntax keyword cppSTLexception bad_array_new_length
|
||||||
syntax keyword cppSTLexception bad_exception
|
syntax keyword cppSTLexception bad_exception
|
||||||
@@ -139,6 +165,7 @@ syntax keyword cppSTLfunction atexit
|
|||||||
syntax keyword cppSTLfunction atof
|
syntax keyword cppSTLfunction atof
|
||||||
syntax keyword cppSTLfunction atoi
|
syntax keyword cppSTLfunction atoi
|
||||||
syntax keyword cppSTLfunction atol
|
syntax keyword cppSTLfunction atol
|
||||||
|
syntax keyword cppSTLfunction atoll
|
||||||
syntax keyword cppSTLfunction back
|
syntax keyword cppSTLfunction back
|
||||||
syntax keyword cppSTLfunction back_inserter
|
syntax keyword cppSTLfunction back_inserter
|
||||||
syntax keyword cppSTLfunction bad
|
syntax keyword cppSTLfunction bad
|
||||||
@@ -155,12 +182,9 @@ syntax keyword cppSTLfunction bsearch
|
|||||||
syntax keyword cppSTLfunction calloc
|
syntax keyword cppSTLfunction calloc
|
||||||
syntax keyword cppSTLfunction capacity
|
syntax keyword cppSTLfunction capacity
|
||||||
syntax keyword cppSTLfunction ceil
|
syntax keyword cppSTLfunction ceil
|
||||||
syntax keyword cppSTLfunction cerr
|
|
||||||
syntax keyword cppSTLfunction cin
|
|
||||||
syntax keyword cppSTLfunction clear
|
syntax keyword cppSTLfunction clear
|
||||||
syntax keyword cppSTLfunction clearerr
|
syntax keyword cppSTLfunction clearerr
|
||||||
syntax keyword cppSTLfunction clock
|
syntax keyword cppSTLfunction clock
|
||||||
syntax keyword cppSTLfunction clog
|
|
||||||
syntax keyword cppSTLfunction close
|
syntax keyword cppSTLfunction close
|
||||||
syntax keyword cppSTLfunction compare
|
syntax keyword cppSTLfunction compare
|
||||||
syntax keyword cppSTLfunction conj
|
syntax keyword cppSTLfunction conj
|
||||||
@@ -171,7 +195,6 @@ syntax keyword cppSTLfunction cos
|
|||||||
syntax keyword cppSTLfunction cosh
|
syntax keyword cppSTLfunction cosh
|
||||||
syntax keyword cppSTLfunction count
|
syntax keyword cppSTLfunction count
|
||||||
syntax keyword cppSTLfunction count_if
|
syntax keyword cppSTLfunction count_if
|
||||||
syntax keyword cppSTLfunction cout
|
|
||||||
syntax keyword cppSTLfunction c_str
|
syntax keyword cppSTLfunction c_str
|
||||||
syntax keyword cppSTLfunction ctime
|
syntax keyword cppSTLfunction ctime
|
||||||
syntax keyword cppSTLfunction data
|
syntax keyword cppSTLfunction data
|
||||||
@@ -312,7 +335,7 @@ syntax keyword cppSTLfunction norm
|
|||||||
syntax keyword cppSTLfunction not1
|
syntax keyword cppSTLfunction not1
|
||||||
syntax keyword cppSTLfunction not2
|
syntax keyword cppSTLfunction not2
|
||||||
syntax keyword cppSTLfunction nth_element
|
syntax keyword cppSTLfunction nth_element
|
||||||
syntax keyword cppSTLfunction numeric_limits
|
syntax keyword cppSTLtype numeric_limits
|
||||||
syntax keyword cppSTLfunction open
|
syntax keyword cppSTLfunction open
|
||||||
syntax keyword cppSTLfunction partial_sort
|
syntax keyword cppSTLfunction partial_sort
|
||||||
syntax keyword cppSTLfunction partial_sort_copy
|
syntax keyword cppSTLfunction partial_sort_copy
|
||||||
@@ -423,8 +446,11 @@ syntax keyword cppSTLfunction strrchr
|
|||||||
syntax keyword cppSTLfunction strspn
|
syntax keyword cppSTLfunction strspn
|
||||||
syntax keyword cppSTLfunction strstr
|
syntax keyword cppSTLfunction strstr
|
||||||
syntax keyword cppSTLfunction strtod
|
syntax keyword cppSTLfunction strtod
|
||||||
|
syntax keyword cppSTLfunction strtof
|
||||||
syntax keyword cppSTLfunction strtok
|
syntax keyword cppSTLfunction strtok
|
||||||
syntax keyword cppSTLfunction strtol
|
syntax keyword cppSTLfunction strtol
|
||||||
|
syntax keyword cppSTLfunction strtold
|
||||||
|
syntax keyword cppSTLfunction strtoll
|
||||||
syntax keyword cppSTLfunction strtoul
|
syntax keyword cppSTLfunction strtoul
|
||||||
syntax keyword cppSTLfunction strxfrm
|
syntax keyword cppSTLfunction strxfrm
|
||||||
syntax keyword cppSTLfunction substr
|
syntax keyword cppSTLfunction substr
|
||||||
@@ -440,7 +466,6 @@ syntax keyword cppSTLfunction tellg
|
|||||||
syntax keyword cppSTLfunction tellp
|
syntax keyword cppSTLfunction tellp
|
||||||
syntax keyword cppSTLfunction test
|
syntax keyword cppSTLfunction test
|
||||||
syntax keyword cppSTLfunction time
|
syntax keyword cppSTLfunction time
|
||||||
syntax keyword cppSTLfunction time_t
|
|
||||||
syntax keyword cppSTLfunction tmpfile
|
syntax keyword cppSTLfunction tmpfile
|
||||||
syntax keyword cppSTLfunction tmpnam
|
syntax keyword cppSTLfunction tmpnam
|
||||||
syntax keyword cppSTLfunction tolower
|
syntax keyword cppSTLfunction tolower
|
||||||
@@ -462,7 +487,6 @@ syntax keyword cppSTLfunction unique_copy
|
|||||||
syntax keyword cppSTLfunction unsetf
|
syntax keyword cppSTLfunction unsetf
|
||||||
syntax keyword cppSTLfunction upper_bound
|
syntax keyword cppSTLfunction upper_bound
|
||||||
syntax keyword cppSTLfunction va_arg
|
syntax keyword cppSTLfunction va_arg
|
||||||
syntax keyword cppSTLfunction va_arg
|
|
||||||
syntax keyword cppSTLfunction va_copy
|
syntax keyword cppSTLfunction va_copy
|
||||||
syntax keyword cppSTLfunction va_end
|
syntax keyword cppSTLfunction va_end
|
||||||
syntax keyword cppSTLfunction value_comp
|
syntax keyword cppSTLfunction value_comp
|
||||||
@@ -539,12 +563,18 @@ syntax keyword cppSTLnamespace rel_ops
|
|||||||
syntax keyword cppSTLnamespace std
|
syntax keyword cppSTLnamespace std
|
||||||
syntax keyword cppSTLtype allocator
|
syntax keyword cppSTLtype allocator
|
||||||
syntax keyword cppSTLtype auto_ptr
|
syntax keyword cppSTLtype auto_ptr
|
||||||
|
syntax keyword cppSTLtype basic_filebuf
|
||||||
syntax keyword cppSTLtype basic_fstream
|
syntax keyword cppSTLtype basic_fstream
|
||||||
syntax keyword cppSTLtype basic_ifstream
|
syntax keyword cppSTLtype basic_ifstream
|
||||||
|
syntax keyword cppSTLtype basic_iostream
|
||||||
|
syntax keyword cppSTLtype basic_istream
|
||||||
syntax keyword cppSTLtype basic_istringstream
|
syntax keyword cppSTLtype basic_istringstream
|
||||||
syntax keyword cppSTLtype basic_ofstream
|
syntax keyword cppSTLtype basic_ofstream
|
||||||
|
syntax keyword cppSTLtype basic_ostream
|
||||||
syntax keyword cppSTLtype basic_ostringstream
|
syntax keyword cppSTLtype basic_ostringstream
|
||||||
|
syntax keyword cppSTLtype basic_streambuf
|
||||||
syntax keyword cppSTLtype basic_string
|
syntax keyword cppSTLtype basic_string
|
||||||
|
syntax keyword cppSTLtype basic_stringbuf
|
||||||
syntax keyword cppSTLtype basic_stringstream
|
syntax keyword cppSTLtype basic_stringstream
|
||||||
syntax keyword cppSTLtype binary_compose
|
syntax keyword cppSTLtype binary_compose
|
||||||
syntax keyword cppSTLtype binder1st
|
syntax keyword cppSTLtype binder1st
|
||||||
@@ -573,7 +603,11 @@ syntax keyword cppSTLtype ifstream
|
|||||||
syntax keyword cppSTLtype imaxdiv_t
|
syntax keyword cppSTLtype imaxdiv_t
|
||||||
syntax keyword cppSTLtype indirect_array
|
syntax keyword cppSTLtype indirect_array
|
||||||
syntax keyword cppSTLtype int_type
|
syntax keyword cppSTLtype int_type
|
||||||
|
syntax keyword cppSTLtype ios_base
|
||||||
|
syntax keyword cppSTLtype iostream
|
||||||
|
syntax keyword cppSTLtype istream
|
||||||
syntax keyword cppSTLtype istringstream
|
syntax keyword cppSTLtype istringstream
|
||||||
|
syntax keyword cppSTLtype istrstream
|
||||||
syntax keyword cppSTLtype iterator_traits
|
syntax keyword cppSTLtype iterator_traits
|
||||||
syntax keyword cppSTLtype key_compare
|
syntax keyword cppSTLtype key_compare
|
||||||
syntax keyword cppSTLtype key_type
|
syntax keyword cppSTLtype key_type
|
||||||
@@ -594,6 +628,7 @@ syntax keyword cppSTLtype off_type
|
|||||||
syntax keyword cppSTLtype ofstream
|
syntax keyword cppSTLtype ofstream
|
||||||
syntax keyword cppSTLtype ostream
|
syntax keyword cppSTLtype ostream
|
||||||
syntax keyword cppSTLtype ostringstream
|
syntax keyword cppSTLtype ostringstream
|
||||||
|
syntax keyword cppSTLtype ostrstream
|
||||||
syntax keyword cppSTLtype pair
|
syntax keyword cppSTLtype pair
|
||||||
syntax keyword cppSTLtype pointer
|
syntax keyword cppSTLtype pointer
|
||||||
syntax keyword cppSTLtype pointer_to_binary_function
|
syntax keyword cppSTLtype pointer_to_binary_function
|
||||||
@@ -610,11 +645,15 @@ syntax keyword cppSTLtype size_type
|
|||||||
syntax keyword cppSTLtype slice_array
|
syntax keyword cppSTLtype slice_array
|
||||||
syntax keyword cppSTLtype stack
|
syntax keyword cppSTLtype stack
|
||||||
syntax keyword cppSTLtype stream
|
syntax keyword cppSTLtype stream
|
||||||
|
syntax keyword cppSTLtype streambuf
|
||||||
syntax keyword cppSTLtype string
|
syntax keyword cppSTLtype string
|
||||||
syntax keyword cppSTLtype stringbuf
|
syntax keyword cppSTLtype stringbuf
|
||||||
syntax keyword cppSTLtype stringstream
|
syntax keyword cppSTLtype stringstream
|
||||||
|
syntax keyword cppSTLtype strstream
|
||||||
|
syntax keyword cppSTLtype strstreambuf
|
||||||
syntax keyword cppSTLtype temporary_buffer
|
syntax keyword cppSTLtype temporary_buffer
|
||||||
syntax keyword cppSTLtype test_type
|
syntax keyword cppSTLtype test_type
|
||||||
|
syntax keyword cppSTLtype time_t
|
||||||
syntax keyword cppSTLtype tm
|
syntax keyword cppSTLtype tm
|
||||||
syntax keyword cppSTLtype traits_type
|
syntax keyword cppSTLtype traits_type
|
||||||
syntax keyword cppSTLtype type_info
|
syntax keyword cppSTLtype type_info
|
||||||
@@ -626,15 +665,98 @@ syntax keyword cppSTLtype valarray
|
|||||||
syntax keyword cppSTLtype value_compare
|
syntax keyword cppSTLtype value_compare
|
||||||
syntax keyword cppSTLtype value_type
|
syntax keyword cppSTLtype value_type
|
||||||
syntax keyword cppSTLtype vector
|
syntax keyword cppSTLtype vector
|
||||||
|
syntax keyword cppSTLtype wfilebuf
|
||||||
syntax keyword cppSTLtype wfstream
|
syntax keyword cppSTLtype wfstream
|
||||||
syntax keyword cppSTLtype wifstream
|
syntax keyword cppSTLtype wifstream
|
||||||
|
syntax keyword cppSTLtype wiostream
|
||||||
|
syntax keyword cppSTLtype wistream
|
||||||
syntax keyword cppSTLtype wistringstream
|
syntax keyword cppSTLtype wistringstream
|
||||||
syntax keyword cppSTLtype wofstream
|
syntax keyword cppSTLtype wofstream
|
||||||
|
syntax keyword cppSTLtype wostream
|
||||||
syntax keyword cppSTLtype wostringstream
|
syntax keyword cppSTLtype wostringstream
|
||||||
|
syntax keyword cppSTLtype wstreambuf
|
||||||
syntax keyword cppSTLtype wstring
|
syntax keyword cppSTLtype wstring
|
||||||
syntax keyword cppSTLtype wstringbuf
|
syntax keyword cppSTLtype wstringbuf
|
||||||
syntax keyword cppSTLtype wstringstream
|
syntax keyword cppSTLtype wstringstream
|
||||||
|
|
||||||
|
syntax keyword cppSTLfunction mblen
|
||||||
|
syntax keyword cppSTLfunction mbtowc
|
||||||
|
syntax keyword cppSTLfunction wctomb
|
||||||
|
syntax keyword cppSTLfunction mbstowcs
|
||||||
|
syntax keyword cppSTLfunction wcstombs
|
||||||
|
syntax keyword cppSTLfunction mbsinit
|
||||||
|
syntax keyword cppSTLfunction btowc
|
||||||
|
syntax keyword cppSTLfunction wctob
|
||||||
|
syntax keyword cppSTLfunction mbrlen
|
||||||
|
syntax keyword cppSTLfunction mbrtowc
|
||||||
|
syntax keyword cppSTLfunction wcrtomb
|
||||||
|
syntax keyword cppSTLfunction mbsrtowcs
|
||||||
|
syntax keyword cppSTLfunction wcsrtombs
|
||||||
|
|
||||||
|
syntax keyword cppSTLtype mbstate_t
|
||||||
|
|
||||||
|
syntax keyword cppSTLconstant MB_LEN_MAX
|
||||||
|
syntax keyword cppSTLconstant MB_CUR_MAX
|
||||||
|
syntax keyword cppSTLconstant __STDC_UTF_16__
|
||||||
|
syntax keyword cppSTLconstant __STDC_UTF_32__
|
||||||
|
|
||||||
|
syntax keyword cppSTLfunction iswalnum
|
||||||
|
syntax keyword cppSTLfunction iswalpha
|
||||||
|
syntax keyword cppSTLfunction iswlower
|
||||||
|
syntax keyword cppSTLfunction iswupper
|
||||||
|
syntax keyword cppSTLfunction iswdigit
|
||||||
|
syntax keyword cppSTLfunction iswxdigit
|
||||||
|
syntax keyword cppSTLfunction iswcntrl
|
||||||
|
syntax keyword cppSTLfunction iswgraph
|
||||||
|
syntax keyword cppSTLfunction iswspace
|
||||||
|
syntax keyword cppSTLfunction iswprint
|
||||||
|
syntax keyword cppSTLfunction iswpunct
|
||||||
|
syntax keyword cppSTLfunction iswctype
|
||||||
|
syntax keyword cppSTLfunction wctype
|
||||||
|
|
||||||
|
syntax keyword cppSTLfunction towlower
|
||||||
|
syntax keyword cppSTLfunction towupper
|
||||||
|
syntax keyword cppSTLfunction towctrans
|
||||||
|
syntax keyword cppSTLfunction wctrans
|
||||||
|
|
||||||
|
syntax keyword cppSTLfunction wcstol
|
||||||
|
syntax keyword cppSTLfunction wcstoll
|
||||||
|
syntax keyword cppSTLfunction wcstoul
|
||||||
|
syntax keyword cppSTLfunction wcstoull
|
||||||
|
syntax keyword cppSTLfunction wcstof
|
||||||
|
syntax keyword cppSTLfunction wcstod
|
||||||
|
syntax keyword cppSTLfunction wcstold
|
||||||
|
|
||||||
|
syntax keyword cppSTLfunction wcscpy
|
||||||
|
syntax keyword cppSTLfunction wcsncpy
|
||||||
|
syntax keyword cppSTLfunction wcscat
|
||||||
|
syntax keyword cppSTLfunction wcsncat
|
||||||
|
syntax keyword cppSTLfunction wcsxfrm
|
||||||
|
syntax keyword cppSTLfunction wcslen
|
||||||
|
syntax keyword cppSTLfunction wcscmp
|
||||||
|
syntax keyword cppSTLfunction wcsncmp
|
||||||
|
syntax keyword cppSTLfunction wcscoll
|
||||||
|
syntax keyword cppSTLfunction wcschr
|
||||||
|
syntax keyword cppSTLfunction wcsrchr
|
||||||
|
syntax keyword cppSTLfunction wcsspn
|
||||||
|
syntax keyword cppSTLfunction wcscspn
|
||||||
|
syntax keyword cppSTLfunction wcspbrk
|
||||||
|
syntax keyword cppSTLfunction wcsstr
|
||||||
|
syntax keyword cppSTLfunction wcstok
|
||||||
|
syntax keyword cppSTLfunction wmemcpy
|
||||||
|
syntax keyword cppSTLfunction wmemmove
|
||||||
|
syntax keyword cppSTLfunction wmemcmp
|
||||||
|
syntax keyword cppSTLfunction wmemchr
|
||||||
|
syntax keyword cppSTLfunction wmemset
|
||||||
|
|
||||||
|
syntax keyword cppSTLtype wctrans_t
|
||||||
|
syntax keyword cppSTLtype wctype_t
|
||||||
|
syntax keyword cppSTLtype wint_t
|
||||||
|
|
||||||
|
syntax keyword cppSTLconstant WEOF
|
||||||
|
syntax keyword cppSTLconstant WCHAR_MIN
|
||||||
|
syntax keyword cppSTLconstant WCHAR_MAX
|
||||||
|
|
||||||
if !exists("cpp_no_cpp11")
|
if !exists("cpp_no_cpp11")
|
||||||
syntax keyword cppSTLtype nullptr_t max_align_t
|
syntax keyword cppSTLtype nullptr_t max_align_t
|
||||||
syntax keyword cppSTLtype type_index
|
syntax keyword cppSTLtype type_index
|
||||||
@@ -727,6 +849,10 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype integral_constant
|
syntax keyword cppSTLtype integral_constant
|
||||||
syntax keyword cppSTLtype true_type
|
syntax keyword cppSTLtype true_type
|
||||||
syntax keyword cppSTLtype false_type
|
syntax keyword cppSTLtype false_type
|
||||||
|
syntax keyword cppSTLfunction declval
|
||||||
|
|
||||||
|
syntax keyword cppSTLconstant piecewise_construct
|
||||||
|
syntax keyword cppSTLtype piecewise_construct_t
|
||||||
|
|
||||||
" memory
|
" memory
|
||||||
syntax keyword cppSTLtype unique_ptr
|
syntax keyword cppSTLtype unique_ptr
|
||||||
@@ -751,6 +877,12 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype pointer_traits
|
syntax keyword cppSTLtype pointer_traits
|
||||||
syntax keyword cppSTLfunction addressof
|
syntax keyword cppSTLfunction addressof
|
||||||
syntax keyword cppSTLfunction align
|
syntax keyword cppSTLfunction align
|
||||||
|
syntax keyword cppSTLfunction make_shared
|
||||||
|
syntax keyword cppSTLfunction allocate_shared
|
||||||
|
syntax keyword cppSTLcast static_pointer_cast
|
||||||
|
syntax keyword cppSTLcast dynamic_pointer_cast
|
||||||
|
syntax keyword cppSTLcast const_pointer_cast
|
||||||
|
syntax keyword cppSTLfunction get_deleter
|
||||||
|
|
||||||
" function object
|
" function object
|
||||||
syntax keyword cppSTLfunction bind
|
syntax keyword cppSTLfunction bind
|
||||||
@@ -776,6 +908,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction quick_exit
|
syntax keyword cppSTLfunction quick_exit
|
||||||
syntax keyword cppSTLfunction _Exit
|
syntax keyword cppSTLfunction _Exit
|
||||||
syntax keyword cppSTLfunction at_quick_exit
|
syntax keyword cppSTLfunction at_quick_exit
|
||||||
|
syntax keyword cppSTLfunction forward
|
||||||
|
|
||||||
" date and time
|
" date and time
|
||||||
syntax keyword cppSTLnamespace chrono
|
syntax keyword cppSTLnamespace chrono
|
||||||
@@ -784,6 +917,8 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype steady_clock
|
syntax keyword cppSTLtype steady_clock
|
||||||
syntax keyword cppSTLtype high_resolution_clock
|
syntax keyword cppSTLtype high_resolution_clock
|
||||||
syntax keyword cppSTLtype time_point
|
syntax keyword cppSTLtype time_point
|
||||||
|
syntax keyword cppSTLcast duration_cast
|
||||||
|
syntax keyword cppSTLcast time_point_cast
|
||||||
|
|
||||||
" tuple
|
" tuple
|
||||||
syntax keyword cppSTLtype tuple
|
syntax keyword cppSTLtype tuple
|
||||||
@@ -842,6 +977,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction copy_if
|
syntax keyword cppSTLfunction copy_if
|
||||||
syntax keyword cppSTLfunction copy_n
|
syntax keyword cppSTLfunction copy_n
|
||||||
syntax keyword cppSTLfunction move
|
syntax keyword cppSTLfunction move
|
||||||
|
syntax keyword cppSTLfunction move_if_noexcept
|
||||||
syntax keyword cppSTLfunction move_backward
|
syntax keyword cppSTLfunction move_backward
|
||||||
syntax keyword cppSTLfunction shuffle
|
syntax keyword cppSTLfunction shuffle
|
||||||
syntax keyword cppSTLfunction is_partitioned
|
syntax keyword cppSTLfunction is_partitioned
|
||||||
@@ -968,6 +1104,7 @@ if !exists("cpp_no_cpp11")
|
|||||||
|
|
||||||
" locale
|
" locale
|
||||||
syntax keyword cppSTLfunction isblank
|
syntax keyword cppSTLfunction isblank
|
||||||
|
syntax keyword cppSTLfunction iswblank
|
||||||
syntax keyword cppSTLtype wstring_convert
|
syntax keyword cppSTLtype wstring_convert
|
||||||
syntax keyword cppSTLtype wbuffer_convert
|
syntax keyword cppSTLtype wbuffer_convert
|
||||||
syntax keyword cppSTLtype codecvt_utf8
|
syntax keyword cppSTLtype codecvt_utf8
|
||||||
@@ -1016,16 +1153,55 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLfunction atomic_flag_clear
|
syntax keyword cppSTLfunction atomic_flag_clear
|
||||||
syntax keyword cppSTLfunction atomic_flag_clear_explicit
|
syntax keyword cppSTLfunction atomic_flag_clear_explicit
|
||||||
|
|
||||||
|
syntax keyword cppSTLtype atomic_bool
|
||||||
|
syntax keyword cppSTLtype atomic_char
|
||||||
|
syntax keyword cppSTLtype atomic_schar
|
||||||
|
syntax keyword cppSTLtype atomic_uchar
|
||||||
|
syntax keyword cppSTLtype atomic_short
|
||||||
|
syntax keyword cppSTLtype atomic_ushort
|
||||||
|
syntax keyword cppSTLtype atomic_int
|
||||||
|
syntax keyword cppSTLtype atomic_uint
|
||||||
|
syntax keyword cppSTLtype atomic_long
|
||||||
|
syntax keyword cppSTLtype atomic_ulong
|
||||||
|
syntax keyword cppSTLtype atomic_llong
|
||||||
|
syntax keyword cppSTLtype atomic_ullong
|
||||||
|
syntax keyword cppSTLtype atomic_char16_t
|
||||||
|
syntax keyword cppSTLtype atomic_char32_t
|
||||||
|
syntax keyword cppSTLtype atomic_wchar_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_least8_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_least8_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_least16_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_least16_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_least32_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_least32_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_least64_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_least64_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_fast8_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_fast8_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_fast16_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_fast16_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_fast32_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_fast32_t
|
||||||
|
syntax keyword cppSTLtype atomic_int_fast64_t
|
||||||
|
syntax keyword cppSTLtype atomic_uint_fast64_t
|
||||||
|
syntax keyword cppSTLtype atomic_intptr_t
|
||||||
|
syntax keyword cppSTLtype atomic_uintptr_t
|
||||||
|
syntax keyword cppSTLtype atomic_size_t
|
||||||
|
syntax keyword cppSTLtype atomic_ptrdiff_t
|
||||||
|
syntax keyword cppSTLtype atomic_intmax_t
|
||||||
|
syntax keyword cppSTLtype atomic_uintmax_t
|
||||||
|
|
||||||
syntax keyword cppSTLtype memory_order
|
syntax keyword cppSTLtype memory_order
|
||||||
syntax keyword cppSTLfunction atomic_init
|
syntax keyword cppSTLfunction atomic_init
|
||||||
syntax keyword cppSTLfunction ATOMIC_VAR_INIT
|
syntax keyword cppSTLfunction ATOMIC_VAR_INIT
|
||||||
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
|
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
|
||||||
syntax keyword cppSTLconstant kill_dependency
|
syntax keyword cppSTLfunction kill_dependency
|
||||||
syntax keyword cppSTLconstant atomic_thread_fence
|
syntax keyword cppSTLfunction atomic_thread_fence
|
||||||
syntax keyword cppSTLconstant atomic_signal_fence
|
syntax keyword cppSTLfunction atomic_signal_fence
|
||||||
|
|
||||||
" thread
|
" thread
|
||||||
syntax keyword cppSTLtype thread
|
syntax keyword cppSTLtype thread
|
||||||
|
syntax keyword cppSTLnamespace this_thread
|
||||||
syntax keyword cppSTLfunction yield
|
syntax keyword cppSTLfunction yield
|
||||||
syntax keyword cppSTLfunction get_id
|
syntax keyword cppSTLfunction get_id
|
||||||
syntax keyword cppSTLfunction sleep_for
|
syntax keyword cppSTLfunction sleep_for
|
||||||
@@ -1061,8 +1237,8 @@ if !exists("cpp_no_cpp11")
|
|||||||
syntax keyword cppSTLtype future
|
syntax keyword cppSTLtype future
|
||||||
syntax keyword cppSTLtype shared_future
|
syntax keyword cppSTLtype shared_future
|
||||||
|
|
||||||
"syntax keyword cppSTLfunction async
|
syntax keyword cppSTLfunction async
|
||||||
"syntax keyword cppSTLenum launch
|
syntax keyword cppSTLenum launch
|
||||||
|
|
||||||
syntax keyword cppSTLenum future_status
|
syntax keyword cppSTLenum future_status
|
||||||
syntax keyword cppSTLenum future_errc
|
syntax keyword cppSTLenum future_errc
|
||||||
@@ -1114,7 +1290,54 @@ if !exists("cpp_no_cpp11")
|
|||||||
|
|
||||||
"limits
|
"limits
|
||||||
syntax keyword cppSTLfunction lowest
|
syntax keyword cppSTLfunction lowest
|
||||||
endif
|
|
||||||
|
"cuchar
|
||||||
|
syntax keyword cppSTLfunction mbrtoc16
|
||||||
|
syntax keyword cppSTLfunction c16rtomb
|
||||||
|
syntax keyword cppSTLfunction mbrtoc32
|
||||||
|
syntax keyword cppSTLfunction c32rtomb
|
||||||
|
|
||||||
|
"cinttypes
|
||||||
|
syntax keyword cppSTLfunction strtoimax
|
||||||
|
syntax keyword cppSTLfunction strtoumax
|
||||||
|
syntax keyword cppSTLfunction wcstoimax
|
||||||
|
syntax keyword cppSTLfunction wcstoumax
|
||||||
|
|
||||||
|
syntax keyword cppSTLtype nanoseconds
|
||||||
|
syntax keyword cppSTLtype microseconds
|
||||||
|
syntax keyword cppSTLtype milliseconds
|
||||||
|
syntax keyword cppSTLtype seconds
|
||||||
|
syntax keyword cppSTLtype minutes
|
||||||
|
syntax keyword cppSTLtype hours
|
||||||
|
|
||||||
|
"raw string literals
|
||||||
|
syntax region cppRawString matchgroup=cppRawDelimiter start=@\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(@ end=/)\z1"/ contains=@Spell
|
||||||
|
|
||||||
|
syn match cNumber "0b[01]\+"
|
||||||
|
endif " C++11
|
||||||
|
|
||||||
|
if !exists("cpp_no_cpp14")
|
||||||
|
"dynarray
|
||||||
|
syntax keyword cppSTLtype dynarray
|
||||||
|
|
||||||
|
"thread
|
||||||
|
syntax keyword cppSTLtype shared_mutex
|
||||||
|
syntax keyword cppSTLtype shared_lock
|
||||||
|
|
||||||
|
"memory
|
||||||
|
syntax keyword cppSTLfunction make_unique
|
||||||
|
endif " C++14
|
||||||
|
|
||||||
|
if !exists("cpp_no_boost")
|
||||||
|
"optional is not a part of C++14 anymore
|
||||||
|
syntax keyword cppSTLtype optional
|
||||||
|
"syntax keyword cppSTLfunction value
|
||||||
|
syntax keyword cppSTLfunction value_or
|
||||||
|
syntax keyword cppSTLfunction make_optional
|
||||||
|
|
||||||
|
syntax keyword cppSTLnamespace boost
|
||||||
|
syntax keyword cppSTLcast lexical_cast
|
||||||
|
endif " Boost
|
||||||
|
|
||||||
" Default highlighting
|
" Default highlighting
|
||||||
if version >= 508 || !exists("did_cpp_syntax_inits")
|
if version >= 508 || !exists("did_cpp_syntax_inits")
|
||||||
@@ -1125,15 +1348,17 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
|
|||||||
command -nargs=+ HiLink hi def link <args>
|
command -nargs=+ HiLink hi def link <args>
|
||||||
endif
|
endif
|
||||||
HiLink cppSTLfunction Function
|
HiLink cppSTLfunction Function
|
||||||
HiLink cppSTLfunctional Type
|
HiLink cppSTLfunctional Typedef
|
||||||
HiLink cppSTLconstant Constant
|
HiLink cppSTLconstant Constant
|
||||||
HiLink cppSTLnamespace Constant
|
HiLink cppSTLnamespace Constant
|
||||||
HiLink cppSTLtype Type
|
HiLink cppSTLtype Typedef
|
||||||
HiLink cppSTLexception Type
|
HiLink cppSTLexception Exception
|
||||||
HiLink cppSTLiterator Type
|
HiLink cppSTLiterator Typedef
|
||||||
HiLink cppSTLiterator_tag Type
|
HiLink cppSTLiterator_tag Typedef
|
||||||
HiLink cppSTLenum Type
|
HiLink cppSTLenum Typedef
|
||||||
HiLink cppSTLios Function
|
HiLink cppSTLios Function
|
||||||
|
HiLink cppSTLcast Statement " be consistent with official syntax
|
||||||
|
HiLink cppRawString String
|
||||||
|
HiLink cppRawDelimiter Delimiter
|
||||||
delcommand HiLink
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,500 +1,6 @@
|
|||||||
" Language: Colorful CSS Color Preview
|
" Language: Colorful CSS Color Preview
|
||||||
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
" Last Change: 2013-03-09
|
|
||||||
" Licence: No Warranties. WTFPL. But please tell me!
|
|
||||||
" Version: 0.7.3
|
|
||||||
" vim:et:ts=2 sw=2 sts=2
|
|
||||||
"
|
|
||||||
" KNOWN PROBLEMS: compatibility with `cursorline` -- https://github.com/ap/vim-css-color/issues/24
|
|
||||||
|
|
||||||
let s:hex={}
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
for i in range(0, 255)
|
|
||||||
let s:hex[ printf( '%02x', i ) ] = i
|
|
||||||
endfor
|
|
||||||
|
|
||||||
let s:black = '#000000'
|
call css_color#init('css', 'cssMediaBlock,cssFunction,cssDefinition,cssAttrRegion,cssComment')
|
||||||
let s:white = '#ffffff'
|
|
||||||
|
|
||||||
function! s:FGForBG(color)
|
|
||||||
" pick suitable text color given a background color
|
|
||||||
let color = tolower(a:color)
|
|
||||||
let r = s:hex[color[0:1]]
|
|
||||||
let g = s:hex[color[2:3]]
|
|
||||||
let b = s:hex[color[4:5]]
|
|
||||||
return r*30 + g*59 + b*11 > 12000 ? s:black : s:white
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let b:color_pattern = {}
|
|
||||||
let s:color_prefix = 'gui'
|
|
||||||
let s:fg_color_calc = 'let color = "#" . toupper(a:color)'
|
|
||||||
|
|
||||||
function! s:MatchColorValue(color, pattern)
|
|
||||||
if ! len(a:color) | return | endif
|
|
||||||
|
|
||||||
if has_key( b:color_pattern, a:pattern ) | return | endif
|
|
||||||
let b:color_pattern[a:pattern] = 1
|
|
||||||
|
|
||||||
let pattern = a:pattern
|
|
||||||
" iff pattern ends on word character, require word break to match
|
|
||||||
if pattern =~ '\>$' | let pattern .= '\>' | endif
|
|
||||||
|
|
||||||
let group = 'cssColor' . tolower(a:color)
|
|
||||||
exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
|
|
||||||
exe 'syn cluster cssColors add='.group
|
|
||||||
exe s:fg_color_calc
|
|
||||||
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:HexForRGBValue(r,g,b)
|
|
||||||
" Convert 80% -> 204, 100% -> 255, etc.
|
|
||||||
let rgb = map( [a:r,a:g,a:b], 'v:val =~ "%$" ? ( 255 * v:val ) / 100 : v:val' )
|
|
||||||
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:HexForHSLValue(h,s,l)
|
|
||||||
" Convert 80% -> 0.8, 100% -> 1.0, etc.
|
|
||||||
let [s,l] = map( [a:s, a:l], 'v:val =~ "%$" ? v:val / 100.0 : str2float(v:val)' )
|
|
||||||
" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color
|
|
||||||
let hh = ( a:h % 360 ) / 360.0
|
|
||||||
let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s
|
|
||||||
let m1 = l * 2 - m2
|
|
||||||
let rgb = []
|
|
||||||
for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]
|
|
||||||
let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h
|
|
||||||
let v =
|
|
||||||
\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :
|
|
||||||
\ h * 2 < 1 ? m2 :
|
|
||||||
\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :
|
|
||||||
\ m1
|
|
||||||
if v > 1.0 | return '' | endif
|
|
||||||
let rgb += [ float2nr( 255 * v ) ]
|
|
||||||
endfor
|
|
||||||
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:PreviewCSSColorInLine()
|
|
||||||
" TODO use cssColor matchdata
|
|
||||||
"
|
|
||||||
" N.B. these substitute() calls are here just for the side effect
|
|
||||||
" of invoking s:MatchColorValue during substitution -- because
|
|
||||||
" match() and friends do not allow finding all matches in a single
|
|
||||||
" scan without examining the start of the string over and over
|
|
||||||
call substitute( substitute( substitute( substitute( getline('.'),
|
|
||||||
\ '#\(\x\)\(\x\)\(\x\)\>', '\=s:MatchColorValue(submatch(1).submatch(1).submatch(2).submatch(2).submatch(3).submatch(3), submatch(0))', 'g' ),
|
|
||||||
\ '#\(\x\{6}\)\>', '\=s:MatchColorValue(submatch(1), submatch(0))', 'g' ),
|
|
||||||
\ 'rgba\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForRGBValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' ),
|
|
||||||
\ 'hsla\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForHSLValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if has("gui_running") || &t_Co==256
|
|
||||||
" HACK modify cssDefinition to add @cssColors to its contains
|
|
||||||
redir => cssdef
|
|
||||||
silent! syn list cssDefinition
|
|
||||||
redir END
|
|
||||||
if len( cssdef )
|
|
||||||
for out in split( cssdef, "\n" )
|
|
||||||
if out !~ '^cssDefinition ' | continue | endif
|
|
||||||
let out = substitute( out, ' \+xxx \+', ' ', '' )
|
|
||||||
let out = substitute( out, ' contains=\zs', '@cssColors,', '' )
|
|
||||||
exe 'syn region' out
|
|
||||||
endfor
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ! has('gui_running')
|
|
||||||
|
|
||||||
let s:black = 0
|
|
||||||
let s:white = 15
|
|
||||||
|
|
||||||
let s:color_prefix = 'cterm'
|
|
||||||
let s:fg_color_calc = 'let color = s:XTermColorForRGB(a:color)'
|
|
||||||
|
|
||||||
" preset 16 vt100 colors
|
|
||||||
let s:xtermcolor = [
|
|
||||||
\ [ 0x00, 0x00, 0x00, 0 ],
|
|
||||||
\ [ 0xCD, 0x00, 0x00, 1 ],
|
|
||||||
\ [ 0x00, 0xCD, 0x00, 2 ],
|
|
||||||
\ [ 0xCD, 0xCD, 0x00, 3 ],
|
|
||||||
\ [ 0x00, 0x00, 0xEE, 4 ],
|
|
||||||
\ [ 0xCD, 0x00, 0xCD, 5 ],
|
|
||||||
\ [ 0x00, 0xCD, 0xCD, 6 ],
|
|
||||||
\ [ 0xE5, 0xE5, 0xE5, 7 ],
|
|
||||||
\ [ 0x7F, 0x7F, 0x7F, 8 ],
|
|
||||||
\ [ 0xFF, 0x00, 0x00, 9 ],
|
|
||||||
\ [ 0x00, 0xFF, 0x00, 10 ],
|
|
||||||
\ [ 0xFF, 0xFF, 0x00, 11 ],
|
|
||||||
\ [ 0x5C, 0x5C, 0xFF, 12 ],
|
|
||||||
\ [ 0xFF, 0x00, 0xFF, 13 ],
|
|
||||||
\ [ 0x00, 0xFF, 0xFF, 14 ],
|
|
||||||
\ [ 0xFF, 0xFF, 0xFF, 15 ]]
|
|
||||||
" grayscale ramp
|
|
||||||
" (value is 8+10*lum for lum in 0..23)
|
|
||||||
let s:xtermcolor += [
|
|
||||||
\ [ 0x08, 0x08, 0x08, 232 ],
|
|
||||||
\ [ 0x12, 0x12, 0x12, 233 ],
|
|
||||||
\ [ 0x1C, 0x1C, 0x1C, 234 ],
|
|
||||||
\ [ 0x26, 0x26, 0x26, 235 ],
|
|
||||||
\ [ 0x30, 0x30, 0x30, 236 ],
|
|
||||||
\ [ 0x3A, 0x3A, 0x3A, 237 ],
|
|
||||||
\ [ 0x44, 0x44, 0x44, 238 ],
|
|
||||||
\ [ 0x4E, 0x4E, 0x4E, 239 ],
|
|
||||||
\ [ 0x58, 0x58, 0x58, 240 ],
|
|
||||||
\ [ 0x62, 0x62, 0x62, 241 ],
|
|
||||||
\ [ 0x6C, 0x6C, 0x6C, 242 ],
|
|
||||||
\ [ 0x76, 0x76, 0x76, 243 ],
|
|
||||||
\ [ 0x80, 0x80, 0x80, 244 ],
|
|
||||||
\ [ 0x8A, 0x8A, 0x8A, 245 ],
|
|
||||||
\ [ 0x94, 0x94, 0x94, 246 ],
|
|
||||||
\ [ 0x9E, 0x9E, 0x9E, 247 ],
|
|
||||||
\ [ 0xA8, 0xA8, 0xA8, 248 ],
|
|
||||||
\ [ 0xB2, 0xB2, 0xB2, 249 ],
|
|
||||||
\ [ 0xBC, 0xBC, 0xBC, 250 ],
|
|
||||||
\ [ 0xC6, 0xC6, 0xC6, 251 ],
|
|
||||||
\ [ 0xD0, 0xD0, 0xD0, 252 ],
|
|
||||||
\ [ 0xDA, 0xDA, 0xDA, 253 ],
|
|
||||||
\ [ 0xE4, 0xE4, 0xE4, 254 ],
|
|
||||||
\ [ 0xEE, 0xEE, 0xEE, 255 ]]
|
|
||||||
|
|
||||||
" the 6 values used in the xterm color cube
|
|
||||||
" 0 95 135 175 215 255
|
|
||||||
let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
|
|
||||||
|
|
||||||
" 0..255 mapped to 0..5 based on the color cube values
|
|
||||||
let s:xvquant = repeat([0],48)
|
|
||||||
\ + repeat([1],68)
|
|
||||||
\ + repeat([2],40)
|
|
||||||
\ + repeat([3],40)
|
|
||||||
\ + repeat([4],40)
|
|
||||||
\ + repeat([5],20)
|
|
||||||
" tweak the mapping for the exact matches (0 and 1 already correct)
|
|
||||||
let s:xvquant[s:cubergb[2]] = 2
|
|
||||||
let s:xvquant[s:cubergb[3]] = 3
|
|
||||||
let s:xvquant[s:cubergb[4]] = 4
|
|
||||||
let s:xvquant[s:cubergb[5]] = 5
|
|
||||||
|
|
||||||
" selects the nearest xterm color for a rgb value like #FF0000
|
|
||||||
function! s:XTermColorForRGB(color)
|
|
||||||
let best_match=0
|
|
||||||
let smallest_distance = 10000000000
|
|
||||||
let color = tolower(a:color)
|
|
||||||
let r = s:hex[color[0:1]]
|
|
||||||
let g = s:hex[color[2:3]]
|
|
||||||
let b = s:hex[color[4:5]]
|
|
||||||
|
|
||||||
let vr = s:xvquant[r]
|
|
||||||
let vg = s:xvquant[g]
|
|
||||||
let vb = s:xvquant[b]
|
|
||||||
let cidx = vr * 36 + vg * 6 + vb + 16
|
|
||||||
let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]
|
|
||||||
|
|
||||||
for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor
|
|
||||||
let dr = tr - r
|
|
||||||
let dg = tg - g
|
|
||||||
let db = tb - b
|
|
||||||
let distance = dr*dr + dg*dg + db*db
|
|
||||||
if distance == 0 | return idx | endif
|
|
||||||
if distance > smallest_distance | continue | endif
|
|
||||||
let smallest_distance = distance
|
|
||||||
let best_match = idx
|
|
||||||
endfor
|
|
||||||
return best_match
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
hi cssColor000000 guibg=#000000 guifg=#FFFFFF ctermbg=16 ctermfg=231 | syn cluster cssColors add=cssColor000000
|
|
||||||
hi cssColor000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor000080
|
|
||||||
hi cssColor00008b guibg=#00008B guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor00008b
|
|
||||||
hi cssColor0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000cd
|
|
||||||
hi cssColor0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000ff
|
|
||||||
hi cssColor006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor006400
|
|
||||||
hi cssColor008000 guibg=#008000 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor008000
|
|
||||||
hi cssColor008080 guibg=#008080 guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008080
|
|
||||||
hi cssColor008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008b8b
|
|
||||||
hi cssColor00bfff guibg=#00BFFF guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00bfff
|
|
||||||
hi cssColor00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ced1
|
|
||||||
hi cssColor00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00fa9a
|
|
||||||
hi cssColor00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10 ctermfg=16 | syn cluster cssColors add=cssColor00ff00
|
|
||||||
hi cssColor00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ff7f
|
|
||||||
hi cssColor00ffff guibg=#00FFFF guifg=#000000 ctermbg=51 ctermfg=16 | syn cluster cssColors add=cssColor00ffff
|
|
||||||
hi cssColor191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231 | syn cluster cssColors add=cssColor191970
|
|
||||||
hi cssColor1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor1e90ff
|
|
||||||
hi cssColor20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37 ctermfg=16 | syn cluster cssColors add=cssColor20b2aa
|
|
||||||
hi cssColor228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor228b22
|
|
||||||
hi cssColor2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor2e8b57
|
|
||||||
hi cssColor2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor2f4f4f
|
|
||||||
hi cssColor32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2 ctermfg=16 | syn cluster cssColors add=cssColor32cd32
|
|
||||||
hi cssColor3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71 ctermfg=16 | syn cluster cssColors add=cssColor3cb371
|
|
||||||
hi cssColor40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor40e0d0
|
|
||||||
hi cssColor4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor4169e1
|
|
||||||
hi cssColor4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67 ctermfg=231 | syn cluster cssColors add=cssColor4682b4
|
|
||||||
hi cssColor483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor483d8b
|
|
||||||
hi cssColor48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor48d1cc
|
|
||||||
hi cssColor4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor4b0082
|
|
||||||
hi cssColor556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231 | syn cluster cssColors add=cssColor556b2f
|
|
||||||
hi cssColor5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73 ctermfg=16 | syn cluster cssColors add=cssColor5f9ea0
|
|
||||||
hi cssColor6495ed guibg=#6495ED guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor6495ed
|
|
||||||
hi cssColor66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79 ctermfg=16 | syn cluster cssColors add=cssColor66cdaa
|
|
||||||
hi cssColor696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231 | syn cluster cssColors add=cssColor696969
|
|
||||||
hi cssColor6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor6a5acd
|
|
||||||
hi cssColor6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231 | syn cluster cssColors add=cssColor6b8e23
|
|
||||||
hi cssColor708090 guibg=#708090 guifg=#000000 ctermbg=66 ctermfg=16 | syn cluster cssColors add=cssColor708090
|
|
||||||
hi cssColor778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16 | syn cluster cssColors add=cssColor778899
|
|
||||||
hi cssColor7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor7b68ee
|
|
||||||
hi cssColor7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7cfc00
|
|
||||||
hi cssColor7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7fff00
|
|
||||||
hi cssColor7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16 | syn cluster cssColors add=cssColor7fffd4
|
|
||||||
hi cssColor800000 guibg=#800000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor800000
|
|
||||||
hi cssColor800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor800080
|
|
||||||
hi cssColor808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor808000
|
|
||||||
hi cssColor808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16 | syn cluster cssColors add=cssColor808080
|
|
||||||
hi cssColor87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87ceeb
|
|
||||||
hi cssColor87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87cefa
|
|
||||||
hi cssColor8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor8a2be2
|
|
||||||
hi cssColor8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor8b0000
|
|
||||||
hi cssColor8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor8b008b
|
|
||||||
hi cssColor8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94 ctermfg=231 | syn cluster cssColors add=cssColor8b4513
|
|
||||||
hi cssColor8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16 | syn cluster cssColors add=cssColor8fbc8f
|
|
||||||
hi cssColor90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColor90ee90
|
|
||||||
hi cssColor9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor9370d8
|
|
||||||
hi cssColor9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9400d3
|
|
||||||
hi cssColor98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColor98fb98
|
|
||||||
hi cssColor9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9932cc
|
|
||||||
hi cssColor9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor9acd32
|
|
||||||
hi cssColora0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231 | syn cluster cssColors add=cssColora0522d
|
|
||||||
hi cssColora52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColora52a2a
|
|
||||||
hi cssColora9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16 | syn cluster cssColors add=cssColora9a9a9
|
|
||||||
hi cssColoradd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColoradd8e6
|
|
||||||
hi cssColoradff2f guibg=#ADFF2F guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColoradff2f
|
|
||||||
hi cssColorafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16 | syn cluster cssColors add=cssColorafeeee
|
|
||||||
hi cssColorb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0c4de
|
|
||||||
hi cssColorb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0e0e6
|
|
||||||
hi cssColorb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColorb22222
|
|
||||||
hi cssColorb8860b guibg=#B8860B guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorb8860b
|
|
||||||
hi cssColorba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5 ctermfg=16 | syn cluster cssColors add=cssColorba55d3
|
|
||||||
hi cssColorbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16 | syn cluster cssColors add=cssColorbc8f8f
|
|
||||||
hi cssColorbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16 | syn cluster cssColors add=cssColorbdb76b
|
|
||||||
hi cssColorc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColorc0c0c0
|
|
||||||
hi cssColorc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorc71585
|
|
||||||
hi cssColorcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16 | syn cluster cssColors add=cssColorcd5c5c
|
|
||||||
hi cssColorcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16 | syn cluster cssColors add=cssColorcd853f
|
|
||||||
hi cssColord2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16 | syn cluster cssColors add=cssColord2691e
|
|
||||||
hi cssColord2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColord2b48c
|
|
||||||
hi cssColord3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord3d3d3
|
|
||||||
hi cssColord87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16 | syn cluster cssColors add=cssColord87093
|
|
||||||
hi cssColord8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord8bfd8
|
|
||||||
hi cssColorda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColorda70d6
|
|
||||||
hi cssColordaa520 guibg=#DAA520 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColordaa520
|
|
||||||
hi cssColordc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231 | syn cluster cssColors add=cssColordc143c
|
|
||||||
hi cssColordcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16 | syn cluster cssColors add=cssColordcdcdc
|
|
||||||
hi cssColordda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16 | syn cluster cssColors add=cssColordda0dd
|
|
||||||
hi cssColordeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColordeb887
|
|
||||||
hi cssColore0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16 | syn cluster cssColors add=cssColore0ffff
|
|
||||||
hi cssColore6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColore6e6fa
|
|
||||||
hi cssColore9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16 | syn cluster cssColors add=cssColore9967a
|
|
||||||
hi cssColoree82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16 | syn cluster cssColors add=cssColoree82ee
|
|
||||||
hi cssColoreee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColoreee8aa
|
|
||||||
hi cssColorf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16 | syn cluster cssColors add=cssColorf08080
|
|
||||||
hi cssColorf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16 | syn cluster cssColors add=cssColorf0e68c
|
|
||||||
hi cssColorf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0f8ff
|
|
||||||
hi cssColorf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf0fff0
|
|
||||||
hi cssColorf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0ffff
|
|
||||||
hi cssColorf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16 | syn cluster cssColors add=cssColorf4a460
|
|
||||||
hi cssColorf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorf5deb3
|
|
||||||
hi cssColorf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5dc
|
|
||||||
hi cssColorf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5f5
|
|
||||||
hi cssColorf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf5fffa
|
|
||||||
hi cssColorf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf8f8ff
|
|
||||||
hi cssColorfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorfa8072
|
|
||||||
hi cssColorfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorfaebd7
|
|
||||||
hi cssColorfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfaf0e6
|
|
||||||
hi cssColorfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfafad2
|
|
||||||
hi cssColorfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfdf5e6
|
|
||||||
hi cssColorff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231 | syn cluster cssColors add=cssColorff0000
|
|
||||||
hi cssColorff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13 ctermfg=231 | syn cluster cssColors add=cssColorff00ff
|
|
||||||
hi cssColorff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorff1493
|
|
||||||
hi cssColorff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9 ctermfg=231 | syn cluster cssColors add=cssColorff4500
|
|
||||||
hi cssColorff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16 | syn cluster cssColors add=cssColorff6347
|
|
||||||
hi cssColorff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16 | syn cluster cssColors add=cssColorff69b4
|
|
||||||
hi cssColorff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorff7f50
|
|
||||||
hi cssColorff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorff8c00
|
|
||||||
hi cssColorffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16 | syn cluster cssColors add=cssColorffa07a
|
|
||||||
hi cssColorffa500 guibg=#FFA500 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorffa500
|
|
||||||
hi cssColorffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16 | syn cluster cssColors add=cssColorffb6c1
|
|
||||||
hi cssColorffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16 | syn cluster cssColors add=cssColorffc0cb
|
|
||||||
hi cssColorffd700 guibg=#FFD700 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffd700
|
|
||||||
hi cssColorffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdab9
|
|
||||||
hi cssColorffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdead
|
|
||||||
hi cssColorffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffe4b5
|
|
||||||
hi cssColorffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4c4
|
|
||||||
hi cssColorffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4e1
|
|
||||||
hi cssColorffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorffebcd
|
|
||||||
hi cssColorffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffefd5
|
|
||||||
hi cssColorfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfff0f5
|
|
||||||
hi cssColorfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff5ee
|
|
||||||
hi cssColorfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff8dc
|
|
||||||
hi cssColorfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfffacd
|
|
||||||
hi cssColorfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffaf0
|
|
||||||
hi cssColorfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffafa
|
|
||||||
hi cssColorffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffff00
|
|
||||||
hi cssColorffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffffe0
|
|
||||||
hi cssColorfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffff0
|
|
||||||
hi cssColorffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16 | syn cluster cssColors add=cssColorffffff
|
|
||||||
|
|
||||||
" w3c Colors
|
|
||||||
syn keyword cssColor000000 black contained
|
|
||||||
syn keyword cssColorc0c0c0 silver contained
|
|
||||||
syn keyword cssColor808080 gray contained
|
|
||||||
syn match cssColorffffff "\<white\(-\)\@!\>" contained
|
|
||||||
syn keyword cssColor800000 maroon contained
|
|
||||||
syn keyword cssColorff0000 red contained
|
|
||||||
syn keyword cssColor800080 purple contained
|
|
||||||
syn keyword cssColorff00ff fuchsia contained
|
|
||||||
syn keyword cssColor008000 green contained
|
|
||||||
syn keyword cssColor00ff00 lime contained
|
|
||||||
syn keyword cssColor808000 olive contained
|
|
||||||
syn keyword cssColorffff00 yellow contained
|
|
||||||
syn keyword cssColor000080 navy contained
|
|
||||||
syn keyword cssColor0000ff blue contained
|
|
||||||
syn keyword cssColor008080 teal contained
|
|
||||||
syn keyword cssColor00ffff aqua contained
|
|
||||||
|
|
||||||
" extra colors
|
|
||||||
syn keyword cssColorf0f8ff AliceBlue contained
|
|
||||||
syn keyword cssColorfaebd7 AntiqueWhite contained
|
|
||||||
syn keyword cssColor7fffd4 Aquamarine contained
|
|
||||||
syn keyword cssColorf0ffff Azure contained
|
|
||||||
syn keyword cssColorf5f5dc Beige contained
|
|
||||||
syn keyword cssColorffe4c4 Bisque contained
|
|
||||||
syn keyword cssColorffebcd BlanchedAlmond contained
|
|
||||||
syn keyword cssColor8a2be2 BlueViolet contained
|
|
||||||
syn keyword cssColora52a2a Brown contained
|
|
||||||
syn keyword cssColordeb887 BurlyWood contained
|
|
||||||
syn keyword cssColor5f9ea0 CadetBlue contained
|
|
||||||
syn keyword cssColor7fff00 Chartreuse contained
|
|
||||||
syn keyword cssColord2691e Chocolate contained
|
|
||||||
syn keyword cssColorff7f50 Coral contained
|
|
||||||
syn keyword cssColor6495ed CornflowerBlue contained
|
|
||||||
syn keyword cssColorfff8dc Cornsilk contained
|
|
||||||
syn keyword cssColordc143c Crimson contained
|
|
||||||
syn keyword cssColor00ffff Cyan contained
|
|
||||||
syn keyword cssColor00008b DarkBlue contained
|
|
||||||
syn keyword cssColor008b8b DarkCyan contained
|
|
||||||
syn keyword cssColorb8860b DarkGoldenRod contained
|
|
||||||
syn keyword cssColora9a9a9 DarkGray contained
|
|
||||||
syn keyword cssColor006400 DarkGreen contained
|
|
||||||
syn keyword cssColora9a9a9 DarkGrey contained
|
|
||||||
syn keyword cssColorbdb76b DarkKhaki contained
|
|
||||||
syn keyword cssColor8b008b DarkMagenta contained
|
|
||||||
syn keyword cssColor556b2f DarkOliveGreen contained
|
|
||||||
syn keyword cssColor9932cc DarkOrchid contained
|
|
||||||
syn keyword cssColor8b0000 DarkRed contained
|
|
||||||
syn keyword cssColore9967a DarkSalmon contained
|
|
||||||
syn keyword cssColor8fbc8f DarkSeaGreen contained
|
|
||||||
syn keyword cssColor483d8b DarkSlateBlue contained
|
|
||||||
syn keyword cssColor2f4f4f DarkSlateGray contained
|
|
||||||
syn keyword cssColor2f4f4f DarkSlateGrey contained
|
|
||||||
syn keyword cssColor00ced1 DarkTurquoise contained
|
|
||||||
syn keyword cssColor9400d3 DarkViolet contained
|
|
||||||
syn keyword cssColorff8c00 Darkorange contained
|
|
||||||
syn keyword cssColorff1493 DeepPink contained
|
|
||||||
syn keyword cssColor00bfff DeepSkyBlue contained
|
|
||||||
syn keyword cssColor696969 DimGray contained
|
|
||||||
syn keyword cssColor696969 DimGrey contained
|
|
||||||
syn keyword cssColor1e90ff DodgerBlue contained
|
|
||||||
syn keyword cssColorb22222 FireBrick contained
|
|
||||||
syn keyword cssColorfffaf0 FloralWhite contained
|
|
||||||
syn keyword cssColor228b22 ForestGreen contained
|
|
||||||
syn keyword cssColordcdcdc Gainsboro contained
|
|
||||||
syn keyword cssColorf8f8ff GhostWhite contained
|
|
||||||
syn keyword cssColorffd700 Gold contained
|
|
||||||
syn keyword cssColordaa520 GoldenRod contained
|
|
||||||
syn keyword cssColoradff2f GreenYellow contained
|
|
||||||
syn keyword cssColor808080 Grey contained
|
|
||||||
syn keyword cssColorf0fff0 HoneyDew contained
|
|
||||||
syn keyword cssColorff69b4 HotPink contained
|
|
||||||
syn keyword cssColorcd5c5c IndianRed contained
|
|
||||||
syn keyword cssColor4b0082 Indigo contained
|
|
||||||
syn keyword cssColorfffff0 Ivory contained
|
|
||||||
syn keyword cssColorf0e68c Khaki contained
|
|
||||||
syn keyword cssColore6e6fa Lavender contained
|
|
||||||
syn keyword cssColorfff0f5 LavenderBlush contained
|
|
||||||
syn keyword cssColor7cfc00 LawnGreen contained
|
|
||||||
syn keyword cssColorfffacd LemonChiffon contained
|
|
||||||
syn keyword cssColoradd8e6 LightBlue contained
|
|
||||||
syn keyword cssColorf08080 LightCoral contained
|
|
||||||
syn keyword cssColore0ffff LightCyan contained
|
|
||||||
syn keyword cssColorfafad2 LightGoldenRodYellow contained
|
|
||||||
syn keyword cssColord3d3d3 LightGray contained
|
|
||||||
syn keyword cssColor90ee90 LightGreen contained
|
|
||||||
syn keyword cssColord3d3d3 LightGrey contained
|
|
||||||
syn keyword cssColorffb6c1 LightPink contained
|
|
||||||
syn keyword cssColorffa07a LightSalmon contained
|
|
||||||
syn keyword cssColor20b2aa LightSeaGreen contained
|
|
||||||
syn keyword cssColor87cefa LightSkyBlue contained
|
|
||||||
syn keyword cssColor778899 LightSlateGray contained
|
|
||||||
syn keyword cssColor778899 LightSlateGrey contained
|
|
||||||
syn keyword cssColorb0c4de LightSteelBlue contained
|
|
||||||
syn keyword cssColorffffe0 LightYellow contained
|
|
||||||
syn keyword cssColor32cd32 LimeGreen contained
|
|
||||||
syn keyword cssColorfaf0e6 Linen contained
|
|
||||||
syn keyword cssColorff00ff Magenta contained
|
|
||||||
syn keyword cssColor66cdaa MediumAquaMarine contained
|
|
||||||
syn keyword cssColor0000cd MediumBlue contained
|
|
||||||
syn keyword cssColorba55d3 MediumOrchid contained
|
|
||||||
syn keyword cssColor9370d8 MediumPurple contained
|
|
||||||
syn keyword cssColor3cb371 MediumSeaGreen contained
|
|
||||||
syn keyword cssColor7b68ee MediumSlateBlue contained
|
|
||||||
syn keyword cssColor00fa9a MediumSpringGreen contained
|
|
||||||
syn keyword cssColor48d1cc MediumTurquoise contained
|
|
||||||
syn keyword cssColorc71585 MediumVioletRed contained
|
|
||||||
syn keyword cssColor191970 MidnightBlue contained
|
|
||||||
syn keyword cssColorf5fffa MintCream contained
|
|
||||||
syn keyword cssColorffe4e1 MistyRose contained
|
|
||||||
syn keyword cssColorffe4b5 Moccasin contained
|
|
||||||
syn keyword cssColorffdead NavajoWhite contained
|
|
||||||
syn keyword cssColorfdf5e6 OldLace contained
|
|
||||||
syn keyword cssColor6b8e23 OliveDrab contained
|
|
||||||
syn keyword cssColorffa500 Orange contained
|
|
||||||
syn keyword cssColorff4500 OrangeRed contained
|
|
||||||
syn keyword cssColorda70d6 Orchid contained
|
|
||||||
syn keyword cssColoreee8aa PaleGoldenRod contained
|
|
||||||
syn keyword cssColor98fb98 PaleGreen contained
|
|
||||||
syn keyword cssColorafeeee PaleTurquoise contained
|
|
||||||
syn keyword cssColord87093 PaleVioletRed contained
|
|
||||||
syn keyword cssColorffefd5 PapayaWhip contained
|
|
||||||
syn keyword cssColorffdab9 PeachPuff contained
|
|
||||||
syn keyword cssColorcd853f Peru contained
|
|
||||||
syn keyword cssColorffc0cb Pink contained
|
|
||||||
syn keyword cssColordda0dd Plum contained
|
|
||||||
syn keyword cssColorb0e0e6 PowderBlue contained
|
|
||||||
syn keyword cssColorbc8f8f RosyBrown contained
|
|
||||||
syn keyword cssColor4169e1 RoyalBlue contained
|
|
||||||
syn keyword cssColor8b4513 SaddleBrown contained
|
|
||||||
syn keyword cssColorfa8072 Salmon contained
|
|
||||||
syn keyword cssColorf4a460 SandyBrown contained
|
|
||||||
syn keyword cssColor2e8b57 SeaGreen contained
|
|
||||||
syn keyword cssColorfff5ee SeaShell contained
|
|
||||||
syn keyword cssColora0522d Sienna contained
|
|
||||||
syn keyword cssColor87ceeb SkyBlue contained
|
|
||||||
syn keyword cssColor6a5acd SlateBlue contained
|
|
||||||
syn keyword cssColor708090 SlateGray contained
|
|
||||||
syn keyword cssColor708090 SlateGrey contained
|
|
||||||
syn keyword cssColorfffafa Snow contained
|
|
||||||
syn keyword cssColor00ff7f SpringGreen contained
|
|
||||||
syn keyword cssColor4682b4 SteelBlue contained
|
|
||||||
syn keyword cssColord2b48c Tan contained
|
|
||||||
syn keyword cssColord8bfd8 Thistle contained
|
|
||||||
syn keyword cssColorff6347 Tomato contained
|
|
||||||
syn keyword cssColor40e0d0 Turquoise contained
|
|
||||||
syn keyword cssColoree82ee Violet contained
|
|
||||||
syn keyword cssColorf5deb3 Wheat contained
|
|
||||||
syn keyword cssColorf5f5f5 WhiteSmoke contained
|
|
||||||
syn keyword cssColor9acd32 YellowGreen contained
|
|
||||||
|
|
||||||
let view = winsaveview()
|
|
||||||
%call s:PreviewCSSColorInLine()
|
|
||||||
call winrestview(view)
|
|
||||||
|
|
||||||
autocmd CursorMoved <buffer> silent call s:PreviewCSSColorInLine()
|
|
||||||
autocmd CursorMovedI <buffer> silent call s:PreviewCSSColorInLine()
|
|
||||||
endif
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -9,3 +9,36 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
|
|||||||
\ end=#</script>#me=s-1 keepend
|
\ end=#</script>#me=s-1 keepend
|
||||||
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
|
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
|
||||||
\ containedin=htmlHead
|
\ containedin=htmlHead
|
||||||
|
if !exists("g:less_html_style_tags")
|
||||||
|
let g:less_html_style_tags = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !g:less_html_style_tags
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Unset (but preserve) so that less will run.
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
let s:pre_less_cur_syn = b:current_syntax
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Inspired by code from github.com/kchmck/vim-coffee-script
|
||||||
|
" and the html syntax file included with vim 7.4.
|
||||||
|
|
||||||
|
syn include @htmlLess syntax/less.vim
|
||||||
|
|
||||||
|
" We have to explicitly add to htmlHead (containedin) as that region specifies 'contains'.
|
||||||
|
syn region lessStyle start=+<style [^>]*type *=[^>]*text/less[^>]*>+ keepend end=+</style>+ contains=@htmlLess,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc containedin=htmlHead
|
||||||
|
|
||||||
|
" Reset since 'less' isn't really the current_syntax.
|
||||||
|
if exists("s:pre_less_cur_syn")
|
||||||
|
let b:current_syntax = s:pre_less_cur_syn
|
||||||
|
endif
|
||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
" default html syntax should already be including the css syntax
|
||||||
|
syn cluster colorableGroup add=htmlString,htmlCommentPart
|
||||||
|
|||||||
13
after/syntax/less.vim
Normal file
13
after/syntax/less.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
" variable | property | multiline | end-of-line | plugin
|
||||||
|
" -----------------------+----------------+----------------+-------------+---------
|
||||||
|
" lessCssAttribute | lessCssComment | lessComment | https://github.com/genoma/vim-less
|
||||||
|
" lessAttribute | lessCssComment | lessComment | https://github.com/KohPoll/vim-less
|
||||||
|
" lessVariableValue | lessDefinition | cssComment | lessComment | https://github.com/groenewege/vim-less
|
||||||
|
" lessVariableDefinition | cssDefinition | cssComment | lessComment | https://github.com/lunaru/vim-less
|
||||||
|
|
||||||
|
call css_color#init('css', 'lessVariableValue,lessVariableDefinition,lessDefinition,lessCssAttribute,lessAttribute,cssDefinition,cssComment,lessCssComment,lessComment')
|
||||||
@@ -18,3 +18,129 @@ syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=rubyComment cont
|
|||||||
hi default link tomdocDescriptions String
|
hi default link tomdocDescriptions String
|
||||||
hi default link tomdocKeywords String
|
hi default link tomdocKeywords String
|
||||||
hi default link tomdocArguments HELP
|
hi default link tomdocArguments HELP
|
||||||
|
" Ruby syntax extensions for highlighting YARD documentation.
|
||||||
|
"
|
||||||
|
" Author: Joel Holdbrooks <https://github.com/noprompt>
|
||||||
|
" URI: https://github.com/noprompt/vim-yardoc
|
||||||
|
" Version: 0.0.1
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Tags
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
syn match yardGenericTag "@\h\+" contained
|
||||||
|
syn match yardAbstract "@abstract" contained
|
||||||
|
syn match yardApi "@api" contained
|
||||||
|
syn match yardAttr "@attr" contained
|
||||||
|
syn match yardAttrReader "@attr_reader" contained
|
||||||
|
syn match yardAttrWriter "@attr_writer" contained
|
||||||
|
syn match yardAuthor "@author" contained
|
||||||
|
syn match yardDeprecated "@deprecated" contained
|
||||||
|
syn match yardExample "@example" contained
|
||||||
|
syn match yardNote "@note" contained
|
||||||
|
syn match yardOption "@option" contained
|
||||||
|
syn match yardOverload "@overload" contained
|
||||||
|
syn match yardParam "@param" contained
|
||||||
|
syn match yardPrivate "@private" contained
|
||||||
|
syn match yardRaise "@raise" contained
|
||||||
|
syn match yardReturn "@return" contained
|
||||||
|
syn match yardSee "@see" contained
|
||||||
|
syn match yardSince "@since" contained
|
||||||
|
syn match yardTodo "@todo" contained
|
||||||
|
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
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Directives
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
syn match yardGenericDirective "@!\h\+" contained
|
||||||
|
syn match yardAttribute "@!attribute" contained
|
||||||
|
syn match yardEndGroup "@!endgroup" contained
|
||||||
|
syn match yardGroup "@!group" contained
|
||||||
|
syn match yardMacro "@!macro" contained
|
||||||
|
syn match yardMethod "@!method" contained
|
||||||
|
syn match yardParse "@!parse" contained
|
||||||
|
syn match yardScope "@!scope" contained
|
||||||
|
syn match yardVisibility "@!visibility" contained
|
||||||
|
|
||||||
|
syn cluster yardDirectives contains=yardGenericDirective,yardAttribute,yardEndGroup,yardGroup,yardMacro,yardMethod,yardParse,yardScope,yardVisibility
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Types, Lists, and Hashes
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
syn match yardDuckType "#\h\+" contained
|
||||||
|
syn match yardType "[A-Z]\h\+" contained
|
||||||
|
syn match yardLiteral "\(true\|false\|nil\|self\|void\)" contained
|
||||||
|
syn match yardComma "," nextgroup=@yardTypes contained
|
||||||
|
syn match yardArrow "=>" nextgroup=@yardTypes contained
|
||||||
|
|
||||||
|
syn region yardParametricType start="[A-Z]\+\h\+<" end=">" contains=yardType,yardOrderDependentList,yardComma skipwhite contained
|
||||||
|
syn region yardOrderDependentList start="(" end=")" contains=@yardTypes,yardComma skipwhite contained
|
||||||
|
syn region yardTypeList start="\[" end="]" contains=@yardTypes,yardOrderDependentList,@yardHashes skipwhite contained
|
||||||
|
syn region yardHashAngle start="Hash<" end=">" contains=yardDuckType,yardType,yardLiteral,yardArrow,yardComma skipwhite contained
|
||||||
|
syn region yardHashCurly start="Hash{" end="}" contains=@yardTypes,yardArrow,yardComma skipwhite contained
|
||||||
|
|
||||||
|
syn cluster yardTypes contains=yardDuckType,yardType,yardLiteral,yardParametricType
|
||||||
|
syn cluster yardHashes contains=yardArrow,yardHashAngle,yardHashCurly
|
||||||
|
syn cluster yardLists contains=yardComma,yardTypeList,yardOrderDependentList
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Yard
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
syn match yardComment "#\s*@!\{,1}\h\+.*" contains=@yardTags,@yardDirectives,yardTypeList
|
||||||
|
syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell,yardComment
|
||||||
|
syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
|
||||||
|
syn cluster rubyNotTop add=@yardTags,@yardDirectives,@yardTypes,@yardLists,@yardHashes
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
" Links
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
hi def link yardComment rubyComment
|
||||||
|
" Tags
|
||||||
|
hi def link yardGenericTag rubyKeyword
|
||||||
|
hi def link yardAbstract yardGenericTag
|
||||||
|
hi def link yardApi yardGenericTag
|
||||||
|
hi def link yardAttr yardGenericTag
|
||||||
|
hi def link yardAttrReader yardGenericTag
|
||||||
|
hi def link yardAttrWriter yardGenericTag
|
||||||
|
hi def link yardAuthor yardGenericTag
|
||||||
|
hi def link yardDeprecated yardGenericTag
|
||||||
|
hi def link yardExample yardGenericTag
|
||||||
|
hi def link yardNote yardGenericTag
|
||||||
|
hi def link yardOption yardGenericTag
|
||||||
|
hi def link yardOverload yardGenericTag
|
||||||
|
hi def link yardParam yardGenericTag
|
||||||
|
hi def link yardPrivate yardGenericTag
|
||||||
|
hi def link yardRaise yardGenericTag
|
||||||
|
hi def link yardReturn yardGenericTag
|
||||||
|
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
|
||||||
|
" Directives
|
||||||
|
hi def link yardGenericDirective rubyKeyword
|
||||||
|
hi def link yardAttribute yardGenericDirective
|
||||||
|
hi def link yardEndGroup yardGenericDirective
|
||||||
|
hi def link yardGroup yardGenericDirective
|
||||||
|
hi def link yardMacro yardGenericDirective
|
||||||
|
hi def link yardMethod yardGenericDirective
|
||||||
|
hi def link yardParse yardGenericDirective
|
||||||
|
hi def link yardScope yardGenericDirective
|
||||||
|
hi def link yardVisibility yardGenericDirective
|
||||||
|
" Types
|
||||||
|
hi def link yardComma yardComment
|
||||||
|
hi def link yardType yardComment
|
||||||
|
hi def link yardDuckType yardComment
|
||||||
|
hi def link yardLiteral yardComment
|
||||||
|
" Lists
|
||||||
|
hi def link yardTypeList yardComment
|
||||||
|
hi def link yardParametricType yardComment
|
||||||
|
" Hashes
|
||||||
|
hi def link yardArrow yardComment
|
||||||
|
hi def link yardHashAngle yardComment
|
||||||
|
hi def link yardHashCurly yardComment
|
||||||
|
|||||||
31
after/syntax/rust.vim
Normal file
31
after/syntax/rust.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
if !exists('g:rust_conceal') || !has('conceal') || &enc != 'utf-8'
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" For those who don't want to see `::`...
|
||||||
|
if exists('g:rust_conceal_mod_path')
|
||||||
|
syn match rustNiceOperator "::" conceal cchar=ㆍ
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn match rustRightArrowHead contained ">" conceal cchar=
|
||||||
|
syn match rustRightArrowTail contained "-" conceal cchar=⟶
|
||||||
|
syn match rustNiceOperator "->" contains=rustRightArrowHead,rustRightArrowTail
|
||||||
|
|
||||||
|
syn match rustFatRightArrowHead contained ">" conceal cchar=
|
||||||
|
syn match rustFatRightArrowTail contained "=" conceal cchar=⟹
|
||||||
|
syn match rustNiceOperator "=>" contains=rustFatRightArrowHead,rustFatRightArrowTail
|
||||||
|
|
||||||
|
syn match rustNiceOperator /\<\@!_\(_*\>\)\@=/ conceal cchar=′
|
||||||
|
|
||||||
|
" For those who don't want to see `pub`...
|
||||||
|
if exists('g:rust_conceal_pub')
|
||||||
|
syn match rustPublicSigil contained "pu" conceal cchar=*
|
||||||
|
syn match rustPublicRest contained "b" conceal cchar=
|
||||||
|
syn match rustNiceOperator "pub " contains=rustPublicSigil,rustPublicRest
|
||||||
|
endif
|
||||||
|
|
||||||
|
hi link rustNiceOperator Operator
|
||||||
|
|
||||||
|
if !exists('g:rust_conceal_mod_path')
|
||||||
|
hi! link Conceal Operator
|
||||||
|
endif
|
||||||
@@ -1 +1,6 @@
|
|||||||
syn cluster sassCssAttributes add=@cssColors
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
call css_color#init('css', 'sassCssAttribute,sassComment,sassCssComment')
|
||||||
|
|||||||
6
after/syntax/scss.vim
Normal file
6
after/syntax/scss.vim
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
call css_color#init('css', 'scssAttribute,scssComment,scssVariableValue,sassCssAttribute,cssComment')
|
||||||
@@ -1 +1,6 @@
|
|||||||
syn cluster stylusCssAttributes add=@cssColors
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
call css_color#init('css', 'stylusCssAttribute,stylusComment,cssComment')
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
" adds support for cleverref package (`\cref` and `\Cref`)
|
" adds support for cleverref package
|
||||||
syn region texRefZone matchgroup=texStatement start="\\\(c\|C\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
|
||||||
|
" adds support for listings package
|
||||||
|
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
|
||||||
|
syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
||||||
|
syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}"
|
||||||
|
|||||||
6
after/syntax/vim.vim
Normal file
6
after/syntax/vim.vim
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
call css_color#init('any', 'vimHiGuiRgb,vimComment,vimLineComment')
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
|
|||||||
567
autoload/css_color.vim
Normal file
567
autoload/css_color.vim
Normal file
@@ -0,0 +1,567 @@
|
|||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
" Commit: $Format:%H$
|
||||||
|
" Licence: The MIT License (MIT)
|
||||||
|
|
||||||
|
if v:version < 700
|
||||||
|
echoerr printf('Vim 7 is required for css-color (this is only %d.%d)',v:version/100,v:version%100)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !( has('gui_running') || &t_Co==256 ) | finish | endif
|
||||||
|
|
||||||
|
function! s:rgb2color(r,g,b)
|
||||||
|
" Convert 80% -> 204, 100% -> 255, etc.
|
||||||
|
let rgb = map( [a:r,a:g,a:b], 'v:val =~ "%$" ? ( 255 * v:val ) / 100 : v:val' )
|
||||||
|
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:hsl2color(h,s,l)
|
||||||
|
" Convert 80% -> 0.8, 100% -> 1.0, etc.
|
||||||
|
let [s,l] = map( [a:s, a:l], 'v:val =~ "%$" ? v:val / 100.0 : v:val + 0.0' )
|
||||||
|
" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color
|
||||||
|
let hh = ( a:h % 360 ) / 360.0
|
||||||
|
let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s
|
||||||
|
let m1 = l * 2 - m2
|
||||||
|
let rgb = []
|
||||||
|
for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]
|
||||||
|
let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h
|
||||||
|
let v =
|
||||||
|
\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :
|
||||||
|
\ h * 2 < 1 ? m2 :
|
||||||
|
\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :
|
||||||
|
\ m1
|
||||||
|
if v > 1.0 | return '' | endif
|
||||||
|
let rgb += [ float2nr( 255 * v ) ]
|
||||||
|
endfor
|
||||||
|
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:hex={}
|
||||||
|
for i in range(0, 255)
|
||||||
|
let s:hex[ printf( '%02x', i ) ] = i
|
||||||
|
endfor
|
||||||
|
|
||||||
|
if has('gui_running')
|
||||||
|
let s:is_gui = 1
|
||||||
|
else
|
||||||
|
let s:is_gui = 0
|
||||||
|
|
||||||
|
" preset 16 vt100 colors
|
||||||
|
let s:xtermcolor = [
|
||||||
|
\ [ 0x00, 0x00, 0x00, 0 ],
|
||||||
|
\ [ 0xCD, 0x00, 0x00, 1 ],
|
||||||
|
\ [ 0x00, 0xCD, 0x00, 2 ],
|
||||||
|
\ [ 0xCD, 0xCD, 0x00, 3 ],
|
||||||
|
\ [ 0x00, 0x00, 0xEE, 4 ],
|
||||||
|
\ [ 0xCD, 0x00, 0xCD, 5 ],
|
||||||
|
\ [ 0x00, 0xCD, 0xCD, 6 ],
|
||||||
|
\ [ 0xE5, 0xE5, 0xE5, 7 ],
|
||||||
|
\ [ 0x7F, 0x7F, 0x7F, 8 ],
|
||||||
|
\ [ 0xFF, 0x00, 0x00, 9 ],
|
||||||
|
\ [ 0x00, 0xFF, 0x00, 10 ],
|
||||||
|
\ [ 0xFF, 0xFF, 0x00, 11 ],
|
||||||
|
\ [ 0x5C, 0x5C, 0xFF, 12 ],
|
||||||
|
\ [ 0xFF, 0x00, 0xFF, 13 ],
|
||||||
|
\ [ 0x00, 0xFF, 0xFF, 14 ],
|
||||||
|
\ [ 0xFF, 0xFF, 0xFF, 15 ]]
|
||||||
|
" grayscale ramp
|
||||||
|
" (value is 8+10*lum for lum in 0..23)
|
||||||
|
let s:xtermcolor += [
|
||||||
|
\ [ 0x08, 0x08, 0x08, 232 ],
|
||||||
|
\ [ 0x12, 0x12, 0x12, 233 ],
|
||||||
|
\ [ 0x1C, 0x1C, 0x1C, 234 ],
|
||||||
|
\ [ 0x26, 0x26, 0x26, 235 ],
|
||||||
|
\ [ 0x30, 0x30, 0x30, 236 ],
|
||||||
|
\ [ 0x3A, 0x3A, 0x3A, 237 ],
|
||||||
|
\ [ 0x44, 0x44, 0x44, 238 ],
|
||||||
|
\ [ 0x4E, 0x4E, 0x4E, 239 ],
|
||||||
|
\ [ 0x58, 0x58, 0x58, 240 ],
|
||||||
|
\ [ 0x62, 0x62, 0x62, 241 ],
|
||||||
|
\ [ 0x6C, 0x6C, 0x6C, 242 ],
|
||||||
|
\ [ 0x76, 0x76, 0x76, 243 ],
|
||||||
|
\ [ 0x80, 0x80, 0x80, 244 ],
|
||||||
|
\ [ 0x8A, 0x8A, 0x8A, 245 ],
|
||||||
|
\ [ 0x94, 0x94, 0x94, 246 ],
|
||||||
|
\ [ 0x9E, 0x9E, 0x9E, 247 ],
|
||||||
|
\ [ 0xA8, 0xA8, 0xA8, 248 ],
|
||||||
|
\ [ 0xB2, 0xB2, 0xB2, 249 ],
|
||||||
|
\ [ 0xBC, 0xBC, 0xBC, 250 ],
|
||||||
|
\ [ 0xC6, 0xC6, 0xC6, 251 ],
|
||||||
|
\ [ 0xD0, 0xD0, 0xD0, 252 ],
|
||||||
|
\ [ 0xDA, 0xDA, 0xDA, 253 ],
|
||||||
|
\ [ 0xE4, 0xE4, 0xE4, 254 ],
|
||||||
|
\ [ 0xEE, 0xEE, 0xEE, 255 ]]
|
||||||
|
|
||||||
|
" the 6 values used in the xterm color cube
|
||||||
|
" 0 95 135 175 215 255
|
||||||
|
let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
|
||||||
|
|
||||||
|
" 0..255 mapped to 0..5 based on the color cube values
|
||||||
|
let s:xvquant = repeat([0],48)
|
||||||
|
\ + repeat([1],68)
|
||||||
|
\ + repeat([2],40)
|
||||||
|
\ + repeat([3],40)
|
||||||
|
\ + repeat([4],40)
|
||||||
|
\ + repeat([5],20)
|
||||||
|
" tweak the mapping for the exact matches (0 and 1 already correct)
|
||||||
|
let s:xvquant[s:cubergb[2]] = 2
|
||||||
|
let s:xvquant[s:cubergb[3]] = 3
|
||||||
|
let s:xvquant[s:cubergb[4]] = 4
|
||||||
|
let s:xvquant[s:cubergb[5]] = 5
|
||||||
|
|
||||||
|
" selects the nearest xterm color for a rgb value like #FF0000
|
||||||
|
function! s:rgb2xterm(color)
|
||||||
|
let best_match=0
|
||||||
|
let smallest_distance = 10000000000
|
||||||
|
let color = tolower(a:color)
|
||||||
|
let r = s:hex[color[0:1]]
|
||||||
|
let g = s:hex[color[2:3]]
|
||||||
|
let b = s:hex[color[4:5]]
|
||||||
|
|
||||||
|
let vr = s:xvquant[r]
|
||||||
|
let vg = s:xvquant[g]
|
||||||
|
let vb = s:xvquant[b]
|
||||||
|
let cidx = vr * 36 + vg * 6 + vb + 16
|
||||||
|
let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]
|
||||||
|
|
||||||
|
for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor
|
||||||
|
let dr = tr - r
|
||||||
|
let dg = tg - g
|
||||||
|
let db = tb - b
|
||||||
|
let distance = dr*dr + dg*dg + db*db
|
||||||
|
if distance == 0 | return idx | endif
|
||||||
|
if distance > smallest_distance | continue | endif
|
||||||
|
let smallest_distance = distance
|
||||||
|
let best_match = idx
|
||||||
|
endfor
|
||||||
|
return best_match
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:pattern_color = {}
|
||||||
|
let s:color_fg = {}
|
||||||
|
let s:color_bg = {}
|
||||||
|
let [s:hi_cmd, s:black, s:white] = s:is_gui
|
||||||
|
\ ? ['hi %s guibg=#%s guifg=%s', '#000000', '#ffffff']
|
||||||
|
\ : ['hi %s ctermbg=%s ctermfg=%s', 0, 15]
|
||||||
|
function! s:create_syn_match()
|
||||||
|
|
||||||
|
let pattern = submatch(0)
|
||||||
|
|
||||||
|
if has_key( b:has_pattern_syn, pattern ) | return | endif
|
||||||
|
let b:has_pattern_syn[pattern] = 1
|
||||||
|
|
||||||
|
let rgb_color = get( s:pattern_color, pattern, '' )
|
||||||
|
|
||||||
|
if ! strlen( rgb_color )
|
||||||
|
let hexcolor = submatch(1)
|
||||||
|
let funcname = submatch(2)
|
||||||
|
|
||||||
|
if funcname == 'rgb'
|
||||||
|
let rgb_color = s:rgb2color(submatch(3),submatch(4),submatch(5))
|
||||||
|
elseif funcname == 'hsl'
|
||||||
|
let rgb_color = s:hsl2color(submatch(3),submatch(4),submatch(5))
|
||||||
|
elseif strlen(hexcolor) == 6
|
||||||
|
let rgb_color = tolower(hexcolor)
|
||||||
|
elseif strlen(hexcolor) == 3
|
||||||
|
let rgb_color = substitute(tolower(hexcolor), '\(.\)', '\1\1', 'g')
|
||||||
|
else
|
||||||
|
throw 'css_color: create_syn_match invoked on bad match data'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:pattern_color[pattern] = rgb_color
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ! has_key( b:has_color_hi, rgb_color )
|
||||||
|
" check GUI flag early here to avoid pure-overhead caching
|
||||||
|
let syn_bg = s:is_gui ? rgb_color : get( s:color_bg, rgb_color, '' )
|
||||||
|
if ! strlen(syn_bg)
|
||||||
|
let syn_bg = s:rgb2xterm(rgb_color)
|
||||||
|
let s:color_bg[rgb_color] = syn_bg
|
||||||
|
endif
|
||||||
|
|
||||||
|
let syn_fg = get( s:color_fg, rgb_color, '' )
|
||||||
|
if ! strlen(syn_fg)
|
||||||
|
let r = s:hex[rgb_color[0:1]]
|
||||||
|
let g = s:hex[rgb_color[2:3]]
|
||||||
|
let b = s:hex[rgb_color[4:5]]
|
||||||
|
let syn_fg = r*30 + g*59 + b*11 > 12000 ? s:black : s:white
|
||||||
|
let s:color_fg[rgb_color] = syn_fg
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let group = 'BG' . rgb_color
|
||||||
|
|
||||||
|
if ! has_key( b:has_color_hi, rgb_color )
|
||||||
|
exe printf( s:hi_cmd, group, syn_bg, syn_fg )
|
||||||
|
let b:has_color_hi[rgb_color] = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" iff pattern ends on word character, require word break to match
|
||||||
|
if pattern =~ '\>$' | let pattern .= '\>' | endif
|
||||||
|
exe 'syn match' group '/'.escape(pattern, '/').'/ contained containedin=@colorableGroup'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:clear_matches()
|
||||||
|
if exists('w:color_match_id')
|
||||||
|
call filter(w:color_match_id, 'matchdelete(v:val)')
|
||||||
|
unlet w:color_match_id
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:create_matches()
|
||||||
|
if ! &l:cursorline | return | endif
|
||||||
|
" adds matches based that duplicate the highlighted colors on the current line
|
||||||
|
let lnr = line('.')
|
||||||
|
let group = ''
|
||||||
|
let groupstart = 0
|
||||||
|
let endcol = col('$')
|
||||||
|
let w:color_match_id = []
|
||||||
|
for col in range( 1, endcol )
|
||||||
|
let nextgroup = col < endcol ? synIDattr( synID( lnr, col, 1 ), 'name' ) : ''
|
||||||
|
if group == nextgroup | continue | endif
|
||||||
|
if group =~ '^BG\x\{6}$'
|
||||||
|
let regex = '\%'.lnr.'l\%'.groupstart.'c'.repeat( '.', col - groupstart )
|
||||||
|
let match = matchadd( group, regex, -1 )
|
||||||
|
let w:color_match_id += [ match ]
|
||||||
|
endif
|
||||||
|
let group = nextgroup
|
||||||
|
let groupstart = col
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:_hexcolor = '#\(\x\{3}\|\x\{6}\)\>' " submatch 1
|
||||||
|
let s:_funcname = '\(rgb\|hsl\)a\?' " submatch 2
|
||||||
|
let s:_numval = '\(\d\{1,3}%\?\)' " submatch 3,4,5
|
||||||
|
let s:_ws_ = '\s*'
|
||||||
|
let s:_listsep = s:_ws_ . ',' . s:_ws_
|
||||||
|
let s:_otherargs_ = '\%(,[^)]*\)\?'
|
||||||
|
let s:_funcexpr = s:_funcname . '[(]' . s:_numval . s:_listsep . s:_numval . s:_listsep . s:_numval . s:_ws_ . s:_otherargs_ . '[)]'
|
||||||
|
let s:_csscolor = s:_hexcolor . '\|' . s:_funcexpr
|
||||||
|
" N.B. these substitute() calls are here just for the side effect
|
||||||
|
" of invoking s:create_syn_match during substitution -- because
|
||||||
|
" match() and friends do not allow finding all matches in a single
|
||||||
|
" scan without examining the start of the string over and over
|
||||||
|
function! s:parse_css_screen()
|
||||||
|
call substitute( join( getline('w0','w$'), "\n" ), s:_csscolor, '\=s:create_syn_match()', 'g' )
|
||||||
|
call s:clear_matches()
|
||||||
|
call s:create_matches()
|
||||||
|
endfunction
|
||||||
|
function! s:parse_any_screen()
|
||||||
|
call substitute( join( getline('w0','w$'), "\n" ), s:_hexcolor, '\=s:create_syn_match()', 'g' )
|
||||||
|
call s:clear_matches()
|
||||||
|
call s:create_matches()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
function! css_color#init(type, groups)
|
||||||
|
exe 'syn cluster colorableGroup contains=' . a:groups
|
||||||
|
|
||||||
|
let b:has_color_hi = {}
|
||||||
|
let b:has_pattern_syn = {}
|
||||||
|
|
||||||
|
augroup CSSColor
|
||||||
|
autocmd! * <buffer>
|
||||||
|
exe 'autocmd CursorMoved,CursorMovedI <buffer> call s:parse_'.a:type.'_screen()'
|
||||||
|
autocmd BufWinEnter <buffer> call s:create_matches()
|
||||||
|
autocmd BufWinLeave <buffer> call s:clear_matches()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
exe 'call s:parse_'.a:type.'_screen()'
|
||||||
|
|
||||||
|
if a:type != 'css' | return | endif
|
||||||
|
|
||||||
|
hi BG000000 guibg=#000000 guifg=#FFFFFF ctermbg=16 ctermfg=231
|
||||||
|
hi BG000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231
|
||||||
|
hi BG00008b guibg=#00008B guifg=#FFFFFF ctermbg=4 ctermfg=231
|
||||||
|
hi BG0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4 ctermfg=231
|
||||||
|
hi BG0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4 ctermfg=231
|
||||||
|
hi BG006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231
|
||||||
|
hi BG008000 guibg=#008000 guifg=#FFFFFF ctermbg=2 ctermfg=231
|
||||||
|
hi BG008080 guibg=#008080 guifg=#FFFFFF ctermbg=30 ctermfg=231
|
||||||
|
hi BG008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30 ctermfg=231
|
||||||
|
hi BG00bfff guibg=#00BFFF guifg=#000000 ctermbg=6 ctermfg=16
|
||||||
|
hi BG00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6 ctermfg=16
|
||||||
|
hi BG00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6 ctermfg=16
|
||||||
|
hi BG00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10 ctermfg=16
|
||||||
|
hi BG00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6 ctermfg=16
|
||||||
|
hi BG00ffff guibg=#00FFFF guifg=#000000 ctermbg=51 ctermfg=16
|
||||||
|
hi BG191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231
|
||||||
|
hi BG1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12 ctermfg=16
|
||||||
|
hi BG20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37 ctermfg=16
|
||||||
|
hi BG228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2 ctermfg=231
|
||||||
|
hi BG2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231
|
||||||
|
hi BG2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231
|
||||||
|
hi BG32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2 ctermfg=16
|
||||||
|
hi BG3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71 ctermfg=16
|
||||||
|
hi BG40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80 ctermfg=16
|
||||||
|
hi BG4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12 ctermfg=231
|
||||||
|
hi BG4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67 ctermfg=231
|
||||||
|
hi BG483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231
|
||||||
|
hi BG48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80 ctermfg=16
|
||||||
|
hi BG4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231
|
||||||
|
hi BG556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231
|
||||||
|
hi BG5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73 ctermfg=16
|
||||||
|
hi BG6495ed guibg=#6495ED guifg=#000000 ctermbg=12 ctermfg=16
|
||||||
|
hi BG66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79 ctermfg=16
|
||||||
|
hi BG696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231
|
||||||
|
hi BG6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12 ctermfg=231
|
||||||
|
hi BG6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231
|
||||||
|
hi BG708090 guibg=#708090 guifg=#000000 ctermbg=66 ctermfg=16
|
||||||
|
hi BG778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16
|
||||||
|
hi BG7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12 ctermfg=16
|
||||||
|
hi BG7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BG7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BG7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16
|
||||||
|
hi BG800000 guibg=#800000 guifg=#FFFFFF ctermbg=88 ctermfg=231
|
||||||
|
hi BG800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231
|
||||||
|
hi BG808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231
|
||||||
|
hi BG808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16
|
||||||
|
hi BG87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16
|
||||||
|
hi BG87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16
|
||||||
|
hi BG8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12 ctermfg=231
|
||||||
|
hi BG8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88 ctermfg=231
|
||||||
|
hi BG8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5 ctermfg=231
|
||||||
|
hi BG8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94 ctermfg=231
|
||||||
|
hi BG8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16
|
||||||
|
hi BG90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16
|
||||||
|
hi BG9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12 ctermfg=16
|
||||||
|
hi BG9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5 ctermfg=231
|
||||||
|
hi BG98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16
|
||||||
|
hi BG9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5 ctermfg=231
|
||||||
|
hi BG9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGa0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231
|
||||||
|
hi BGa52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231
|
||||||
|
hi BGa9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16
|
||||||
|
hi BGadd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16
|
||||||
|
hi BGadff2f guibg=#ADFF2F guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16
|
||||||
|
hi BGb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16
|
||||||
|
hi BGb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16
|
||||||
|
hi BGb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231
|
||||||
|
hi BGb8860b guibg=#B8860B guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5 ctermfg=16
|
||||||
|
hi BGbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16
|
||||||
|
hi BGbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16
|
||||||
|
hi BGc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16
|
||||||
|
hi BGc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5 ctermfg=231
|
||||||
|
hi BGcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16
|
||||||
|
hi BGcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16
|
||||||
|
hi BGd2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16
|
||||||
|
hi BGd2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16
|
||||||
|
hi BGd3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16
|
||||||
|
hi BGd87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16
|
||||||
|
hi BGd8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16
|
||||||
|
hi BGda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16
|
||||||
|
hi BGdaa520 guibg=#DAA520 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGdc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231
|
||||||
|
hi BGdcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16
|
||||||
|
hi BGdda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16
|
||||||
|
hi BGdeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16
|
||||||
|
hi BGe0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16
|
||||||
|
hi BGe6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGe9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16
|
||||||
|
hi BGee82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16
|
||||||
|
hi BGeee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16
|
||||||
|
hi BGf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16
|
||||||
|
hi BGf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16
|
||||||
|
hi BGf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16
|
||||||
|
hi BGf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16
|
||||||
|
hi BGf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16
|
||||||
|
hi BGfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7 ctermfg=16
|
||||||
|
hi BGfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231
|
||||||
|
hi BGff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13 ctermfg=231
|
||||||
|
hi BGff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5 ctermfg=231
|
||||||
|
hi BGff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9 ctermfg=231
|
||||||
|
hi BGff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16
|
||||||
|
hi BGff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16
|
||||||
|
hi BGff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16
|
||||||
|
hi BGff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16
|
||||||
|
hi BGffa500 guibg=#FFA500 guifg=#000000 ctermbg=3 ctermfg=16
|
||||||
|
hi BGffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16
|
||||||
|
hi BGffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16
|
||||||
|
hi BGffd700 guibg=#FFD700 guifg=#000000 ctermbg=11 ctermfg=16
|
||||||
|
hi BGffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16
|
||||||
|
hi BGffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16
|
||||||
|
hi BGffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16
|
||||||
|
hi BGffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16
|
||||||
|
hi BGffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16
|
||||||
|
hi BGffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7 ctermfg=16
|
||||||
|
hi BGffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11 ctermfg=16
|
||||||
|
hi BGffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16
|
||||||
|
hi BGfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16
|
||||||
|
hi BGffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16
|
||||||
|
|
||||||
|
" W3C Colors
|
||||||
|
syn keyword BG000000 black contained containedin=@colorableGroup
|
||||||
|
syn keyword BGc0c0c0 silver contained containedin=@colorableGroup
|
||||||
|
syn keyword BG808080 gray contained containedin=@colorableGroup
|
||||||
|
syn match BGffffff "\<white\(-\)\@!\>" contained containedin=@colorableGroup
|
||||||
|
syn keyword BG800000 maroon contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff0000 red contained containedin=@colorableGroup
|
||||||
|
syn keyword BG800080 purple contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff00ff fuchsia contained containedin=@colorableGroup
|
||||||
|
syn keyword BG008000 green contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00ff00 lime contained containedin=@colorableGroup
|
||||||
|
syn keyword BG808000 olive contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffff00 yellow contained containedin=@colorableGroup
|
||||||
|
syn keyword BG000080 navy contained containedin=@colorableGroup
|
||||||
|
syn keyword BG0000ff blue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG008080 teal contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00ffff aqua contained containedin=@colorableGroup
|
||||||
|
|
||||||
|
" extra colors
|
||||||
|
syn keyword BGf0f8ff AliceBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfaebd7 AntiqueWhite contained containedin=@colorableGroup
|
||||||
|
syn keyword BG7fffd4 Aquamarine contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf0ffff Azure contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf5f5dc Beige contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffe4c4 Bisque contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffebcd BlanchedAlmond contained containedin=@colorableGroup
|
||||||
|
syn keyword BG8a2be2 BlueViolet contained containedin=@colorableGroup
|
||||||
|
syn keyword BGa52a2a Brown contained containedin=@colorableGroup
|
||||||
|
syn keyword BGdeb887 BurlyWood contained containedin=@colorableGroup
|
||||||
|
syn keyword BG5f9ea0 CadetBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG7fff00 Chartreuse contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd2691e Chocolate contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff7f50 Coral contained containedin=@colorableGroup
|
||||||
|
syn keyword BG6495ed CornflowerBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfff8dc Cornsilk contained containedin=@colorableGroup
|
||||||
|
syn keyword BGdc143c Crimson contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00ffff Cyan contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00008b DarkBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG008b8b DarkCyan contained containedin=@colorableGroup
|
||||||
|
syn keyword BGb8860b DarkGoldenRod contained containedin=@colorableGroup
|
||||||
|
syn keyword BGa9a9a9 DarkGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG006400 DarkGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGa9a9a9 DarkGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BGbdb76b DarkKhaki contained containedin=@colorableGroup
|
||||||
|
syn keyword BG8b008b DarkMagenta contained containedin=@colorableGroup
|
||||||
|
syn keyword BG556b2f DarkOliveGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG9932cc DarkOrchid contained containedin=@colorableGroup
|
||||||
|
syn keyword BG8b0000 DarkRed contained containedin=@colorableGroup
|
||||||
|
syn keyword BGe9967a DarkSalmon contained containedin=@colorableGroup
|
||||||
|
syn keyword BG8fbc8f DarkSeaGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG483d8b DarkSlateBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG2f4f4f DarkSlateGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG2f4f4f DarkSlateGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00ced1 DarkTurquoise contained containedin=@colorableGroup
|
||||||
|
syn keyword BG9400d3 DarkViolet contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff8c00 Darkorange contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff1493 DeepPink contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00bfff DeepSkyBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG696969 DimGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG696969 DimGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BG1e90ff DodgerBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGb22222 FireBrick contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfffaf0 FloralWhite contained containedin=@colorableGroup
|
||||||
|
syn keyword BG228b22 ForestGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGdcdcdc Gainsboro contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf8f8ff GhostWhite contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffd700 Gold contained containedin=@colorableGroup
|
||||||
|
syn keyword BGdaa520 GoldenRod contained containedin=@colorableGroup
|
||||||
|
syn keyword BGadff2f GreenYellow contained containedin=@colorableGroup
|
||||||
|
syn keyword BG808080 Grey contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf0fff0 HoneyDew contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff69b4 HotPink contained containedin=@colorableGroup
|
||||||
|
syn keyword BGcd5c5c IndianRed contained containedin=@colorableGroup
|
||||||
|
syn keyword BG4b0082 Indigo contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfffff0 Ivory contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf0e68c Khaki contained containedin=@colorableGroup
|
||||||
|
syn keyword BGe6e6fa Lavender contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfff0f5 LavenderBlush contained containedin=@colorableGroup
|
||||||
|
syn keyword BG7cfc00 LawnGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfffacd LemonChiffon contained containedin=@colorableGroup
|
||||||
|
syn keyword BGadd8e6 LightBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf08080 LightCoral contained containedin=@colorableGroup
|
||||||
|
syn keyword BGe0ffff LightCyan contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfafad2 LightGoldenRodYellow contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd3d3d3 LightGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG90ee90 LightGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd3d3d3 LightGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffb6c1 LightPink contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffa07a LightSalmon contained containedin=@colorableGroup
|
||||||
|
syn keyword BG20b2aa LightSeaGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG87cefa LightSkyBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG778899 LightSlateGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG778899 LightSlateGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BGb0c4de LightSteelBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffffe0 LightYellow contained containedin=@colorableGroup
|
||||||
|
syn keyword BG32cd32 LimeGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfaf0e6 Linen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff00ff Magenta contained containedin=@colorableGroup
|
||||||
|
syn keyword BG66cdaa MediumAquaMarine contained containedin=@colorableGroup
|
||||||
|
syn keyword BG0000cd MediumBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGba55d3 MediumOrchid contained containedin=@colorableGroup
|
||||||
|
syn keyword BG9370d8 MediumPurple contained containedin=@colorableGroup
|
||||||
|
syn keyword BG3cb371 MediumSeaGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG7b68ee MediumSlateBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00fa9a MediumSpringGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG48d1cc MediumTurquoise contained containedin=@colorableGroup
|
||||||
|
syn keyword BGc71585 MediumVioletRed contained containedin=@colorableGroup
|
||||||
|
syn keyword BG191970 MidnightBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf5fffa MintCream contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffe4e1 MistyRose contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffe4b5 Moccasin contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffdead NavajoWhite contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfdf5e6 OldLace contained containedin=@colorableGroup
|
||||||
|
syn keyword BG6b8e23 OliveDrab contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffa500 Orange contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff4500 OrangeRed contained containedin=@colorableGroup
|
||||||
|
syn keyword BGda70d6 Orchid contained containedin=@colorableGroup
|
||||||
|
syn keyword BGeee8aa PaleGoldenRod contained containedin=@colorableGroup
|
||||||
|
syn keyword BG98fb98 PaleGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGafeeee PaleTurquoise contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd87093 PaleVioletRed contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffefd5 PapayaWhip contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffdab9 PeachPuff contained containedin=@colorableGroup
|
||||||
|
syn keyword BGcd853f Peru contained containedin=@colorableGroup
|
||||||
|
syn keyword BGffc0cb Pink contained containedin=@colorableGroup
|
||||||
|
syn keyword BGdda0dd Plum contained containedin=@colorableGroup
|
||||||
|
syn keyword BGb0e0e6 PowderBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGbc8f8f RosyBrown contained containedin=@colorableGroup
|
||||||
|
syn keyword BG4169e1 RoyalBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG8b4513 SaddleBrown contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfa8072 Salmon contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf4a460 SandyBrown contained containedin=@colorableGroup
|
||||||
|
syn keyword BG2e8b57 SeaGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfff5ee SeaShell contained containedin=@colorableGroup
|
||||||
|
syn keyword BGa0522d Sienna contained containedin=@colorableGroup
|
||||||
|
syn keyword BG87ceeb SkyBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG6a5acd SlateBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BG708090 SlateGray contained containedin=@colorableGroup
|
||||||
|
syn keyword BG708090 SlateGrey contained containedin=@colorableGroup
|
||||||
|
syn keyword BGfffafa Snow contained containedin=@colorableGroup
|
||||||
|
syn keyword BG00ff7f SpringGreen contained containedin=@colorableGroup
|
||||||
|
syn keyword BG4682b4 SteelBlue contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd2b48c Tan contained containedin=@colorableGroup
|
||||||
|
syn keyword BGd8bfd8 Thistle contained containedin=@colorableGroup
|
||||||
|
syn keyword BGff6347 Tomato contained containedin=@colorableGroup
|
||||||
|
syn keyword BG40e0d0 Turquoise contained containedin=@colorableGroup
|
||||||
|
syn keyword BGee82ee Violet contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf5deb3 Wheat contained containedin=@colorableGroup
|
||||||
|
syn keyword BGf5f5f5 WhiteSmoke contained containedin=@colorableGroup
|
||||||
|
syn keyword BG9acd32 YellowGreen contained containedin=@colorableGroup
|
||||||
|
endfunction
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Vim omni-completion script
|
|
||||||
" Author: Oscar Hellström
|
|
||||||
" Email: oscar@oscarh.net
|
|
||||||
" Version: 2010-08-10
|
|
||||||
" Contributors: kTT (http://github.com/kTT)
|
|
||||||
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
" Patterns for completions {{{1
|
|
||||||
let s:erlangLocalFuncBeg = '\(\<[0-9A-Za-z_-]*\|\s*\)$'
|
|
||||||
let s:erlangExternalFuncBeg = '\<[0-9A-Za-z_-]\+:[0-9A-Za-z_-]*$'
|
|
||||||
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
|
||||||
let s:erlangCompletionPath = expand('<sfile>:p:h') . '/erlang_completion.erl'
|
|
||||||
|
|
||||||
if !exists('g:erlangCompletionGrep')
|
|
||||||
let g:erlangCompletionGrep = 'grep'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangManSuffix')
|
|
||||||
let g:erlangManSuffix = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangManPath')
|
|
||||||
let g:erlangManPath = '/usr/lib/erlang/man'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangCompletionDisplayDoc')
|
|
||||||
let g:erlangCompletionDisplayDoc = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Main function for completion {{{1
|
|
||||||
function! erlangcomplete#Complete(findstart, base)
|
|
||||||
" 0) Init {{{2
|
|
||||||
let lnum = line('.')
|
|
||||||
let column = col('.')
|
|
||||||
let line = strpart(getline('.'), 0, column - 1)
|
|
||||||
|
|
||||||
" 1) First, check if completion is impossible {{{2
|
|
||||||
if line =~ '[^~\\]%'
|
|
||||||
return -1
|
|
||||||
endif
|
|
||||||
|
|
||||||
"echo "line[col - 1]:" . line[column - 1] . " line[col - 2]:" . line[column - 2] . "\n" . line . "\n"
|
|
||||||
|
|
||||||
" 2) Check if the char to the left of us are part of a function call {{{2
|
|
||||||
"
|
|
||||||
" Nothing interesting is written at the char just before the cursor
|
|
||||||
" This means _anything_ could be started here
|
|
||||||
" In this case, keyword completion should probably be used,
|
|
||||||
" for now we'll only try and complete local functions.
|
|
||||||
" TODO: Examine if we can stare Identifiers end complete on them
|
|
||||||
" Is this worth it? Is /completion/ of a "blank" wanted? Can we consider (
|
|
||||||
" interesting and check if we are in a function call etc.?
|
|
||||||
if line[column - 2] !~ '[0-9A-Za-z:_-]'
|
|
||||||
if a:findstart
|
|
||||||
return column
|
|
||||||
else
|
|
||||||
return s:erlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
" 3) Function in external module {{{2
|
|
||||||
if line =~ s:erlangExternalFuncBeg
|
|
||||||
let delimiter = match(line, ':[0-9A-Za-z_-]*$') + 1
|
|
||||||
if a:findstart
|
|
||||||
return delimiter
|
|
||||||
else
|
|
||||||
let module = matchstr(line[:-2], '\<\k*\>$')
|
|
||||||
return s:erlangFindExternalFunc(module, a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 4) Local function {{{2
|
|
||||||
if line =~ s:erlangLocalFuncBeg
|
|
||||||
let funcstart = match(line, ':\@<![0-9A-Za-z_-]*$')
|
|
||||||
if a:findstart
|
|
||||||
return funcstart
|
|
||||||
else
|
|
||||||
return s:erlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 5) Unhandled situation {{{2
|
|
||||||
if a:findstart
|
|
||||||
return -1
|
|
||||||
else
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Auxiliary functions for completion {{{1
|
|
||||||
" Find the next non-blank line {{{2
|
|
||||||
function s:erlangFindNextNonBlank(lnum)
|
|
||||||
let lnum = nextnonblank(a:lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
while line =~ s:ErlangBlankLine && 0 != lnum
|
|
||||||
let lnum = nextnonblank(lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return lnum
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" vim: foldmethod=marker:
|
|
||||||
" Find external function names {{{2
|
|
||||||
function s:erlangFindExternalFunc(module, base)
|
|
||||||
" If it's a local module, try to compile it
|
|
||||||
if filereadable(a:module . '.erl') && !filereadable(a:module . '.beam')
|
|
||||||
silent execute '!erlc' a:module . '.erl' '>/dev/null' '2>/dev/null'
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
let functions = system(s:erlangCompletionPath . ' ' . a:module)
|
|
||||||
for element in sort(split(functions, '\n'))
|
|
||||||
if match(element, a:base) == 0
|
|
||||||
let function_name = matchstr(element, a:base . '\w\+')
|
|
||||||
let number_of_args = matchstr(element, '\d\+', len(function_name))
|
|
||||||
let number_of_comma = max([number_of_args - 1, 0])
|
|
||||||
let file_path = g:erlangManPath . '/man?/' . a:module . '\.?' . g:erlangManSuffix
|
|
||||||
" [:-2] cutting some weird characters at the end
|
|
||||||
" becouse grep doesn't support multilines, we have to filter
|
|
||||||
" first by .B and next by looking via function name
|
|
||||||
" if someone have better idea, please change it
|
|
||||||
let description = ''
|
|
||||||
" Don't look man pages if the module is present in the current directory
|
|
||||||
if g:erlangCompletionDisplayDoc != 0 && !filereadable(a:module . '.erl')
|
|
||||||
let system_command = g:erlangCompletionGrep . ' -A 1 "\.B" ' . file_path . ' | grep -EZo "\<' .
|
|
||||||
\ function_name . '\>\((\w+, ){' . number_of_comma . '}[^),]*\) -> .*"'
|
|
||||||
let description = system(system_command)
|
|
||||||
let description = description[:-2]
|
|
||||||
endif
|
|
||||||
if description == ''
|
|
||||||
let description = element " if function doesn't have description e.g. lists:rmerge, put rmerge/2 instead
|
|
||||||
endif
|
|
||||||
let field = {'word': function_name . '(', 'abbr': description, 'kind': 'f', 'dup': 1} " always duplicate functions
|
|
||||||
call complete_add(field)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Find local function names {{{2
|
|
||||||
function s:erlangFindLocalFunc(base)
|
|
||||||
" begin at line 1
|
|
||||||
let lnum = s:erlangFindNextNonBlank(1)
|
|
||||||
if "" == a:base
|
|
||||||
let base = '\w' " used to match against word symbol
|
|
||||||
else
|
|
||||||
let base = a:base
|
|
||||||
endif
|
|
||||||
while 0 != lnum && !complete_check()
|
|
||||||
let line = getline(lnum)
|
|
||||||
let function_name = matchstr(line, '^' . base . '[0-9A-Za-z_-]\+(\@=')
|
|
||||||
if function_name != ""
|
|
||||||
call complete_add(function_name)
|
|
||||||
endif
|
|
||||||
let lnum = s:erlangFindNextNonBlank(lnum)
|
|
||||||
endwhile
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
" Copyright 2011 The Go Authors. All rights reserved.
|
|
||||||
" Use of this source code is governed by a BSD-style
|
|
||||||
" license that can be found in the LICENSE file.
|
|
||||||
"
|
|
||||||
" This file provides a utility function that performs auto-completion of
|
|
||||||
" package names, for use by other commands.
|
|
||||||
|
|
||||||
let s:goos = $GOOS
|
|
||||||
let s:goarch = $GOARCH
|
|
||||||
|
|
||||||
if len(s:goos) == 0
|
|
||||||
if exists('g:golang_goos')
|
|
||||||
let s:goos = g:golang_goos
|
|
||||||
elseif has('win32') || has('win64')
|
|
||||||
let s:goos = 'windows'
|
|
||||||
elseif has('macunix')
|
|
||||||
let s:goos = 'darwin'
|
|
||||||
else
|
|
||||||
let s:goos = '*'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(s:goarch) == 0
|
|
||||||
if exists('g:golang_goarch')
|
|
||||||
let s:goarch = g:golang_goarch
|
|
||||||
else
|
|
||||||
let s:goarch = '*'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
|
||||||
let dirs = []
|
|
||||||
|
|
||||||
if executable('go')
|
|
||||||
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
|
||||||
if v:shell_error
|
|
||||||
echo '\'go env GOROOT\' failed'
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let goroot = $GOROOT
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(goroot) != 0 && isdirectory(goroot)
|
|
||||||
let dirs += [ goroot ]
|
|
||||||
endif
|
|
||||||
|
|
||||||
let workspaces = split($GOPATH, ':')
|
|
||||||
if workspaces != []
|
|
||||||
let dirs += workspaces
|
|
||||||
endif
|
|
||||||
|
|
||||||
if len(dirs) == 0
|
|
||||||
" should not happen
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
|
|
||||||
let ret = {}
|
|
||||||
for dir in dirs
|
|
||||||
let root = expand(dir . '/pkg/' . s:goos . '_' . s:goarch)
|
|
||||||
for i in split(globpath(root, a:ArgLead.'*'), "\n")
|
|
||||||
if isdirectory(i)
|
|
||||||
let i .= '/'
|
|
||||||
elseif i !~ '\.a$'
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
let i = substitute(substitute(i[len(root)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
|
||||||
let ret[i] = i
|
|
||||||
endfor
|
|
||||||
endfor
|
|
||||||
return sort(keys(ret))
|
|
||||||
endfunction
|
|
||||||
@@ -7,9 +7,51 @@
|
|||||||
" Last Change: 2010 Sep 25
|
" Last Change: 2010 Sep 25
|
||||||
|
|
||||||
if !exists('g:aria_attributes_complete')
|
if !exists('g:aria_attributes_complete')
|
||||||
let g:aria_attributes_complete = 1
|
let g:aria_attributes_complete = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Distinguish between HTML versions.
|
||||||
|
" To use with other HTML versions add another "elseif" condition to match
|
||||||
|
" proper DOCTYPE.
|
||||||
|
function! htmlcomplete#DetectOmniFlavor()
|
||||||
|
if &filetype == 'xhtml'
|
||||||
|
let b:html_omni_flavor = 'xhtml10s'
|
||||||
|
else
|
||||||
|
let b:html_omni_flavor = 'html5'
|
||||||
|
endif
|
||||||
|
let i = 1
|
||||||
|
let line = ""
|
||||||
|
while i < 10 && i < line("$")
|
||||||
|
let line = getline(i)
|
||||||
|
if line =~ '<!DOCTYPE.*\<DTD '
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
if line =~ '<!DOCTYPE.*\<DTD ' " doctype line found above
|
||||||
|
if line =~ ' HTML 3\.2'
|
||||||
|
let b:html_omni_flavor = 'html32'
|
||||||
|
elseif line =~ ' XHTML 1\.1'
|
||||||
|
let b:html_omni_flavor = 'xhtml11'
|
||||||
|
else " two-step detection with strict/frameset/transitional
|
||||||
|
if line =~ ' XHTML 1\.0'
|
||||||
|
let b:html_omni_flavor = 'xhtml10'
|
||||||
|
elseif line =~ ' HTML 4\.01'
|
||||||
|
let b:html_omni_flavor = 'html401'
|
||||||
|
elseif line =~ ' HTML 4.0\>'
|
||||||
|
let b:html_omni_flavor = 'html40'
|
||||||
|
endif
|
||||||
|
if line =~ '\<Transitional\>'
|
||||||
|
let b:html_omni_flavor .= 't'
|
||||||
|
elseif line =~ '\<Frameset\>'
|
||||||
|
let b:html_omni_flavor .= 'f'
|
||||||
|
else
|
||||||
|
let b:html_omni_flavor .= 's'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! htmlcomplete#CompleteTags(findstart, base)
|
function! htmlcomplete#CompleteTags(findstart, base)
|
||||||
if a:findstart
|
if a:findstart
|
||||||
" locate the start of the word
|
" locate the start of the word
|
||||||
@@ -160,18 +202,15 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
if exists("b:entitiescompl")
|
if exists("b:entitiescompl")
|
||||||
unlet! b:entitiescompl
|
unlet! b:entitiescompl
|
||||||
|
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let entities = b:html_omni['vimxmlentities']
|
let entities = b:html_omni['vimxmlentities']
|
||||||
|
|
||||||
if len(a:base) == 1
|
if len(a:base) == 1
|
||||||
for m in entities
|
for m in entities
|
||||||
@@ -462,16 +501,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
||||||
let values = []
|
let values = []
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
if attrname == 'href'
|
if attrname == 'href'
|
||||||
" Now we are looking for local anchors defined by name or id
|
" Now we are looking for local anchors defined by name or id
|
||||||
@@ -545,15 +581,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
let sbase = matchstr(context, '.*\ze\s.*')
|
let sbase = matchstr(context, '.*\ze\s.*')
|
||||||
|
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
if has_key(b:html_omni, tag)
|
if has_key(b:html_omni, tag)
|
||||||
@@ -651,16 +685,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
" Load data {{{
|
" Load data {{{
|
||||||
if !exists("b:html_doctype")
|
|
||||||
call htmlcomplete#CheckDoctype()
|
|
||||||
endif
|
|
||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
"runtime! autoload/xml/xhtml10s.vim
|
call htmlcomplete#CheckDoctype()
|
||||||
call htmlcomplete#LoadData()
|
call htmlcomplete#LoadData()
|
||||||
endif
|
endif
|
||||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||||
call htmlcomplete#LoadAria()
|
call htmlcomplete#LoadAria()
|
||||||
endif
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
" Tag completion {{{
|
" Tag completion {{{
|
||||||
" Deal with tag completion.
|
" Deal with tag completion.
|
||||||
@@ -763,9 +794,9 @@ endfunction
|
|||||||
function! htmlcomplete#LoadData() " {{{
|
function! htmlcomplete#LoadData() " {{{
|
||||||
if !exists("b:html_omni_flavor")
|
if !exists("b:html_omni_flavor")
|
||||||
if &filetype == 'html'
|
if &filetype == 'html'
|
||||||
let b:html_omni_flavor = 'html401t'
|
let b:html_omni_flavor = 'html5'
|
||||||
else
|
else
|
||||||
let b:html_omni_flavor = 'xhtml10s'
|
let b:html_omni_flavor = 'html5'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" With that if we still have bloated memory but create new buffer
|
" With that if we still have bloated memory but create new buffer
|
||||||
@@ -785,61 +816,8 @@ function! htmlcomplete#CheckDoctype() " {{{
|
|||||||
else
|
else
|
||||||
let old_flavor = ''
|
let old_flavor = ''
|
||||||
endif
|
endif
|
||||||
let i = 1
|
call htmlcomplete#DetectOmniFlavor()
|
||||||
while i < 10 && i < line("$")
|
if !exists('b:html_omni_flavor')
|
||||||
let line = getline(i)
|
|
||||||
if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
|
|
||||||
let b:html_omni_flavor = 'html32'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
|
|
||||||
let b:html_omni_flavor = 'html40t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
|
|
||||||
let b:html_omni_flavor = 'html40f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
|
|
||||||
let b:html_omni_flavor = 'html40s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
|
|
||||||
let b:html_omni_flavor = 'html401t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
|
|
||||||
let b:html_omni_flavor = 'html401f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
|
|
||||||
let b:html_omni_flavor = 'html401s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
|
|
||||||
let b:html_omni_flavor = 'xhtml10t'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
|
|
||||||
let b:html_omni_flavor = 'xhtml10f'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
|
|
||||||
let b:html_omni_flavor = 'xhtml10s'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
|
|
||||||
let b:html_omni_flavor = 'xhtml11'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
elseif line =~ '<!DOCTYPE html'
|
|
||||||
let b:html_omni_flavor = 'html5'
|
|
||||||
let b:html_doctype = 1
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let i += 1
|
|
||||||
endwhile
|
|
||||||
if !exists("b:html_doctype")
|
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
||||||
|
|||||||
225
autoload/rust.vim
Normal file
225
autoload/rust.vim
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
" Author: Kevin Ballard
|
||||||
|
" Description: Helper functions for Rust commands/mappings
|
||||||
|
" Last Modified: May 27, 2014
|
||||||
|
|
||||||
|
" Jump {{{1
|
||||||
|
|
||||||
|
function! rust#Jump(mode, function) range
|
||||||
|
let cnt = v:count1
|
||||||
|
normal! m'
|
||||||
|
if a:mode ==# 'v'
|
||||||
|
norm! gv
|
||||||
|
endif
|
||||||
|
let foldenable = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
while cnt > 0
|
||||||
|
execute "call <SID>Jump_" . a:function . "()"
|
||||||
|
let cnt = cnt - 1
|
||||||
|
endwhile
|
||||||
|
let &foldenable = foldenable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Back()
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Forward()
|
||||||
|
normal! j0
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{%
|
||||||
|
call search('{')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Run {{{1
|
||||||
|
|
||||||
|
function! rust#Run(bang, args)
|
||||||
|
if a:bang
|
||||||
|
let idx = index(a:args, '--')
|
||||||
|
if idx != -1
|
||||||
|
let rustc_args = idx == 0 ? [] : a:args[:idx-1]
|
||||||
|
let args = a:args[idx+1:]
|
||||||
|
else
|
||||||
|
let rustc_args = a:args
|
||||||
|
let args = []
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let rustc_args = []
|
||||||
|
let args = a:args
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:rust_last_rustc_args = rustc_args
|
||||||
|
let b:rust_last_args = args
|
||||||
|
|
||||||
|
call s:WithPath(function("s:Run"), rustc_args, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Run(path, rustc_args, args)
|
||||||
|
try
|
||||||
|
let exepath = tempname()
|
||||||
|
if has('win32')
|
||||||
|
let exepath .= '.exe'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let rustc_args = [a:path, '-o', exepath] + a:rustc_args
|
||||||
|
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let output = system(shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
|
||||||
|
if output != ''
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
if !v:shell_error
|
||||||
|
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
|
||||||
|
endif
|
||||||
|
finally
|
||||||
|
if exists("exepath")
|
||||||
|
silent! call delete(exepath)
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Expand {{{1
|
||||||
|
|
||||||
|
function! rust#Expand(bang, args)
|
||||||
|
if a:bang && !empty(a:args)
|
||||||
|
let pretty = a:args[0]
|
||||||
|
let args = a:args[1:]
|
||||||
|
else
|
||||||
|
let pretty = "expanded"
|
||||||
|
let args = a:args
|
||||||
|
endif
|
||||||
|
call s:WithPath(function("s:Expand"), pretty, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Expand(path, pretty, args)
|
||||||
|
try
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let args = [a:path, '--pretty', a:pretty] + a:args
|
||||||
|
let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)")))
|
||||||
|
if v:shell_error
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
else
|
||||||
|
new
|
||||||
|
silent put =output
|
||||||
|
1
|
||||||
|
d
|
||||||
|
setl filetype=rust
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#CompleteExpand(lead, line, pos)
|
||||||
|
if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$'
|
||||||
|
" first argument and it has a !
|
||||||
|
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph="]
|
||||||
|
if !empty(a:lead)
|
||||||
|
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
|
||||||
|
endif
|
||||||
|
return list
|
||||||
|
endif
|
||||||
|
|
||||||
|
return glob(escape(a:lead, "*?[") . '*', 0, 1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Emit {{{1
|
||||||
|
|
||||||
|
function! rust#Emit(type, args)
|
||||||
|
call s:WithPath(function("s:Emit"), a:type, a:args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Emit(path, type, args)
|
||||||
|
try
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let args = [a:path, '--emit', a:type, '-o', '-'] + a:args
|
||||||
|
let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)")))
|
||||||
|
if v:shell_error
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
else
|
||||||
|
new
|
||||||
|
silent put =output
|
||||||
|
1
|
||||||
|
d
|
||||||
|
if a:type == "ir"
|
||||||
|
setl filetype=llvm
|
||||||
|
elseif a:type == "asm"
|
||||||
|
setl filetype=asm
|
||||||
|
endif
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Utility functions {{{1
|
||||||
|
|
||||||
|
function! s:WithPath(func, ...)
|
||||||
|
try
|
||||||
|
let save_write = &write
|
||||||
|
set write
|
||||||
|
let path = expand('%')
|
||||||
|
let pathisempty = empty(path)
|
||||||
|
if pathisempty || !save_write
|
||||||
|
" use a temporary file named 'unnamed.rs' inside a temporary
|
||||||
|
" directory. This produces better error messages
|
||||||
|
let tmpdir = tempname()
|
||||||
|
call mkdir(tmpdir)
|
||||||
|
|
||||||
|
let save_cwd = getcwd()
|
||||||
|
silent exe 'lcd' fnameescape(tmpdir)
|
||||||
|
|
||||||
|
let path = 'unnamed.rs'
|
||||||
|
|
||||||
|
let save_mod = &mod
|
||||||
|
set nomod
|
||||||
|
|
||||||
|
silent exe 'keepalt write! ' . fnameescape(path)
|
||||||
|
if pathisempty
|
||||||
|
silent keepalt 0file
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
update
|
||||||
|
endif
|
||||||
|
|
||||||
|
call call(a:func, [path] + a:000)
|
||||||
|
finally
|
||||||
|
if exists("save_mod") | let &mod = save_mod | endif
|
||||||
|
if exists("save_write") | let &write = save_write | endif
|
||||||
|
if exists("save_cwd") | silent exe 'lcd' fnameescape(save_cwd) | endif
|
||||||
|
if exists("tmpdir") | silent call s:RmDir(tmpdir) | endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#AppendCmdLine(text)
|
||||||
|
call setcmdpos(getcmdpos())
|
||||||
|
let cmd = getcmdline() . a:text
|
||||||
|
return cmd
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RmDir(path)
|
||||||
|
" sanity check; make sure it's not empty, /, or $HOME
|
||||||
|
if empty(a:path)
|
||||||
|
echoerr 'Attempted to delete empty path'
|
||||||
|
return 0
|
||||||
|
elseif a:path == '/' || a:path == $HOME
|
||||||
|
echoerr 'Attempted to delete protected path: ' . a:path
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
silent exe "!rm -rf " . shellescape(a:path)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
" vim: set noet sw=4 ts=4:
|
||||||
@@ -61,7 +61,7 @@ let charset = [
|
|||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Attributes_and_Settings: {{{
|
" Attributes_and_Settings: {{{
|
||||||
let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}
|
let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}
|
||||||
let xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}
|
let xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}
|
||||||
|
|
||||||
let body_attributes = {}
|
let body_attributes = {}
|
||||||
@@ -101,6 +101,7 @@ let attributes_value = {
|
|||||||
\ 'disabled': ['Bool', ''],
|
\ 'disabled': ['Bool', ''],
|
||||||
\ 'draggable': ['true/false', ''],
|
\ 'draggable': ['true/false', ''],
|
||||||
\ 'enctype': ['Token', ''],
|
\ 'enctype': ['Token', ''],
|
||||||
|
\ 'extends': ['Text', ''],
|
||||||
\ 'for': ['ID', ''],
|
\ 'for': ['ID', ''],
|
||||||
\ 'form': ['ID', ''],
|
\ 'form': ['ID', ''],
|
||||||
\ 'formaction': ['URL', ''],
|
\ 'formaction': ['URL', ''],
|
||||||
@@ -152,6 +153,7 @@ let attributes_value = {
|
|||||||
\ 'scope': ['Token', ''],
|
\ 'scope': ['Token', ''],
|
||||||
\ 'scoped': ['Bool', ''],
|
\ 'scoped': ['Bool', ''],
|
||||||
\ 'seamless': ['Bool', ''],
|
\ 'seamless': ['Bool', ''],
|
||||||
|
\ 'select': ['Text', ''],
|
||||||
\ 'selected': ['Bool', ''],
|
\ 'selected': ['Bool', ''],
|
||||||
\ 'shape': ['Token', ''],
|
\ 'shape': ['Token', ''],
|
||||||
\ 'size': ['Int', ''],
|
\ 'size': ['Int', ''],
|
||||||
@@ -322,16 +324,16 @@ endif
|
|||||||
|
|
||||||
" Ref: http://dev.w3.org/html5/markup/
|
" Ref: http://dev.w3.org/html5/markup/
|
||||||
" Version: Draft 05 April 2011
|
" Version: Draft 05 April 2011
|
||||||
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data']
|
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'picture', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']
|
||||||
|
|
||||||
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
||||||
|
|
||||||
let flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']
|
let flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'element', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']
|
||||||
|
|
||||||
" http://dev.w3.org/html5/spec/Overview.html#linkTypes
|
" http://dev.w3.org/html5/spec/Overview.html#linkTypes
|
||||||
let linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']
|
let linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']
|
||||||
" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
|
" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
|
||||||
let linkreltypes = linktypes + ['canonical']
|
let linkreltypes = linktypes + ['canonical', 'import']
|
||||||
|
|
||||||
" a and button are special elements for interactive, some element can't be its descendent
|
" a and button are special elements for interactive, some element can't be its descendent
|
||||||
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
||||||
@@ -340,7 +342,7 @@ let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|t
|
|||||||
|
|
||||||
let g:xmldata_html5 = {
|
let g:xmldata_html5 = {
|
||||||
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
|
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
|
||||||
\ 'vimxmlroot': ['html'],
|
\ 'vimxmlroot': ['html', 'head', 'body'] + flow_elements,
|
||||||
\ 'a': [
|
\ 'a': [
|
||||||
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
||||||
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
||||||
@@ -425,6 +427,10 @@ let g:xmldata_html5 = {
|
|||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'span': []})
|
\ extend(copy(global_attributes), {'span': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'content': [
|
||||||
|
\ [],
|
||||||
|
\ extend(copy(global_attributes), {'select': []})
|
||||||
|
\ ],
|
||||||
\ 'command': [
|
\ 'command': [
|
||||||
\ ['col'],
|
\ ['col'],
|
||||||
\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})
|
\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})
|
||||||
@@ -547,7 +553,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'input': [
|
\ 'input': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'color'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'ins': [
|
\ 'ins': [
|
||||||
\ flow_elements,
|
\ flow_elements,
|
||||||
@@ -637,6 +643,10 @@ let g:xmldata_html5 = {
|
|||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'name': [], 'value': []})
|
\ extend(copy(global_attributes), {'name': [], 'value': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'picture': [
|
||||||
|
\ flow_elements + ['source'],
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'pre': [
|
\ 'pre': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
@@ -677,13 +687,17 @@ let g:xmldata_html5 = {
|
|||||||
\ ['optgroup', 'option'],
|
\ ['optgroup', 'option'],
|
||||||
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})
|
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'shadow': [
|
||||||
|
\ [],
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'small': [
|
\ 'small': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
\ ],
|
\ ],
|
||||||
\ 'source': [
|
\ 'source': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': []})
|
\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': [], 'srcset': [], 'sizes': []})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'span': [
|
\ 'span': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
|
|||||||
42
build
42
build
@@ -3,6 +3,7 @@
|
|||||||
set -E
|
set -E
|
||||||
|
|
||||||
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
||||||
|
DIRS_BASIC="syntax indent ftdetect after/syntax after/indent after/ftdetect"
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
for pack in $1; do
|
for pack in $1; do
|
||||||
@@ -21,10 +22,11 @@ extract() {
|
|||||||
name="$(printf "$pack" | cut -d ':' -f 1)"
|
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
|
directories="DIRS$(printf "$pack" | cut -d ':' -f 3)"
|
||||||
printf -- "- [$name](https://github.com/$path) ("
|
printf -- "- [$name](https://github.com/$path) ("
|
||||||
|
|
||||||
subdirs=""
|
subdirs=""
|
||||||
for subdir in $DIRS; do
|
for subdir in ${!directories}; do
|
||||||
if [ -d "$dir/$subdir" ]; then
|
if [ -d "$dir/$subdir" ]; then
|
||||||
base="$(basename "$subdir")"
|
base="$(basename "$subdir")"
|
||||||
if [[ "$subdirs" != *"$base"* ]]; then
|
if [[ "$subdirs" != *"$base"* ]]; then
|
||||||
@@ -54,7 +56,8 @@ copy_dir() {
|
|||||||
for file in $(find "$1/$2" -name '*.vim'); do
|
for file in $(find "$1/$2" -name '*.vim'); do
|
||||||
file_path="$(dirname "${file##$1/}")"
|
file_path="$(dirname "${file##$1/}")"
|
||||||
mkdir -p "$file_path"
|
mkdir -p "$file_path"
|
||||||
cp $file $file_path/
|
touch "$file_path/$(basename "$file")"
|
||||||
|
cat $file >> $file_path/$(basename "$file")
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,47 +69,68 @@ concat_ftdetect() {
|
|||||||
|
|
||||||
PACKS="
|
PACKS="
|
||||||
arduino:sudar/vim-arduino-syntax
|
arduino:sudar/vim-arduino-syntax
|
||||||
|
blade:xsbeats/vim-blade
|
||||||
c++11:octol/vim-cpp-enhanced-highlight
|
c++11:octol/vim-cpp-enhanced-highlight
|
||||||
c/c++:vim-jp/cpp-vim
|
c/c++:vim-jp/cpp-vim
|
||||||
|
c-extensions:kergoth/aftersyntaxc.vim
|
||||||
clojure:guns/vim-clojure-static
|
clojure:guns/vim-clojure-static
|
||||||
coffee-script:kchmck/vim-coffee-script
|
coffee-script:kchmck/vim-coffee-script
|
||||||
css-color:ap/vim-css-color
|
css:JulesWang/css.vim
|
||||||
csv:chrisbra/csv.vim
|
csv:chrisbra/csv.vim
|
||||||
cucumber:tpope/vim-cucumber
|
cucumber:tpope/vim-cucumber
|
||||||
|
dockerfile:honza/dockerfile.vim
|
||||||
elixir:elixir-lang/vim-elixir
|
elixir:elixir-lang/vim-elixir
|
||||||
erlang:oscarh/vimerl
|
emberscript:heartsentwined/vim-ember-script
|
||||||
|
emblem:heartsentwined/vim-emblem
|
||||||
|
erlang:hcs42/vim-erlang-runtime
|
||||||
git:tpope/vim-git
|
git:tpope/vim-git
|
||||||
go:jnwhiteh/vim-golang
|
go:fatih/vim-go:_BASIC
|
||||||
haml:tpope/vim-haml
|
haml:tpope/vim-haml
|
||||||
handlebars:nono/vim-handlebars
|
handlebars:mustache/vim-mustache-handlebars
|
||||||
haskell:travitch/hasksyn
|
haskell:travitch/hasksyn
|
||||||
|
haxe:yaymukund/vim-haxe
|
||||||
html5:othree/html5.vim
|
html5:othree/html5.vim
|
||||||
jade:digitaltoad/vim-jade
|
jade:digitaltoad/vim-jade
|
||||||
|
jasmine:glanotte/vim-jasmine
|
||||||
javascript:pangloss/vim-javascript
|
javascript:pangloss/vim-javascript
|
||||||
json:leshill/vim-json
|
json:leshill/vim-json
|
||||||
jst:briancollins/vim-jst
|
jst:briancollins/vim-jst
|
||||||
latex:LaTeX-Box-Team/LaTeX-Box
|
latex:LaTeX-Box-Team/LaTeX-Box
|
||||||
less:groenewege/vim-less
|
less:groenewege/vim-less
|
||||||
|
liquid:tpope/vim-liquid
|
||||||
markdown:tpope/vim-markdown
|
markdown:tpope/vim-markdown
|
||||||
nginx:mutewinter/nginx.vim
|
nginx:mutewinter/nginx.vim
|
||||||
ocaml:jrk/vim-ocaml
|
ocaml:jrk/vim-ocaml
|
||||||
octave:vim-scripts/octave.vim--
|
octave:vim-scripts/octave.vim--
|
||||||
|
opencl:petRUShka/vim-opencl
|
||||||
|
perl:vim-perl/vim-perl
|
||||||
php:StanAngeloff/php.vim
|
php:StanAngeloff/php.vim
|
||||||
puppet:ajf/puppet-vim
|
puppet:rodjek/vim-puppet
|
||||||
|
powershell:Persistent13/vim-ps1
|
||||||
protobuf:uarun/vim-protobuf
|
protobuf:uarun/vim-protobuf
|
||||||
python:vim-scripts/python.vim--Vasiliev
|
python:mitsuhiko/vim-python-combined
|
||||||
|
r-lang:vim-scripts/R.vim
|
||||||
rspec:sheerun/rspec.vim
|
rspec:sheerun/rspec.vim
|
||||||
ruby:vim-ruby/vim-ruby
|
ruby:vim-ruby/vim-ruby
|
||||||
|
rust:wting/rust.vim
|
||||||
sbt:derekwyatt/vim-sbt
|
sbt:derekwyatt/vim-sbt
|
||||||
scala:derekwyatt/vim-scala
|
scala:derekwyatt/vim-scala
|
||||||
slim:slim-template/vim-slim
|
slim:slim-template/vim-slim
|
||||||
stylus:wavded/vim-stylus
|
stylus:wavded/vim-stylus
|
||||||
|
systemd:kurayama/systemd-vim-syntax
|
||||||
|
swift:toyamarinyon/vim-swift
|
||||||
textile:timcharper/textile.vim
|
textile:timcharper/textile.vim
|
||||||
tmux:acustodioo/vim-tmux
|
tmux:tejr/vim-tmux
|
||||||
tomdoc:duwanis/tomdoc.vim
|
tomdoc:duwanis/tomdoc.vim
|
||||||
|
typescript:leafgarland/typescript-vim
|
||||||
vbnet:vim-scripts/vbnet.vim
|
vbnet:vim-scripts/vbnet.vim
|
||||||
|
thrift:solarnz/thrift.vim
|
||||||
|
toml:cespare/vim-toml
|
||||||
twig:beyondwords/vim-twig
|
twig:beyondwords/vim-twig
|
||||||
xls:vim-scripts/XSLT-syntax
|
xls:vim-scripts/XSLT-syntax
|
||||||
|
yard:sheerun/vim-yardoc
|
||||||
|
vala:tkztmk/vim-vala
|
||||||
|
css-color:ap/vim-css-color
|
||||||
"
|
"
|
||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
|
|||||||
65
compiler/cargo.vim
Normal file
65
compiler/cargo.vim
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Cargo Compiler
|
||||||
|
" Maintainer: Damien Radtke <damienradtke@gmail.com>
|
||||||
|
" Latest Revision: 2014 Sep 24
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
runtime compiler/rustc.vim
|
||||||
|
let current_compiler = "cargo"
|
||||||
|
|
||||||
|
if exists(':CompilerSet') != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('g:cargo_makeprg_params')
|
||||||
|
execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*'
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=cargo\ $*
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Allow a configurable global Cargo.toml name. This makes it easy to
|
||||||
|
" support variations like 'cargo.toml'.
|
||||||
|
let s:cargo_manifest_name = get(g:, 'cargo_manifest_name', 'Cargo.toml')
|
||||||
|
|
||||||
|
function! s:is_absolute(path)
|
||||||
|
return a:path[0] == '/' || a:path =~ '[A-Z]\+:'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:local_manifest = findfile(s:cargo_manifest_name, '.;')
|
||||||
|
if s:local_manifest != ''
|
||||||
|
let s:local_manifest = fnamemodify(s:local_manifest, ':p:h').'/'
|
||||||
|
augroup cargo
|
||||||
|
au!
|
||||||
|
au QuickfixCmdPost make call s:FixPaths()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" FixPaths() is run after Cargo, and is used to change the file paths
|
||||||
|
" to be relative to the current directory instead of Cargo.toml.
|
||||||
|
function! s:FixPaths()
|
||||||
|
let qflist = getqflist()
|
||||||
|
let manifest = s:local_manifest
|
||||||
|
for qf in qflist
|
||||||
|
if !qf.valid
|
||||||
|
let m = matchlist(qf.text, '(file://\(.*\))$')
|
||||||
|
if !empty(m)
|
||||||
|
let manifest = m[1].'/'
|
||||||
|
" Manually strip another slash if needed; usually just an
|
||||||
|
" issue on Windows.
|
||||||
|
if manifest =~ '^/[A-Z]\+:/'
|
||||||
|
let manifest = manifest[1:]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let filename = bufname(qf.bufnr)
|
||||||
|
if s:is_absolute(filename)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let qf.filename = simplify(manifest.filename)
|
||||||
|
call remove(qf, 'bufnr')
|
||||||
|
endfor
|
||||||
|
call setqflist(qflist, 'r')
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -27,8 +27,8 @@ function! s:GetMakePrg()
|
|||||||
\ ' -c' .
|
\ ' -c' .
|
||||||
\ ' ' . b:coffee_litcoffee .
|
\ ' ' . b:coffee_litcoffee .
|
||||||
\ ' ' . g:coffee_make_options .
|
\ ' ' . g:coffee_make_options .
|
||||||
\ ' ' . fnameescape(expand('%')) .
|
\ ' $*' .
|
||||||
\ ' $*'
|
\ ' ' . fnameescape(expand('%'))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Set `makeprg` and return 1 if coffee is still the compiler, else return 0.
|
" Set `makeprg` and return 1 if coffee is still the compiler, else return 0.
|
||||||
@@ -75,8 +75,8 @@ augroup CoffeeUpdateMakePrg
|
|||||||
|
|
||||||
" Set autocmd locally if compiler was set locally.
|
" Set autocmd locally if compiler was set locally.
|
||||||
if &l:makeprg =~ s:pat
|
if &l:makeprg =~ s:pat
|
||||||
autocmd BufFilePost,BufWritePost <buffer> call s:UpdateMakePrg()
|
autocmd BufWritePre,BufFilePost <buffer> call s:UpdateMakePrg()
|
||||||
else
|
else
|
||||||
autocmd BufFilePost,BufWritePost call s:UpdateMakePrg()
|
autocmd BufWritePre,BufFilePost call s:UpdateMakePrg()
|
||||||
endif
|
endif
|
||||||
augroup END
|
augroup END
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ CompilerSet makeprg=cucumber
|
|||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\%W%m\ (Cucumber::Undefined),
|
\%W%m\ (Cucumber::Undefined),
|
||||||
\%E%m\ (%.%#),
|
\%E%m\ (%\\S%#),
|
||||||
\%Z%f:%l,
|
\%Z%f:%l,
|
||||||
\%Z%f:%l:%.%#
|
\%Z%f:%l:%.%#
|
||||||
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
" Erlang compiler file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
|
||||||
" URL: http://ktototaki.info
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "erlang"
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2
|
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangCheckFile')
|
|
||||||
let g:erlangCheckFile = "~/.vim/compiler/erlang_check_file.erl"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangHighlightErrors')
|
|
||||||
let g:erlangHighlightErrors = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:error_list = {}
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
|
|
||||||
function! HighlightErlangErrors()
|
|
||||||
if match(getline(1), "#!.*escript") != -1
|
|
||||||
setlocal makeprg=escript\ -s\ %
|
|
||||||
else
|
|
||||||
execute "setlocal makeprg=" . g:erlangCheckFile . "\\ \%"
|
|
||||||
endif
|
|
||||||
silent make!
|
|
||||||
call s:clear_matches()
|
|
||||||
for error in getqflist()
|
|
||||||
let item = {}
|
|
||||||
let item['lnum'] = error.lnum
|
|
||||||
let item['msg'] = error.text
|
|
||||||
let b:error_list[error.lnum] = item
|
|
||||||
call matchadd('SpellBad', "\\%" . error.lnum . "l")
|
|
||||||
endfor
|
|
||||||
if len(getqflist())
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
call s:show_msg()
|
|
||||||
setlocal makeprg=erlc\ %
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:show_msg()
|
|
||||||
let pos = getpos(".")
|
|
||||||
if has_key(b:error_list, pos[1])
|
|
||||||
let item = get(b:error_list, pos[1])
|
|
||||||
echo item.msg
|
|
||||||
let b:is_showing_msg = 1
|
|
||||||
else
|
|
||||||
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
|
||||||
echo
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endf
|
|
||||||
|
|
||||||
function! s:clear_matches()
|
|
||||||
call clearmatches()
|
|
||||||
let b:error_list = {}
|
|
||||||
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
|
||||||
echo
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
CompilerSet makeprg=erlc\ %
|
|
||||||
CompilerSet errorformat=%f:%l:\ %tarning:\ %m,%E%f:%l:\ %m
|
|
||||||
|
|
||||||
if g:erlangHighlightErrors
|
|
||||||
autocmd BufLeave *.erl call s:clear_matches()
|
|
||||||
autocmd BufEnter *.erl call s:clear_matches()
|
|
||||||
autocmd BufWritePost *.erl call HighlightErlangErrors()
|
|
||||||
autocmd CursorHold *.erl call s:show_msg()
|
|
||||||
autocmd CursorMoved *.erl call s:show_msg()
|
|
||||||
endif
|
|
||||||
@@ -15,7 +15,7 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=haml\ -c
|
CompilerSet makeprg=haml
|
||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\Haml\ %trror\ on\ line\ %l:\ %m,
|
\Haml\ %trror\ on\ line\ %l:\ %m,
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ CompilerSet errorformat=
|
|||||||
\%\\s%#[%f:%l:\ %#%m,
|
\%\\s%#[%f:%l:\ %#%m,
|
||||||
\%\\s%#%f:%l:\ %#%m,
|
\%\\s%#%f:%l:\ %#%m,
|
||||||
\%\\s%#%f:%l:,
|
\%\\s%#%f:%l:,
|
||||||
\%m\ [%f:%l]:
|
\%m\ [%f:%l]:,
|
||||||
|
\%+Erake\ aborted!,
|
||||||
|
\%+EDon't\ know\ how\ to\ build\ task\ %.%#,
|
||||||
|
\%+Einvalid\ option:%.%#,
|
||||||
|
\%+Irake\ %\\S%\\+%\\s%\\+#\ %.%#
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ let s:cpo_save = &cpo
|
|||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=testrb
|
CompilerSet makeprg=testrb
|
||||||
|
" CompilerSet makeprg=ruby\ -Itest
|
||||||
|
" CompilerSet makeprg=m
|
||||||
|
|
||||||
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
||||||
\%C%m\ [%f:%l]:,
|
\%C%m\ [%f:%l]:,
|
||||||
|
|||||||
33
compiler/rustc.vim
Normal file
33
compiler/rustc.vim
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Rust Compiler
|
||||||
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Latest Revision: 2013 Jul 12
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "rustc"
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent == 1
|
||||||
|
CompilerSet makeprg=rustc
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=rustc\ \%
|
||||||
|
endif
|
||||||
|
|
||||||
|
CompilerSet errorformat=
|
||||||
|
\%f:%l:%c:\ %t%*[^:]:\ %m,
|
||||||
|
\%f:%l:%c:\ %*\\d:%*\\d\ %t%*[^:]:\ %m,
|
||||||
|
\%-G%f:%l\ %s,
|
||||||
|
\%-G%*[\ ]^,
|
||||||
|
\%-G%*[\ ]^%*[~],
|
||||||
|
\%-G%*[\ ]...
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
@@ -15,7 +15,7 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=sass\ -c
|
CompilerSet makeprg=sass
|
||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\%f:%l:%m\ (Sass::Syntax%trror),
|
\%f:%l:%m\ (Sass::Syntax%trror),
|
||||||
|
|||||||
13
compiler/typescript.vim
Normal file
13
compiler/typescript.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "typescript"
|
||||||
|
|
||||||
|
if !exists("g:typescript_compiler_options")
|
||||||
|
let g:typescript_compiler_options = ""
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
let &l:makeprg='tsc' . g:typescript_compiler_options . ' $* %'
|
||||||
|
|
||||||
|
CompilerSet errorformat=%+A\ %#%f\ %#(%l\\\,%c):\ %m,%C%m
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
||||||
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure
|
au BufNewFile,BufRead *.blade.php set filetype=blade
|
||||||
|
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
|
||||||
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
||||||
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
||||||
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
||||||
@@ -12,17 +13,27 @@ endfunction
|
|||||||
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
||||||
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
|
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
|
||||||
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
||||||
|
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
|
||||||
|
au BufRead,BufNewFile *.eex set filetype=eelixir
|
||||||
|
au FileType eelixir setl sw=2 sts=2 et iskeyword+=!,?
|
||||||
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
||||||
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
|
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
|
||||||
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit
|
function! s:DetectElixir()
|
||||||
|
if getline(1) =~ '^#!.*\<elixir\>'
|
||||||
|
set filetype=elixir
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
autocmd BufNewFile,BufRead * call s:DetectElixir()
|
||||||
|
autocmd BufNewFile,BufRead *.em set filetype=ember-script
|
||||||
|
autocmd FileType ember-script set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
|
autocmd BufNewFile,BufRead *.emblem set filetype=emblem
|
||||||
|
autocmd FileType emblem set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
|
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG set ft=gitcommit
|
||||||
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
|
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
|
||||||
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
|
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
|
||||||
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
|
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
|
||||||
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
|
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
|
||||||
autocmd BufNewFile,BufRead .msg.[0-9]*
|
autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
|
||||||
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
|
||||||
\ set ft=gitsendemail |
|
|
||||||
\ endif
|
|
||||||
autocmd BufNewFile,BufRead *.git/**
|
autocmd BufNewFile,BufRead *.git/**
|
||||||
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
||||||
\ set ft=git |
|
\ set ft=git |
|
||||||
@@ -31,6 +42,10 @@ autocmd BufNewFile,BufRead,StdinReadPost *
|
|||||||
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
||||||
\ set ft=git |
|
\ set ft=git |
|
||||||
\ endif
|
\ endif
|
||||||
|
autocmd BufNewFile,BufRead *
|
||||||
|
\ if getline(1) =~ '^From \x\{40\} Mon Sep 17 00:00:00 2001$' |
|
||||||
|
\ set filetype=gitsendemail |
|
||||||
|
\ endif
|
||||||
let s:current_fileformats = ''
|
let s:current_fileformats = ''
|
||||||
let s:current_fileencodings = ''
|
let s:current_fileencodings = ''
|
||||||
function! s:gofiletype_pre()
|
function! s:gofiletype_pre()
|
||||||
@@ -46,16 +61,14 @@ endfunction
|
|||||||
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
||||||
au BufRead *.go call s:gofiletype_pre()
|
au BufRead *.go call s:gofiletype_pre()
|
||||||
au BufReadPost *.go call s:gofiletype_post()
|
au BufReadPost *.go call s:gofiletype_post()
|
||||||
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
|
autocmd BufNewFile,BufRead *.haml,*.hamlbars,*.hamlc setf haml
|
||||||
autocmd BufNewFile,BufRead *.sass setf sass
|
autocmd BufNewFile,BufRead *.sass setf sass
|
||||||
autocmd BufNewFile,BufRead *.scss setf scss
|
autocmd BufNewFile,BufRead *.scss setf scss
|
||||||
if has("autocmd")
|
autocmd BufNewFile,BufRead *.hx setf haxe
|
||||||
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
|
|
||||||
endif
|
|
||||||
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
||||||
|
autocmd BufNewFile,BufRead *Spec.js,*_spec.js set filetype=jasmine.javascript syntax=jasmine
|
||||||
au BufNewFile,BufRead *.js setf javascript
|
au BufNewFile,BufRead *.js setf javascript
|
||||||
au BufNewFile,BufRead *.jsm setf javascript
|
au BufNewFile,BufRead *.jsm setf javascript
|
||||||
au BufNewFile,BufRead *.json setf javascript
|
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
au BufNewFile,BufRead Jakefile setf javascript
|
||||||
fun! s:SelectJavascript()
|
fun! s:SelectJavascript()
|
||||||
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
||||||
@@ -74,36 +87,97 @@ au BufNewFile,BufRead *.ejs set filetype=jst
|
|||||||
au BufNewFile,BufRead *.jst set filetype=jst
|
au BufNewFile,BufRead *.jst set filetype=jst
|
||||||
au BufNewFile,BufRead *.hamljs set filetype=jst
|
au BufNewFile,BufRead *.hamljs set filetype=jst
|
||||||
autocmd BufNewFile,BufRead *.less setf less
|
autocmd BufNewFile,BufRead *.less setf less
|
||||||
|
au BufNewFile,BufRead *.liquid set ft=liquid
|
||||||
|
au BufNewFile,BufRead */_layouts/*.html,*/_includes/*.html set ft=liquid
|
||||||
|
au BufNewFile,BufRead *.html,*.xml,*.textile
|
||||||
|
\ if getline(1) == '---' | set ft=liquid | endif
|
||||||
|
au BufNewFile,BufRead *.markdown,*.mkd,*.mkdn,*.md
|
||||||
|
\ if getline(1) == '---' |
|
||||||
|
\ let b:liquid_subtype = 'markdown' |
|
||||||
|
\ set ft=liquid |
|
||||||
|
\ endif
|
||||||
|
au BufNewFile,BufRead */templates/**.liquid,*/layout/**.liquid,*/snippets/**.liquid
|
||||||
|
\ let b:liquid_subtype = 'html' |
|
||||||
|
\ set ft=liquid |
|
||||||
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
||||||
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
||||||
\ set ft=markdown |
|
\ set ft=markdown |
|
||||||
\ else |
|
\ else |
|
||||||
\ setf markdown |
|
\ setf markdown |
|
||||||
\ endif
|
\ endif
|
||||||
|
autocmd BufRead *.html
|
||||||
|
\ if getline(1) =~ '^\(%\|<[%&].*>\)' |
|
||||||
|
\ set filetype=mason |
|
||||||
|
\ endif
|
||||||
|
if has("autocmd")
|
||||||
|
au BufNewFile,BufRead *.mustache,*.hogan,*.hulk,*.hjs set filetype=html.mustache syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
||||||
|
au BufNewFile,BufRead *.handlebars,*.hbs set filetype=html.handlebars syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
||||||
|
endif
|
||||||
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
||||||
|
au BufRead,BufNewFile *.cl set filetype=opencl
|
||||||
|
function! s:DetectPerl6()
|
||||||
|
let line_no = 1
|
||||||
|
let eof = line('$')
|
||||||
|
let in_pod = 0
|
||||||
|
while line_no <= eof
|
||||||
|
let line = getline(line_no)
|
||||||
|
let line_no = line_no + 1
|
||||||
|
if line =~ '^=\w'
|
||||||
|
let in_pod = 1
|
||||||
|
elseif line =~ '^=\%(end\|cut\)'
|
||||||
|
let in_pod = 0
|
||||||
|
elseif !in_pod
|
||||||
|
let line = substitute(line, '#.*', '', '')
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
if line =~ '^\s*\%(use\s\+\)\=v6\%(\.\d\%(\.\d\)\=\)\=;'
|
||||||
|
set filetype=perl6 " we matched a 'use v6' declaration
|
||||||
|
elseif line =~ '^\s*\%(\%(my\|our\)\s\+\)\=\(module\|class\|role\|enum\|grammar\)'
|
||||||
|
set filetype=perl6 " we found a class, role, module, enum, or grammar declaration
|
||||||
|
endif
|
||||||
|
break " we either found what we needed, or we found a non-POD, non-comment,
|
||||||
|
" non-Perl 6 indicating line, so bail out
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
autocmd BufReadPost *.pl,*.pm,*.t call s:DetectPerl6()
|
||||||
|
autocmd BufNew,BufRead *.nqp setf perl6
|
||||||
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
||||||
au BufRead,BufNewFile *.pp set filetype=puppet
|
au BufNewFile,BufRead *.ps1 set ft=ps1
|
||||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
|
au BufNewFile,BufRead *.psd1 set ft=ps1
|
||||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
|
au BufNewFile,BufRead *.psm1 set ft=ps1
|
||||||
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
|
au BufNewFile,BufRead *.ps1xml set ft=ps1xml
|
||||||
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
|
au! BufRead,BufNewFile *.pp setfiletype puppet
|
||||||
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
|
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
||||||
au BufNewFile,BufRead .pryrc set filetype=ruby
|
function! s:setf(filetype) abort
|
||||||
au BufNewFile,BufRead *.ru set filetype=ruby
|
if &filetype !=# a:filetype
|
||||||
au BufNewFile,BufRead Capfile set filetype=ruby
|
let &filetype = a:filetype
|
||||||
au BufNewFile,BufRead Gemfile set filetype=ruby
|
endif
|
||||||
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
|
endfunction
|
||||||
au BufNewFile,BufRead Cheffile set filetype=ruby
|
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Berksfile set filetype=ruby
|
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
|
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||||
au BufNewFile,BufRead .autotest set filetype=ruby
|
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
|
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
|
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.rabl set filetype=ruby
|
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Appraisals set filetype=ruby
|
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
||||||
|
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
||||||
|
au BufRead,BufNewFile *.rs set filetype=rust
|
||||||
au BufRead,BufNewFile *.sbt set filetype=sbt
|
au BufRead,BufNewFile *.sbt set filetype=sbt
|
||||||
fun! s:DetectScala()
|
fun! s:DetectScala()
|
||||||
if getline(1) == '#!/usr/bin/env scala'
|
if getline(1) == '#!/usr/bin/env scala'
|
||||||
@@ -112,10 +186,24 @@ fun! s:DetectScala()
|
|||||||
endfun
|
endfun
|
||||||
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
||||||
au BufRead,BufNewFile * call s:DetectScala()
|
au BufRead,BufNewFile * call s:DetectScala()
|
||||||
autocmd BufNewFile,BufRead *.slim setf slim
|
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
||||||
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
||||||
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
||||||
|
autocmd BufNewFile,BufRead *.swift set filetype=swift
|
||||||
|
au BufNewFile,BufRead *.automount set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.mount set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.path set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.service set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.socket set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.swap set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.target set filetype=systemd
|
||||||
|
au BufNewFile,BufRead *.timer set filetype=systemd
|
||||||
au BufRead,BufNewFile *.textile set filetype=textile
|
au BufRead,BufNewFile *.textile set filetype=textile
|
||||||
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
|
au BufNewFile,BufRead *.thrift setlocal filetype=thrift
|
||||||
|
autocmd BufNewFile,BufRead {.,}tmux.conf{.*,} setlocal filetype=tmux
|
||||||
|
autocmd BufNewFile,BufRead *.toml set filetype=toml
|
||||||
autocmd BufNewFile,BufRead *.twig set filetype=twig
|
autocmd BufNewFile,BufRead *.twig set filetype=twig
|
||||||
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig
|
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig
|
||||||
|
autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript
|
||||||
|
autocmd BufRead *.vala,*.vapi set efm=%f:%l.%c-%[%^:]%#:\ %t%[%^:]%#:\ %m
|
||||||
|
au BufRead,BufNewFile *.vala,*.vapi setfiletype vala
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ let b:did_ftplugin = 1
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring<'
|
let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<'
|
||||||
|
|
||||||
setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
|
setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
|
||||||
|
|
||||||
@@ -23,14 +23,29 @@ setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
|
|||||||
" of user-defined def* definitions.
|
" of user-defined def* definitions.
|
||||||
setlocal define=\\v[(/]def(ault)@!\\S*
|
setlocal define=\\v[(/]def(ault)@!\\S*
|
||||||
|
|
||||||
" Remove 't' from 'formatoptions' to avoid auto-wrapping code. The '+=croql'
|
" Remove 't' from 'formatoptions' to avoid auto-wrapping code.
|
||||||
" is standard ftplugin boilerplate, although it is arguably intrusive.
|
setlocal formatoptions-=t
|
||||||
setlocal formatoptions-=t formatoptions+=croql
|
|
||||||
|
|
||||||
" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING)
|
" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING)
|
||||||
setlocal comments=n:;
|
setlocal comments=n:;
|
||||||
setlocal commentstring=;\ %s
|
setlocal commentstring=;\ %s
|
||||||
|
|
||||||
|
" Specially indented symbols from clojure.core and clojure.test.
|
||||||
|
"
|
||||||
|
" Clojure symbols are indented in the defn style when they:
|
||||||
|
"
|
||||||
|
" * Define vars and anonymous functions
|
||||||
|
" * Create new lexical scopes or scopes with altered environments
|
||||||
|
" * Create conditional branches from a predicate function or value
|
||||||
|
"
|
||||||
|
" The arglists for these functions are generally in the form of [x & body];
|
||||||
|
" Functions that accept a flat list of forms do not treat the first argument
|
||||||
|
" specially and hence are not indented specially.
|
||||||
|
"
|
||||||
|
" -*- LISPWORDS -*-
|
||||||
|
" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
|
||||||
|
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
|
||||||
|
|
||||||
" Provide insert mode completions for special forms and clojure.core. As
|
" Provide insert mode completions for special forms and clojure.core. As
|
||||||
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
|
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
|
||||||
" 'completefunc' so that the user has some form of completion available when
|
" 'completefunc' so that the user has some form of completion available when
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -13,6 +13,7 @@ call coffee#CoffeeSetUpVariables()
|
|||||||
setlocal formatoptions-=t formatoptions+=croql
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal comments=:# commentstring=#\ %s
|
setlocal comments=:# commentstring=#\ %s
|
||||||
setlocal omnifunc=javascriptcomplete#CompleteJS
|
setlocal omnifunc=javascriptcomplete#CompleteJS
|
||||||
|
setlocal suffixesadd+=coffee
|
||||||
|
|
||||||
" Create custom augroups.
|
" Create custom augroups.
|
||||||
augroup CoffeeBufUpdate | augroup END
|
augroup CoffeeBufUpdate | augroup END
|
||||||
@@ -330,7 +331,7 @@ function! s:CoffeeLint(startline, endline, bang, args)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let output = system(g:coffee_linter .
|
let output = system(g:coffee_linter .
|
||||||
\ ' -s --csv' .
|
\ ' -s --reporter csv' .
|
||||||
\ ' ' . b:coffee_litcoffee .
|
\ ' ' . b:coffee_litcoffee .
|
||||||
\ ' ' . g:coffee_lint_options .
|
\ ' ' . g:coffee_lint_options .
|
||||||
\ ' ' . a:args .
|
\ ' ' . a:args .
|
||||||
@@ -394,11 +395,11 @@ if !exists('b:coffee_run_buf')
|
|||||||
call s:CoffeeRunResetVars()
|
call s:CoffeeRunResetVars()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
command! -range=% -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
command! -buffer -range=% -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
||||||
\ CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)
|
\ CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)
|
||||||
command! -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
command! -buffer -bar -nargs=* -complete=customlist,s:CoffeeComplete
|
||||||
\ CoffeeWatch call s:CoffeeWatch(<q-args>)
|
\ CoffeeWatch call s:CoffeeWatch(<q-args>)
|
||||||
command! -range=% -bar -nargs=* CoffeeRun
|
command! -buffer -range=% -bar -nargs=* CoffeeRun
|
||||||
\ call s:CoffeeRun(<line1>, <line2>, <q-args>)
|
\ call s:CoffeeRun(<line1>, <line2>, <q-args>)
|
||||||
command! -range=% -bang -bar -nargs=* CoffeeLint
|
command! -buffer -range=% -bang -bar -nargs=* CoffeeLint
|
||||||
\ call s:CoffeeLint(<line1>, <line2>, <q-bang>, <q-args>)
|
\ call s:CoffeeLint(<line1>, <line2>, <q-bang>, <q-args>)
|
||||||
|
|||||||
421
ftplugin/csv.vim
421
ftplugin/csv.vim
@@ -1,16 +1,30 @@
|
|||||||
" Filetype plugin for editing CSV files. "{{{1
|
" Filetype plugin for editing CSV files. "{{{1
|
||||||
" Author: Christian Brabandt <cb@256bit.org>
|
" Author: Christian Brabandt <cb@256bit.org>
|
||||||
" Version: 0.29
|
" Version: 0.30
|
||||||
" Script: http://www.vim.org/scripts/script.php?script_id=2830
|
" Script: http://www.vim.org/scripts/script.php?script_id=2830
|
||||||
" License: VIM License
|
" License: VIM License
|
||||||
" Last Change: Wed, 14 Aug 2013 22:05:39 +0200
|
" Last Change: Thu, 27 Mar 2014 23:28:40 +0100
|
||||||
" Documentation: see :help ft-csv.txt
|
" Documentation: see :help ft-csv.txt
|
||||||
" GetLatestVimScripts: 2830 28 :AutoInstall: csv.vim
|
" GetLatestVimScripts: 2830 29 :AutoInstall: csv.vim
|
||||||
"
|
"
|
||||||
" Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667
|
" Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667
|
||||||
" though, implementation differs.
|
" though, implementation differs.
|
||||||
|
|
||||||
" Plugin folklore "{{{2
|
" Plugin folklore "{{{2
|
||||||
|
fu! <sid>DetermineSID()
|
||||||
|
let s:SID = matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_DetermineSID$')
|
||||||
|
endfu
|
||||||
|
call s:DetermineSID()
|
||||||
|
delf s:DetermineSID
|
||||||
|
|
||||||
|
fu! CSVArrangeCol(first, last, bang, limit) range "{{{2
|
||||||
|
if &ft =~? 'csv'
|
||||||
|
call <sid>ArrangeCol(a:first, a:last, a:bang, a:limit)
|
||||||
|
else
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
endfu
|
||||||
|
|
||||||
if v:version < 700 || exists('b:did_ftplugin')
|
if v:version < 700 || exists('b:did_ftplugin')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
@@ -20,7 +34,6 @@ let s:cpo_save = &cpo
|
|||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
" Function definitions: "{{{2
|
" Function definitions: "{{{2
|
||||||
"
|
|
||||||
" Script specific functions "{{{2
|
" Script specific functions "{{{2
|
||||||
fu! <sid>Warn(mess) "{{{3
|
fu! <sid>Warn(mess) "{{{3
|
||||||
echohl WarningMsg
|
echohl WarningMsg
|
||||||
@@ -136,7 +149,8 @@ fu! <sid>Init(startline, endline) "{{{3
|
|||||||
\ . "| unlet! b:csv_fixed_width b:csv_list b:col_width"
|
\ . "| unlet! b:csv_fixed_width b:csv_list b:col_width"
|
||||||
\ . "| unlet! b:csv_SplitWindow b:csv_headerline"
|
\ . "| unlet! b:csv_SplitWindow b:csv_headerline"
|
||||||
\ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"
|
\ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"
|
||||||
\. " | unlet! b:browsefilter b:csv_start b:csv_end"
|
\. " | unlet! b:browsefilter b:csv_cmt"
|
||||||
|
\. " | unlet! b:csv_arrange_leftalign"
|
||||||
|
|
||||||
" Delete all functions
|
" Delete all functions
|
||||||
" disabled currently, because otherwise when switching ft
|
" disabled currently, because otherwise when switching ft
|
||||||
@@ -159,7 +173,7 @@ fu! <sid>Init(startline, endline) "{{{3
|
|||||||
" \ delf <sid>PrepareFolding | delf <sid>OutputFilters |
|
" \ delf <sid>PrepareFolding | delf <sid>OutputFilters |
|
||||||
" \ delf <sid>SortFilter | delf <sid>GetColumn |
|
" \ delf <sid>SortFilter | delf <sid>GetColumn |
|
||||||
" \ delf <sid>RemoveLastItem | delf <sid>DisableFolding |
|
" \ delf <sid>RemoveLastItem | delf <sid>DisableFolding |
|
||||||
" \ delf <sid>GetSID | delf <sid>CheckHeaderLine |
|
" \ delf <sid>CheckHeaderLine |
|
||||||
" \ delf <sid>AnalyzeColumn | delf <sid>Vertfold |
|
" \ delf <sid>AnalyzeColumn | delf <sid>Vertfold |
|
||||||
" \ delf <sid>InitCSVFixedWidth | delf <sid>LocalCmd |
|
" \ delf <sid>InitCSVFixedWidth | delf <sid>LocalCmd |
|
||||||
" \ delf <sid>CommandDefinitions | delf <sid>NumberFormat |
|
" \ delf <sid>CommandDefinitions | delf <sid>NumberFormat |
|
||||||
@@ -168,6 +182,7 @@ fu! <sid>Init(startline, endline) "{{{3
|
|||||||
" \ delf <sid>SaveOptions | delf <sid>CheckDuplicates |
|
" \ delf <sid>SaveOptions | delf <sid>CheckDuplicates |
|
||||||
" \ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |
|
" \ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |
|
||||||
" \ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn
|
" \ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn
|
||||||
|
" \ delf <sid>SetupQuitPre() | delf CSV_CloseBuffer
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>LocalSettings(type) "{{{3
|
fu! <sid>LocalSettings(type) "{{{3
|
||||||
@@ -237,35 +252,6 @@ fu! <sid>DoAutoCommands() "{{{3
|
|||||||
let b:undo_ftplugin .= '| exe "sil! au! CSV_HI CursorMoved <buffer> "'
|
let b:undo_ftplugin .= '| exe "sil! au! CSV_HI CursorMoved <buffer> "'
|
||||||
let b:undo_ftplugin .= '| exe "sil! aug! CSV_HI" |exe "sil! HiColumn!"'
|
let b:undo_ftplugin .= '| exe "sil! aug! CSV_HI" |exe "sil! HiColumn!"'
|
||||||
|
|
||||||
" Visually arrange columns when opening a csv file
|
|
||||||
if exists("g:csv_autocmd_arrange") &&
|
|
||||||
\ !exists("#CSV_Edit#BufReadPost")
|
|
||||||
aug CSV_Edit
|
|
||||||
au!
|
|
||||||
au BufReadPost,BufWritePost *.csv,*.dat :sil %ArrangeColumn
|
|
||||||
au BufWritePre *.csv,*.dat :sil %UnArrangeColumn
|
|
||||||
aug end
|
|
||||||
elseif exists("#CSV_Edit#BufReadPost")
|
|
||||||
aug CSV_Edit
|
|
||||||
au!
|
|
||||||
aug end
|
|
||||||
aug! CSV_Edit
|
|
||||||
endif
|
|
||||||
" undo autocommand:
|
|
||||||
let b:undo_ftplugin .= '| exe "sil! au! CSV_Edit "'
|
|
||||||
let b:undo_ftplugin .= '| exe "sil! aug! CSV_Edit"'
|
|
||||||
|
|
||||||
" if !exists("#CSV_ColorScheme#ColorScheme")
|
|
||||||
" " Make sure, syntax highlighting is applied
|
|
||||||
" " after changing the colorscheme
|
|
||||||
" augroup CSV_ColorScheme
|
|
||||||
" au!
|
|
||||||
" au ColorScheme *.csv,*.dat,*.tsv,*.tab do Syntax
|
|
||||||
" augroup end
|
|
||||||
" endif
|
|
||||||
" let b:undo_ftplugin .= '| exe "sil! au! CSV_ColorScheme "'
|
|
||||||
" let b:undo_ftplugin .= '| exe "sil! aug! CSV_ColorScheme"'
|
|
||||||
|
|
||||||
if has("gui_running") && !exists("#CSV_Menu#FileType")
|
if has("gui_running") && !exists("#CSV_Menu#FileType")
|
||||||
augroup CSV_Menu
|
augroup CSV_Menu
|
||||||
au!
|
au!
|
||||||
@@ -274,8 +260,6 @@ fu! <sid>DoAutoCommands() "{{{3
|
|||||||
au BufLeave <buffer> call <sid>Menu(0) " disable
|
au BufLeave <buffer> call <sid>Menu(0) " disable
|
||||||
au BufNewFile,BufNew * call <sid>Menu(0)
|
au BufNewFile,BufNew * call <sid>Menu(0)
|
||||||
augroup END
|
augroup END
|
||||||
"let b:undo_ftplugin .= '| sil! amenu disable CSV'
|
|
||||||
let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'
|
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
@@ -344,11 +328,6 @@ fu! <sid>SearchColumn(arg) "{{{3
|
|||||||
throw "E684"
|
throw "E684"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" let colnr=arglist[0]
|
|
||||||
" let pat=substitute(arglist[1], '^\(.\)\(.*\)\1$', '\2', '')
|
|
||||||
" if pat == arglist[1]
|
|
||||||
" throw "E684"
|
|
||||||
" endif
|
|
||||||
endif
|
endif
|
||||||
"catch /^Vim\%((\a\+)\)\=:E684/
|
"catch /^Vim\%((\a\+)\)\=:E684/
|
||||||
catch /E684/ " catch error index out of bounds
|
catch /E684/ " catch error index out of bounds
|
||||||
@@ -360,7 +339,7 @@ fu! <sid>SearchColumn(arg) "{{{3
|
|||||||
call <SID>Warn("There exists no column " . colnr)
|
call <SID>Warn("There exists no column " . colnr)
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
let @/ = <sid>GetPat(colnr, maxcolnr, pat)
|
let @/ = <sid>GetPat(colnr, maxcolnr, '\%('.pat. '\)')
|
||||||
try
|
try
|
||||||
norm! n
|
norm! n
|
||||||
catch /^Vim\%((\a\+)\)\=:E486/
|
catch /^Vim\%((\a\+)\)\=:E486/
|
||||||
@@ -479,7 +458,7 @@ fu! <sid>GetDelimiter(first, last) "{{{3
|
|||||||
if !exists("b:csv_fixed_width_cols")
|
if !exists("b:csv_fixed_width_cols")
|
||||||
let _cur = getpos('.')
|
let _cur = getpos('.')
|
||||||
let _s = @/
|
let _s = @/
|
||||||
let Delim= {0: ';', 1: ',', 2: '|', 3: ' '}
|
let Delim= {0: ';', 1: ',', 2: '|', 3: ' ', 4: '\^'}
|
||||||
let temp = {}
|
let temp = {}
|
||||||
" :silent :s does not work with lazyredraw
|
" :silent :s does not work with lazyredraw
|
||||||
let _lz = &lz
|
let _lz = &lz
|
||||||
@@ -513,7 +492,13 @@ fu! <sid>WColumn(...) "{{{3
|
|||||||
" Return on which column the cursor is
|
" Return on which column the cursor is
|
||||||
let _cur = getpos('.')
|
let _cur = getpos('.')
|
||||||
if !exists("b:csv_fixed_width_cols")
|
if !exists("b:csv_fixed_width_cols")
|
||||||
let line=getline('.')
|
if line('.') > 1 && mode('') != 'n'
|
||||||
|
" in insert mode, get line from above, just in case the current
|
||||||
|
" line is empty
|
||||||
|
let line = getline(line('.')-1)
|
||||||
|
else
|
||||||
|
let line=getline('.')
|
||||||
|
endif
|
||||||
" move cursor to end of field
|
" move cursor to end of field
|
||||||
"call search(b:col, 'ec', line('.'))
|
"call search(b:col, 'ec', line('.'))
|
||||||
call search(b:col, 'ec')
|
call search(b:col, 'ec')
|
||||||
@@ -521,12 +506,16 @@ fu! <sid>WColumn(...) "{{{3
|
|||||||
let fields=(split(line[0:end],b:col.'\zs'))
|
let fields=(split(line[0:end],b:col.'\zs'))
|
||||||
let ret=len(fields)
|
let ret=len(fields)
|
||||||
if exists("a:1") && a:1 > 0
|
if exists("a:1") && a:1 > 0
|
||||||
" bang attribute
|
" bang attribute: Try to get the column name
|
||||||
let head = split(getline(1),b:col.'\zs')
|
let head = split(getline(1),b:col.'\zs')
|
||||||
" remove preceeding whitespace
|
" remove preceeding whitespace
|
||||||
let ret = substitute(head[ret-1], '^\s\+', '', '')
|
if len(head) < ret
|
||||||
" remove delimiter
|
call <sid>Warn("Header has no field ". ret)
|
||||||
let ret = substitute(ret, b:delimiter. '$', '', '')
|
else
|
||||||
|
let ret = substitute(head[ret-1], '^\s\+', '', '')
|
||||||
|
" remove delimiter
|
||||||
|
let ret = substitute(ret, b:delimiter. '$', '', '')
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let temp=getpos('.')[2]
|
let temp=getpos('.')[2]
|
||||||
@@ -629,7 +618,7 @@ fu! <sid>ColWidth(colnr) "{{{3
|
|||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>ArrangeCol(first, last, bang) range "{{{3
|
fu! <sid>ArrangeCol(first, last, bang, limit) range "{{{3
|
||||||
"TODO: Why doesn't that work?
|
"TODO: Why doesn't that work?
|
||||||
" is this because of the range flag?
|
" is this because of the range flag?
|
||||||
" It's because of the way, Vim works with
|
" It's because of the way, Vim works with
|
||||||
@@ -641,11 +630,16 @@ fu! <sid>ArrangeCol(first, last, bang) range "{{{3
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
let cur=winsaveview()
|
let cur=winsaveview()
|
||||||
if a:bang || !exists("b:col_width")
|
if a:bang
|
||||||
if a:bang
|
if a:bang
|
||||||
" Force recalculating the Column width
|
" Force recalculating the Column width
|
||||||
unlet! b:csv_list
|
unlet! b:csv_list b:col_width
|
||||||
endif
|
endif
|
||||||
|
elseif a:limit > -1 && a:limit < getfsize(fnamemodify(bufname(''), ':p'))
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("b:col_width")
|
||||||
" Force recalculation of Column width
|
" Force recalculation of Column width
|
||||||
call <sid>CalculateColumnWidth()
|
call <sid>CalculateColumnWidth()
|
||||||
endif
|
endif
|
||||||
@@ -658,7 +652,7 @@ fu! <sid>ArrangeCol(first, last, bang) range "{{{3
|
|||||||
else
|
else
|
||||||
let ro = 0
|
let ro = 0
|
||||||
endif
|
endif
|
||||||
exe a:first . ',' . a:last .'s/' . (b:col) .
|
exe "sil". a:first . ',' . a:last .'s/' . (b:col) .
|
||||||
\ '/\=<SID>Columnize(submatch(0))/' . (&gd ? '' : 'g')
|
\ '/\=<SID>Columnize(submatch(0))/' . (&gd ? '' : 'g')
|
||||||
" Clean up variables, that were only needed for <sid>Columnize() function
|
" Clean up variables, that were only needed for <sid>Columnize() function
|
||||||
unlet! s:columnize_count s:max_cols s:prev_line
|
unlet! s:columnize_count s:max_cols s:prev_line
|
||||||
@@ -693,7 +687,11 @@ endfu
|
|||||||
|
|
||||||
fu! <sid>UnArrangeCol(match) "{{{3
|
fu! <sid>UnArrangeCol(match) "{{{3
|
||||||
" Strip leading white space, also trims empty records:
|
" Strip leading white space, also trims empty records:
|
||||||
return substitute(a:match, '^\s\+', '', '')
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
return substitute(a:match, '\s\+\ze'. b:delimiter. '\?$', '', '')
|
||||||
|
else
|
||||||
|
return substitute(a:match, '^\s\+', '', '')
|
||||||
|
endif
|
||||||
" only strip leading white space, if a non-white space follows:
|
" only strip leading white space, if a non-white space follows:
|
||||||
"return substitute(a:match, '^\s\+\ze\S', '', '')
|
"return substitute(a:match, '^\s\+\ze\S', '', '')
|
||||||
endfu
|
endfu
|
||||||
@@ -741,9 +739,18 @@ fu! <sid>Columnize(field) "{{{3
|
|||||||
let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)
|
let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)
|
||||||
|
|
||||||
let s:columnize_count += 1
|
let s:columnize_count += 1
|
||||||
|
let has_delimiter = (a:field =~# b:delimiter.'$')
|
||||||
if v:version > 703 || v:version == 703 && has("patch713")
|
if v:version > 703 || v:version == 703 && has("patch713")
|
||||||
" printf knows about %S (e.g. can handle char length
|
" printf knows about %S (e.g. can handle char length
|
||||||
return printf("%*S", width+1 , a:field)
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
" left-align content
|
||||||
|
return printf("%-*S%s", width+1 ,
|
||||||
|
\ (has_delimiter ?
|
||||||
|
\ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||||
|
\ (has_delimiter ? b:delimiter : ''))
|
||||||
|
else
|
||||||
|
return printf("%*S", width+1 , a:field)
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
" printf only handles bytes
|
" printf only handles bytes
|
||||||
if !exists("g:csv_no_multibyte") &&
|
if !exists("g:csv_no_multibyte") &&
|
||||||
@@ -765,7 +772,14 @@ fu! <sid>Columnize(field) "{{{3
|
|||||||
" Column has correct length, don't use printf()
|
" Column has correct length, don't use printf()
|
||||||
return a:field
|
return a:field
|
||||||
else
|
else
|
||||||
return printf("%*s", width , a:field)
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
" left-align content
|
||||||
|
return printf("%-*s%s", width,
|
||||||
|
\ (has_delimiter ? matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||||
|
\ (has_delimiter ? b:delimiter : ''))
|
||||||
|
else
|
||||||
|
return printf("%*s", width , a:field)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endfun
|
endfun
|
||||||
@@ -778,33 +792,30 @@ fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
|||||||
else
|
else
|
||||||
if a:colnr >= len(b:csv_fixed_width_cols)
|
if a:colnr >= len(b:csv_fixed_width_cols)
|
||||||
" Get last column
|
" Get last column
|
||||||
let pat='\%' . b:csv_fixed_width_cols[-1] . 'c.*'
|
let pat='\%' . b:csv_fixed_width_cols[-1] . 'v.*'
|
||||||
else
|
else
|
||||||
let pat='\%' . b:csv_fixed_width_cols[(a:colnr - 1)] .
|
let pat='\%' . b:csv_fixed_width_cols[(a:colnr - 1)] .
|
||||||
\ 'c.\{-}\%' . b:csv_fixed_width_cols[a:colnr] . 'c'
|
\ 'c.\{-}\%' . b:csv_fixed_width_cols[a:colnr] . 'v'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
elseif !exists("b:csv_fixed_width_cols")
|
elseif !exists("b:csv_fixed_width_cols")
|
||||||
let pat=b:col
|
let pat=b:col
|
||||||
else
|
else
|
||||||
let pat='\%' . b:csv_fixed_width_cols[0] . 'c.\{-}' .
|
let pat='\%' . b:csv_fixed_width_cols[0] . 'v.\{-}' .
|
||||||
\ (len(b:csv_fixed_width_cols) > 1 ?
|
\ (len(b:csv_fixed_width_cols) > 1 ?
|
||||||
\ '\%' . b:csv_fixed_width_cols[1] . 'c' :
|
\ '\%' . b:csv_fixed_width_cols[1] . 'v' :
|
||||||
\ '')
|
\ '')
|
||||||
endif
|
endif
|
||||||
return pat . (a:zs_flag ? '\zs' : '')
|
return pat . (a:zs_flag ? '\zs' : '')
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>SetupQuitPre() "{{{3
|
fu! <sid>SetupQuitPre(window) "{{{3
|
||||||
" Setup QuitPre autocommand to quit cleanly
|
" Setup QuitPre autocommand to quit cleanly
|
||||||
if exists("##QuitPre")
|
if exists("##QuitPre")
|
||||||
let bufnr=bufnr('')
|
|
||||||
noa wincmd p
|
|
||||||
augroup CSV_QuitPre
|
augroup CSV_QuitPre
|
||||||
au!
|
au!
|
||||||
exe "au QuitPre * ". bufnr. "bw"
|
exe "au QuitPre * call CSV_CloseBuffer(".winbufnr(a:window).")"
|
||||||
augroup end
|
augroup end
|
||||||
noa wincmd p
|
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
@@ -839,7 +850,7 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
"let b:col=b
|
"let b:col=b
|
||||||
"setl syntax=csv
|
"setl syntax=csv
|
||||||
sil! doautocmd FileType csv
|
sil! doautocmd FileType csv
|
||||||
1
|
noa 1
|
||||||
exe "resize" . lines
|
exe "resize" . lines
|
||||||
setl scrollopt=hor winfixheight nowrap
|
setl scrollopt=hor winfixheight nowrap
|
||||||
"let &l:stl=repeat(' ', winwidth(0))
|
"let &l:stl=repeat(' ', winwidth(0))
|
||||||
@@ -848,31 +859,31 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
let &l:fdc = _fdc
|
let &l:fdc = _fdc
|
||||||
else
|
else
|
||||||
setl scrollopt=ver scrollbind
|
setl scrollopt=ver scrollbind
|
||||||
0
|
noa 0
|
||||||
let a=<sid>CopyCol('',1)
|
let a=<sid>CopyCol('',1,a:lines)
|
||||||
" Force recalculating columns width
|
|
||||||
unlet! b:csv_list
|
|
||||||
try
|
|
||||||
let width = <sid>ColWidth(1)
|
|
||||||
catch /ColWidth/
|
|
||||||
call <sid>Warn("Error: getting Column Width, using default!")
|
|
||||||
endtry
|
|
||||||
" Does it make sense to use the preview window?
|
" Does it make sense to use the preview window?
|
||||||
"vert sil! pedit |wincmd w | enew!
|
"vert sil! pedit |wincmd w | enew!
|
||||||
above vsp +enew
|
above vsp +enew
|
||||||
call append(0, a)
|
call append(0, a)
|
||||||
$d _
|
$d _
|
||||||
sil %s/.*/\=printf("%.*s", width, submatch(0))/eg
|
let b:col = b
|
||||||
0
|
sil! doautocmd FileType csv
|
||||||
exe "vert res" width
|
" remove leading delimiter
|
||||||
let b:col=b
|
exe "sil :%s/^". b:delimiter. "//e"
|
||||||
|
" remove trailing delimiter
|
||||||
|
exe "sil :%s/". b:delimiter. "\s*$//e"
|
||||||
|
syn clear
|
||||||
|
noa 0
|
||||||
|
let b:csv_SplitWindow = winnr()
|
||||||
|
sil :call <sid>ArrangeCol(1,line('$'), 1, -1)
|
||||||
|
exe "vert res" . len(split(getline(1), '\zs'))
|
||||||
call matchadd("CSVHeaderLine", b:col)
|
call matchadd("CSVHeaderLine", b:col)
|
||||||
setl scrollopt=ver winfixwidth
|
setl scrollopt=ver winfixwidth
|
||||||
endif
|
endif
|
||||||
call <sid>SetupQuitPre()
|
call <sid>SetupQuitPre(winnr())
|
||||||
let win = winnr()
|
let win = winnr()
|
||||||
setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted
|
setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted
|
||||||
wincmd p
|
noa wincmd p
|
||||||
let b:csv_SplitWindow = win
|
let b:csv_SplitWindow = win
|
||||||
aug CSV_Preview
|
aug CSV_Preview
|
||||||
au!
|
au!
|
||||||
@@ -891,7 +902,12 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
let &sbo = _sbo
|
let &sbo = _sbo
|
||||||
endif
|
endif
|
||||||
setl noscrollbind
|
setl noscrollbind
|
||||||
wincmd c
|
try
|
||||||
|
wincmd c
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E444/ " cannot close last window
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E517/ " buffer already wiped
|
||||||
|
" no-op
|
||||||
|
endtry
|
||||||
"pclose!
|
"pclose!
|
||||||
unlet! b:csv_SplitWindow
|
unlet! b:csv_SplitWindow
|
||||||
aug CSV_Preview
|
aug CSV_Preview
|
||||||
@@ -910,8 +926,11 @@ fu! <sid>SplitHeaderToggle(hor) "{{{3
|
|||||||
endfu
|
endfu
|
||||||
|
|
||||||
" TODO: from here on add logic for fixed-width csv files!
|
" TODO: from here on add logic for fixed-width csv files!
|
||||||
fu! <sid>MoveCol(forward, line) "{{{3
|
fu! <sid>MoveCol(forward, line, ...) "{{{3
|
||||||
" Move cursor position upwards/downwards left/right
|
" Move cursor position upwards/downwards left/right
|
||||||
|
" a:1 is there to have some mappings move in the same
|
||||||
|
" direction but still stop at a different position
|
||||||
|
" see :h csv-mapping-H
|
||||||
let colnr=<SID>WColumn()
|
let colnr=<SID>WColumn()
|
||||||
let maxcol=<SID>MaxColumns()
|
let maxcol=<SID>MaxColumns()
|
||||||
let cpos=getpos('.')[2]
|
let cpos=getpos('.')[2]
|
||||||
@@ -973,7 +992,8 @@ fu! <sid>MoveCol(forward, line) "{{{3
|
|||||||
elseif a:forward < 0
|
elseif a:forward < 0
|
||||||
if colnr > 0 || cpos == spos
|
if colnr > 0 || cpos == spos
|
||||||
call search('.\ze'.pat, 'bWe')
|
call search('.\ze'.pat, 'bWe')
|
||||||
while getpos('.')[2] == cpos
|
let stime=localtime()
|
||||||
|
while getpos('.')[2] == cpos && <sid>Timeout(stime) " make sure loop terminates
|
||||||
" cursor didn't move, move cursor one cell to the left
|
" cursor didn't move, move cursor one cell to the left
|
||||||
norm! h
|
norm! h
|
||||||
if colnr > 0
|
if colnr > 0
|
||||||
@@ -982,6 +1002,17 @@ fu! <sid>MoveCol(forward, line) "{{{3
|
|||||||
norm! 0
|
norm! 0
|
||||||
endif
|
endif
|
||||||
endw
|
endw
|
||||||
|
if (exists("a:1") && a:1)
|
||||||
|
" H also stops at the beginning of the content
|
||||||
|
" of a field.
|
||||||
|
let epos = getpos('.')
|
||||||
|
if getline('.')[col('.')-1] == ' '
|
||||||
|
call search('\S', 'W', line('.'))
|
||||||
|
if getpos('.')[2] > spos
|
||||||
|
call setpos('.', epos)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
norm! 0
|
norm! 0
|
||||||
endif
|
endif
|
||||||
@@ -1033,23 +1064,29 @@ fu! <sid>Sort(bang, line1, line2, colnr) range "{{{3
|
|||||||
if !exists("b:csv_fixed_width_cols")
|
if !exists("b:csv_fixed_width_cols")
|
||||||
let pat= '^' . <SID>GetColPat(col-1,1) . b:col
|
let pat= '^' . <SID>GetColPat(col-1,1) . b:col
|
||||||
else
|
else
|
||||||
let pat= '^' . <SID>GetColPat(col,0)
|
let pat= <SID>GetColPat(col,0)
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let pat= '^' . <SID>GetColPat(col,0)
|
let pat= '^' . <SID>GetColPat(col,0)
|
||||||
endif
|
endif
|
||||||
exe a:line1 ',' a:line2 . "sort" . (a:bang ? '!' : '') .
|
exe a:line1. ','. a:line2. "sort". (a:bang ? '!' : '') .
|
||||||
\' r ' . (numeric ? 'n' : '') . ' /' . pat . '/'
|
\' r ' . (numeric ? 'n' : '') . ' /' . pat . '/'
|
||||||
call winrestview(wsv)
|
call winrestview(wsv)
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
fu! <sid>CopyCol(reg, col) "{{{3
|
fu! <sid>CopyCol(reg, col, cnt) "{{{3
|
||||||
" Return Specified Column into register reg
|
" Return Specified Column into register reg
|
||||||
let col = a:col == "0" ? <sid>WColumn() : a:col+0
|
let col = a:col == "0" ? <sid>WColumn() : a:col+0
|
||||||
let mcol = <sid>MaxColumns()
|
let mcol = <sid>MaxColumns()
|
||||||
if col == '$' || col > mcol
|
if col == '$' || col > mcol
|
||||||
let col = mcol
|
let col = mcol
|
||||||
endif
|
endif
|
||||||
|
" The number of columns to return
|
||||||
|
" by default (value of zero, will only return that specific column)
|
||||||
|
let cnt_cols = col - 1
|
||||||
|
if !empty(a:cnt) && a:cnt > 0 && col + a:cnt <= mcol
|
||||||
|
let cnt_cols = col + a:cnt - 1
|
||||||
|
endif
|
||||||
let a = []
|
let a = []
|
||||||
" Don't get lines, that are currently filtered away
|
" Don't get lines, that are currently filtered away
|
||||||
if !exists("b:csv_filter") || empty(b:csv_filter)
|
if !exists("b:csv_filter") || empty(b:csv_filter)
|
||||||
@@ -1068,9 +1105,12 @@ fu! <sid>CopyCol(reg, col) "{{{3
|
|||||||
call filter(a, 'v:val !~ pat')
|
call filter(a, 'v:val !~ pat')
|
||||||
|
|
||||||
if !exists("b:csv_fixed_width_cols")
|
if !exists("b:csv_fixed_width_cols")
|
||||||
call map(a, 'split(v:val, ''^'' . b:col . ''\zs'')[col-1]')
|
call map(a, 'split(v:val, ''^'' . b:col . ''\zs'')[col-1:cnt_cols]')
|
||||||
else
|
else
|
||||||
call map(a, 'matchstr(v:val, <sid>GetColPat(col, 0))')
|
call map(a, 'matchstr(v:val, <sid>GetColPat(col, 0)).*<sid>GetColPat(col+cnt_cols, 0)')
|
||||||
|
endif
|
||||||
|
if type(a[0]) == type([])
|
||||||
|
call map(a, 'join(v:val, "")')
|
||||||
endif
|
endif
|
||||||
if a:reg =~ '[-"0-9a-zA-Z*+]'
|
if a:reg =~ '[-"0-9a-zA-Z*+]'
|
||||||
"exe ':let @' . a:reg . ' = "' . join(a, "\n") . '"'
|
"exe ':let @' . a:reg . ' = "' . join(a, "\n") . '"'
|
||||||
@@ -1159,8 +1199,10 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
|
|||||||
if exists("a:1")
|
if exists("a:1")
|
||||||
if a:1 == '$' || a:1 >= max
|
if a:1 == '$' || a:1 >= max
|
||||||
let pos = max
|
let pos = max
|
||||||
elseif a:1 <= 0
|
elseif a:1 < 0
|
||||||
let pos = col
|
let pos = col
|
||||||
|
else
|
||||||
|
let pos = a:1
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let pos = col
|
let pos = col
|
||||||
@@ -1168,7 +1210,7 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
|
|||||||
let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1)
|
let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1)
|
||||||
|
|
||||||
" translate 1 based columns into zero based list index
|
" translate 1 based columns into zero based list index
|
||||||
let pos -= 1
|
"let pos -= 1
|
||||||
let col -= 1
|
let col -= 1
|
||||||
|
|
||||||
if pos == 0
|
if pos == 0
|
||||||
@@ -1222,8 +1264,8 @@ fu! <sid>SumColumn(list) "{{{3
|
|||||||
if empty(item)
|
if empty(item)
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
let nr = matchstr(item, '\d\(.*\d\)\?$')
|
let nr = matchstr(item, '-\?\d\(.*\d\)\?$')
|
||||||
let format1 = '^\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
|
let format1 = '^-\?\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
|
||||||
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
|
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
|
||||||
try
|
try
|
||||||
let nr = substitute(nr, format1, '', '')
|
let nr = substitute(nr, format1, '', '')
|
||||||
@@ -1432,12 +1474,11 @@ fu! <sid>PrepareFolding(add, match) "{{{3
|
|||||||
" for val in sort(values(b:csv_filter), '<sid>SortFilter')
|
" for val in sort(values(b:csv_filter), '<sid>SortFilter')
|
||||||
" let @/ .= val.pat . (val.id == s:filter_count ? '' : '\&')
|
" let @/ .= val.pat . (val.id == s:filter_count ? '' : '\&')
|
||||||
" endfor
|
" endfor
|
||||||
let sid = <sid>GetSID()
|
|
||||||
|
|
||||||
" Fold settings:
|
" Fold settings:
|
||||||
call <sid>LocalSettings('fold')
|
call <sid>LocalSettings('fold')
|
||||||
" Don't put spaces between the arguments!
|
" Don't put spaces between the arguments!
|
||||||
exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'
|
exe 'setl foldexpr=<snr>' . s:SID . '_FoldValue(v:lnum,b:csv_filter)'
|
||||||
|
|
||||||
" Move folded area to the bottom, so there is only on consecutive
|
" Move folded area to the bottom, so there is only on consecutive
|
||||||
" non-folded area
|
" non-folded area
|
||||||
@@ -1485,8 +1526,7 @@ fu! <sid>OutputFilters(bang) "{{{3
|
|||||||
call <sid>Warn("No filters defined currently!")
|
call <sid>Warn("No filters defined currently!")
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
let sid = <sid>GetSID()
|
exe 'setl foldexpr=<snr>' . s:SID . '_FoldValue(v:lnum,b:csv_filter)'
|
||||||
exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
@@ -1532,15 +1572,6 @@ fu! <sid>DisableFolding() "{{{3
|
|||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>GetSID() "{{{3
|
|
||||||
if v:version > 703 || v:version == 703 && has("patch032")
|
|
||||||
return maparg('W', "", "", 1).sid
|
|
||||||
else
|
|
||||||
"return substitute(maparg('W'), '\(<SNR>\d\+\)_', '\1', '')
|
|
||||||
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_GetSID$')
|
|
||||||
endif
|
|
||||||
endfu
|
|
||||||
|
|
||||||
fu! <sid>NumberFormat() "{{{3
|
fu! <sid>NumberFormat() "{{{3
|
||||||
let s:nr_format = [',', '.']
|
let s:nr_format = [',', '.']
|
||||||
if exists("b:csv_thousands_sep")
|
if exists("b:csv_thousands_sep")
|
||||||
@@ -1574,10 +1605,13 @@ fu! <sid>AnalyzeColumn(...) "{{{3
|
|||||||
|
|
||||||
" Initialize s:fold_headerline
|
" Initialize s:fold_headerline
|
||||||
call <sid>CheckHeaderLine()
|
call <sid>CheckHeaderLine()
|
||||||
let data = <sid>CopyCol('', colnr)[s:csv_fold_headerline : -1]
|
let data = <sid>CopyCol('', colnr, '')[s:csv_fold_headerline : -1]
|
||||||
let qty = len(data)
|
let qty = len(data)
|
||||||
let res = {}
|
let res = {}
|
||||||
for item in data
|
for item in data
|
||||||
|
if empty(item)
|
||||||
|
let item = 'NULL'
|
||||||
|
endif
|
||||||
if !get(res, item)
|
if !get(res, item)
|
||||||
let res[item] = 0
|
let res[item] = 0
|
||||||
endif
|
endif
|
||||||
@@ -1585,6 +1619,7 @@ fu! <sid>AnalyzeColumn(...) "{{{3
|
|||||||
endfor
|
endfor
|
||||||
|
|
||||||
let max_items = reverse(sort(values(res)))
|
let max_items = reverse(sort(values(res)))
|
||||||
|
let count_items = keys(res)
|
||||||
if len(max_items) > 5
|
if len(max_items) > 5
|
||||||
call remove(max_items, 5, -1)
|
call remove(max_items, 5, -1)
|
||||||
call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''')
|
call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''')
|
||||||
@@ -1595,9 +1630,9 @@ fu! <sid>AnalyzeColumn(...) "{{{3
|
|||||||
else
|
else
|
||||||
let title="Nr\tCount\tValue"
|
let title="Nr\tCount\tValue"
|
||||||
endif
|
endif
|
||||||
echohl "Title"
|
echohl Title
|
||||||
echo printf("%s", title)
|
echo printf("%s", title)
|
||||||
echohl "Normal"
|
echohl Normal
|
||||||
echo printf("%s", repeat('=', strdisplaywidth(title)))
|
echo printf("%s", repeat('=', strdisplaywidth(title)))
|
||||||
|
|
||||||
let i=1
|
let i=1
|
||||||
@@ -1622,6 +1657,8 @@ fu! <sid>AnalyzeColumn(...) "{{{3
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfor
|
endfor
|
||||||
|
echo printf("%s", repeat('=', strdisplaywidth(title)))
|
||||||
|
echo printf("different values: %d", len(count_items))
|
||||||
unlet max_items
|
unlet max_items
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -1665,62 +1702,59 @@ fu! <sid>InitCSVFixedWidth() "{{{3
|
|||||||
endif
|
endif
|
||||||
" Turn off syntax highlighting
|
" Turn off syntax highlighting
|
||||||
syn clear
|
syn clear
|
||||||
|
let max_len = len(split(getline(1), '\zs'))
|
||||||
let _cc = &l:cc
|
let _cc = &l:cc
|
||||||
let &l:cc = 1
|
let &l:cc = 1
|
||||||
redraw!
|
redraw!
|
||||||
let list = []
|
let Dict = {'1': 1} " first column is always the start of a new column
|
||||||
let tcc = &l:cc
|
let tcc = &l:cc
|
||||||
|
let &l:cc = 1
|
||||||
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
||||||
let char=getchar()
|
let char=getchar()
|
||||||
while 1
|
while 1
|
||||||
if char == "\<Left>" || char == "\<Right>"
|
if char == "\<Left>" || char == "\<Right>"
|
||||||
let tcc = eval('tcc'.(char=="\<Left>" ? '-' : '+').'1')
|
let tcc = eval('tcc'.(char=="\<Left>" ? '-' : '+').'1')
|
||||||
|
if tcc < 0
|
||||||
|
let tcc=0
|
||||||
|
elseif tcc > max_len
|
||||||
|
let tcc = max_len
|
||||||
|
endif
|
||||||
elseif char == "\<Space>" || char == 32 " Space
|
elseif char == "\<Space>" || char == 32 " Space
|
||||||
call add(list, tcc)
|
let Dict[tcc] = 1
|
||||||
elseif char == "\<BS>" || char == 127
|
elseif char == "\<BS>" || char == 127
|
||||||
call remove(list, -1)
|
try
|
||||||
|
call remove(Dict, reverse(sort(keys(Dict)))[0])
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E\(\%(716\)\|\%(684\)\)/ " Dict or List empty
|
||||||
|
break
|
||||||
|
endtry
|
||||||
elseif char == "\<ESC>" || char == 27
|
elseif char == "\<ESC>" || char == 27
|
||||||
let &l:cc=_cc
|
let &l:cc=_cc
|
||||||
redraw!
|
redraw!
|
||||||
return
|
return
|
||||||
|
elseif char == "\<CR>" || char == "\n" || char == "\r" " Enter
|
||||||
|
let Dict[tcc] = 1
|
||||||
|
break
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
let &l:cc=tcc . (!empty(list)? ',' . join(list, ','):'')
|
let &l:cc=tcc . (!empty(keys(Dict))? ',' . join(keys(Dict), ','):'')
|
||||||
redraw!
|
redraw!
|
||||||
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
||||||
let char=getchar()
|
let char=getchar()
|
||||||
endw
|
endw
|
||||||
if tcc > 0
|
|
||||||
call add(list,tcc)
|
|
||||||
endif
|
|
||||||
let b:csv_fixed_width_cols=[]
|
let b:csv_fixed_width_cols=[]
|
||||||
let tcc=0
|
let tcc=0
|
||||||
if !empty(list)
|
let b:csv_fixed_width_cols = sort(keys(Dict), "<sid>SortList")
|
||||||
call Break()
|
let b:csv_fixed_width = join(sort(keys(Dict), "<sid>SortList"), ',')
|
||||||
" Remove duplicate entries
|
call <sid>Init(1, line('$'))
|
||||||
for val in sort(list, "<sid>SortList")
|
|
||||||
if val==tcc
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
call add(b:csv_fixed_width_cols, val)
|
|
||||||
let tcc=val
|
|
||||||
endfor
|
|
||||||
let b:csv_fixed_width=join(sort(b:csv_fixed_width_cols,
|
|
||||||
\ "<sid>SortList"), ',')
|
|
||||||
call <sid>Init(1, line('$'))
|
|
||||||
endif
|
|
||||||
let &l:cc=_cc
|
let &l:cc=_cc
|
||||||
redraw!
|
redraw!
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! Break()
|
|
||||||
return
|
|
||||||
endfu
|
|
||||||
|
|
||||||
fu! <sid>NewRecord(line1, line2, count) "{{{3
|
fu! <sid>NewRecord(line1, line2, count) "{{{3
|
||||||
if a:count =~ "\D"
|
if a:count =~ "\D"
|
||||||
call <sid>WarningMsg("Invalid count specified")
|
call <sid>Warn("Invalid count specified")
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -1757,39 +1791,52 @@ fu! <sid>MoveOver(outer) "{{{3
|
|||||||
" Move over a field
|
" Move over a field
|
||||||
" a:outer means include the delimiter
|
" a:outer means include the delimiter
|
||||||
let last = 0
|
let last = 0
|
||||||
let mode = a:outer
|
let outer_field = a:outer
|
||||||
|
let cur_field = <sid>WColumn()
|
||||||
|
let _wsv = winsaveview()
|
||||||
|
|
||||||
if <sid>WColumn() == <sid>MaxColumns()
|
if cur_field == <sid>MaxColumns()
|
||||||
let last = 1
|
let last = 1
|
||||||
if !mode && getline('.')[-1:] != b:delimiter
|
if !outer_field && getline('.')[-1:] != b:delimiter
|
||||||
" No trailing delimiter, so inner == outer
|
" No trailing delimiter, so inner == outer
|
||||||
let mode = 1
|
let outer_field = 1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" Use the mapped key
|
" Move 1 column backwards, unless the cursor is in the first column
|
||||||
exe ":sil! norm E"
|
" or in front of a delimiter
|
||||||
|
if matchstr(getline('.'), '.\%'.virtcol('.').'v') != b:delimiter && virtcol('.') > 1
|
||||||
|
call <sid>MoveCol(-1, line('.'))
|
||||||
|
endif
|
||||||
|
" if cur_field != <sid>WColumn()
|
||||||
|
" cursor was at the beginning of the field, and moved back to the
|
||||||
|
" previous field, move back to original position
|
||||||
|
" call cursor(_wsv.lnum, _wsv.col)
|
||||||
|
" endif
|
||||||
let _s = @/
|
let _s = @/
|
||||||
if last
|
if last
|
||||||
exe "sil! norm! /" . b:col . "\<cr>v$h" . (mode ? "" : "\<Left>")
|
exe "sil! norm! v$h" . (outer_field ? "" : "h") . (&sel ==# 'exclusive' ? "l" : '')
|
||||||
else
|
else
|
||||||
exe "sil! norm! /" . b:col . "\<cr>vn\<Left>" . (mode ? "" : "\<Left>")
|
exe "sil! norm! v/." . b:col . "\<cr>h" . (outer_field ? "" : "h") . (&sel ==# 'exclusive' ? "l" : '')
|
||||||
endif
|
endif
|
||||||
|
let _wsv.col = col('.')-1
|
||||||
|
call winrestview(_wsv)
|
||||||
let @/ = _s
|
let @/ = _s
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>CSVMappings() "{{{3
|
fu! <sid>CSVMappings() "{{{3
|
||||||
call <sid>Map('noremap', 'W', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
call <sid>Map('noremap', 'W', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', '<C-Right>', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', 'L', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
||||||
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0,
|
call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
||||||
\ line(".")-v:count1)<CR>')
|
call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>')
|
||||||
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0,
|
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
|
||||||
\ line(".")+v:count1)<CR>')
|
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
|
||||||
call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1,
|
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>')
|
||||||
\ 1)<CR>')
|
call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>')
|
||||||
call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1,
|
call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1, 1)<CR>')
|
||||||
\ 0)<CR>')
|
call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1, 0)<CR>')
|
||||||
call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0,
|
call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0, 1)<CR>')
|
||||||
\ 1)<CR>')
|
|
||||||
call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr')
|
call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr')
|
||||||
" Text object: Field
|
" Text object: Field
|
||||||
call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>')
|
call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>')
|
||||||
@@ -1806,12 +1853,6 @@ fu! <sid>CSVMappings() "{{{3
|
|||||||
call <sid>Map('nnoremap', '<LocalLeader><CR>', '<CR>')
|
call <sid>Map('nnoremap', '<LocalLeader><CR>', '<CR>')
|
||||||
call <sid>Map('nnoremap', '<LocalLeader><Space>', '<Space>')
|
call <sid>Map('nnoremap', '<LocalLeader><Space>', '<Space>')
|
||||||
call <sid>Map('nnoremap', '<LocalLeader><BS>', '<BS>')
|
call <sid>Map('nnoremap', '<LocalLeader><BS>', '<BS>')
|
||||||
call <sid>Map('map', '<C-Right>', 'W')
|
|
||||||
call <sid>Map('map', '<C-Left>', 'E')
|
|
||||||
call <sid>Map('map', 'H', 'E')
|
|
||||||
call <sid>Map('map', 'L', 'W')
|
|
||||||
call <sid>Map('map', '<Up>', 'K')
|
|
||||||
call <sid>Map('map', '<Down>', 'J')
|
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>CommandDefinitions() "{{{3
|
fu! <sid>CommandDefinitions() "{{{3
|
||||||
@@ -1825,7 +1866,7 @@ fu! <sid>CommandDefinitions() "{{{3
|
|||||||
call <sid>LocalCmd("DeleteColumn", ':call <sid>DeleteColumn(<q-args>)',
|
call <sid>LocalCmd("DeleteColumn", ':call <sid>DeleteColumn(<q-args>)',
|
||||||
\ '-nargs=? -complete=custom,<sid>SortComplete')
|
\ '-nargs=? -complete=custom,<sid>SortComplete')
|
||||||
call <sid>LocalCmd("ArrangeColumn",
|
call <sid>LocalCmd("ArrangeColumn",
|
||||||
\ ':call <sid>ArrangeCol(<line1>, <line2>, <bang>0)',
|
\ ':call <sid>ArrangeCol(<line1>, <line2>, <bang>0, -1)',
|
||||||
\ '-range -bang')
|
\ '-range -bang')
|
||||||
call <sid>LocalCmd("UnArrangeColumn",
|
call <sid>LocalCmd("UnArrangeColumn",
|
||||||
\':call <sid>PrepUnArrangeCol(<line1>, <line2>)',
|
\':call <sid>PrepUnArrangeCol(<line1>, <line2>)',
|
||||||
@@ -1845,8 +1886,8 @@ fu! <sid>CommandDefinitions() "{{{3
|
|||||||
\ ':call <sid>Sort(<bang>0, <line1>,<line2>,<q-args>)',
|
\ ':call <sid>Sort(<bang>0, <line1>,<line2>,<q-args>)',
|
||||||
\ '-nargs=* -bang -range=% -complete=custom,<sid>SortComplete')
|
\ '-nargs=* -bang -range=% -complete=custom,<sid>SortComplete')
|
||||||
call <sid>LocalCmd("Column",
|
call <sid>LocalCmd("Column",
|
||||||
\ ':call <sid>CopyCol(empty(<q-reg>)?''"'':<q-reg>,<q-count>)',
|
\ ':call <sid>CopyCol(empty(<q-reg>)?''"'':<q-reg>,<q-count>,<q-args>)',
|
||||||
\ '-count -register')
|
\ '-count -register -nargs=?')
|
||||||
call <sid>LocalCmd("MoveColumn",
|
call <sid>LocalCmd("MoveColumn",
|
||||||
\ ':call <sid>MoveColumn(<line1>,<line2>,<f-args>)',
|
\ ':call <sid>MoveColumn(<line1>,<line2>,<f-args>)',
|
||||||
\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')
|
\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')
|
||||||
@@ -1871,9 +1912,6 @@ fu! <sid>CommandDefinitions() "{{{3
|
|||||||
\ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')
|
\ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')
|
||||||
call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',
|
call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',
|
||||||
\ '-range=%')
|
\ '-range=%')
|
||||||
call <sid>LocalCmd('Tabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',
|
|
||||||
\ '-bang -range=%')
|
|
||||||
" Alias for :Tabularize, might be taken by Tabular plugin
|
|
||||||
call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',
|
call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',
|
||||||
\ '-bang -range=%')
|
\ '-bang -range=%')
|
||||||
call <sid>LocalCmd("AddColumn",
|
call <sid>LocalCmd("AddColumn",
|
||||||
@@ -2184,7 +2222,7 @@ fu! <sid>Tabularize(bang, first, last) "{{{3
|
|||||||
else
|
else
|
||||||
" don't clear column width variable, might have been set in the
|
" don't clear column width variable, might have been set in the
|
||||||
" plugin!
|
" plugin!
|
||||||
sil call <sid>ArrangeCol(a:first, a:last, 0)
|
sil call <sid>ArrangeCol(a:first, a:last, 0, -1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if empty(b:col_width)
|
if empty(b:col_width)
|
||||||
@@ -2315,27 +2353,39 @@ fu! <sid>SubstituteInColumn(command, line1, line2) range "{{{3
|
|||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>ColumnMode() "{{{3
|
fu! <sid>ColumnMode() "{{{3
|
||||||
if mode() =~# 'R'
|
let mode = mode()
|
||||||
|
if mode =~# 'R'
|
||||||
" (virtual) Replace mode
|
" (virtual) Replace mode
|
||||||
let new_line = (line('.') == line('$') ||
|
let new_line = (line('.') == line('$') ||
|
||||||
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") !~# "comment"))
|
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") =~? "comment"))
|
||||||
return "\<ESC>". (new_line ? "o" : "JE".mode())
|
return "\<ESC>g`[". (new_line ? "o" : "J".mode)
|
||||||
else
|
else
|
||||||
return "\<CR>"
|
return "\<CR>"
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
fu! <sid>Timeout(start) "{{{3
|
||||||
|
return localtime()-a:start < 2
|
||||||
|
endfu
|
||||||
|
|
||||||
" Global functions "{{{2
|
" Global functions "{{{2
|
||||||
fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
||||||
|
" Make sure, the function is called for the correct filetype.
|
||||||
|
if match(split(&ft, '\.'), 'csv') == -1
|
||||||
|
call <sid>Warn("File is no CSV file!")
|
||||||
|
return
|
||||||
|
endif
|
||||||
let save = winsaveview()
|
let save = winsaveview()
|
||||||
call <sid>CheckHeaderLine()
|
call <sid>CheckHeaderLine()
|
||||||
let nr = matchstr(a:nr, '^\d\+')
|
let nr = matchstr(a:nr, '^\-\?\d\+')
|
||||||
let col = (empty(nr) ? <sid>WColumn() : nr)
|
let col = (empty(nr) ? <sid>WColumn() : nr)
|
||||||
|
if col == 0
|
||||||
|
let col = 1
|
||||||
|
endif
|
||||||
" don't take the header line into consideration
|
" don't take the header line into consideration
|
||||||
let start = a:first - 1 + s:csv_fold_headerline
|
let start = a:first - 1 + s:csv_fold_headerline
|
||||||
let stop = a:last - 1 + s:csv_fold_headerline
|
let stop = a:last - 1 + s:csv_fold_headerline
|
||||||
|
|
||||||
let column = <sid>CopyCol('', col)[start : stop]
|
let column = <sid>CopyCol('', col, '')[start : stop]
|
||||||
" Delete delimiter
|
" Delete delimiter
|
||||||
call map(column, 'substitute(v:val, b:delimiter . "$", "", "g")')
|
call map(column, 'substitute(v:val, b:delimiter . "$", "", "g")')
|
||||||
" Revmoe trailing whitespace
|
" Revmoe trailing whitespace
|
||||||
@@ -2395,7 +2445,7 @@ fu! CSVField(x, y, ...) "{{{3
|
|||||||
let orig = !empty(a:0)
|
let orig = !empty(a:0)
|
||||||
let y = (y < 0 ? 0 : y)
|
let y = (y < 0 ? 0 : y)
|
||||||
let x = (x > (<sid>MaxColumns()) ? (<sid>MaxColumns()) : x)
|
let x = (x > (<sid>MaxColumns()) ? (<sid>MaxColumns()) : x)
|
||||||
let col = <sid>CopyCol('',x)
|
let col = <sid>CopyCol('',x,'')
|
||||||
if !orig
|
if !orig
|
||||||
" remove leading and trainling whitespace and the delimiter
|
" remove leading and trainling whitespace and the delimiter
|
||||||
return matchstr(col[y], '^\s*\zs.\{-}\ze\s*'.b:delimiter.'\?$')
|
return matchstr(col[y], '^\s*\zs.\{-}\ze\s*'.b:delimiter.'\?$')
|
||||||
@@ -2434,6 +2484,33 @@ fu! CSV_WCol(...) "{{{3
|
|||||||
endtry
|
endtry
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
|
fu! CSV_CloseBuffer(buffer) "{{{3
|
||||||
|
" Setup by SetupQuitPre autocommand
|
||||||
|
try
|
||||||
|
if bufnr((a:buffer)+0) > -1
|
||||||
|
exe a:buffer. "bw"
|
||||||
|
endif
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E517/ " buffer already wiped
|
||||||
|
" no-op
|
||||||
|
finally
|
||||||
|
augroup CSV_QuitPre
|
||||||
|
au!
|
||||||
|
augroup END
|
||||||
|
augroup! CSV_QuitPre
|
||||||
|
endtry
|
||||||
|
endfu
|
||||||
|
|
||||||
|
fu! CSVSum(col, fmt, first, last) "{{{3
|
||||||
|
let first = a:first
|
||||||
|
let last = a:last
|
||||||
|
if empty(first)
|
||||||
|
let first = 1
|
||||||
|
endif
|
||||||
|
if empty(last)
|
||||||
|
let last = line('$')
|
||||||
|
endif
|
||||||
|
return csv#EvalColumn(a:col, '<sid>SumColumn', first, last)
|
||||||
|
endfu
|
||||||
" Initialize Plugin "{{{2
|
" Initialize Plugin "{{{2
|
||||||
let b:csv_start = exists("b:csv_start") ? b:csv_start : 1
|
let b:csv_start = exists("b:csv_start") ? b:csv_start : 1
|
||||||
let b:csv_end = exists("b:csv_end") ? b:csv_end : line('$')
|
let b:csv_end = exists("b:csv_end") ? b:csv_end : line('$')
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: Cucumber
|
" Language: Cucumber
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2010 Aug 09
|
" Last Change: 2013 Jun 01
|
||||||
|
|
||||||
" Only do this when not done yet for this buffer
|
" Only do this when not done yet for this buffer
|
||||||
if (exists("b:did_ftplugin"))
|
if (exists("b:did_ftplugin"))
|
||||||
@@ -9,6 +9,9 @@ if (exists("b:did_ftplugin"))
|
|||||||
endif
|
endif
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:keepcpo= &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
setlocal formatoptions-=t formatoptions+=croql
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal comments=:# commentstring=#\ %s
|
setlocal comments=:# commentstring=#\ %s
|
||||||
setlocal omnifunc=CucumberComplete
|
setlocal omnifunc=CucumberComplete
|
||||||
@@ -18,25 +21,18 @@ let b:undo_ftplugin = "setl fo< com< cms< ofu<"
|
|||||||
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
|
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
|
||||||
|
|
||||||
if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
|
if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
|
||||||
nnoremap <silent><buffer> <C-]> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
cnoremap <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
|
||||||
nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent> <script> <buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent> <script> <buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W>] :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W><C-]> :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||||
nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent> <script> <buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W>} :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
|
||||||
let b:undo_ftplugin .=
|
let b:undo_ftplugin .=
|
||||||
\ "|sil! nunmap <buffer> <C-]>" .
|
|
||||||
\ "|sil! nunmap <buffer> [<C-D>" .
|
\ "|sil! nunmap <buffer> [<C-D>" .
|
||||||
\ "|sil! nunmap <buffer> ]<C-D>" .
|
\ "|sil! nunmap <buffer> ]<C-D>" .
|
||||||
\ "|sil! nunmap <buffer> <C-W>]" .
|
|
||||||
\ "|sil! nunmap <buffer> <C-W><C-]>" .
|
|
||||||
\ "|sil! nunmap <buffer> <C-W>d" .
|
\ "|sil! nunmap <buffer> <C-W>d" .
|
||||||
\ "|sil! nunmap <buffer> <C-W><C-D>" .
|
\ "|sil! nunmap <buffer> <C-W><C-D>" .
|
||||||
\ "|sil! nunmap <buffer> <C-W>}" .
|
|
||||||
\ "|sil! nunmap <buffer> [d" .
|
\ "|sil! nunmap <buffer> [d" .
|
||||||
\ "|sil! nunmap <buffer> ]d"
|
\ "|sil! nunmap <buffer> ]d"
|
||||||
endif
|
endif
|
||||||
@@ -145,4 +141,7 @@ function! CucumberComplete(findstart,base) abort
|
|||||||
return sort(steps)
|
return sort(steps)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:keepcpo
|
||||||
|
unlet s:keepcpo
|
||||||
|
|
||||||
" vim:set sts=2 sw=2:
|
" vim:set sts=2 sw=2:
|
||||||
|
|||||||
91
ftplugin/eelixir.vim
Normal file
91
ftplugin/eelixir.vim
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
" Vim filetype plugin
|
||||||
|
" Language: Embedded Elixir
|
||||||
|
" URL: https://github.com/elixir-lang/vim-elixir
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
let s:undo_ftplugin = ""
|
||||||
|
let s:browsefilter = "All Files (*.*)\t*.*\n"
|
||||||
|
let s:match_words = ""
|
||||||
|
|
||||||
|
if !exists("g:eelixir_default_subtype")
|
||||||
|
let g:eelixir_default_subtype = "html"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("b:eelixir_subtype")
|
||||||
|
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||||
|
let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
|
||||||
|
if b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
|
||||||
|
endif
|
||||||
|
if b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eex\|\.eelixir\)\+$','',''),'\.\zs\w\+$')
|
||||||
|
endif
|
||||||
|
if b:eelixir_subtype == 'ex'
|
||||||
|
let b:eelixir_subtype = 'elixir'
|
||||||
|
elseif b:eelixir_subtype == 'exs'
|
||||||
|
let b:eelixir_subtype = 'elixir'
|
||||||
|
elseif b:eelixir_subtype == 'yml'
|
||||||
|
let b:eelixir_subtype = 'yaml'
|
||||||
|
elseif b:eelixir_subtype == 'js'
|
||||||
|
let b:eelixir_subtype = 'javascript'
|
||||||
|
elseif b:eelixir_subtype == 'txt'
|
||||||
|
" Conventional; not a real file type
|
||||||
|
let b:eelixir_subtype = 'text'
|
||||||
|
elseif b:eelixir_subtype == ''
|
||||||
|
let b:eelixir_subtype = g:eelixir_default_subtype
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("b:eelixir_subtype") && b:eelixir_subtype != ''
|
||||||
|
exe "runtime! ftplugin/".b:eelixir_subtype.".vim ftplugin/".b:eelixir_subtype."_*.vim ftplugin/".b:eelixir_subtype."/*.vim"
|
||||||
|
else
|
||||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||||
|
endif
|
||||||
|
unlet! b:did_ftplugin
|
||||||
|
|
||||||
|
" Override our defaults if these were set by an included ftplugin.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin
|
||||||
|
unlet b:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists("b:browsefilter")
|
||||||
|
let s:browsefilter = b:browsefilter
|
||||||
|
unlet b:browsefilter
|
||||||
|
endif
|
||||||
|
if exists("b:match_words")
|
||||||
|
let s:match_words = b:match_words
|
||||||
|
unlet b:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! ftplugin/elixir.vim ftplugin/elixir_*.vim ftplugin/elixir/*.vim
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Combine the new set of values with those previously included.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists ("b:browsefilter")
|
||||||
|
let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
|
||||||
|
endif
|
||||||
|
if exists("b:match_words")
|
||||||
|
let s:match_words = b:match_words . ',' . s:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Load the combined list of match_words for matchit.vim
|
||||||
|
if exists("loaded_matchit")
|
||||||
|
let b:match_words = s:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal comments=:<%#
|
||||||
|
setlocal commentstring=<%#\ %s\ %>
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl cms< "
|
||||||
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
17
ftplugin/ember-script.vim
Normal file
17
ftplugin/ember-script.vim
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
" Language: ember-script
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-ember-script
|
||||||
|
" Version: 1.0.1
|
||||||
|
" Last Change: 2013 Apr 17
|
||||||
|
" License: GPL-3.0
|
||||||
|
|
||||||
|
setlocal tabstop=2
|
||||||
|
setlocal softtabstop=2
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal smartindent
|
||||||
|
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
17
ftplugin/emblem.vim
Normal file
17
ftplugin/emblem.vim
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
" Language: emblem
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-emblem
|
||||||
|
" Version: 1.2.0
|
||||||
|
" Last Change: 2013 Apr 22
|
||||||
|
" License: GPL-3.0
|
||||||
|
|
||||||
|
setlocal tabstop=2
|
||||||
|
setlocal softtabstop=2
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal smartindent
|
||||||
|
|
||||||
|
setlocal formatoptions=q
|
||||||
|
setlocal comments=:/
|
||||||
|
setlocal commentstring=/\ %s
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
" Vim ftplugin file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Oscar Hellström <oscar@oscarh.net>
|
|
||||||
" URL: http://personal.oscarh.net
|
|
||||||
" Contributor: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
|
||||||
" Version: 2010-09-03
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Usage:
|
|
||||||
"
|
|
||||||
" To enable folding put in your vimrc:
|
|
||||||
" set foldenable
|
|
||||||
"
|
|
||||||
" Folding will make only one fold for a complete function, even though it has
|
|
||||||
" more than one function head and body.
|
|
||||||
"
|
|
||||||
" To change this behaviour put in your vimrc file:
|
|
||||||
" let g:erlangFoldSplitFunction=1
|
|
||||||
"
|
|
||||||
" ------------------------------------------------------------------------------
|
|
||||||
" Plugin init
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Don't load any other
|
|
||||||
let b:did_ftplugin=1
|
|
||||||
|
|
||||||
if exists('s:doneFunctionDefinitions')
|
|
||||||
call s:SetErlangOptions()
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:doneFunctionDefinitions=1
|
|
||||||
|
|
||||||
" Local settings
|
|
||||||
function s:SetErlangOptions()
|
|
||||||
compiler erlang
|
|
||||||
if version >= 700
|
|
||||||
setlocal omnifunc=erlangcomplete#Complete
|
|
||||||
endif
|
|
||||||
|
|
||||||
setlocal foldmethod=expr
|
|
||||||
setlocal foldexpr=GetErlangFold(v:lnum)
|
|
||||||
setlocal foldtext=ErlangFoldText()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Define folding functions
|
|
||||||
if !exists("*GetErlangFold")
|
|
||||||
" Folding params
|
|
||||||
let s:ErlangFunBegin = '^\a\w*(.*$'
|
|
||||||
let s:ErlangFunEnd = '^[^%]*\.\s*\(%.*\)\?$'
|
|
||||||
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
|
||||||
|
|
||||||
" Auxiliary fold functions
|
|
||||||
function s:GetNextNonBlank(lnum)
|
|
||||||
let lnum = nextnonblank(a:lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
while line =~ s:ErlangBlankLine && 0 != lnum
|
|
||||||
let lnum = nextnonblank(lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return lnum
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:GetFunName(str)
|
|
||||||
return matchstr(a:str, '^\a\w*(\@=')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:GetFunArgs(str, lnum)
|
|
||||||
let str = a:str
|
|
||||||
let lnum = a:lnum
|
|
||||||
while str !~ '->\s*\(%.*\)\?$'
|
|
||||||
let lnum = s:GetNextNonBlank(lnum)
|
|
||||||
if 0 == lnum " EOF
|
|
||||||
return ""
|
|
||||||
endif
|
|
||||||
let str .= getline(lnum)
|
|
||||||
endwhile
|
|
||||||
return matchstr(str,
|
|
||||||
\ '\(^(\s*\)\@<=.*\(\s*)\(\s\+when\s\+.*\)\?\s\+->\s*\(%.*\)\?$\)\@=')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:CountFunArgs(arguments)
|
|
||||||
let pos = 0
|
|
||||||
let ac = 0 " arg count
|
|
||||||
let arguments = a:arguments
|
|
||||||
|
|
||||||
" Change list / tuples into just one A(rgument)
|
|
||||||
let erlangTuple = '{\([A-Za-z_,|=\-\[\]]\|\s\)*}'
|
|
||||||
let erlangList = '\[\([A-Za-z_,|=\-{}]\|\s\)*\]'
|
|
||||||
|
|
||||||
" FIXME: Use searchpair?
|
|
||||||
while arguments =~ erlangTuple
|
|
||||||
let arguments = substitute(arguments, erlangTuple, "A", "g")
|
|
||||||
endwhile
|
|
||||||
" FIXME: Use searchpair?
|
|
||||||
while arguments =~ erlangList
|
|
||||||
let arguments = substitute(arguments, erlangList, "A", "g")
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
let len = strlen(arguments)
|
|
||||||
while pos < len && pos > -1
|
|
||||||
let ac += 1
|
|
||||||
let pos = matchend(arguments, ',\s*', pos)
|
|
||||||
endwhile
|
|
||||||
return ac
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Main fold function
|
|
||||||
function GetErlangFold(lnum)
|
|
||||||
let lnum = a:lnum
|
|
||||||
let line = getline(lnum)
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunEnd
|
|
||||||
return '<1'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunBegin && foldlevel(lnum - 1) == 1
|
|
||||||
if exists("g:erlangFoldSplitFunction") && g:erlangFoldSplitFunction
|
|
||||||
return '>1'
|
|
||||||
else
|
|
||||||
return '1'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if line =~ s:ErlangFunBegin
|
|
||||||
return '>1'
|
|
||||||
endif
|
|
||||||
|
|
||||||
return '='
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Erlang fold description (foldtext function)
|
|
||||||
function ErlangFoldText()
|
|
||||||
let foldlen = v:foldend - v:foldstart
|
|
||||||
if 1 < foldlen
|
|
||||||
let lines = "lines"
|
|
||||||
else
|
|
||||||
let lines = "line"
|
|
||||||
endif
|
|
||||||
let line = getline(v:foldstart)
|
|
||||||
let name = s:GetFunName(line)
|
|
||||||
let arguments = s:GetFunArgs(strpart(line, strlen(name)), v:foldstart)
|
|
||||||
let argcount = s:CountFunArgs(arguments)
|
|
||||||
let retval = "+" . v:folddashes . " " . name . "/" . argcount
|
|
||||||
let retval .= " (" . foldlen . " " . lines . ")"
|
|
||||||
return retval
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
call s:SetErlangOptions()
|
|
||||||
@@ -1,295 +0,0 @@
|
|||||||
" Erlang refactor file
|
|
||||||
" Language: Erlang
|
|
||||||
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
|
||||||
" URL: http://ktototaki.info
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin_erlang")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Don't load any other
|
|
||||||
let b:did_ftplugin_erlang=1
|
|
||||||
|
|
||||||
if !exists('g:erlangRefactoring') || g:erlangRefactoring == 0
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlangWranglerPath')
|
|
||||||
let g:erlangWranglerPath = '/usr/share/wrangler/'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if glob(g:erlangWranglerPath) == ""
|
|
||||||
call confirm("Wrong path to wrangler dir")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
autocmd VimLeavePre * call StopWranglerServer()
|
|
||||||
|
|
||||||
let s:erlangServerName = "wrangler_vim"
|
|
||||||
|
|
||||||
" Starting background erlang session with wrangler on
|
|
||||||
function! StartWranglerServer()
|
|
||||||
let wranglerEbinDir = g:erlangWranglerPath . "/ebin"
|
|
||||||
let command = "erl_call -s -sname " . s:erlangServerName . " -x 'erl -pa " . wranglerEbinDir . "'"
|
|
||||||
call system(command)
|
|
||||||
call s:send_rpc('application', 'start', '[wrangler_app]')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Stopping erlang session
|
|
||||||
function! StopWranglerServer()
|
|
||||||
echo s:send_rpc('erlang', 'halt', '')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Sending rpc call to erlang session
|
|
||||||
function! s:send_rpc(module, fun, args)
|
|
||||||
let command = "erl_call -sname " . s:erlangServerName . " -a '" . a:module . " " . a:fun . " " . a:args . "'"
|
|
||||||
let result = system(command)
|
|
||||||
if match(result, 'erl_call: failed to connect to node .*') != -1
|
|
||||||
call StartWranglerServer()
|
|
||||||
return system(command)
|
|
||||||
endif
|
|
||||||
return result
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangUndo()
|
|
||||||
echo s:send_rpc("wrangler_undo_server", "undo", "[]")
|
|
||||||
:e!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:trim(text)
|
|
||||||
return substitute(a:text, "^\\s\\+\\|\\s\\+$", "", "g")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:get_msg(result, tuple_start)
|
|
||||||
let msg_begin = '{' . a:tuple_start . ','
|
|
||||||
let matching_start = match(a:result, msg_begin)
|
|
||||||
if matching_start != -1
|
|
||||||
return s:trim(matchstr(a:result, '[^}]*', matching_start + strlen(msg_begin)))
|
|
||||||
endif
|
|
||||||
return ""
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Check if there is an error in result
|
|
||||||
function! s:check_for_error(result)
|
|
||||||
let msg = s:get_msg(a:result, 'ok')
|
|
||||||
if msg != ""
|
|
||||||
return [0, msg]
|
|
||||||
endif
|
|
||||||
let msg = s:get_msg(a:result, 'warning')
|
|
||||||
if msg != ""
|
|
||||||
return [1, msg]
|
|
||||||
endif
|
|
||||||
let msg = s:get_msg(a:result, 'error')
|
|
||||||
if msg != ""
|
|
||||||
return [2, msg]
|
|
||||||
endif
|
|
||||||
return [-1, ""]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Sending apply changes to file
|
|
||||||
function! s:send_confirm()
|
|
||||||
let choice = confirm("What do you want?", "&Preview\n&Confirm\nCa&ncel", 0)
|
|
||||||
if choice == 1
|
|
||||||
echo "TODO: Display preview :)"
|
|
||||||
elseif choice == 2
|
|
||||||
let module = 'wrangler_preview_server'
|
|
||||||
let fun = 'commit'
|
|
||||||
let args = '[]'
|
|
||||||
return s:send_rpc(module, fun, args)
|
|
||||||
else
|
|
||||||
let module = 'wrangler_preview_server'
|
|
||||||
let fun = 'abort'
|
|
||||||
let args = '[]'
|
|
||||||
return s:send_rpc(module, fun, args)
|
|
||||||
echo "Canceled"
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Manually send confirm, for testing purpose only
|
|
||||||
function! SendConfirm()
|
|
||||||
echo s:send_confirm()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Format and send function extracton call
|
|
||||||
function! s:call_extract(start_line, start_col, end_line, end_col, name)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'fun_extraction'
|
|
||||||
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, "' . a:name . '", ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
let [error_code, msg] = s:check_for_error(result)
|
|
||||||
if error_code != 0
|
|
||||||
call confirm(msg)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
|
||||||
echo s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangExtractFunction(mode) range
|
|
||||||
silent w!
|
|
||||||
let name = inputdialog("New function name: ")
|
|
||||||
if name != ""
|
|
||||||
if a:mode == "v"
|
|
||||||
let start_pos = getpos("'<")
|
|
||||||
let start_line = start_pos[1]
|
|
||||||
let start_col = start_pos[2]
|
|
||||||
|
|
||||||
let end_pos = getpos("'>")
|
|
||||||
let end_line = end_pos[1]
|
|
||||||
let end_col = end_pos[2]
|
|
||||||
elseif a:mode == "n"
|
|
||||||
let pos = getpos(".")
|
|
||||||
let start_line = pos[1]
|
|
||||||
let start_col = pos[2]
|
|
||||||
let end_line = pos[1]
|
|
||||||
let end_col = pos[2]
|
|
||||||
else
|
|
||||||
echo "Mode not supported."
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
if s:call_extract(start_line, start_col, end_line, end_col, name)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Empty function name. Ignoring."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
nmap <A-r>e :call ErlangExtractFunction("n")<ENTER>
|
|
||||||
vmap <A-r>e :call ErlangExtractFunction("v")<ENTER>
|
|
||||||
|
|
||||||
function! s:call_rename(mode, line, col, name, search_path)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'rename_' . a:mode
|
|
||||||
let args = '["' . file .'", '
|
|
||||||
if a:mode != "mod"
|
|
||||||
let args = args . a:line . ', ' . a:col . ', '
|
|
||||||
endif
|
|
||||||
let args = args . '"' . a:name . '", ["' . a:search_path . '"], ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
let [error_code, msg] = s:check_for_error(result)
|
|
||||||
if error_code != 0
|
|
||||||
call confirm(msg)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
|
||||||
echo s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangRename(mode)
|
|
||||||
silent w!
|
|
||||||
if a:mode == "mod"
|
|
||||||
let name = inputdialog('Rename module to: ')
|
|
||||||
else
|
|
||||||
let name = inputdialog('Rename "' . expand("<cword>") . '" to: ')
|
|
||||||
endif
|
|
||||||
if name != ""
|
|
||||||
let search_path = expand("%:p:h")
|
|
||||||
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
|
||||||
let pos = getpos(".")
|
|
||||||
let line = pos[1]
|
|
||||||
let col = pos[2]
|
|
||||||
let current_filename = expand("%")
|
|
||||||
let current_filepath = expand("%:p")
|
|
||||||
let new_filename = name . '.erl'
|
|
||||||
if s:call_rename(a:mode, line, col, name, search_path)
|
|
||||||
if a:mode == "mod"
|
|
||||||
execute ':bd ' . current_filename
|
|
||||||
execute ':e ' . new_filename
|
|
||||||
silent execute '!mv ' . current_filepath . ' ' . current_filepath . '.bak'
|
|
||||||
redraw!
|
|
||||||
else
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Empty name. Ignoring."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangRenameFunction()
|
|
||||||
call ErlangRename("fun")
|
|
||||||
endfunction
|
|
||||||
map <A-r>f :call ErlangRenameFunction()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameVariable()
|
|
||||||
call ErlangRename("var")
|
|
||||||
endfunction
|
|
||||||
map <A-r>v :call ErlangRenameVariable()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameModule()
|
|
||||||
call ErlangRename("mod")
|
|
||||||
endfunction
|
|
||||||
map <A-r>m :call ErlangRenameModule()<ENTER>
|
|
||||||
|
|
||||||
function! ErlangRenameProcess()
|
|
||||||
call ErlangRename("process")
|
|
||||||
endfunction
|
|
||||||
map <A-r>p :call ErlangRenameProcess()<ENTER>
|
|
||||||
|
|
||||||
function! s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
|
||||||
let file = expand("%:p")
|
|
||||||
let module = 'wrangler'
|
|
||||||
let fun = 'tuple_funpar'
|
|
||||||
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, ["' . a:search_path . '"], ' . &sw . ']'
|
|
||||||
let result = s:send_rpc(module, fun, args)
|
|
||||||
if s:check_for_error(result)
|
|
||||||
return 0
|
|
||||||
endif
|
|
||||||
call s:send_confirm()
|
|
||||||
return 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ErlangTupleFunArgs(mode)
|
|
||||||
silent w!
|
|
||||||
let search_path = expand("%:p:h")
|
|
||||||
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
|
||||||
if a:mode == "v"
|
|
||||||
let start_pos = getpos("'<")
|
|
||||||
let start_line = start_pos[1]
|
|
||||||
let start_col = start_pos[2]
|
|
||||||
|
|
||||||
let end_pos = getpos("'>")
|
|
||||||
let end_line = end_pos[1]
|
|
||||||
let end_col = end_pos[2]
|
|
||||||
if s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
elseif a:mode == "n"
|
|
||||||
let pos = getpos(".")
|
|
||||||
let line = pos[1]
|
|
||||||
let col = pos[2]
|
|
||||||
if s:call_tuple_fun_args(line, col, line, col, search_path)
|
|
||||||
let temp = &autoread
|
|
||||||
set autoread
|
|
||||||
:e
|
|
||||||
if temp == 0
|
|
||||||
set noautoread
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echo "Mode not supported."
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
nmap <A-r>t :call ErlangTupleFunArgs("n")<ENTER>
|
|
||||||
vmap <A-r>t :call ErlangTupleFunArgs("v")<ENTER>
|
|
||||||
|
|
||||||
" vim: set foldmethod=marker:
|
|
||||||
@@ -27,7 +27,7 @@ elseif !exists("b:eruby_subtype")
|
|||||||
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||||
let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
|
let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
|
||||||
if b:eruby_subtype == ''
|
if b:eruby_subtype == ''
|
||||||
let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$')
|
let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$')
|
||||||
endif
|
endif
|
||||||
if b:eruby_subtype == 'rhtml'
|
if b:eruby_subtype == 'rhtml'
|
||||||
let b:eruby_subtype = 'html'
|
let b:eruby_subtype = 'html'
|
||||||
|
|||||||
@@ -11,15 +11,8 @@ endif
|
|||||||
runtime! ftplugin/git.vim
|
runtime! ftplugin/git.vim
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl
|
setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl textwidth=72
|
||||||
|
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw<'
|
||||||
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<'
|
|
||||||
|
|
||||||
if &textwidth == 0
|
|
||||||
" make sure that log messages play nice with git-log on standard terminals
|
|
||||||
setlocal textwidth=72
|
|
||||||
let b:undo_ftplugin .= "|setl tw<"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists("g:no_gitcommit_commands") || v:version < 700
|
if exists("g:no_gitcommit_commands") || v:version < 700
|
||||||
finish
|
finish
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
" Copyright 2011 The Go Authors. All rights reserved.
|
|
||||||
" Use of this source code is governed by a BSD-style
|
|
||||||
" license that can be found in the LICENSE file.
|
|
||||||
"
|
|
||||||
" fmt.vim: Vim command to format Go files with gofmt.
|
|
||||||
"
|
|
||||||
" This filetype plugin add a new commands for go buffers:
|
|
||||||
"
|
|
||||||
" :Fmt
|
|
||||||
"
|
|
||||||
" Filter the current Go buffer through gofmt.
|
|
||||||
" It tries to preserve cursor position and avoids
|
|
||||||
" replacing the buffer with stderr output.
|
|
||||||
"
|
|
||||||
if exists("b:did_ftplugin_go_fmt")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
command! -buffer Fmt call s:GoFormat()
|
|
||||||
|
|
||||||
function! s:GoFormat()
|
|
||||||
let view = winsaveview()
|
|
||||||
silent %!gofmt
|
|
||||||
if v:shell_error
|
|
||||||
let errors = []
|
|
||||||
for line in getline(1, line('$'))
|
|
||||||
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
|
|
||||||
if !empty(tokens)
|
|
||||||
call add(errors, {"filename": @%,
|
|
||||||
\"lnum": tokens[2],
|
|
||||||
\"col": tokens[3],
|
|
||||||
\"text": tokens[4]})
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
if empty(errors)
|
|
||||||
% | " Couldn't detect gofmt error format, output errors
|
|
||||||
endif
|
|
||||||
undo
|
|
||||||
if !empty(errors)
|
|
||||||
call setloclist(0, errors, 'r')
|
|
||||||
endif
|
|
||||||
echohl Error | echomsg "Gofmt returned error" | echohl None
|
|
||||||
endif
|
|
||||||
call winrestview(view)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let b:did_ftplugin_go_fmt = 1
|
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
|
||||||
@@ -1,233 +0,0 @@
|
|||||||
" Copyright 2011 The Go Authors. All rights reserved.
|
|
||||||
" Use of this source code is governed by a BSD-style
|
|
||||||
" license that can be found in the LICENSE file.
|
|
||||||
"
|
|
||||||
" import.vim: Vim commands to import/drop Go packages.
|
|
||||||
"
|
|
||||||
" This filetype plugin adds three new commands for go buffers:
|
|
||||||
"
|
|
||||||
" :Import {path}
|
|
||||||
"
|
|
||||||
" Import ensures that the provided package {path} is imported
|
|
||||||
" in the current Go buffer, using proper style and ordering.
|
|
||||||
" If {path} is already being imported, an error will be
|
|
||||||
" displayed and the buffer will be untouched.
|
|
||||||
"
|
|
||||||
" :ImportAs {localname} {path}
|
|
||||||
"
|
|
||||||
" Same as Import, but uses a custom local name for the package.
|
|
||||||
"
|
|
||||||
" :Drop {path}
|
|
||||||
"
|
|
||||||
" Remove the import line for the provided package {path}, if
|
|
||||||
" present in the current Go buffer. If {path} is not being
|
|
||||||
" imported, an error will be displayed and the buffer will be
|
|
||||||
" untouched.
|
|
||||||
"
|
|
||||||
" In addition to these commands, there are also two shortcuts mapped:
|
|
||||||
"
|
|
||||||
" \f - Runs :Import fmt
|
|
||||||
" \F - Runs :Drop fmt
|
|
||||||
"
|
|
||||||
" The backslash is the default maplocalleader, so it is possible that
|
|
||||||
" your vim is set to use a different character (:help maplocalleader).
|
|
||||||
"
|
|
||||||
if exists("b:did_ftplugin_go_import")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
|
|
||||||
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
|
|
||||||
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
|
|
||||||
map <buffer> <LocalLeader>f :Import fmt<CR>
|
|
||||||
map <buffer> <LocalLeader>F :Drop fmt<CR>
|
|
||||||
|
|
||||||
function! s:SwitchImport(enabled, localname, path)
|
|
||||||
let view = winsaveview()
|
|
||||||
let path = a:path
|
|
||||||
|
|
||||||
" Quotes are not necessary, so remove them if provided.
|
|
||||||
if path[0] == '"'
|
|
||||||
let path = strpart(path, 1)
|
|
||||||
endif
|
|
||||||
if path[len(path)-1] == '"'
|
|
||||||
let path = strpart(path, 0, len(path) - 1)
|
|
||||||
endif
|
|
||||||
if path == ''
|
|
||||||
call s:Error('Import path not provided')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Extract any site prefix (e.g. github.com/).
|
|
||||||
" If other imports with the same prefix are grouped separately,
|
|
||||||
" we will add this new import with them.
|
|
||||||
" Only up to and including the first slash is used.
|
|
||||||
let siteprefix = matchstr(path, "^[^/]*/")
|
|
||||||
|
|
||||||
let qpath = '"' . path . '"'
|
|
||||||
if a:localname != ''
|
|
||||||
let qlocalpath = a:localname . ' ' . qpath
|
|
||||||
else
|
|
||||||
let qlocalpath = qpath
|
|
||||||
endif
|
|
||||||
let indentstr = 0
|
|
||||||
let packageline = -1 " Position of package name statement
|
|
||||||
let appendline = -1 " Position to introduce new import
|
|
||||||
let deleteline = -1 " Position of line with existing import
|
|
||||||
let linesdelta = 0 " Lines added/removed
|
|
||||||
|
|
||||||
" Find proper place to add/remove import.
|
|
||||||
let line = 0
|
|
||||||
while line <= line('$')
|
|
||||||
let linestr = getline(line)
|
|
||||||
|
|
||||||
if linestr =~# '^package\s'
|
|
||||||
let packageline = line
|
|
||||||
let appendline = line
|
|
||||||
|
|
||||||
elseif linestr =~# '^import\s\+('
|
|
||||||
let appendstr = qlocalpath
|
|
||||||
let indentstr = 1
|
|
||||||
let appendline = line
|
|
||||||
let firstblank = -1
|
|
||||||
let lastprefix = ""
|
|
||||||
while line <= line("$")
|
|
||||||
let line = line + 1
|
|
||||||
let linestr = getline(line)
|
|
||||||
let m = matchlist(getline(line), '^\()\|\(\s\+\)\(\S*\s*\)"\(.\+\)"\)')
|
|
||||||
if empty(m)
|
|
||||||
if siteprefix == "" && a:enabled
|
|
||||||
" must be in the first group
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
" record this position, but keep looking
|
|
||||||
if firstblank < 0
|
|
||||||
let firstblank = line
|
|
||||||
endif
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
if m[1] == ')'
|
|
||||||
" if there's no match, add it to the first group
|
|
||||||
if appendline < 0 && firstblank >= 0
|
|
||||||
let appendline = firstblank
|
|
||||||
endif
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let lastprefix = matchstr(m[4], "^[^/]*/")
|
|
||||||
if a:localname != '' && m[3] != ''
|
|
||||||
let qlocalpath = printf('%-' . (len(m[3])-1) . 's %s', a:localname, qpath)
|
|
||||||
endif
|
|
||||||
let appendstr = m[2] . qlocalpath
|
|
||||||
let indentstr = 0
|
|
||||||
if m[4] == path
|
|
||||||
let appendline = -1
|
|
||||||
let deleteline = line
|
|
||||||
break
|
|
||||||
elseif m[4] < path
|
|
||||||
" don't set candidate position if we have a site prefix,
|
|
||||||
" we've passed a blank line, and this doesn't share the same
|
|
||||||
" site prefix.
|
|
||||||
if siteprefix == "" || firstblank < 0 || match(m[4], "^" . siteprefix) >= 0
|
|
||||||
let appendline = line
|
|
||||||
endif
|
|
||||||
elseif siteprefix != "" && match(m[4], "^" . siteprefix) >= 0
|
|
||||||
" first entry of site group
|
|
||||||
let appendline = line - 1
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
break
|
|
||||||
|
|
||||||
elseif linestr =~# '^import '
|
|
||||||
if appendline == packageline
|
|
||||||
let appendstr = 'import ' . qlocalpath
|
|
||||||
let appendline = line - 1
|
|
||||||
endif
|
|
||||||
let m = matchlist(linestr, '^import\(\s\+\)\(\S*\s*\)"\(.\+\)"')
|
|
||||||
if !empty(m)
|
|
||||||
if m[3] == path
|
|
||||||
let appendline = -1
|
|
||||||
let deleteline = line
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
if m[3] < path
|
|
||||||
let appendline = line
|
|
||||||
endif
|
|
||||||
if a:localname != '' && m[2] != ''
|
|
||||||
let qlocalpath = printf("%s %" . len(m[2])-1 . "s", a:localname, qpath)
|
|
||||||
endif
|
|
||||||
let appendstr = 'import' . m[1] . qlocalpath
|
|
||||||
endif
|
|
||||||
|
|
||||||
elseif linestr =~# '^\(var\|const\|type\|func\)\>'
|
|
||||||
break
|
|
||||||
|
|
||||||
endif
|
|
||||||
let line = line + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" Append or remove the package import, as requested.
|
|
||||||
if a:enabled
|
|
||||||
if deleteline != -1
|
|
||||||
call s:Error(qpath . ' already being imported')
|
|
||||||
elseif appendline == -1
|
|
||||||
call s:Error('No package line found')
|
|
||||||
else
|
|
||||||
if appendline == packageline
|
|
||||||
call append(appendline + 0, '')
|
|
||||||
call append(appendline + 1, 'import (')
|
|
||||||
call append(appendline + 2, ')')
|
|
||||||
let appendline += 2
|
|
||||||
let linesdelta += 3
|
|
||||||
let appendstr = qlocalpath
|
|
||||||
let indentstr = 1
|
|
||||||
endif
|
|
||||||
call append(appendline, appendstr)
|
|
||||||
execute appendline + 1
|
|
||||||
if indentstr
|
|
||||||
execute 'normal >>'
|
|
||||||
endif
|
|
||||||
let linesdelta += 1
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
if deleteline == -1
|
|
||||||
call s:Error(qpath . ' not being imported')
|
|
||||||
else
|
|
||||||
execute deleteline . 'd'
|
|
||||||
let linesdelta -= 1
|
|
||||||
|
|
||||||
if getline(deleteline-1) =~# '^import\s\+(' && getline(deleteline) =~# '^)'
|
|
||||||
" Delete empty import block
|
|
||||||
let deleteline -= 1
|
|
||||||
execute deleteline . "d"
|
|
||||||
execute deleteline . "d"
|
|
||||||
let linesdelta -= 2
|
|
||||||
endif
|
|
||||||
|
|
||||||
if getline(deleteline) == '' && getline(deleteline - 1) == ''
|
|
||||||
" Delete spacing for removed line too.
|
|
||||||
execute deleteline . "d"
|
|
||||||
let linesdelta -= 1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Adjust view for any changes.
|
|
||||||
let view.lnum += linesdelta
|
|
||||||
let view.topline += linesdelta
|
|
||||||
if view.topline < 0
|
|
||||||
let view.topline = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Put buffer back where it was.
|
|
||||||
call winrestview(view)
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:Error(s)
|
|
||||||
echohl Error | echo a:s | echohl None
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let b:did_ftplugin_go_import = 1
|
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
" Taken from https://github.com/juvenn/mustache.vim/blob/master/ftplugin/mustache.vim
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
" Matchit support for Handlebars
|
|
||||||
" extending HTML matchit groups
|
|
||||||
if exists("loaded_matchit") && exists("b:match_words")
|
|
||||||
let b:match_words = b:match_words
|
|
||||||
\ . ',{:},[:],(:),'
|
|
||||||
\ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}'
|
|
||||||
\ . ':'
|
|
||||||
\ . '\%({{\)\@<=\s*else\s*}}'
|
|
||||||
\ . ':'
|
|
||||||
\ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},'
|
|
||||||
\ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}'
|
|
||||||
\ . ':'
|
|
||||||
\ . '\%({{\)\@<=/\s*\1\s*}}'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
7
ftplugin/html.vim
Normal file
7
ftplugin/html.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
" 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+=-
|
||||||
@@ -45,6 +45,8 @@ endif
|
|||||||
|
|
||||||
setlocal comments=://-,:// commentstring=//\ %s
|
setlocal comments=://-,:// commentstring=//\ %s
|
||||||
|
|
||||||
|
setlocal suffixesadd+=.jade
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl cms< com< "
|
let b:undo_ftplugin = "setl cms< com< "
|
||||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
" Error Format {{{
|
" Error Format {{{
|
||||||
" Note: The error formats assume we're using the -file-line-error with
|
" Note: The error formats assume we're using the -file-line-error with
|
||||||
" [pdf]latex.
|
" [pdf]latex.
|
||||||
|
" Note: See |errorformat-LaTeX| for more info.
|
||||||
|
|
||||||
" Check for options
|
" Check for options
|
||||||
if !exists("g:LatexBox_show_warnings")
|
if !exists("g:LatexBox_show_warnings")
|
||||||
@@ -15,12 +16,29 @@ if !exists("g:LatexBox_ignore_warnings")
|
|||||||
\ 'specifier changed to']
|
\ 'specifier changed to']
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" See |errorformat-LaTeX|
|
" Standard error message formats
|
||||||
|
" Note: We consider statements that starts with "!" as errors
|
||||||
setlocal efm=%E!\ LaTeX\ %trror:\ %m
|
setlocal efm=%E!\ LaTeX\ %trror:\ %m
|
||||||
setlocal efm+=%E%f:%l:\ %m
|
setlocal efm+=%E%f:%l:\ %m
|
||||||
|
setlocal efm+=%E!\ %m
|
||||||
|
|
||||||
|
" More info for undefined control sequences
|
||||||
|
setlocal efm+=%Z<argument>\ %m
|
||||||
|
|
||||||
|
" More info for some errors
|
||||||
|
setlocal efm+=%Cl.%l\ %m
|
||||||
|
|
||||||
" Show or ignore warnings
|
" Show or ignore warnings
|
||||||
if g:LatexBox_show_warnings
|
if g:LatexBox_show_warnings
|
||||||
|
" Parse biblatex warnings
|
||||||
|
setlocal efm+=%-C(biblatex)%.%#in\ t%.%#
|
||||||
|
setlocal efm+=%-C(biblatex)%.%#Please\ v%.%#
|
||||||
|
setlocal efm+=%-C(biblatex)%.%#LaTeX\ a%.%#
|
||||||
|
setlocal efm+=%-Z(biblatex)%m
|
||||||
|
|
||||||
|
" Parse hyperref warnings
|
||||||
|
setlocal efm+=%-C(hyperref)%.%#on\ input\ line\ %l.
|
||||||
|
|
||||||
for w in g:LatexBox_ignore_warnings
|
for w in g:LatexBox_ignore_warnings
|
||||||
let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ')
|
let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ')
|
||||||
exe 'setlocal efm+=%-G%.%#'. warning .'%.%#'
|
exe 'setlocal efm+=%-G%.%#'. warning .'%.%#'
|
||||||
@@ -28,22 +46,19 @@ if g:LatexBox_show_warnings
|
|||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
||||||
setlocal efm+=%+W%.%#%.%#Warning:\ %m
|
setlocal efm+=%+W%.%#Warning:\ %m
|
||||||
else
|
else
|
||||||
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
|
setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
|
||||||
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
|
||||||
setlocal efm+=%-W%.%#%.%#Warning:\ %m
|
setlocal efm+=%-W%.%#Warning:\ %m
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Consider the remaining statements that starts with "!" as errors
|
|
||||||
setlocal efm+=%E!\ %m
|
|
||||||
|
|
||||||
" Push file to file stack
|
" Push file to file stack
|
||||||
setlocal efm+=%+P**%f
|
setlocal efm+=%+P**%f
|
||||||
|
setlocal efm+=%+P**\"%f\"
|
||||||
|
|
||||||
" Ignore unmatched lines
|
" Ignore unmatched lines
|
||||||
setlocal efm+=%-G\\s%#
|
|
||||||
setlocal efm+=%-G%.%#
|
setlocal efm+=%-G%.%#
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
@@ -100,17 +115,24 @@ function! LatexBox_GetMainTexFile()
|
|||||||
endfor
|
endfor
|
||||||
|
|
||||||
" 3. scan current file for "\begin{document}"
|
" 3. scan current file for "\begin{document}"
|
||||||
if &filetype == 'tex' && search('\C\\begin\_\s*{document}', 'nw') != 0
|
if &filetype == 'tex' && search('\m\C\\begin\_\s*{document}', 'nw') != 0
|
||||||
return expand('%:p')
|
return expand('%:p')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" 4 borrow the Vim-Latex-Suite method of finding it
|
" 4. use 'main.tex' if it exists in the same directory (and is readable)
|
||||||
if Tex_GetMainFileName() != expand('%:p')
|
let s:main_dot_tex_file=expand('%:p:h') . '/main.tex'
|
||||||
let b:main_tex_file = Tex_GetMainFileName()
|
if filereadable(s:main_dot_tex_file)
|
||||||
|
let b:main_tex_file=s:main_dot_tex_file
|
||||||
return b:main_tex_file
|
return b:main_tex_file
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" 5. prompt for file with completion
|
" 5. borrow the Vim-Latex-Suite method of finding it
|
||||||
|
if LatexBox_GetMainFileName() != expand('%:p')
|
||||||
|
let b:main_tex_file = LatexBox_GetMainFileName()
|
||||||
|
return b:main_tex_file
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 6. prompt for file with completion
|
||||||
let b:main_tex_file = s:PromptForMainFile()
|
let b:main_tex_file = s:PromptForMainFile()
|
||||||
return b:main_tex_file
|
return b:main_tex_file
|
||||||
endfunction
|
endfunction
|
||||||
@@ -118,6 +140,8 @@ endfunction
|
|||||||
function! s:PromptForMainFile()
|
function! s:PromptForMainFile()
|
||||||
let saved_dir = getcwd()
|
let saved_dir = getcwd()
|
||||||
execute 'cd ' . fnameescape(expand('%:p:h'))
|
execute 'cd ' . fnameescape(expand('%:p:h'))
|
||||||
|
|
||||||
|
" Prompt for file
|
||||||
let l:file = ''
|
let l:file = ''
|
||||||
while !filereadable(l:file)
|
while !filereadable(l:file)
|
||||||
let l:file = input('main LaTeX file: ', '', 'file')
|
let l:file = input('main LaTeX file: ', '', 'file')
|
||||||
@@ -126,6 +150,16 @@ function! s:PromptForMainFile()
|
|||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
let l:file = fnamemodify(l:file, ':p')
|
let l:file = fnamemodify(l:file, ':p')
|
||||||
|
|
||||||
|
" Make persistent
|
||||||
|
let l:persistent = ''
|
||||||
|
while l:persistent !~ '\v^(y|n)'
|
||||||
|
let l:persistent = input('make choice persistent? (y, n) ')
|
||||||
|
if l:persistent == 'y'
|
||||||
|
call writefile([], l:file . '.latexmain')
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
execute 'cd ' . fnameescape(saved_dir)
|
execute 'cd ' . fnameescape(saved_dir)
|
||||||
return l:file
|
return l:file
|
||||||
endfunction
|
endfunction
|
||||||
@@ -203,17 +237,18 @@ if !exists('g:LatexBox_viewer')
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! LatexBox_View()
|
function! LatexBox_View(...)
|
||||||
|
let lvargs = join(a:000, ' ')
|
||||||
let outfile = LatexBox_GetOutputFile()
|
let outfile = LatexBox_GetOutputFile()
|
||||||
if !filereadable(outfile)
|
if !filereadable(outfile)
|
||||||
echomsg fnamemodify(outfile, ':.') . ' is not readable'
|
echomsg fnamemodify(outfile, ':.') . ' is not readable'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
let cmd = g:LatexBox_viewer . ' ' . shellescape(outfile)
|
let cmd = g:LatexBox_viewer . ' ' . lvargs . ' ' . shellescape(outfile)
|
||||||
if has('win32')
|
if has('win32')
|
||||||
let cmd = '!start /b' . cmd . ' >nul'
|
let cmd = '!start /b ' . cmd . ' >nul'
|
||||||
else
|
else
|
||||||
let cmd = '!' . cmd . ' >/dev/null &'
|
let cmd = '!' . cmd . ' &>/dev/null &'
|
||||||
endif
|
endif
|
||||||
silent execute cmd
|
silent execute cmd
|
||||||
if !has("gui_running")
|
if !has("gui_running")
|
||||||
@@ -221,7 +256,7 @@ function! LatexBox_View()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
command! LatexView call LatexBox_View()
|
command! -nargs=* LatexView call LatexBox_View('<args>')
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" In Comment {{{
|
" In Comment {{{
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ if !exists('g:LatexBox_cite_pattern')
|
|||||||
let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
|
let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
|
||||||
endif
|
endif
|
||||||
if !exists('g:LatexBox_ref_pattern')
|
if !exists('g:LatexBox_ref_pattern')
|
||||||
let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\)\?ref\*\?\_\s*{'
|
let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\|labelc\)\?ref\*\?\_\s*{'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('g:LatexBox_completion_environments')
|
if !exists('g:LatexBox_completion_environments')
|
||||||
@@ -106,13 +106,13 @@ function! LatexBox_Complete(findstart, base)
|
|||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
let line_start = line[:pos-1]
|
let line_start = line[:pos-1]
|
||||||
if line_start =~ '\C\\begin\_\s*{$'
|
if line_start =~ '\m\C\\begin\_\s*{$'
|
||||||
let s:completion_type = 'begin'
|
let s:completion_type = 'begin'
|
||||||
elseif line_start =~ '\C\\end\_\s*{$'
|
elseif line_start =~ '\m\C\\end\_\s*{$'
|
||||||
let s:completion_type = 'end'
|
let s:completion_type = 'end'
|
||||||
elseif line_start =~ g:LatexBox_ref_pattern . '$'
|
elseif line_start =~ '\m' . g:LatexBox_ref_pattern . '$'
|
||||||
let s:completion_type = 'ref'
|
let s:completion_type = 'ref'
|
||||||
elseif line_start =~ g:LatexBox_cite_pattern . '$'
|
elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$'
|
||||||
let s:completion_type = 'bib'
|
let s:completion_type = 'bib'
|
||||||
" check for multiple citations
|
" check for multiple citations
|
||||||
let pos = col('.') - 1
|
let pos = col('.') - 1
|
||||||
@@ -196,37 +196,42 @@ function! s:FindBibData(...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if !filereadable(file)
|
if !filereadable(file)
|
||||||
return ''
|
return []
|
||||||
endif
|
endif
|
||||||
|
let lines = readfile(file)
|
||||||
|
let bibdata_list = []
|
||||||
|
|
||||||
|
"
|
||||||
|
" Search for added bibliographies
|
||||||
|
"
|
||||||
let bibliography_cmds = [
|
let bibliography_cmds = [
|
||||||
\ '\\bibliography',
|
\ '\\bibliography',
|
||||||
\ '\\addbibresource',
|
\ '\\addbibresource',
|
||||||
\ '\\addglobalbib',
|
\ '\\addglobalbib',
|
||||||
\ '\\addsectionbib',
|
\ '\\addsectionbib',
|
||||||
\ ]
|
\ ]
|
||||||
|
|
||||||
let lines = readfile(file)
|
|
||||||
|
|
||||||
let bibdata_list = []
|
|
||||||
|
|
||||||
for cmd in bibliography_cmds
|
for cmd in bibliography_cmds
|
||||||
let bibdata_list += map(filter(copy(lines),
|
let filtered = filter(copy(lines),
|
||||||
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}'''),
|
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}''')
|
||||||
|
let files = map(filtered,
|
||||||
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
|
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
|
||||||
|
for file in files
|
||||||
|
let bibdata_list += map(split(file, ','),
|
||||||
|
\ 'fnamemodify(v:val, '':r'')')
|
||||||
|
endfor
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
let bibdata_list += map(filter(copy(lines),
|
"
|
||||||
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}'''),
|
" Also search included files
|
||||||
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
|
"
|
||||||
\ . '''\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}'')))')
|
for input in filter(lines,
|
||||||
|
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}''')
|
||||||
|
let bibdata_list += s:FindBibData(LatexBox_kpsewhich(
|
||||||
|
\ matchstr(input,
|
||||||
|
\ '\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}')))
|
||||||
|
endfor
|
||||||
|
|
||||||
let bibdata_list += map(filter(copy(lines),
|
return bibdata_list
|
||||||
\ 'v:val =~ ''\C\\\%(input\|include\)\s\+\S\+'''),
|
|
||||||
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
|
|
||||||
\ . '''\C\\\%(input\|include\)\s\+\zs\S\+\ze'')))')
|
|
||||||
|
|
||||||
return join(bibdata_list, ',')
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
|
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
|
||||||
@@ -235,7 +240,7 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
let res = []
|
let res = []
|
||||||
|
|
||||||
" Find data from bib files
|
" Find data from bib files
|
||||||
let bibdata = s:FindBibData()
|
let bibdata = join(s:FindBibData(), ',')
|
||||||
if bibdata != ''
|
if bibdata != ''
|
||||||
|
|
||||||
" write temporary aux file
|
" write temporary aux file
|
||||||
@@ -247,9 +252,18 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
|
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
|
||||||
\ '\bibdata{' . bibdata . '}'], auxfile)
|
\ '\bibdata{' . bibdata . '}'], auxfile)
|
||||||
|
|
||||||
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
if has('win32')
|
||||||
\ ' ; bibtex -terse '
|
let l:old_shellslash = &l:shellslash
|
||||||
\ . fnamemodify(auxfile, ':t') . ' >/dev/null'
|
setlocal noshellslash
|
||||||
|
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
||||||
|
\ ' & bibtex -terse '
|
||||||
|
\ . fnamemodify(auxfile, ':t') . ' >nul'
|
||||||
|
let &l:shellslash = l:old_shellslash
|
||||||
|
else
|
||||||
|
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
||||||
|
\ ' ; bibtex -terse '
|
||||||
|
\ . fnamemodify(auxfile, ':t') . ' >/dev/null'
|
||||||
|
endif
|
||||||
|
|
||||||
let lines = split(substitute(join(readfile(bblfile), "\n"),
|
let lines = split(substitute(join(readfile(bblfile), "\n"),
|
||||||
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
|
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
|
||||||
@@ -258,6 +272,8 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
let matches = matchlist(line,
|
let matches = matchlist(line,
|
||||||
\ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
|
\ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
|
||||||
if !empty(matches) && !empty(matches[1])
|
if !empty(matches) && !empty(matches[1])
|
||||||
|
let s:type_length = max([s:type_length,
|
||||||
|
\ len(matches[2]) + 3])
|
||||||
call add(res, {
|
call add(res, {
|
||||||
\ 'key': matches[1],
|
\ 'key': matches[1],
|
||||||
\ 'type': matches[2],
|
\ 'type': matches[2],
|
||||||
@@ -275,7 +291,7 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
|
|
||||||
" Find data from 'thebibliography' environments
|
" Find data from 'thebibliography' environments
|
||||||
let lines = readfile(LatexBox_GetMainTexFile())
|
let lines = readfile(LatexBox_GetMainTexFile())
|
||||||
if match(lines, '\C\\begin{thebibliography}')
|
if match(lines, '\C\\begin{thebibliography}') >= 0
|
||||||
for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
|
for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
|
||||||
\ 'v:val =~ a:regexp')
|
\ 'v:val =~ a:regexp')
|
||||||
let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
|
let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
|
||||||
@@ -294,6 +310,7 @@ endfunction
|
|||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" BibTeX completion {{{
|
" BibTeX completion {{{
|
||||||
|
let s:type_length=0
|
||||||
function! LatexBox_BibComplete(regexp)
|
function! LatexBox_BibComplete(regexp)
|
||||||
|
|
||||||
" treat spaces as '.*' if needed
|
" treat spaces as '.*' if needed
|
||||||
@@ -305,9 +322,13 @@ function! LatexBox_BibComplete(regexp)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let res = []
|
let res = []
|
||||||
|
let s:type_length = 4
|
||||||
for m in LatexBox_BibSearch(regexp)
|
for m in LatexBox_BibSearch(regexp)
|
||||||
let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
|
let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
|
||||||
|
let type = printf('%-' . s:type_length . 's', type)
|
||||||
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
||||||
|
let auth = substitute(auth, '\~', ' ', 'g')
|
||||||
|
let auth = substitute(auth, ',.*\ze', ' et al. ', '')
|
||||||
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
||||||
let w = { 'word': m['key'],
|
let w = { 'word': m['key'],
|
||||||
\ 'abbr': type . auth . year,
|
\ 'abbr': type . auth . year,
|
||||||
@@ -345,11 +366,12 @@ function! s:ExtractLabels()
|
|||||||
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
|
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
|
||||||
|
|
||||||
" Ignore cref entries (because they are duplicates)
|
" Ignore cref entries (because they are duplicates)
|
||||||
if curname =~ "\@cref"
|
if curname =~# "@cref$"
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if 0 == search( '{\w*{', 'ce', lblline )
|
if 0 == search( '\m{\w*{', 'ce', lblline )
|
||||||
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
@@ -362,7 +384,7 @@ function! s:ExtractLabels()
|
|||||||
endif
|
endif
|
||||||
let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
|
let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
|
||||||
|
|
||||||
if 0 == search( '\w*{', 'ce', lblline )
|
if 0 == search( '\m\w*{', 'ce', lblline )
|
||||||
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
@@ -437,7 +459,7 @@ function! s:GetLabelCache(file)
|
|||||||
|
|
||||||
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
|
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
|
||||||
" Open file in temporary split window for label extraction.
|
" Open file in temporary split window for label extraction.
|
||||||
silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . a:file
|
silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . fnameescape(a:file)
|
||||||
let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
|
let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -735,6 +757,70 @@ function! s:PromptEnvWrapSelection(...)
|
|||||||
endfunction
|
endfunction
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
|
" List Labels with Prompt {{{
|
||||||
|
function! s:PromptLabelList(...)
|
||||||
|
" Check if window already exists
|
||||||
|
let winnr = bufwinnr(bufnr('LaTeX Labels'))
|
||||||
|
if winnr >= 0
|
||||||
|
if a:0 == 0
|
||||||
|
silent execute winnr . 'wincmd w'
|
||||||
|
else
|
||||||
|
" Supplying an argument to this function causes toggling instead
|
||||||
|
" of jumping to the labels window
|
||||||
|
if g:LatexBox_split_resize
|
||||||
|
silent exe "set columns-=" . g:LatexBox_split_width
|
||||||
|
endif
|
||||||
|
silent execute 'bwipeout' . bufnr('LaTeX Labels')
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Get label suggestions
|
||||||
|
let regexp = input('filter labels with regexp: ', '')
|
||||||
|
let labels = s:CompleteLabels(regexp)
|
||||||
|
|
||||||
|
let calling_buf = bufnr('%')
|
||||||
|
|
||||||
|
" Create labels window and set local settings
|
||||||
|
if g:LatexBox_split_resize
|
||||||
|
silent exe "set columns+=" . g:LatexBox_split_width
|
||||||
|
endif
|
||||||
|
silent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\ Labels'
|
||||||
|
let b:toc = []
|
||||||
|
let b:toc_numbers = 1
|
||||||
|
let b:calling_win = bufwinnr(calling_buf)
|
||||||
|
setlocal filetype=latextoc
|
||||||
|
|
||||||
|
" Add label entries and jump to the closest section
|
||||||
|
for entry in labels
|
||||||
|
let number = matchstr(entry['menu'], '^\s*(\zs[^)]\+\ze)')
|
||||||
|
let page = matchstr(entry['menu'], '^[^)]*)\s*\[\zs[^]]\+\ze\]')
|
||||||
|
let e = {'file': bufname(calling_buf),
|
||||||
|
\ 'level': 'label',
|
||||||
|
\ 'number': number,
|
||||||
|
\ 'text': entry['abbr'],
|
||||||
|
\ 'page': page}
|
||||||
|
call add(b:toc, e)
|
||||||
|
if b:toc_numbers
|
||||||
|
call append('$', e['number'] . "\t" . e['text'])
|
||||||
|
else
|
||||||
|
call append('$', e['text'])
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if !g:LatexBox_toc_hidehelp
|
||||||
|
call append('$', "")
|
||||||
|
call append('$', "<Esc>/q: close")
|
||||||
|
call append('$', "<Space>: jump")
|
||||||
|
call append('$', "<Enter>: jump and close")
|
||||||
|
call append('$', "s: hide numbering")
|
||||||
|
endif
|
||||||
|
0delete _
|
||||||
|
|
||||||
|
" Lock buffer
|
||||||
|
setlocal nomodifiable
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
" Change Environment {{{
|
" Change Environment {{{
|
||||||
function! s:ChangeEnvPrompt()
|
function! s:ChangeEnvPrompt()
|
||||||
|
|
||||||
@@ -785,6 +871,41 @@ function! s:GetEnvironmentList(lead, cmdline, pos)
|
|||||||
endfor
|
endfor
|
||||||
return suggestions
|
return suggestions
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:LatexToggleStarEnv()
|
||||||
|
let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)
|
||||||
|
|
||||||
|
if env == '\('
|
||||||
|
return
|
||||||
|
elseif env == '\['
|
||||||
|
let begin = '\begin{equation}'
|
||||||
|
let end = '\end{equation}'
|
||||||
|
elseif env[-1:] == '*'
|
||||||
|
let begin = '\begin{' . env[:-2] . '}'
|
||||||
|
let end = '\end{' . env[:-2] . '}'
|
||||||
|
else
|
||||||
|
let begin = '\begin{' . env . '*}'
|
||||||
|
let end = '\end{' . env . '*}'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if env == '\['
|
||||||
|
let line = getline(lnum2)
|
||||||
|
let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1)
|
||||||
|
call setline(lnum2, line)
|
||||||
|
|
||||||
|
let line = getline(lnum)
|
||||||
|
let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1)
|
||||||
|
call setline(lnum, line)
|
||||||
|
else
|
||||||
|
let line = getline(lnum2)
|
||||||
|
let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5)
|
||||||
|
call setline(lnum2, line)
|
||||||
|
|
||||||
|
let line = getline(lnum)
|
||||||
|
let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7)
|
||||||
|
call setline(lnum, line)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Next Charaters Match {{{
|
" Next Charaters Match {{{
|
||||||
@@ -800,6 +921,11 @@ vnoremap <silent> <Plug>LatexWrapSelection :<c-u>call <SID>WrapSelection('')<C
|
|||||||
vnoremap <silent> <Plug>LatexEnvWrapSelection :<c-u>call <SID>PromptEnvWrapSelection()<CR>
|
vnoremap <silent> <Plug>LatexEnvWrapSelection :<c-u>call <SID>PromptEnvWrapSelection()<CR>
|
||||||
vnoremap <silent> <Plug>LatexEnvWrapFmtSelection :<c-u>call <SID>PromptEnvWrapSelection(1)<CR>
|
vnoremap <silent> <Plug>LatexEnvWrapFmtSelection :<c-u>call <SID>PromptEnvWrapSelection(1)<CR>
|
||||||
nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<CR>
|
nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<CR>
|
||||||
|
nnoremap <silent> <Plug>LatexToggleStarEnv :call <SID>LatexToggleStarEnv()<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Commands {{{
|
||||||
|
command! LatexLabels call <SID>PromptLabelList()
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
|
" LatexBox_GetMainFileName: gets the name of the main file being compiled. {{{
|
||||||
" Description: returns the full path name of the main file.
|
" Description: returns the full path name of the main file.
|
||||||
" This function checks for the existence of a .latexmain file
|
" This function checks for the existence of a .latexmain file
|
||||||
" which might point to the location of a "main" latex file.
|
" which might point to the location of a "main" latex file.
|
||||||
@@ -13,7 +13,8 @@
|
|||||||
" NOTE: From version 1.6 onwards, this function always trims
|
" NOTE: From version 1.6 onwards, this function always trims
|
||||||
" away the .latexmain part of the file name before applying the
|
" away the .latexmain part of the file name before applying the
|
||||||
" modifier argument.
|
" modifier argument.
|
||||||
function! Tex_GetMainFileName(...)
|
" NOTE: This function is copied from the Latex-Suite project!
|
||||||
|
function! LatexBox_GetMainFileName(...)
|
||||||
if a:0 > 0
|
if a:0 > 0
|
||||||
let modifier = a:1
|
let modifier = a:1
|
||||||
else
|
else
|
||||||
@@ -51,10 +52,7 @@ function! Tex_GetMainFileName(...)
|
|||||||
let lheadfile = expand('%'.modifier)
|
let lheadfile = expand('%'.modifier)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if lheadfile !~ '\.tex$'
|
exe 'cd '.s:origdir
|
||||||
let lheadfile .= '.tex'
|
|
||||||
endif
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
|
|
||||||
" NOTE: The caller of this function needs to escape the file name with
|
" NOTE: The caller of this function needs to escape the file name with
|
||||||
" fnameescape() . The reason its not done here is that escaping is not
|
" fnameescape() . The reason its not done here is that escaping is not
|
||||||
|
|||||||
@@ -1,29 +1,22 @@
|
|||||||
" Folding support for LaTeX
|
" Folding support for LaTeX
|
||||||
|
|
||||||
"
|
"
|
||||||
" Options
|
" Options
|
||||||
" g:LatexBox_Folding - Turn on/off folding
|
" g:LatexBox_Folding - Turn on/off folding
|
||||||
" g:LatexBox_fold_preamble - Turn on/off folding of preamble
|
" g:LatexBox_fold_text - Turn on/off LatexBox fold text function
|
||||||
" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
|
" g:LatexBox_fold_preamble - Turn on/off folding of preamble
|
||||||
" g:LatexBox_fold_sections - Define section levels to fold
|
" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
|
||||||
" g:LatexBox_fold_envs - Turn on/off folding of environments
|
" g:LatexBox_fold_sections - Define section levels to fold
|
||||||
|
" g:LatexBox_fold_envs - Turn on/off folding of environments
|
||||||
|
" g:LatexBox_fold_toc - Turn on/off folding of TOC
|
||||||
|
" g:LatexBox_fold_toc_levels - Set max TOC fold level
|
||||||
"
|
"
|
||||||
|
" {{{1 Initialize options to default values.
|
||||||
" {{{1 Set options
|
if !exists('g:LatexBox_Folding')
|
||||||
if exists('g:LatexBox_Folding') && g:LatexBox_Folding == 1
|
let g:LatexBox_Folding=0
|
||||||
setl foldmethod=expr
|
endif
|
||||||
setl foldexpr=LatexBox_FoldLevel(v:lnum)
|
if !exists('g:LatexBox_fold_text')
|
||||||
setl foldtext=LatexBox_FoldText()
|
let g:LatexBox_fold_text=1
|
||||||
"
|
|
||||||
" The foldexpr function returns "=" for most lines, which means it can become
|
|
||||||
" slow for large files. The following is a hack that is based on this reply to
|
|
||||||
" a discussion on the Vim Developer list:
|
|
||||||
" http://permalink.gmane.org/gmane.editors.vim.devel/14100
|
|
||||||
"
|
|
||||||
augroup FastFold
|
|
||||||
autocmd!
|
|
||||||
autocmd InsertEnter *.tex setlocal foldmethod=manual
|
|
||||||
autocmd InsertLeave *.tex setlocal foldmethod=expr
|
|
||||||
augroup end
|
|
||||||
endif
|
endif
|
||||||
if !exists('g:LatexBox_fold_preamble')
|
if !exists('g:LatexBox_fold_preamble')
|
||||||
let g:LatexBox_fold_preamble=1
|
let g:LatexBox_fold_preamble=1
|
||||||
@@ -31,6 +24,9 @@ endif
|
|||||||
if !exists('g:LatexBox_fold_envs')
|
if !exists('g:LatexBox_fold_envs')
|
||||||
let g:LatexBox_fold_envs=1
|
let g:LatexBox_fold_envs=1
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_envs_force')
|
||||||
|
let g:LatexBox_fold_envs_force = []
|
||||||
|
endif
|
||||||
if !exists('g:LatexBox_fold_parts')
|
if !exists('g:LatexBox_fold_parts')
|
||||||
let g:LatexBox_fold_parts=[
|
let g:LatexBox_fold_parts=[
|
||||||
\ "appendix",
|
\ "appendix",
|
||||||
@@ -54,7 +50,45 @@ endif
|
|||||||
if !exists('g:LatexBox_fold_toc_levels')
|
if !exists('g:LatexBox_fold_toc_levels')
|
||||||
let g:LatexBox_fold_toc_levels=1
|
let g:LatexBox_fold_toc_levels=1
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_automatic')
|
||||||
|
let g:LatexBox_fold_automatic=1
|
||||||
|
endif
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
if g:LatexBox_Folding == 0
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" {{{1 Set folding options for vim
|
||||||
|
setl foldexpr=LatexBox_FoldLevel(v:lnum)
|
||||||
|
if g:LatexBox_fold_text == 1
|
||||||
|
setl foldtext=LatexBox_FoldText()
|
||||||
|
endif
|
||||||
|
if g:LatexBox_fold_automatic == 1
|
||||||
|
setl foldmethod=expr
|
||||||
|
|
||||||
|
"
|
||||||
|
" The foldexpr function returns "=" for most lines, which means it can become
|
||||||
|
" slow for large files. The following is a hack that is based on this reply to
|
||||||
|
" a discussion on the Vim Developer list:
|
||||||
|
" http://permalink.gmane.org/gmane.editors.vim.devel/14100
|
||||||
|
"
|
||||||
|
augroup FastFold
|
||||||
|
autocmd!
|
||||||
|
autocmd InsertEnter *.tex setlocal foldmethod=manual
|
||||||
|
autocmd InsertLeave *.tex setlocal foldmethod=expr
|
||||||
|
augroup end
|
||||||
|
else
|
||||||
|
setl foldmethod=manual
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! LatexBox_FoldOnDemand()
|
||||||
|
setl foldmethod=expr
|
||||||
|
normal! zx
|
||||||
|
setl foldmethod=manual
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command! LatexFold call LatexBox_FoldOnDemand()
|
||||||
|
|
||||||
" {{{1 LatexBox_FoldLevel help functions
|
" {{{1 LatexBox_FoldLevel help functions
|
||||||
|
|
||||||
@@ -122,7 +156,7 @@ let s:notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
|
|||||||
let s:envbeginpattern = s:notcomment . s:notbslash . '\\begin\s*{.\{-}}'
|
let s:envbeginpattern = s:notcomment . s:notbslash . '\\begin\s*{.\{-}}'
|
||||||
let s:envendpattern = s:notcomment . s:notbslash . '\\end\s*{.\{-}}'
|
let s:envendpattern = s:notcomment . s:notbslash . '\\end\s*{.\{-}}'
|
||||||
let s:foldparts = '^\s*\\\%(' . join(g:LatexBox_fold_parts, '\|') . '\)'
|
let s:foldparts = '^\s*\\\%(' . join(g:LatexBox_fold_parts, '\|') . '\)'
|
||||||
let s:folded = '\(% Fake\|\\\(document\|begin\|end\|'
|
let s:folded = '\(% Fake\|\\\(document\|begin\|end\|paragraph\|'
|
||||||
\ . 'front\|main\|back\|app\|sub\|section\|chapter\|part\)\)'
|
\ . 'front\|main\|back\|app\|sub\|section\|chapter\|part\)\)'
|
||||||
|
|
||||||
function! LatexBox_FoldLevel(lnum)
|
function! LatexBox_FoldLevel(lnum)
|
||||||
@@ -134,9 +168,9 @@ function! LatexBox_FoldLevel(lnum)
|
|||||||
|
|
||||||
" Fold preamble
|
" Fold preamble
|
||||||
if g:LatexBox_fold_preamble == 1
|
if g:LatexBox_fold_preamble == 1
|
||||||
if line =~# '\s*\\documentclass'
|
if line =~# s:notcomment . s:notbslash . '\s*\\documentclass'
|
||||||
return ">1"
|
return ">1"
|
||||||
elseif line =~# '^\s*\\begin\s*{\s*document\s*}'
|
elseif line =~# s:notcomment . s:notbslash . '\s*\\begin\s*{\s*document\s*}'
|
||||||
return "0"
|
return "0"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -153,15 +187,38 @@ function! LatexBox_FoldLevel(lnum)
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
" Never fold \end{document}
|
||||||
|
if line =~# '^\s*\\end{document}'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
" Fold environments
|
" Fold environments
|
||||||
if g:LatexBox_fold_envs == 1
|
if line =~# s:envbeginpattern && line =~# s:envendpattern
|
||||||
|
" If the begin and end pattern are on the same line , do not fold
|
||||||
|
return "="
|
||||||
|
else
|
||||||
if line =~# s:envbeginpattern
|
if line =~# s:envbeginpattern
|
||||||
return "a1"
|
if g:LatexBox_fold_envs == 1
|
||||||
elseif line =~# '^\s*\\end{document}'
|
return "a1"
|
||||||
" Never fold \end{document}
|
else
|
||||||
return 0
|
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "a1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
elseif line =~# s:envendpattern
|
elseif line =~# s:envendpattern
|
||||||
return "s1"
|
if g:LatexBox_fold_envs == 1
|
||||||
|
return "s1"
|
||||||
|
else
|
||||||
|
let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "s1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -226,28 +283,17 @@ function! s:CaptionFrame(line)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 LatexBox_FoldText
|
function! LatexBox_FoldText_title()
|
||||||
function! LatexBox_FoldText()
|
|
||||||
" Initialize
|
|
||||||
let line = getline(v:foldstart)
|
let line = getline(v:foldstart)
|
||||||
let nlines = v:foldend - v:foldstart + 1
|
|
||||||
let level = ''
|
|
||||||
let title = 'Not defined'
|
let title = 'Not defined'
|
||||||
|
|
||||||
" Fold level
|
|
||||||
let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)
|
|
||||||
if v:foldlevel > 3
|
|
||||||
let level = strpart(level, 1) . v:foldlevel
|
|
||||||
endif
|
|
||||||
let level = printf('%-3s', level)
|
|
||||||
|
|
||||||
" Preamble
|
" Preamble
|
||||||
if line =~ '\s*\\documentclass'
|
if line =~ '\s*\\documentclass'
|
||||||
let title = "Preamble"
|
return "Preamble"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Parts, sections and fakesections
|
" Parts, sections and fakesections
|
||||||
let sections = '\(\(sub\)*section\|part\|chapter\)'
|
let sections = '\(\(sub\)*\(section\|paragraph\)\|part\|chapter\)'
|
||||||
let secpat1 = '^\s*\\' . sections . '\*\?\s*{'
|
let secpat1 = '^\s*\\' . sections . '\*\?\s*{'
|
||||||
let secpat2 = '^\s*\\' . sections . '\*\?\s*\['
|
let secpat2 = '^\s*\\' . sections . '\*\?\s*\['
|
||||||
if line =~ '\\frontmatter'
|
if line =~ '\\frontmatter'
|
||||||
@@ -259,11 +305,11 @@ function! LatexBox_FoldText()
|
|||||||
elseif line =~ '\\appendix'
|
elseif line =~ '\\appendix'
|
||||||
let title = "Appendix"
|
let title = "Appendix"
|
||||||
elseif line =~ secpat1 . '.*}'
|
elseif line =~ secpat1 . '.*}'
|
||||||
let title = matchstr(line, secpat1 . '\zs.*\ze}')
|
let title = matchstr(line, secpat1 . '\zs.\{-}\ze}')
|
||||||
elseif line =~ secpat1
|
elseif line =~ secpat1
|
||||||
let title = matchstr(line, secpat1 . '\zs.*')
|
let title = matchstr(line, secpat1 . '\zs.*')
|
||||||
elseif line =~ secpat2 . '.*\]'
|
elseif line =~ secpat2 . '.*\]'
|
||||||
let title = matchstr(line, secpat2 . '\zs.*\ze\]')
|
let title = matchstr(line, secpat2 . '\zs.\{-}\ze\]')
|
||||||
elseif line =~ secpat2
|
elseif line =~ secpat2
|
||||||
let title = matchstr(line, secpat2 . '\zs.*')
|
let title = matchstr(line, secpat2 . '\zs.*')
|
||||||
elseif line =~ 'Fake' . sections . ':'
|
elseif line =~ 'Fake' . sections . ':'
|
||||||
@@ -309,7 +355,22 @@ function! LatexBox_FoldText()
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let title = strpart(title, 0, 68)
|
return title
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 LatexBox_FoldText
|
||||||
|
function! LatexBox_FoldText()
|
||||||
|
let nlines = v:foldend - v:foldstart + 1
|
||||||
|
let title = strpart(LatexBox_FoldText_title(), 0, 68)
|
||||||
|
let level = ''
|
||||||
|
|
||||||
|
" Fold level
|
||||||
|
let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)
|
||||||
|
if v:foldlevel > 3
|
||||||
|
let level = strpart(level, 1) . v:foldlevel
|
||||||
|
endif
|
||||||
|
let level = printf('%-3s', level)
|
||||||
|
|
||||||
return printf('%-3s %-68s #%5d', level, title, nlines)
|
return printf('%-3s %-68s #%5d', level, title, nlines)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
if !exists('g:LatexBox_latexmk_options')
|
if !exists('g:LatexBox_latexmk_options')
|
||||||
let g:LatexBox_latexmk_options = ''
|
let g:LatexBox_latexmk_options = ''
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:LatexBox_latexmk_env')
|
||||||
|
let g:LatexBox_latexmk_env = ''
|
||||||
|
endif
|
||||||
if !exists('g:LatexBox_latexmk_async')
|
if !exists('g:LatexBox_latexmk_async')
|
||||||
let g:LatexBox_latexmk_async = 0
|
let g:LatexBox_latexmk_async = 0
|
||||||
endif
|
endif
|
||||||
@@ -20,6 +23,9 @@ endif
|
|||||||
if ! exists('g:LatexBox_quickfix')
|
if ! exists('g:LatexBox_quickfix')
|
||||||
let g:LatexBox_quickfix = 1
|
let g:LatexBox_quickfix = 1
|
||||||
endif
|
endif
|
||||||
|
if ! exists('g:LatexBox_personal_latexmkrc')
|
||||||
|
let g:LatexBox_personal_latexmkrc = 0
|
||||||
|
endif
|
||||||
|
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
@@ -89,8 +95,8 @@ function! s:LatexmkCallback(basename, status)
|
|||||||
" Only remove the pid if not in continuous mode
|
" Only remove the pid if not in continuous mode
|
||||||
if !g:LatexBox_latexmk_preview_continuously
|
if !g:LatexBox_latexmk_preview_continuously
|
||||||
call remove(g:latexmk_running_pids, a:basename)
|
call remove(g:latexmk_running_pids, a:basename)
|
||||||
call LatexBox_LatexErrors(a:status, a:basename)
|
|
||||||
endif
|
endif
|
||||||
|
call LatexBox_LatexErrors(a:status, a:basename)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:setup_vim_server()
|
function! s:setup_vim_server()
|
||||||
@@ -101,7 +107,7 @@ function! s:setup_vim_server()
|
|||||||
if has('win32')
|
if has('win32')
|
||||||
" Just drop through to the default for windows
|
" Just drop through to the default for windows
|
||||||
else
|
else
|
||||||
if match(&shell, '/\(bash\|zsh\)$') >= 0
|
if match(&shell, '\(bash\|zsh\)$') >= 0
|
||||||
let ppid = '$PPID'
|
let ppid = '$PPID'
|
||||||
else
|
else
|
||||||
let ppid = '$$'
|
let ppid = '$$'
|
||||||
@@ -140,6 +146,13 @@ function! LatexBox_Latexmk(force)
|
|||||||
let texroot = shellescape(LatexBox_GetTexRoot())
|
let texroot = shellescape(LatexBox_GetTexRoot())
|
||||||
let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))
|
let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))
|
||||||
|
|
||||||
|
" Check if latexmk is installed
|
||||||
|
if !executable('latexmk')
|
||||||
|
echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" .
|
||||||
|
\ " is not installed!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
" Check if already running
|
" Check if already running
|
||||||
if has_key(g:latexmk_running_pids, basepath)
|
if has_key(g:latexmk_running_pids, basepath)
|
||||||
echomsg "latexmk is already running for `" . basename . "'"
|
echomsg "latexmk is already running for `" . basename . "'"
|
||||||
@@ -156,6 +169,9 @@ function! LatexBox_Latexmk(force)
|
|||||||
let env = 'max_print_line=' . max_print_line
|
let env = 'max_print_line=' . max_print_line
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Set environment options
|
||||||
|
let env .= ' ' . g:LatexBox_latexmk_env . ' '
|
||||||
|
|
||||||
" Set latexmk command with options
|
" Set latexmk command with options
|
||||||
if has('win32')
|
if has('win32')
|
||||||
" Make sure to switch drive as well as directory
|
" Make sure to switch drive as well as directory
|
||||||
@@ -164,7 +180,9 @@ function! LatexBox_Latexmk(force)
|
|||||||
let cmd = 'cd ' . texroot . ' && '
|
let cmd = 'cd ' . texroot . ' && '
|
||||||
endif
|
endif
|
||||||
let cmd .= env . ' latexmk'
|
let cmd .= env . ' latexmk'
|
||||||
let cmd .= ' -' . g:LatexBox_output_type
|
if ! g:LatexBox_personal_latexmkrc
|
||||||
|
let cmd .= ' -' . g:LatexBox_output_type
|
||||||
|
endif
|
||||||
let cmd .= ' -quiet '
|
let cmd .= ' -quiet '
|
||||||
let cmd .= g:LatexBox_latexmk_options
|
let cmd .= g:LatexBox_latexmk_options
|
||||||
if a:force
|
if a:force
|
||||||
@@ -175,6 +193,10 @@ function! LatexBox_Latexmk(force)
|
|||||||
endif
|
endif
|
||||||
let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
|
let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
|
||||||
let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')
|
let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
let cmd .= ' -e ' . shellescape('$success_cmd = $ENV{SUCCESSCMD}')
|
||||||
|
let cmd .= ' -e ' . shellescape('$failure_cmd = $ENV{FAILURECMD}')
|
||||||
|
endif
|
||||||
let cmd .= ' ' . mainfile
|
let cmd .= ' ' . mainfile
|
||||||
|
|
||||||
" Redirect output to null
|
" Redirect output to null
|
||||||
@@ -210,19 +232,39 @@ function! LatexBox_Latexmk(force)
|
|||||||
let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
|
let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
|
||||||
let vimcmd = vim_program . ' --servername ' . v:servername
|
let vimcmd = vim_program . ' --servername ' . v:servername
|
||||||
\ . ' --remote-expr ' . shellescape(callback)
|
\ . ' --remote-expr ' . shellescape(callback)
|
||||||
|
let scallback = callbackfunc . '(''' . basepath . ''', 0)'
|
||||||
|
let svimcmd = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . shellescape(scallback)
|
||||||
|
let fcallback = callbackfunc . '(''' . basepath . ''', 1)'
|
||||||
|
let fvimcmd = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . shellescape(fcallback)
|
||||||
|
|
||||||
let asyncbat = tempname() . '.bat'
|
let asyncbat = tempname() . '.bat'
|
||||||
call writefile(['setlocal',
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
\ 'set T=%TEMP%\sthUnique.tmp',
|
call writefile(['setlocal',
|
||||||
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
\ 'set T=%TEMP%\sthUnique.tmp',
|
||||||
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
||||||
\ 'set /P A=<%T%',
|
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
||||||
\ 'set CMDPID=%A:~16% & del %T%',
|
\ 'set /P A=<%T%',
|
||||||
\ vimsetpid,
|
\ 'set CMDPID=%A:~16% & del %T%',
|
||||||
\ cmd,
|
\ vimsetpid,
|
||||||
\ 'set LATEXERR=%ERRORLEVEL%',
|
\ 'set SUCCESSCMD='.svimcmd,
|
||||||
\ vimcmd,
|
\ 'set FAILURECMD='.fvimcmd,
|
||||||
\ 'endlocal'], asyncbat)
|
\ cmd,
|
||||||
|
\ 'endlocal'], asyncbat)
|
||||||
|
else
|
||||||
|
call writefile(['setlocal',
|
||||||
|
\ 'set T=%TEMP%\sthUnique.tmp',
|
||||||
|
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
||||||
|
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
||||||
|
\ 'set /P A=<%T%',
|
||||||
|
\ 'set CMDPID=%A:~16% & del %T%',
|
||||||
|
\ vimsetpid,
|
||||||
|
\ cmd,
|
||||||
|
\ 'set LATEXERR=%ERRORLEVEL%',
|
||||||
|
\ vimcmd,
|
||||||
|
\ 'endlocal'], asyncbat)
|
||||||
|
endif
|
||||||
|
|
||||||
" Define command
|
" Define command
|
||||||
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
||||||
@@ -235,13 +277,26 @@ function! LatexBox_Latexmk(force)
|
|||||||
" Define callback after latexmk is finished
|
" Define callback after latexmk is finished
|
||||||
let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
|
let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
|
||||||
let vimcmd = g:vim_program . ' --servername ' . v:servername
|
let vimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
\ . ' --remote-expr ' . callback
|
\ . ' --remote-expr ' . callback
|
||||||
|
let scallback = shellescape(callbackfunc).'"(\"'.basepath.'\",0)"'
|
||||||
|
let svimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . scallback
|
||||||
|
let fcallback = shellescape(callbackfunc).'"(\"'.basepath.'\",1)"'
|
||||||
|
let fvimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . fcallback
|
||||||
|
|
||||||
" Define command
|
" Define command
|
||||||
" Note: Here we escape '%' because it may be given as a user option
|
" Note: Here we escape '%' because it may be given as a user option
|
||||||
" through g:LatexBox_latexmk_options, for instance with
|
" through g:LatexBox_latexmk_options, for instance with
|
||||||
" g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
|
" g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
|
||||||
let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
let cmd = vimsetpid . ' ; '
|
||||||
|
\ . 'export SUCCESSCMD=' . shellescape(svimcmd) . ' '
|
||||||
|
\ . ' FAILURECMD=' . shellescape(fvimcmd) . ' ; '
|
||||||
|
\ . escape(cmd, '%')
|
||||||
|
else
|
||||||
|
let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
|
||||||
|
endif
|
||||||
let cmd = '! (' . cmd . ') >/dev/null &'
|
let cmd = '! (' . cmd . ') >/dev/null &'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -275,7 +330,7 @@ function! LatexBox_Latexmk(force)
|
|||||||
let g:latexmk_running_pids[basepath] = pid
|
let g:latexmk_running_pids[basepath] = pid
|
||||||
else
|
else
|
||||||
let pid = substitute(system('pgrep -f "perl.*'
|
let pid = substitute(system('pgrep -f "perl.*'
|
||||||
\ . mainfile . '"'),'\D','','')
|
\ . mainfile . '" | head -n 1'),'\D','','')
|
||||||
let g:latexmk_running_pids[basepath] = pid
|
let g:latexmk_running_pids[basepath] = pid
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
@@ -295,7 +350,15 @@ endfunction
|
|||||||
|
|
||||||
" LatexmkClean {{{
|
" LatexmkClean {{{
|
||||||
function! LatexBox_LatexmkClean(cleanall)
|
function! LatexBox_LatexmkClean(cleanall)
|
||||||
|
" Check if latexmk is installed
|
||||||
|
if !executable('latexmk')
|
||||||
|
echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" .
|
||||||
|
\ " is not installed!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
let basename = LatexBox_GetTexBasename(1)
|
let basename = LatexBox_GetTexBasename(1)
|
||||||
|
|
||||||
if has_key(g:latexmk_running_pids, basename)
|
if has_key(g:latexmk_running_pids, basename)
|
||||||
echomsg "don't clean when latexmk is running"
|
echomsg "don't clean when latexmk is running"
|
||||||
return
|
return
|
||||||
@@ -355,23 +418,38 @@ function! LatexBox_LatexErrors(status, ...)
|
|||||||
if a:status < 0
|
if a:status < 0
|
||||||
botright copen
|
botright copen
|
||||||
else
|
else
|
||||||
" Write status message to screen
|
|
||||||
redraw
|
|
||||||
if a:status > 0 || len(getqflist())>1
|
|
||||||
echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... failed!'
|
|
||||||
else
|
|
||||||
echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... success!'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Only open window when an error/warning is detected
|
" Only open window when an error/warning is detected
|
||||||
if g:LatexBox_quickfix
|
if g:LatexBox_quickfix >= 3
|
||||||
|
\ ? s:log_contains_error(log)
|
||||||
|
\ : g:LatexBox_quickfix > 0
|
||||||
belowright cw
|
belowright cw
|
||||||
if g:LatexBox_quickfix==2
|
if g:LatexBox_quickfix == 2 || g:LatexBox_quickfix == 4
|
||||||
wincmd p
|
wincmd p
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
redraw
|
||||||
|
|
||||||
|
" Write status message to screen
|
||||||
|
if a:status > 0 || len(getqflist())>1
|
||||||
|
if s:log_contains_error(log)
|
||||||
|
let l:status_msg = ' ... failed!'
|
||||||
|
else
|
||||||
|
let l:status_msg = ' ... there were warnings!'
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let l:status_msg = ' ... success!'
|
||||||
|
endif
|
||||||
|
echomsg 'Compiling to ' . g:LatexBox_output_type . l:status_msg
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:log_contains_error(file)
|
||||||
|
let lines = readfile(a:file)
|
||||||
|
let lines = filter(lines, 'v:val =~ ''^.*:\d\+: ''')
|
||||||
|
let lines = uniq(map(lines, 'matchstr(v:val, ''^.*\ze:\d\+:'')'))
|
||||||
|
let lines = filter(lines, 'filereadable(fnameescape(v:val))')
|
||||||
|
return len(lines) > 0
|
||||||
|
endfunction
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" LatexmkStatus {{{
|
" LatexmkStatus {{{
|
||||||
|
|||||||
@@ -23,6 +23,16 @@ map <buffer> <LocalLeader>lv :LatexView<CR>
|
|||||||
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
|
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
|
" List of labels {{{
|
||||||
|
map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Folding {{{
|
||||||
|
if g:LatexBox_Folding == 1
|
||||||
|
map <buffer> <LocalLeader>lf :LatexFold<CR>
|
||||||
|
endif
|
||||||
|
" }}}
|
||||||
|
|
||||||
" Jump to match {{{
|
" Jump to match {{{
|
||||||
if !exists('g:LatexBox_loaded_matchparen')
|
if !exists('g:LatexBox_loaded_matchparen')
|
||||||
nmap <buffer> % <Plug>LatexBox_JumpToMatch
|
nmap <buffer> % <Plug>LatexBox_JumpToMatch
|
||||||
|
|||||||
@@ -75,7 +75,9 @@ function! s:FindMatchingPair(mode)
|
|||||||
let lnum = line('.')
|
let lnum = line('.')
|
||||||
let cnum = searchpos('\A', 'cbnW', lnum)[1]
|
let cnum = searchpos('\A', 'cbnW', lnum)[1]
|
||||||
" if the previous char is a backslash
|
" if the previous char is a backslash
|
||||||
if strpart(getline(lnum), 0, cnum-1) !~ notbslash . '$' | let cnum = cnum-1 | endif
|
if strpart(getline(lnum), cnum-2, 1) == '\'
|
||||||
|
let cnum = cnum-1
|
||||||
|
endif
|
||||||
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
||||||
|
|
||||||
if empty(delim) || strlen(delim)+cnum-1< col('.')
|
if empty(delim) || strlen(delim)+cnum-1< col('.')
|
||||||
@@ -89,7 +91,9 @@ function! s:FindMatchingPair(mode)
|
|||||||
" if not found, move one char bacward and search
|
" if not found, move one char bacward and search
|
||||||
let cnum = searchpos('\A', 'bnW', lnum)[1]
|
let cnum = searchpos('\A', 'bnW', lnum)[1]
|
||||||
" if the previous char is a backslash
|
" if the previous char is a backslash
|
||||||
if strpart(getline(lnum), 0, cnum-1) !~ notbslash . '$' | let cnum = cnum-1 | endif
|
if strpart(getline(lnum), cnum-2, 1) == '\'
|
||||||
|
let cnum = cnum-1
|
||||||
|
endif
|
||||||
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
||||||
if empty(delim) || strlen(delim)+cnum< col('.') | return | endif
|
if empty(delim) || strlen(delim)+cnum< col('.') | return | endif
|
||||||
elseif a:mode =~ 'h'
|
elseif a:mode =~ 'h'
|
||||||
@@ -274,70 +278,18 @@ endfunction
|
|||||||
" Special UTF-8 conversion
|
" Special UTF-8 conversion
|
||||||
function! s:ConvertBack(line)
|
function! s:ConvertBack(line)
|
||||||
let line = a:line
|
let line = a:line
|
||||||
if !exists('g:LatexBox_plaintext_toc')
|
if exists('g:LatexBox_plaintext_toc')
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'a}", 'á', 'g')
|
"
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`a}", 'à', 'g')
|
" Substitute stuff like '\IeC{\"u}' to plain 'u'
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^a}", 'à', 'g')
|
"
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨a}", 'ä', 'g')
|
let line = substitute(line, '\\IeC\s*{\\.\(.\)}', '\1', 'g')
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"a}", 'ä', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'e}", 'é', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`e}", 'è', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^e}", 'ê', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨e}", 'ë', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"e}", 'ë', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'i}", 'í', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`i}", 'î', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^i}", 'ì', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨i}", 'ï', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"i}", 'ï', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'o}", 'ó', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`o}", 'ò', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^o}", 'ô', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨o}", 'ö', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"o}", 'ö', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'u}", 'ú', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`u}", 'ù', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^u}", 'û', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨u}", 'ü', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"u}", 'ü', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'A}", 'Á', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`A}", 'À', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^A}", 'À', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨A}", 'Ä', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"A}", 'Ä', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'E}", 'É', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`E}", 'È', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^E}", 'Ê', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨E}", 'Ë', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"E}", 'Ë', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'I}", 'Í', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`I}", 'Î', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^I}", 'Ì', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨I}", 'Ï', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"I}", 'Ï', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'O}", 'Ó', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`O}", 'Ò', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^O}", 'Ô', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨O}", 'Ö', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"O}", 'Ö', 'g')
|
|
||||||
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\'U}", 'Ú', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\`U}", 'Ù', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\^U}", 'Û', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\¨U}", 'Ü', 'g')
|
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\\"U}", 'Ü', 'g')
|
|
||||||
else
|
else
|
||||||
" substitute stuff like '\IeC{\"u}' (utf-8 umlauts in section heading)
|
"
|
||||||
" to plain 'u'
|
" Substitute stuff like '\IeC{\"u}' to corresponding unicode symbols
|
||||||
let line = substitute(line, "\\\\IeC\s*{\\\\.\\(.\\)}", '\1', 'g')
|
"
|
||||||
|
for [pat, symbol] in s:ConvBackPats
|
||||||
|
let line = substitute(line, pat, symbol, 'g')
|
||||||
|
endfor
|
||||||
endif
|
endif
|
||||||
return line
|
return line
|
||||||
endfunction
|
endfunction
|
||||||
@@ -360,7 +312,7 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
if included != ''
|
if included != ''
|
||||||
" append the input TOX to `toc` and `fileindices`
|
" append the input TOX to `toc` and `fileindices`
|
||||||
let newaux = prefix . '/' . included
|
let newaux = prefix . '/' . included
|
||||||
let newtex = fnamemodify(fnamemodify(newaux, ':t:r') . '.tex', ':p')
|
let newtex = fnamemodify(newaux, ':r') . '.tex'
|
||||||
call s:ReadTOC(newaux, newtex, toc, fileindices)
|
call s:ReadTOC(newaux, newtex, toc, fileindices)
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
@@ -376,7 +328,7 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let tree = LatexBox_TexToTree(line)
|
let tree = LatexBox_TexToTree(s:ConvertBack(line))
|
||||||
|
|
||||||
if len(tree) < 3
|
if len(tree) < 3
|
||||||
" unknown entry type: just skip it
|
" unknown entry type: just skip it
|
||||||
@@ -392,26 +344,23 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
let page = ''
|
let page = ''
|
||||||
endif
|
endif
|
||||||
" parse section number
|
" parse section number
|
||||||
if len(tree[1]) > 3 && empty(tree[1][1])
|
let secnum = ''
|
||||||
call remove(tree[1], 1)
|
let tree = tree[1]
|
||||||
|
if len(tree) > 3 && empty(tree[1])
|
||||||
|
call remove(tree, 1)
|
||||||
endif
|
endif
|
||||||
if len(tree[1]) > 1
|
if len(tree) > 1 && tree[0] =~ '^\\\(numberline\|tocsection\)'
|
||||||
if !empty(tree[1][1])
|
let secnum = LatexBox_TreeToTex(tree[1])
|
||||||
let secnum = LatexBox_TreeToTex(tree[1][1])
|
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
||||||
let secnum = s:ConvertBack(secnum)
|
let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
|
||||||
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
|
||||||
let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
|
call remove(tree, 1)
|
||||||
let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
|
|
||||||
endif
|
|
||||||
let tree = tree[1][2:]
|
|
||||||
else
|
|
||||||
let secnum = ''
|
|
||||||
let tree = tree[1]
|
|
||||||
endif
|
endif
|
||||||
" parse section title
|
" parse section title
|
||||||
let text = LatexBox_TreeToTex(tree)
|
let text = LatexBox_TreeToTex(tree)
|
||||||
let text = s:ConvertBack(text)
|
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
||||||
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
let text = substitute(text, '\m^\\\(no\)\?numberline\s*', '', '')
|
||||||
|
let text = substitute(text, '\*', '', 'g')
|
||||||
|
|
||||||
" add TOC entry
|
" add TOC entry
|
||||||
call add(fileindices[texfile], len(toc))
|
call add(fileindices[texfile], len(toc))
|
||||||
@@ -486,28 +435,90 @@ endfunction
|
|||||||
function! s:FindClosestSection(toc, fileindices)
|
function! s:FindClosestSection(toc, fileindices)
|
||||||
let file = expand('%:p')
|
let file = expand('%:p')
|
||||||
if !has_key(a:fileindices, file)
|
if !has_key(a:fileindices, file)
|
||||||
echoe 'Current file is not included in main tex file ' . LatexBox_GetMainTexFile() . '.'
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let imax = len(a:fileindices[file])
|
let imax = len(a:fileindices[file])
|
||||||
let imin = 0
|
if imax > 0
|
||||||
while imin < imax - 1
|
let imin = 0
|
||||||
let i = (imax + imin) / 2
|
while imin < imax - 1
|
||||||
let tocindex = a:fileindices[file][i]
|
let i = (imax + imin) / 2
|
||||||
let entry = a:toc[tocindex]
|
let tocindex = a:fileindices[file][i]
|
||||||
let titlestr = entry['text']
|
let entry = a:toc[tocindex]
|
||||||
let titlestr = escape(titlestr, '\')
|
let titlestr = entry['text']
|
||||||
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
let titlestr = escape(titlestr, '\')
|
||||||
let [lnum, cnum] = searchpos('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'nW')
|
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
||||||
if lnum
|
let [lnum, cnum] = searchpos('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'nW')
|
||||||
let imax = i
|
if lnum
|
||||||
else
|
let imax = i
|
||||||
let imin = i
|
else
|
||||||
endif
|
let imin = i
|
||||||
endwhile
|
endif
|
||||||
|
endwhile
|
||||||
return a:fileindices[file][imin]
|
return a:fileindices[file][imin]
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let s:ConvBackPats = map([
|
||||||
|
\ ['\\''A}' , 'Á'],
|
||||||
|
\ ['\\`A}' , 'À'],
|
||||||
|
\ ['\\^A}' , 'À'],
|
||||||
|
\ ['\\¨A}' , 'Ä'],
|
||||||
|
\ ['\\"A}' , 'Ä'],
|
||||||
|
\ ['\\''a}' , 'á'],
|
||||||
|
\ ['\\`a}' , 'à'],
|
||||||
|
\ ['\\^a}' , 'à'],
|
||||||
|
\ ['\\¨a}' , 'ä'],
|
||||||
|
\ ['\\"a}' , 'ä'],
|
||||||
|
\ ['\\''E}' , 'É'],
|
||||||
|
\ ['\\`E}' , 'È'],
|
||||||
|
\ ['\\^E}' , 'Ê'],
|
||||||
|
\ ['\\¨E}' , 'Ë'],
|
||||||
|
\ ['\\"E}' , 'Ë'],
|
||||||
|
\ ['\\''e}' , 'é'],
|
||||||
|
\ ['\\`e}' , 'è'],
|
||||||
|
\ ['\\^e}' , 'ê'],
|
||||||
|
\ ['\\¨e}' , 'ë'],
|
||||||
|
\ ['\\"e}' , 'ë'],
|
||||||
|
\ ['\\''I}' , 'Í'],
|
||||||
|
\ ['\\`I}' , 'Î'],
|
||||||
|
\ ['\\^I}' , 'Ì'],
|
||||||
|
\ ['\\¨I}' , 'Ï'],
|
||||||
|
\ ['\\"I}' , 'Ï'],
|
||||||
|
\ ['\\''i}' , 'í'],
|
||||||
|
\ ['\\`i}' , 'î'],
|
||||||
|
\ ['\\^i}' , 'ì'],
|
||||||
|
\ ['\\¨i}' , 'ï'],
|
||||||
|
\ ['\\"i}' , 'ï'],
|
||||||
|
\ ['\\''{\?\\i }' , 'í'],
|
||||||
|
\ ['\\''O}' , 'Ó'],
|
||||||
|
\ ['\\`O}' , 'Ò'],
|
||||||
|
\ ['\\^O}' , 'Ô'],
|
||||||
|
\ ['\\¨O}' , 'Ö'],
|
||||||
|
\ ['\\"O}' , 'Ö'],
|
||||||
|
\ ['\\''o}' , 'ó'],
|
||||||
|
\ ['\\`o}' , 'ò'],
|
||||||
|
\ ['\\^o}' , 'ô'],
|
||||||
|
\ ['\\¨o}' , 'ö'],
|
||||||
|
\ ['\\"o}' , 'ö'],
|
||||||
|
\ ['\\''U}' , 'Ú'],
|
||||||
|
\ ['\\`U}' , 'Ù'],
|
||||||
|
\ ['\\^U}' , 'Û'],
|
||||||
|
\ ['\\¨U}' , 'Ü'],
|
||||||
|
\ ['\\"U}' , 'Ü'],
|
||||||
|
\ ['\\''u}' , 'ú'],
|
||||||
|
\ ['\\`u}' , 'ù'],
|
||||||
|
\ ['\\^u}' , 'û'],
|
||||||
|
\ ['\\¨u}' , 'ü'],
|
||||||
|
\ ['\\"u}' , 'ü'],
|
||||||
|
\ ['\\`N}' , 'Ǹ'],
|
||||||
|
\ ['\\\~N}' , 'Ñ'],
|
||||||
|
\ ['\\''n}' , 'ń'],
|
||||||
|
\ ['\\`n}' , 'ǹ'],
|
||||||
|
\ ['\\\~n}' , 'ñ'],
|
||||||
|
\], '[''\C\(\\IeC\s*{\)\?'' . v:val[0], v:val[1]]')
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" TOC Command {{{
|
" TOC Command {{{
|
||||||
|
|||||||
@@ -40,13 +40,9 @@ endfunction
|
|||||||
|
|
||||||
" {{{2 EscapeTitle
|
" {{{2 EscapeTitle
|
||||||
function! s:EscapeTitle(titlestr)
|
function! s:EscapeTitle(titlestr)
|
||||||
" Credit goes to Marcin Szamotulski for the following fix. It allows to
|
let titlestr = substitute(a:titlestr, '\\[a-zA-Z@]*\>\s*{\?', '.*', 'g')
|
||||||
" match through commands added by TeX.
|
let titlestr = substitute(titlestr, '}', '', 'g')
|
||||||
let titlestr = substitute(a:titlestr, '\\\w*\>\s*\%({[^}]*}\)\?', '.*', 'g')
|
let titlestr = substitute(titlestr, '\%(\.\*\s*\)\{2,}', '.*', 'g')
|
||||||
|
|
||||||
let titlestr = escape(titlestr, '\')
|
|
||||||
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
|
||||||
|
|
||||||
return titlestr
|
return titlestr
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -80,24 +76,23 @@ function! s:TOCActivate(close)
|
|||||||
|
|
||||||
execute b:calling_win . 'wincmd w'
|
execute b:calling_win . 'wincmd w'
|
||||||
|
|
||||||
let bnr = bufnr(entry['file'])
|
let root = fnamemodify(entry['file'], ':h') . '/'
|
||||||
if bnr == -1
|
let files = [entry['file']]
|
||||||
execute 'badd ' . entry['file']
|
for line in filter(readfile(entry['file']), 'v:val =~ ''\\input{''')
|
||||||
let bnr = bufnr(entry['file'])
|
let file = matchstr(line, '{\zs.\{-}\ze\(\.tex\)\?}') . '.tex'
|
||||||
endif
|
if file[0] != '/'
|
||||||
|
let file = root . file
|
||||||
execute 'buffer! ' . bnr
|
|
||||||
|
|
||||||
" skip duplicates
|
|
||||||
while duplicates > 0
|
|
||||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
|
||||||
let duplicates -= 1
|
|
||||||
endif
|
endif
|
||||||
endwhile
|
call add(files, file)
|
||||||
|
endfor
|
||||||
|
|
||||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
" Find section in buffer (or inputted files)
|
||||||
normal zv
|
if entry['level'] == 'label'
|
||||||
|
let re = '\(\\label\_\s*{\|label\s*=\s*\)' . titlestr . '\>'
|
||||||
|
else
|
||||||
|
let re = '\\' . entry['level'] . '\_\s*{' . titlestr . '}'
|
||||||
endif
|
endif
|
||||||
|
call s:TOCFindMatch(re, duplicates, files)
|
||||||
|
|
||||||
if a:close
|
if a:close
|
||||||
if g:LatexBox_split_resize
|
if g:LatexBox_split_resize
|
||||||
@@ -109,6 +104,33 @@ function! s:TOCActivate(close)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" {{{2 TOCFindMatch
|
||||||
|
function! s:TOCFindMatch(strsearch,duplicates,files)
|
||||||
|
if len(a:files) == 0
|
||||||
|
echoerr "Could not find: " . a:strsearch
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:TOCOpenBuf(a:files[0])
|
||||||
|
let dups = a:duplicates
|
||||||
|
|
||||||
|
" Skip duplicates
|
||||||
|
while dups > 0
|
||||||
|
if search(a:strsearch, 'w')
|
||||||
|
let dups -= 1
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if search(a:strsearch, 'w')
|
||||||
|
normal! zv
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:TOCFindMatch(a:strsearch,dups,a:files[1:])
|
||||||
|
endfunction
|
||||||
|
|
||||||
" {{{2 TOCFoldLevel
|
" {{{2 TOCFoldLevel
|
||||||
function! TOCFoldLevel(lnum)
|
function! TOCFoldLevel(lnum)
|
||||||
let line = getline(a:lnum)
|
let line = getline(a:lnum)
|
||||||
@@ -140,12 +162,26 @@ function! TOCFoldLevel(lnum)
|
|||||||
" Return previous fold level
|
" Return previous fold level
|
||||||
return "="
|
return "="
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{2 TOCFoldText
|
" {{{2 TOCFoldText
|
||||||
function! TOCFoldText()
|
function! TOCFoldText()
|
||||||
let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
|
let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
|
||||||
return printf('%-8s%-72s', parts[1], parts[2])
|
return printf('%-8s%-72s', parts[1], parts[2])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" {{{2 TOCOpenBuf
|
||||||
|
function! s:TOCOpenBuf(file)
|
||||||
|
|
||||||
|
let bnr = bufnr(a:file)
|
||||||
|
if bnr == -1
|
||||||
|
execute 'badd ' . a:file
|
||||||
|
let bnr = bufnr(a:file)
|
||||||
|
endif
|
||||||
|
execute 'buffer! ' . bnr
|
||||||
|
normal! gg
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
" {{{1 Mappings
|
" {{{1 Mappings
|
||||||
|
|||||||
61
ftplugin/liquid.vim
Normal file
61
ftplugin/liquid.vim
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
" Vim filetype plugin
|
||||||
|
" Language: Liquid
|
||||||
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
|
" Last Change: 2010 May 21
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:liquid_default_subtype')
|
||||||
|
let g:liquid_default_subtype = 'html'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('b:liquid_subtype')
|
||||||
|
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||||
|
let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
|
||||||
|
if b:liquid_subtype == ''
|
||||||
|
let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
|
||||||
|
endif
|
||||||
|
if b:liquid_subtype == ''
|
||||||
|
let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
|
||||||
|
endif
|
||||||
|
if b:liquid_subtype == ''
|
||||||
|
let b:liquid_subtype = g:liquid_default_subtype
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('b:liquid_subtype') && b:liquid_subtype != ''
|
||||||
|
exe 'runtime! ftplugin/'.b:liquid_subtype.'.vim ftplugin/'.b:liquid_subtype.'_*.vim ftplugin/'.b:liquid_subtype.'/*.vim'
|
||||||
|
else
|
||||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
if exists('b:undo_ftplugin')
|
||||||
|
let b:undo_ftplugin .= '|'
|
||||||
|
else
|
||||||
|
let b:undo_ftplugin = ''
|
||||||
|
endif
|
||||||
|
if exists('b:browsefilter')
|
||||||
|
let b:browsefilter = "\n".b:browsefilter
|
||||||
|
else
|
||||||
|
let b:browsefilter = ''
|
||||||
|
endif
|
||||||
|
if exists('b:match_words')
|
||||||
|
let b:match_words .= ','
|
||||||
|
elseif exists('loaded_matchit')
|
||||||
|
let b:match_words = ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has('gui_win32')
|
||||||
|
let b:browsefilter="Liquid Files (*.liquid)\t*.liquid" . b:browsefilter
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('loaded_matchit')
|
||||||
|
let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,<\(capture\|comment\|highlight\)\>:\<end\1\>'
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal commentstring={%\ comment\ %}%s{%\ endcomment\ %}
|
||||||
|
|
||||||
|
let b:undo_ftplugin .= 'setl cms< | unlet! b:browsefilter b:match_words'
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
" Vim filetype plugin
|
" Vim filetype plugin
|
||||||
" Language: Markdown
|
" Language: Markdown
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
|
" Last Change: 2013 May 30
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
if exists("b:did_ftplugin")
|
||||||
finish
|
finish
|
||||||
@@ -10,7 +11,7 @@ runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
|||||||
|
|
||||||
setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
|
setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
|
||||||
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
||||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
|
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
|
||||||
|
|
||||||
if exists('b:undo_ftplugin')
|
if exists('b:undo_ftplugin')
|
||||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
|
let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
|
||||||
@@ -18,4 +19,32 @@ else
|
|||||||
let b:undo_ftplugin = "setl cms< com< fo< flp<"
|
let b:undo_ftplugin = "setl cms< com< fo< flp<"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
function! MarkdownFold()
|
||||||
|
let line = getline(v:lnum)
|
||||||
|
|
||||||
|
" Regular headers
|
||||||
|
let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
|
||||||
|
if depth > 0
|
||||||
|
return ">" . depth
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Setext style headings
|
||||||
|
let nextline = getline(v:lnum + 1)
|
||||||
|
if (line =~ '^.\+$') && (nextline =~ '^=\+$')
|
||||||
|
return ">1"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (line =~ '^.\+$') && (nextline =~ '^-\+$')
|
||||||
|
return ">2"
|
||||||
|
endif
|
||||||
|
|
||||||
|
return "="
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if has("folding") && exists("g:markdown_folding")
|
||||||
|
setlocal foldexpr=MarkdownFold()
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
let b:undo_ftplugin .= " foldexpr< foldmethod<"
|
||||||
|
endif
|
||||||
|
|
||||||
" vim:set sw=2:
|
" vim:set sw=2:
|
||||||
|
|||||||
120
ftplugin/mustache.vim
Normal file
120
ftplugin/mustache.vim
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
if exists('g:loaded_mustache_handlebars') && g:loaded_mustache_handlebars
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_mustache_handlebars = 1
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Matchit support for Mustache & Handlebars
|
||||||
|
" extending HTML matchit groups
|
||||||
|
if exists("loaded_matchit") && exists("b:match_words")
|
||||||
|
let b:match_words = b:match_words
|
||||||
|
\ . ',{:},[:],(:),'
|
||||||
|
\ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}'
|
||||||
|
\ . ':'
|
||||||
|
\ . '\%({{\)\@<=\s*else\s*}}'
|
||||||
|
\ . ':'
|
||||||
|
\ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},'
|
||||||
|
\ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}'
|
||||||
|
\ . ':'
|
||||||
|
\ . '\%({{\)\@<=/\s*\1\s*}}'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:mustache_abbreviations")
|
||||||
|
inoremap <buffer> {{{ {{{}}}<left><left><left>
|
||||||
|
inoremap <buffer> {{ {{}}<left><left>
|
||||||
|
inoremap <buffer> {{! {{!}}<left><left>
|
||||||
|
inoremap <buffer> {{< {{<}}<left><left>
|
||||||
|
inoremap <buffer> {{> {{>}}<left><left>
|
||||||
|
inoremap <buffer> {{# {{#}}<cr>{{/}}<up><left><left>
|
||||||
|
inoremap <buffer> {{if {{#if }}<cr>{{/if}}<up><left>
|
||||||
|
inoremap <buffer> {{ife {{#if }}<cr>{{else}}<cr>{{/if}}<up><up><left>
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" Section movement
|
||||||
|
" Adapted from vim-ruby - many thanks to the maintainers of that plugin
|
||||||
|
|
||||||
|
function! s:sectionmovement(pattern,flags,mode,count)
|
||||||
|
norm! m'
|
||||||
|
if a:mode ==# 'v'
|
||||||
|
norm! gv
|
||||||
|
endif
|
||||||
|
let i = 0
|
||||||
|
while i < a:count
|
||||||
|
let i = i + 1
|
||||||
|
" saving current position
|
||||||
|
let line = line('.')
|
||||||
|
let col = col('.')
|
||||||
|
let pos = search(a:pattern,'W'.a:flags)
|
||||||
|
" if there's no more matches, return to last position
|
||||||
|
if pos == 0
|
||||||
|
call cursor(line,col)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
nnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','n',v:count1)<CR>
|
||||||
|
nnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'n',v:count1)<CR>
|
||||||
|
xnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','v',v:count1)<CR>
|
||||||
|
xnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'v',v:count1)<CR>
|
||||||
|
|
||||||
|
|
||||||
|
" Operator pending mappings
|
||||||
|
|
||||||
|
" Operators are available by default. Set `let g:mustache_operators = 0` in
|
||||||
|
" your .vimrc to disable them.
|
||||||
|
if ! exists("g:mustache_operators")
|
||||||
|
let g:mustache_operators = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:mustache_operators") && g:mustache_operators
|
||||||
|
onoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>
|
||||||
|
onoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>
|
||||||
|
xnoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>
|
||||||
|
xnoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:wrap_around()
|
||||||
|
" If the cursor is at the end of the tag element, move back
|
||||||
|
" so that the end tag can be detected.
|
||||||
|
while getline('.')[col('.')-1] ==# '}'
|
||||||
|
execute 'norm h'
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Moves to the end of the closing tag
|
||||||
|
let pos = search('}}','We')
|
||||||
|
if pos != 0
|
||||||
|
if getline('.')[col('.')] ==# '}'
|
||||||
|
" Ending tag contains 3 closing brackets '}}}',
|
||||||
|
" move to the last bracket.
|
||||||
|
execute 'norm l'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" select the whole tag
|
||||||
|
execute 'norm v%'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:wrap_inside()
|
||||||
|
" If the cursor is at the end of the tag element, move back
|
||||||
|
" so that the end tag can be detected.
|
||||||
|
while getline('.')[col('.')-1] ==# '}'
|
||||||
|
execute 'norm h'
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Moves to the end of the closing tag
|
||||||
|
let pos = search('}}','W')
|
||||||
|
if pos != 0
|
||||||
|
" select only inside the tag
|
||||||
|
execute 'norm v%loho'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim: nofoldenable
|
||||||
15
ftplugin/opencl.vim
Normal file
15
ftplugin/opencl.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
|
||||||
|
if version > 600
|
||||||
|
runtime! ftplugin/c.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Smaller tab stops.
|
||||||
|
setlocal tabstop=4
|
||||||
|
setlocal shiftwidth=4
|
||||||
|
|
||||||
|
" Smart tabbing/indenting
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal smartindent
|
||||||
|
|
||||||
|
let b:did_ftplugin = 1
|
||||||
89
ftplugin/perl.vim
Normal file
89
ftplugin/perl.vim
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Perl
|
||||||
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
|
" Last Change: {{LAST_CHANGE}}
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Make sure the continuation lines below do not cause problems in
|
||||||
|
" compatibility mode.
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
setlocal formatoptions+=crqol
|
||||||
|
setlocal keywordprg=perldoc\ -f
|
||||||
|
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#%s
|
||||||
|
|
||||||
|
" Change the browse dialog on Win32 to show mainly Perl-related files
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
|
||||||
|
\ "Perl Modules (*.pm)\t*.pm\n" .
|
||||||
|
\ "Perl Documentation Files (*.pod)\t*.pod\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Provided by Ned Konz <ned at bike-nomad dot com>
|
||||||
|
"---------------------------------------------
|
||||||
|
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||||
|
setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
|
||||||
|
setlocal define=[^A-Za-z_]
|
||||||
|
setlocal iskeyword+=:
|
||||||
|
|
||||||
|
" The following line changes a global variable but is necessary to make
|
||||||
|
" gf and similar commands work. Thanks to Andrew Pimlott for pointing
|
||||||
|
" out the problem. If this causes a problem for you, add an
|
||||||
|
" after/ftplugin/perl.vim file that contains
|
||||||
|
" set isfname-=:
|
||||||
|
set isfname+=:
|
||||||
|
|
||||||
|
" Set this once, globally.
|
||||||
|
if !exists("perlpath")
|
||||||
|
if executable("perl")
|
||||||
|
try
|
||||||
|
if &shellxquote != '"'
|
||||||
|
let perlpath = system('perl -e "print join(q/,/,@INC)"')
|
||||||
|
else
|
||||||
|
let perlpath = system("perl -e 'print join(q/,/,@INC)'")
|
||||||
|
endif
|
||||||
|
let perlpath = substitute(perlpath,',.$',',,','')
|
||||||
|
catch /E145:/
|
||||||
|
let perlpath = ".,,"
|
||||||
|
endtry
|
||||||
|
else
|
||||||
|
" If we can't call perl to get its path, just default to using the
|
||||||
|
" current directory and the directory of the current file.
|
||||||
|
let perlpath = ".,,"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Append perlpath to the existing path value, if it is set. Since we don't
|
||||||
|
" use += to do it because of the commas in perlpath, we have to handle the
|
||||||
|
" global / local settings, too.
|
||||||
|
if &l:path == ""
|
||||||
|
if &g:path == ""
|
||||||
|
let &l:path=perlpath
|
||||||
|
else
|
||||||
|
let &l:path=&g:path.",".perlpath
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let &l:path=&l:path.",".perlpath
|
||||||
|
endif
|
||||||
|
"---------------------------------------------
|
||||||
|
|
||||||
|
" Undo the stuff we changed.
|
||||||
|
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp< path<" .
|
||||||
|
\ " | unlet! b:browsefilter"
|
||||||
|
|
||||||
|
" proper matching for matchit plugin
|
||||||
|
let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
|
||||||
|
let b:match_words = '\<if\>:\<elsif\>:\<else\>'
|
||||||
|
|
||||||
|
" Restore the saved compatibility options.
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
77
ftplugin/perl6.vim
Normal file
77
ftplugin/perl6.vim
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Perl 6
|
||||||
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
|
" Last Change: {{LAST_CHANGE}}
|
||||||
|
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||||
|
"
|
||||||
|
" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Make sure the continuation lines below do not cause problems in
|
||||||
|
" compatibility mode.
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
setlocal formatoptions+=crqol
|
||||||
|
setlocal keywordprg=p6doc
|
||||||
|
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#%s
|
||||||
|
|
||||||
|
" Change the browse dialog on Win32 to show mainly Perl-related files
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
|
||||||
|
\ "Perl Modules (*.pm)\t*.pm\n" .
|
||||||
|
\ "Perl Documentation Files (*.pod)\t*.pod\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Provided by Ned Konz <ned at bike-nomad dot com>
|
||||||
|
"---------------------------------------------
|
||||||
|
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||||
|
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')
|
||||||
|
setlocal define=[^A-Za-z_]
|
||||||
|
|
||||||
|
" The following line changes a global variable but is necessary to make
|
||||||
|
" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
|
||||||
|
" the problem. If this causes a " problem for you, add an
|
||||||
|
" after/ftplugin/perl6.vim file that contains
|
||||||
|
" set isfname-=:
|
||||||
|
set isfname+=:
|
||||||
|
setlocal iskeyword=48-57,_,A-Z,a-z,:,-
|
||||||
|
|
||||||
|
" Set this once, globally.
|
||||||
|
if !exists("perlpath")
|
||||||
|
if executable("perl6")
|
||||||
|
try
|
||||||
|
if &shellxquote != '"'
|
||||||
|
let perlpath = system('perl6 -e "@*INC.join(q/,/).say"')
|
||||||
|
else
|
||||||
|
let perlpath = system("perl6 -e '@*INC.join(q/,/).say'")
|
||||||
|
endif
|
||||||
|
let perlpath = substitute(perlpath,',.$',',,','')
|
||||||
|
catch /E145:/
|
||||||
|
let perlpath = ".,,"
|
||||||
|
endtry
|
||||||
|
else
|
||||||
|
" If we can't call perl to get its path, just default to using the
|
||||||
|
" current directory and the directory of the current file.
|
||||||
|
let perlpath = ".,,"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let &l:path=perlpath
|
||||||
|
"---------------------------------------------
|
||||||
|
|
||||||
|
" Undo the stuff we changed.
|
||||||
|
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" .
|
||||||
|
\ " | unlet! b:browsefilter"
|
||||||
|
|
||||||
|
" Restore the saved compatibility options.
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
34
ftplugin/ps1.vim
Normal file
34
ftplugin/ps1.vim
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Windows PowerShell
|
||||||
|
" Maintainer: Peter Provost <peter@provost.org>
|
||||||
|
" Version: 2.10
|
||||||
|
" Project Repository: https://github.com/PProvost/vim-ps1
|
||||||
|
" Vim Script Page: http://www.vim.org/scripts/script.php?script_id=1327
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
|
||||||
|
" Don't load another plug-in for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal tw=0
|
||||||
|
setlocal commentstring=#%s
|
||||||
|
setlocal formatoptions=tcqro
|
||||||
|
" Enable autocompletion of hyphenated PowerShell commands,
|
||||||
|
" e.g. Get-Content or Get-ADUser
|
||||||
|
setlocal iskeyword+=-
|
||||||
|
|
||||||
|
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter =
|
||||||
|
\ "All PowerShell Files (*.ps1, *.psd1, *.psm1, *.ps1xml)\t*.ps1;*.psd1;*.psm1;*.ps1xml\n" .
|
||||||
|
\ "PowerShell Script Files (*.ps1)\t*.ps1\n" .
|
||||||
|
\ "PowerShell Module Files (*.psd1, *.psm1)\t*.psd1;*.psm1\n" .
|
||||||
|
\ "PowerShell XML Files (*.ps1xml)\t*.ps1xml\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Undo the stuff we changed
|
||||||
|
let b:undo_ftplugin = "setlocal tw< cms< fo<" .
|
||||||
|
\ " | unlet! b:browsefilter"
|
||||||
|
|
||||||
31
ftplugin/ps1xml.vim
Normal file
31
ftplugin/ps1xml.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Windows PowerShell
|
||||||
|
" Maintainer: Peter Provost <peter@provost.org>
|
||||||
|
" Version: 2.10
|
||||||
|
" Project Repository: https://github.com/PProvost/vim-ps1
|
||||||
|
" Vim Script Page: http://www.vim.org/scripts/script.php?script_id=1327
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
|
||||||
|
" Don't load another plug-in for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal tw=0
|
||||||
|
setlocal commentstring=#%s
|
||||||
|
setlocal formatoptions=tcqro
|
||||||
|
|
||||||
|
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter =
|
||||||
|
\ "All PowerShell Files (*.ps1, *.psd1, *.psm1, *.ps1xml)\t*.ps1;*.psd1;*.psm1;*.ps1xml\n" .
|
||||||
|
\ "PowerShell Script Files (*.ps1)\t*.ps1\n" .
|
||||||
|
\ "PowerShell Module Files (*.psd1, *.psm1)\t*.psd1;*.psm1\n" .
|
||||||
|
\ "PowerShell XML Files (*.ps1xml)\t*.ps1xml\n" .
|
||||||
|
\ "All Files (*.*)\t*.*\n"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Undo the stuff we changed
|
||||||
|
let b:undo_ftplugin = "setlocal tw< cms< fo<" .
|
||||||
|
\ " | unlet! b:browsefilter"
|
||||||
|
|
||||||
@@ -1,137 +1,6 @@
|
|||||||
" Vim filetype plugin
|
setl ts=2
|
||||||
" Language: Puppet
|
setl sts=2
|
||||||
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
setl sw=2
|
||||||
" Last Change: 2009 Aug 19
|
setl et
|
||||||
" vim: set sw=4 sts=4:
|
setl keywordprg=puppet\ describe\ --providers
|
||||||
|
setl iskeyword=-,:,@,48-57,_,192-255
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
|
|
||||||
if !exists("no_plugin_maps") && !exists("no_puppet_maps")
|
|
||||||
if !hasmapto("<Plug>AlignRange")
|
|
||||||
map <buffer> <LocalLeader>= <Plug>AlignRange
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
noremap <buffer> <unique> <script> <Plug>AlignArrows :call <SID>AlignArrows()<CR>
|
|
||||||
noremap <buffer> <unique> <script> <Plug>AlignRange :call <SID>AlignRange()<CR>
|
|
||||||
|
|
||||||
iabbrev => =><C-R>=<SID>AlignArrows('=>')<CR>
|
|
||||||
iabbrev +> +><C-R>=<SID>AlignArrows('+>')<CR>
|
|
||||||
|
|
||||||
if exists('*s:AlignArrows')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:arrow_re = '[=+]>'
|
|
||||||
let s:selector_re = '[=+]>\s*\$.*\s*?\s*{\s*$'
|
|
||||||
|
|
||||||
" set keywordprg to 'pi' (alias for puppet describe)
|
|
||||||
" this lets K invoke pi for word under cursor
|
|
||||||
setlocal keywordprg=puppet\ describe
|
|
||||||
|
|
||||||
function! s:AlignArrows(op)
|
|
||||||
let cursor_pos = getpos('.')
|
|
||||||
let lnum = line('.')
|
|
||||||
let line = getline(lnum)
|
|
||||||
if line !~ s:arrow_re
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let pos = stridx(line, a:op)
|
|
||||||
let start = lnum
|
|
||||||
let end = lnum
|
|
||||||
let pnum = lnum - 1
|
|
||||||
while 1
|
|
||||||
let pline = getline(pnum)
|
|
||||||
if pline !~ s:arrow_re || pline =~ s:selector_re
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let start = pnum
|
|
||||||
let pnum -= 1
|
|
||||||
endwhile
|
|
||||||
let cnum = end
|
|
||||||
while 1
|
|
||||||
let cline = getline(cnum)
|
|
||||||
if cline !~ s:arrow_re ||
|
|
||||||
\ (indent(cnum) != indent(cnum+1) && getline(cnum+1) !~ '\s*}')
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let end = cnum
|
|
||||||
let cnum += 1
|
|
||||||
endwhile
|
|
||||||
call s:AlignSection(start, end)
|
|
||||||
let cursor_pos[2] = stridx(getline('.'), a:op) + strlen(a:op) + 1
|
|
||||||
call setpos('.', cursor_pos)
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:AlignRange() range
|
|
||||||
call s:AlignSection(a:firstline, a:lastline)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" AlignSection and AlignLine are from the vim wiki:
|
|
||||||
" http://vim.wikia.com/wiki/Regex-based_text_alignment
|
|
||||||
function! s:AlignSection(start, end)
|
|
||||||
let extra = 1
|
|
||||||
let sep = s:arrow_re
|
|
||||||
let maxpos = 0
|
|
||||||
let section = getline(a:start, a:end)
|
|
||||||
for line in section
|
|
||||||
let pos = match(line, ' *'.sep)
|
|
||||||
if maxpos < pos
|
|
||||||
let maxpos = pos
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
call map(section, 's:AlignLine(v:val, sep, maxpos, extra)')
|
|
||||||
call setline(a:start, section)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:AlignLine(line, sep, maxpos, extra)
|
|
||||||
let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)')
|
|
||||||
if empty(m)
|
|
||||||
return a:line
|
|
||||||
endif
|
|
||||||
let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)
|
|
||||||
return m[1] . spaces . m[2]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" detect if we are in a module and set variables for classpath (autoloader),
|
|
||||||
" modulename, modulepath, and classname
|
|
||||||
" useful to use in templates
|
|
||||||
function! s:SetModuleVars()
|
|
||||||
|
|
||||||
" set these to any dirs you want to stop searching on
|
|
||||||
" useful to stop vim from spinning disk looking all over for init.pp
|
|
||||||
" probably only a macosx problem with /tmp since it's really /private/tmp
|
|
||||||
" but it's here if you find vim spinning on new files in certain places
|
|
||||||
if !exists("g:puppet_stop_dirs")
|
|
||||||
let g:puppet_stop_dirs = '/tmp;/private/tmp'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" search path for init.pp
|
|
||||||
let b:search_path = './**'
|
|
||||||
let b:search_path = b:search_path . ';' . getcwd() . ';' . g:puppet_stop_dirs
|
|
||||||
|
|
||||||
" find what we assume to be our module dir
|
|
||||||
let b:initpp = findfile("init.pp", b:search_path) " find an init.pp up or down
|
|
||||||
let b:module_path = fnamemodify(b:initpp, ":p:h:h") " full path to module name
|
|
||||||
let b:module_name = fnamemodify(b:module_path, ":t") " just the module name
|
|
||||||
|
|
||||||
" sub out the full path to the module with the name and replace slashes with ::
|
|
||||||
let b:classpath = fnamemodify(expand("%:p:r"), ':s#' . b:module_path . '/manifests#' . b:module_name . '#'. ":gs?/?::?")
|
|
||||||
let b:classname = expand("%:t:r")
|
|
||||||
|
|
||||||
" if we don't start with a word we didn't replace the module_path
|
|
||||||
" probably b/c we couldn't find an init.pp / not a module
|
|
||||||
" so we assume that root of the filename is the class (sane for throwaway
|
|
||||||
" manifests
|
|
||||||
if b:classpath =~ '^::'
|
|
||||||
let b:classpath = b:classname
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if exists("g:puppet_module_detect")
|
|
||||||
call s:SetModuleVars()
|
|
||||||
endif
|
|
||||||
|
|||||||
69
ftplugin/r.vim
Normal file
69
ftplugin/r.vim
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
" ftplugin for R files
|
||||||
|
"
|
||||||
|
" Author: Iago Mosqueira <i.mosqueira@ic.ac.uk>
|
||||||
|
" Author: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Author: Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: r.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Code written in vim is sent to R through a perl pipe
|
||||||
|
" [funnel.pl, by Larry Clapp <vim@theclapp.org>], as individual lines,
|
||||||
|
" blocks, or the whole file.
|
||||||
|
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" In insert mode, <M-Enter> sends the active line to R and moves to the next
|
||||||
|
" line (write and process mode).
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F3> Start a listening R-devel interpreter in new xterm
|
||||||
|
" <F4> Start a listening R --vanilla interpreter in new xterm
|
||||||
|
" <F5> Run current file
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Disable backup for .r-pipe
|
||||||
|
setl backupskip=.*pipe
|
||||||
|
|
||||||
|
" Set tabstop so it is compatible with the emacs edited code. Personally, I
|
||||||
|
" prefer shiftwidth=2, which I have in my .vimrc anyway
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=4
|
||||||
|
set tabstop=8
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Start a listening R-devel interpreter in new xterm
|
||||||
|
noremap <buffer> <F3> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R-devel && echo 'Interpreter has finished. Exiting. Goodbye.'"&<CR><CR>
|
||||||
|
|
||||||
|
" Start a listening R --vanilla interpreter in new xterm
|
||||||
|
noremap <buffer> <F4> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R -vanilla && echo 'Interpreter has finished. Exiting. Goodbye.'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
|
|
||||||
|
" Send current file to R
|
||||||
|
noremap <buffer> <F5> :execute '1 ,' line("$") 'w >> ~/.r-pipe' <CR><CR>
|
||||||
48
ftplugin/rhelp.vim
Normal file
48
ftplugin/rhelp.vim
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
" ftplugin for R help files
|
||||||
|
"
|
||||||
|
" Author: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: rhelp.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Usage:
|
||||||
|
"
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" Add to filetypes.vim, if you don't use vim 7
|
||||||
|
" au BufNewFile,BufRead *.Rd,*.rd setf rhelp
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process R code
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Set tabbing
|
||||||
|
set expandtab
|
||||||
|
set tabstop=2
|
||||||
|
set shiftwidth=2
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
59
ftplugin/rnoweb.vim
Normal file
59
ftplugin/rnoweb.vim
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
" ftplugin for Sweave files containing both LaTeX and R code
|
||||||
|
"
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: rnoweb.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Usage:
|
||||||
|
"
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" A Makefile for producing R noweb files is in included in my Vim script
|
||||||
|
" R.vim:
|
||||||
|
" http://www.vim.org/scripts/script.php?script_id=1048
|
||||||
|
" You can also look in my SVN repository under:
|
||||||
|
" http://kri/viewcvs/*checkout*/Makefile.rnoweb?root=vim
|
||||||
|
"
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" Add to filetypes.vim, if you don't use vim 7
|
||||||
|
" au BufNewFile,BufRead *.Rnw,*.rnw setf rnoweb
|
||||||
|
" and/or
|
||||||
|
" au BufNewFile,BufRead *.Snw,*.snw setf rnoweb
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process R code
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Disable backup for .r-pipe
|
||||||
|
setl backupskip=.*pipe
|
||||||
|
|
||||||
|
" Set R friendly tabbing
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
@@ -34,6 +34,7 @@ if exists("loaded_matchit") && !exists("b:match_words")
|
|||||||
let b:match_skip =
|
let b:match_skip =
|
||||||
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
||||||
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
|
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
|
||||||
|
\ "Regexp\\|RegexpDelimiter\\|" .
|
||||||
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
|
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
|
||||||
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
|
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
|
||||||
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
|
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
|
||||||
@@ -68,8 +69,8 @@ endif
|
|||||||
|
|
||||||
function! s:query_path(root)
|
function! s:query_path(root)
|
||||||
let code = "print $:.join %q{,}"
|
let code = "print $:.join %q{,}"
|
||||||
if &shell =~# 'sh' && $PATH !~# '\s'
|
if &shell =~# 'sh'
|
||||||
let prefix = 'env PATH='.$PATH.' '
|
let prefix = 'env PATH='.shellescape($PATH).' '
|
||||||
else
|
else
|
||||||
let prefix = ''
|
let prefix = ''
|
||||||
endif
|
endif
|
||||||
@@ -189,15 +190,16 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if maparg("\<C-]>",'n') == ''
|
if maparg("\<C-]>",'n') == ''
|
||||||
nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
cnoremap <buffer> <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
|
||||||
nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||||
nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
nnoremap <silent> <script> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||||
|
nnoremap <silent> <script> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||||
let b:undo_ftplugin = b:undo_ftplugin
|
let b:undo_ftplugin = b:undo_ftplugin
|
||||||
\."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
|
\."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
|
||||||
\."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
|
\."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
|
||||||
@@ -275,12 +277,12 @@ function! RubyBalloonexpr()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:searchsyn(pattern,syn,flags,mode)
|
function! s:searchsyn(pattern,syn,flags,mode)
|
||||||
|
let cnt = v:count1
|
||||||
norm! m'
|
norm! m'
|
||||||
if a:mode ==# 'v'
|
if a:mode ==# 'v'
|
||||||
norm! gv
|
norm! gv
|
||||||
endif
|
endif
|
||||||
let i = 0
|
let i = 0
|
||||||
let cnt = v:count ? v:count : 1
|
|
||||||
while i < cnt
|
while i < cnt
|
||||||
let i = i + 1
|
let i = i + 1
|
||||||
let line = line('.')
|
let line = line('.')
|
||||||
|
|||||||
150
ftplugin/rust.vim
Normal file
150
ftplugin/rust.vim
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
" Language: Rust
|
||||||
|
" Description: Vim syntax file for Rust
|
||||||
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Maintainer: Kevin Ballard <kevin@sb.org>
|
||||||
|
" Last Change: Jul 07, 2014
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Variables {{{1
|
||||||
|
|
||||||
|
" The rust source code at present seems to typically omit a leader on /*!
|
||||||
|
" comments, so we'll use that as our default, but make it easy to switch.
|
||||||
|
" This does not affect indentation at all (I tested it with and without
|
||||||
|
" leader), merely whether a leader is inserted by default or not.
|
||||||
|
if exists("g:rust_bang_comment_leader") && g:rust_bang_comment_leader == 1
|
||||||
|
" Why is the `,s0:/*,mb:\ ,ex:*/` there, you ask? I don't understand why,
|
||||||
|
" but without it, */ gets indented one space even if there were no
|
||||||
|
" leaders. I'm fairly sure that's a Vim bug.
|
||||||
|
setlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\ ,ex:*/,:///,://!,://
|
||||||
|
else
|
||||||
|
setlocal comments=s0:/*!,m:\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,://
|
||||||
|
endif
|
||||||
|
setlocal commentstring=//%s
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqnl
|
||||||
|
" j was only added in 7.3.541, so stop complaints about its nonexistence
|
||||||
|
silent! setlocal formatoptions+=j
|
||||||
|
|
||||||
|
" smartindent will be overridden by indentexpr if filetype indent is on, but
|
||||||
|
" otherwise it's better than nothing.
|
||||||
|
setlocal smartindent nocindent
|
||||||
|
|
||||||
|
if !exists("g:rust_recommended_style") || g:rust_recommended_style == 1
|
||||||
|
setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab
|
||||||
|
setlocal textwidth=99
|
||||||
|
endif
|
||||||
|
|
||||||
|
" This includeexpr isn't perfect, but it's a good start
|
||||||
|
setlocal includeexpr=substitute(v:fname,'::','/','g')
|
||||||
|
|
||||||
|
" NOT adding .rc as it's being phased out (0.7)
|
||||||
|
setlocal suffixesadd=.rs
|
||||||
|
|
||||||
|
if exists("g:ftplugin_rust_source_path")
|
||||||
|
let &l:path=g:ftplugin_rust_source_path . ',' . &l:path
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:loaded_delimitMate")
|
||||||
|
if exists("b:delimitMate_excluded_regions")
|
||||||
|
let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions
|
||||||
|
endif
|
||||||
|
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
|
||||||
|
let b:rust_set_foldmethod=1
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
if g:rust_fold == 2
|
||||||
|
setlocal foldlevel<
|
||||||
|
else
|
||||||
|
setlocal foldlevel=99
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has('conceal') && exists('g:rust_conceal')
|
||||||
|
let b:rust_set_conceallevel=1
|
||||||
|
setlocal conceallevel=2
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Motion Commands {{{1
|
||||||
|
|
||||||
|
" Bind motion commands to support hanging indents
|
||||||
|
nnoremap <silent> <buffer> [[ :call rust#Jump('n', 'Back')<CR>
|
||||||
|
nnoremap <silent> <buffer> ]] :call rust#Jump('n', 'Forward')<CR>
|
||||||
|
xnoremap <silent> <buffer> [[ :call rust#Jump('v', 'Back')<CR>
|
||||||
|
xnoremap <silent> <buffer> ]] :call rust#Jump('v', 'Forward')<CR>
|
||||||
|
onoremap <silent> <buffer> [[ :call rust#Jump('o', 'Back')<CR>
|
||||||
|
onoremap <silent> <buffer> ]] :call rust#Jump('o', 'Forward')<CR>
|
||||||
|
|
||||||
|
" Commands {{{1
|
||||||
|
|
||||||
|
" See |:RustRun| for docs
|
||||||
|
command! -nargs=* -complete=file -bang -bar -buffer RustRun call rust#Run(<bang>0, [<f-args>])
|
||||||
|
|
||||||
|
" See |:RustExpand| for docs
|
||||||
|
command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -bar -buffer RustExpand call rust#Expand(<bang>0, [<f-args>])
|
||||||
|
|
||||||
|
" See |:RustEmitIr| for docs
|
||||||
|
command! -nargs=* -bar -buffer RustEmitIr call rust#Emit("ir", [<f-args>])
|
||||||
|
|
||||||
|
" See |:RustEmitAsm| for docs
|
||||||
|
command! -nargs=* -bar -buffer RustEmitAsm call rust#Emit("asm", [<f-args>])
|
||||||
|
|
||||||
|
" Mappings {{{1
|
||||||
|
|
||||||
|
" Bind ⌘R in MacVim to :RustRun
|
||||||
|
nnoremap <silent> <buffer> <D-r> :RustRun<CR>
|
||||||
|
" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args
|
||||||
|
nnoremap <buffer> <D-R> :RustRun! <C-r>=join(b:rust_last_rustc_args)<CR><C-\>erust#AppendCmdLine(' -- ' . join(b:rust_last_args))<CR>
|
||||||
|
|
||||||
|
if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args")
|
||||||
|
let b:rust_last_rustc_args = []
|
||||||
|
let b:rust_last_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Cleanup {{{1
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "
|
||||||
|
\ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<
|
||||||
|
\|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth<
|
||||||
|
\|if exists('b:rust_original_delimitMate_excluded_regions')
|
||||||
|
\|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions
|
||||||
|
\|unlet b:rust_original_delimitMate_excluded_regions
|
||||||
|
\|else
|
||||||
|
\|unlet! b:delimitMate_excluded_regions
|
||||||
|
\|endif
|
||||||
|
\|if exists('b:rust_set_foldmethod')
|
||||||
|
\|setlocal foldmethod< foldlevel<
|
||||||
|
\|unlet b:rust_set_foldmethod
|
||||||
|
\|endif
|
||||||
|
\|if exists('b:rust_set_conceallevel')
|
||||||
|
\|setlocal conceallevel<
|
||||||
|
\|unlet b:rust_set_conceallevel
|
||||||
|
\|endif
|
||||||
|
\|unlet! b:rust_last_rustc_args b:rust_last_args
|
||||||
|
\|delcommand RustRun
|
||||||
|
\|delcommand RustExpand
|
||||||
|
\|delcommand RustEmitIr
|
||||||
|
\|delcommand RustEmitAsm
|
||||||
|
\|nunmap <buffer> <D-r>
|
||||||
|
\|nunmap <buffer> <D-R>
|
||||||
|
\|nunmap <buffer> [[
|
||||||
|
\|nunmap <buffer> ]]
|
||||||
|
\|xunmap <buffer> [[
|
||||||
|
\|xunmap <buffer> ]]
|
||||||
|
\|ounmap <buffer> [[
|
||||||
|
\|ounmap <buffer> ]]
|
||||||
|
\"
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim: set noet sw=4 ts=4:
|
||||||
@@ -9,8 +9,9 @@ if exists("b:did_ftplugin")
|
|||||||
endif
|
endif
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl cms< def< inc< inex< ofu< sua<"
|
let b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<"
|
||||||
|
|
||||||
|
setlocal comments=://
|
||||||
setlocal commentstring=//\ %s
|
setlocal commentstring=//\ %s
|
||||||
setlocal define=^\\s*\\%(@mixin\\\|=\\)
|
setlocal define=^\\s*\\%(@mixin\\\|=\\)
|
||||||
setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
|
setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
setlocal textwidth=140
|
setlocal formatoptions+=ro
|
||||||
setlocal shiftwidth=2
|
|
||||||
setlocal softtabstop=2
|
|
||||||
setlocal expandtab
|
|
||||||
setlocal formatoptions=tcqr
|
|
||||||
setlocal commentstring=//%s
|
setlocal commentstring=//%s
|
||||||
|
let &l:include = '^\s*import'
|
||||||
|
let &l:includeexpr = 'substitute(v:fname,"\\.","/","g")'
|
||||||
|
setlocal path+=src/main/scala,src/test/scala
|
||||||
|
setlocal suffixesadd=.scala
|
||||||
|
|
||||||
set makeprg=sbt\ -Dsbt.log.noformat=true\ compile
|
set makeprg=sbt\ -Dsbt.log.noformat=true\ compile
|
||||||
set efm=%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
|
set efm=%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
|
||||||
@@ -117,16 +117,21 @@ if globpath(&rtp, 'plugin/fuf.vim') != ''
|
|||||||
return scala#GetDirForFuzzyFinder(a:from, 'src/../')
|
return scala#GetDirForFuzzyFinder(a:from, 'src/../')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
nnoremap <buffer> <silent> ,ft :FufFile <c-r>=scala#GetTestDirForFuzzyFinder('%:p:h')<cr><cr>
|
" If you want to disable the default key mappings, write the following line in
|
||||||
nnoremap <buffer> <silent> ,fs :FufFile <c-r>=scala#GetMainDirForFuzzyFinder('%:p:h')<cr><cr>
|
" your ~/.vimrc
|
||||||
nnoremap <buffer> <silent> ,fr :FufFile <c-r>=scala#GetRootDirForFuzzyFinder('%:p:h')<cr><cr>
|
" let g:scala_use_default_keymappings = 0
|
||||||
|
if get(g:, 'scala_use_default_keymappings', 1)
|
||||||
|
nnoremap <buffer> <silent> <Leader>ft :FufFile <c-r>=scala#GetTestDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
nnoremap <buffer> <silent> <Leader>fs :FufFile <c-r>=scala#GetMainDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
nnoremap <buffer> <silent> <Leader>fr :FufFile <c-r>=scala#GetRootDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If you want to disable the default key mappings, write the following line in
|
" If you want to disable the default key mappings, write the following line in
|
||||||
" your ~/.vimrc
|
" your ~/.vimrc
|
||||||
" let g:scala_use_default_keymappings = 0
|
" let g:scala_use_default_keymappings = 0
|
||||||
if get(g:, 'scala_use_default_keymappings', 1)
|
if get(g:, 'scala_use_default_keymappings', 1)
|
||||||
nnoremap <buffer> ,jt :call JustifyCurrentLine()<cr>
|
nnoremap <buffer> <Leader>jt :call JustifyCurrentLine()<cr>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"
|
"
|
||||||
@@ -164,3 +169,27 @@ let g:tagbar_type_scala = {
|
|||||||
\ 'case class' : 'r'
|
\ 'case class' : 'r'
|
||||||
\ }
|
\ }
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
function! s:CreateOrExpression(keywords)
|
||||||
|
return '('.join(a:keywords, '|').')'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:NextSection(backwards)
|
||||||
|
if a:backwards
|
||||||
|
let dir = '?'
|
||||||
|
else
|
||||||
|
let dir = '/'
|
||||||
|
endif
|
||||||
|
let keywords = [ 'def', 'class', 'trait', 'object' ]
|
||||||
|
let keywordsOrExpression = s:CreateOrExpression(keywords)
|
||||||
|
|
||||||
|
let modifiers = [ 'public', 'private', 'private\[\w*\]', 'protected', 'abstract', 'case', 'override', 'implicit', 'final', 'sealed']
|
||||||
|
let modifierOrExpression = s:CreateOrExpression(modifiers)
|
||||||
|
|
||||||
|
let regex = '^ *('.modifierOrExpression.' )* *'.keywordsOrExpression."\r"
|
||||||
|
execute 'silent normal! ' . dir . '\v'.regex
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
noremap <script> <buffer> <silent> ]] :call <SID>NextSection(0)<cr>
|
||||||
|
|
||||||
|
noremap <script> <buffer> <silent> [[ :call <SID>NextSection(1)<cr>
|
||||||
|
|||||||
@@ -8,5 +8,6 @@ if exists("b:did_ftplugin")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
runtime! ftplugin/sass.vim
|
runtime! ftplugin/sass.vim
|
||||||
|
setlocal comments=s1:/*,mb:*,ex:*/,://
|
||||||
|
|
||||||
" vim:set sw=2:
|
" vim:set sw=2:
|
||||||
|
|||||||
35
ftplugin/toml.vim
Normal file
35
ftplugin/toml.vim
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
" File: ftplugin/toml.vim
|
||||||
|
" Author: Kevin Ballard <kevin@sb.org>
|
||||||
|
" Description: FileType Plugin for Toml
|
||||||
|
" Last Change: Dec 09, 2014
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Add NERDCommenter delimiters
|
||||||
|
|
||||||
|
let s:delims = { 'left': '#' }
|
||||||
|
if exists('g:NERDDelimiterMap')
|
||||||
|
if !has_key(g:NERDDelimiterMap, 'toml')
|
||||||
|
let g:NERDDelimiterMap.toml = s:delims
|
||||||
|
endif
|
||||||
|
elseif exists('g:NERDCustomDelimiters')
|
||||||
|
if !has_key(g:NERDCustomDelimiters, 'toml')
|
||||||
|
let g:NERDCustomDelimiters.toml = s:delims
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let g:NERDCustomDelimiters = { 'toml': s:delims }
|
||||||
|
endif
|
||||||
|
unlet s:delims
|
||||||
|
|
||||||
|
let b:undo_ftplugin = ""
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim: set et sw=4 ts=4:
|
||||||
13
ftplugin/tt2html.vim
Normal file
13
ftplugin/tt2html.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
" Language: TT2 embedded with HTML
|
||||||
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
|
" Last Change: {{LAST_CHANGE}}
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Just use the HTML plugin for now.
|
||||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||||
2
ftplugin/typescript.vim
Normal file
2
ftplugin/typescript.vim
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
compiler typescript
|
||||||
|
setlocal commentstring=//\ %s
|
||||||
14
ftplugin/xs.vim
Normal file
14
ftplugin/xs.vim
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: XS (Perl extension interface language)
|
||||||
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
|
" Last Change: {{LAST_CHANGE}}
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Just use the C plugin for now.
|
||||||
|
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim
|
||||||
15
indent/arduino.vim
Normal file
15
indent/arduino.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Arduino
|
||||||
|
" Maintainer: Kevin Sjöberg <kev.sjoberg@gmail.com>
|
||||||
|
" Last Change: 2014 Feb 28
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" C++ indenting is built-in, thus this is very simple
|
||||||
|
setlocal cindent
|
||||||
|
|
||||||
|
let b:undo_indent = "setl cin<"
|
||||||
@@ -8,11 +8,6 @@
|
|||||||
" License: Same as Vim
|
" License: Same as Vim
|
||||||
" Last Change: %%RELEASE_DATE%%
|
" Last Change: %%RELEASE_DATE%%
|
||||||
|
|
||||||
" TODO: Indenting after multibyte characters is broken:
|
|
||||||
" (let [Δ (if foo
|
|
||||||
" bar ; Indent error
|
|
||||||
" baz)])
|
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
@@ -21,7 +16,7 @@ let b:did_indent = 1
|
|||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
let b:undo_indent = 'setlocal autoindent< smartindent< lispwords< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
|
let b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
|
||||||
|
|
||||||
setlocal noautoindent nosmartindent
|
setlocal noautoindent nosmartindent
|
||||||
setlocal softtabstop=2 shiftwidth=2 expandtab
|
setlocal softtabstop=2 shiftwidth=2 expandtab
|
||||||
@@ -53,36 +48,43 @@ if exists("*searchpairpos")
|
|||||||
let g:clojure_align_multiline_strings = 0
|
let g:clojure_align_multiline_strings = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! s:SynIdName()
|
if !exists('g:clojure_align_subforms')
|
||||||
|
let g:clojure_align_subforms = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:syn_id_name()
|
||||||
return synIDattr(synID(line("."), col("."), 0), "name")
|
return synIDattr(synID(line("."), col("."), 0), "name")
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:CurrentChar()
|
function! s:ignored_region()
|
||||||
|
return s:syn_id_name() =~? '\vstring|regex|comment|character'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:current_char()
|
||||||
return getline('.')[col('.')-1]
|
return getline('.')[col('.')-1]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:CurrentWord()
|
function! s:current_word()
|
||||||
return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
|
return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:IsParen()
|
function! s:is_paren()
|
||||||
return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
|
return s:current_char() =~# '\v[\(\)\[\]\{\}]' && !s:ignored_region()
|
||||||
\ s:SynIdName() !~? '\vstring|regex|comment|character'
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Returns 1 if string matches a pattern in 'patterns', which may be a
|
" Returns 1 if string matches a pattern in 'patterns', which may be a
|
||||||
" list of patterns, or a comma-delimited string of implicitly anchored
|
" list of patterns, or a comma-delimited string of implicitly anchored
|
||||||
" patterns.
|
" patterns.
|
||||||
function! s:MatchesOne(patterns, string)
|
function! s:match_one(patterns, string)
|
||||||
let list = type(a:patterns) == type([])
|
let list = type(a:patterns) == type([])
|
||||||
\ ? a:patterns
|
\ ? a:patterns
|
||||||
\ : map(split(a:patterns, ','), '"^" . v:val . "$"')
|
\ : map(split(a:patterns, ','), '"^" . v:val . "$"')
|
||||||
for pat in list
|
for pat in list
|
||||||
if a:string =~ pat | return 1 | endif
|
if a:string =~# pat | return 1 | endif
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:MatchPairs(open, close, stopat)
|
function! s:match_pairs(open, close, stopat)
|
||||||
" Stop only on vector and map [ resp. {. Ignore the ones in strings and
|
" Stop only on vector and map [ resp. {. Ignore the ones in strings and
|
||||||
" comments.
|
" comments.
|
||||||
if a:stopat == 0
|
if a:stopat == 0
|
||||||
@@ -91,11 +93,11 @@ if exists("*searchpairpos")
|
|||||||
let stopat = a:stopat
|
let stopat = a:stopat
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
|
let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:is_paren()", stopat)
|
||||||
return [pos[0], virtcol(pos)]
|
return [pos[0], col(pos)]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ClojureCheckForStringWorker()
|
function! s:clojure_check_for_string_worker()
|
||||||
" Check whether there is the last character of the previous line is
|
" Check whether there is the last character of the previous line is
|
||||||
" highlighted as a string. If so, we check whether it's a ". In this
|
" highlighted as a string. If so, we check whether it's a ". In this
|
||||||
" case we have to check also the previous character. The " might be the
|
" case we have to check also the previous character. The " might be the
|
||||||
@@ -109,17 +111,17 @@ if exists("*searchpairpos")
|
|||||||
|
|
||||||
call cursor(nb, 0)
|
call cursor(nb, 0)
|
||||||
call cursor(0, col("$") - 1)
|
call cursor(0, col("$") - 1)
|
||||||
if s:SynIdName() !~? "string"
|
if s:syn_id_name() !~? "string"
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" This will not work for a " in the first column...
|
" This will not work for a " in the first column...
|
||||||
if s:CurrentChar() == '"'
|
if s:current_char() == '"'
|
||||||
call cursor(0, col("$") - 2)
|
call cursor(0, col("$") - 2)
|
||||||
if s:SynIdName() !~? "string"
|
if s:syn_id_name() !~? "string"
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
if s:CurrentChar() != '\\'
|
if s:current_char() != '\\'
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
call cursor(0, col("$") - 1)
|
call cursor(0, col("$") - 1)
|
||||||
@@ -134,63 +136,74 @@ if exists("*searchpairpos")
|
|||||||
return indent(".")
|
return indent(".")
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:CheckForString()
|
function! s:check_for_string()
|
||||||
let pos = getpos('.')
|
let pos = getpos('.')
|
||||||
try
|
try
|
||||||
let val = s:ClojureCheckForStringWorker()
|
let val = s:clojure_check_for_string_worker()
|
||||||
finally
|
finally
|
||||||
call setpos('.', pos)
|
call setpos('.', pos)
|
||||||
endtry
|
endtry
|
||||||
return val
|
return val
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ClojureIsMethodSpecialCaseWorker(position)
|
function! s:strip_namespace_and_macro_chars(word)
|
||||||
|
return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:clojure_is_method_special_case_worker(position)
|
||||||
" Find the next enclosing form.
|
" Find the next enclosing form.
|
||||||
call search('\S', 'Wb')
|
call search('\S', 'Wb')
|
||||||
|
|
||||||
" Special case: we are at a '(('.
|
" Special case: we are at a '(('.
|
||||||
if s:CurrentChar() == '('
|
if s:current_char() == '('
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
call cursor(a:position)
|
call cursor(a:position)
|
||||||
|
|
||||||
let nextParen = s:MatchPairs('(', ')', 0)
|
let next_paren = s:match_pairs('(', ')', 0)
|
||||||
|
|
||||||
" Special case: we are now at toplevel.
|
" Special case: we are now at toplevel.
|
||||||
if nextParen == [0, 0]
|
if next_paren == [0, 0]
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
call cursor(nextParen)
|
call cursor(next_paren)
|
||||||
|
|
||||||
call search('\S', 'W')
|
call search('\S', 'W')
|
||||||
if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>'
|
let w = s:strip_namespace_and_macro_chars(s:current_word())
|
||||||
|
if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:IsMethodSpecialCase(position)
|
function! s:is_method_special_case(position)
|
||||||
let pos = getpos('.')
|
let pos = getpos('.')
|
||||||
try
|
try
|
||||||
let val = s:ClojureIsMethodSpecialCaseWorker(a:position)
|
let val = s:clojure_is_method_special_case_worker(a:position)
|
||||||
finally
|
finally
|
||||||
call setpos('.', pos)
|
call setpos('.', pos)
|
||||||
endtry
|
endtry
|
||||||
return val
|
return val
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! GetClojureIndent()
|
" Returns 1 for opening brackets, -1 for _anything else_.
|
||||||
|
function! s:bracket_type(char)
|
||||||
|
return stridx('([{', a:char) > -1 ? 1 : -1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns: [opening-bracket-lnum, indent]
|
||||||
|
function! s:clojure_indent_pos()
|
||||||
" Get rid of special case.
|
" Get rid of special case.
|
||||||
if line(".") == 1
|
if line(".") == 1
|
||||||
return 0
|
return [0, 0]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" We have to apply some heuristics here to figure out, whether to use
|
" We have to apply some heuristics here to figure out, whether to use
|
||||||
" normal lisp indenting or not.
|
" normal lisp indenting or not.
|
||||||
let i = s:CheckForString()
|
let i = s:check_for_string()
|
||||||
if i > -1
|
if i > -1
|
||||||
return i + !!g:clojure_align_multiline_strings
|
return [0, i + !!g:clojure_align_multiline_strings]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call cursor(0, 1)
|
call cursor(0, 1)
|
||||||
@@ -198,28 +211,28 @@ if exists("*searchpairpos")
|
|||||||
" Find the next enclosing [ or {. We can limit the second search
|
" Find the next enclosing [ or {. We can limit the second search
|
||||||
" to the line, where the [ was found. If no [ was there this is
|
" to the line, where the [ was found. If no [ was there this is
|
||||||
" zero and we search for an enclosing {.
|
" zero and we search for an enclosing {.
|
||||||
let paren = s:MatchPairs('(', ')', 0)
|
let paren = s:match_pairs('(', ')', 0)
|
||||||
let bracket = s:MatchPairs('\[', '\]', paren[0])
|
let bracket = s:match_pairs('\[', '\]', paren[0])
|
||||||
let curly = s:MatchPairs('{', '}', bracket[0])
|
let curly = s:match_pairs('{', '}', bracket[0])
|
||||||
|
|
||||||
" In case the curly brace is on a line later then the [ or - in
|
" In case the curly brace is on a line later then the [ or - in
|
||||||
" case they are on the same line - in a higher column, we take the
|
" case they are on the same line - in a higher column, we take the
|
||||||
" curly indent.
|
" curly indent.
|
||||||
if curly[0] > bracket[0] || curly[1] > bracket[1]
|
if curly[0] > bracket[0] || curly[1] > bracket[1]
|
||||||
if curly[0] > paren[0] || curly[1] > paren[1]
|
if curly[0] > paren[0] || curly[1] > paren[1]
|
||||||
return curly[1]
|
return curly
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If the curly was not chosen, we take the bracket indent - if
|
" If the curly was not chosen, we take the bracket indent - if
|
||||||
" there was one.
|
" there was one.
|
||||||
if bracket[0] > paren[0] || bracket[1] > paren[1]
|
if bracket[0] > paren[0] || bracket[1] > paren[1]
|
||||||
return bracket[1]
|
return bracket
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" There are neither { nor [ nor (, ie. we are at the toplevel.
|
" There are neither { nor [ nor (, ie. we are at the toplevel.
|
||||||
if paren == [0, 0]
|
if paren == [0, 0]
|
||||||
return 0
|
return paren
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Now we have to reimplement lispindent. This is surprisingly easy, as
|
" Now we have to reimplement lispindent. This is surprisingly easy, as
|
||||||
@@ -237,58 +250,116 @@ if exists("*searchpairpos")
|
|||||||
" - In any other case we use the column of the end of the word + 2.
|
" - In any other case we use the column of the end of the word + 2.
|
||||||
call cursor(paren)
|
call cursor(paren)
|
||||||
|
|
||||||
if s:IsMethodSpecialCase(paren)
|
if s:is_method_special_case(paren)
|
||||||
return paren[1] + &shiftwidth - 1
|
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" In case we are at the last character, we use the paren position.
|
" In case we are at the last character, we use the paren position.
|
||||||
if col("$") - 1 == paren[1]
|
if col("$") - 1 == paren[1]
|
||||||
return paren[1]
|
return paren
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" In case after the paren is a whitespace, we search for the next word.
|
" In case after the paren is a whitespace, we search for the next word.
|
||||||
call cursor(0, col('.') + 1)
|
call cursor(0, col('.') + 1)
|
||||||
if s:CurrentChar() == ' '
|
if s:current_char() == ' '
|
||||||
call search('\v\S', 'W')
|
call search('\v\S', 'W')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If we moved to another line, there is no word after the (. We
|
" If we moved to another line, there is no word after the (. We
|
||||||
" use the ( position for indent.
|
" use the ( position for indent.
|
||||||
if line(".") > paren[0]
|
if line(".") > paren[0]
|
||||||
return paren[1]
|
return paren
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" We still have to check, whether the keyword starts with a (, [ or {.
|
" We still have to check, whether the keyword starts with a (, [ or {.
|
||||||
" In that case we use the ( position for indent.
|
" In that case we use the ( position for indent.
|
||||||
let w = s:CurrentWord()
|
let w = s:current_word()
|
||||||
if stridx('([{', w[0]) > -1
|
if s:bracket_type(w[0]) == 1
|
||||||
return paren[1]
|
return paren
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Test words without namespace qualifiers and leading reader macro
|
" Test words without namespace qualifiers and leading reader macro
|
||||||
" metacharacters.
|
" metacharacters.
|
||||||
"
|
"
|
||||||
" e.g. clojure.core/defn and #'defn should both indent like defn.
|
" e.g. clojure.core/defn and #'defn should both indent like defn.
|
||||||
let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
|
let ww = s:strip_namespace_and_macro_chars(w)
|
||||||
|
|
||||||
if &lispwords =~ '\V\<' . ww . '\>'
|
if &lispwords =~# '\V\<' . ww . '\>'
|
||||||
return paren[1] + &shiftwidth - 1
|
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:clojure_fuzzy_indent
|
if g:clojure_fuzzy_indent
|
||||||
\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)
|
\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
|
||||||
\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)
|
\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
|
||||||
return paren[1] + &shiftwidth - 1
|
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call search('\v\_s', 'cW')
|
call search('\v\_s', 'cW')
|
||||||
call search('\v\S', 'W')
|
call search('\v\S', 'W')
|
||||||
if paren[0] < line(".")
|
if paren[0] < line(".")
|
||||||
return paren[1] + &shiftwidth - 1
|
return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call search('\v\S', 'bW')
|
call search('\v\S', 'bW')
|
||||||
return virtcol(".") + 1
|
return [line('.'), col('.') + 1]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GetClojureIndent()
|
||||||
|
let lnum = line('.')
|
||||||
|
let orig_lnum = lnum
|
||||||
|
let orig_col = col('.')
|
||||||
|
let [opening_lnum, indent] = s:clojure_indent_pos()
|
||||||
|
|
||||||
|
" Account for multibyte characters
|
||||||
|
if opening_lnum > 0
|
||||||
|
let indent -= indent - virtcol([opening_lnum, indent])
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Return if there are no previous lines to inherit from
|
||||||
|
if opening_lnum < 1 || opening_lnum >= lnum - 1
|
||||||
|
call cursor(orig_lnum, orig_col)
|
||||||
|
return indent
|
||||||
|
endif
|
||||||
|
|
||||||
|
let bracket_count = 0
|
||||||
|
|
||||||
|
" Take the indent of the first previous non-white line that is
|
||||||
|
" at the same sexp level. cf. src/misc1.c:get_lisp_indent()
|
||||||
|
while 1
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
let col = 1
|
||||||
|
|
||||||
|
if lnum <= opening_lnum
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
|
||||||
|
call cursor(lnum, col)
|
||||||
|
|
||||||
|
" Handle bracket counting edge case
|
||||||
|
if s:is_paren()
|
||||||
|
let bracket_count += s:bracket_type(s:current_char())
|
||||||
|
endif
|
||||||
|
|
||||||
|
while 1
|
||||||
|
if search('\v[(\[{}\])]', '', lnum) < 1
|
||||||
|
break
|
||||||
|
elseif !s:ignored_region()
|
||||||
|
let bracket_count += s:bracket_type(s:current_char())
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if bracket_count == 0
|
||||||
|
" Check if this is part of a multiline string
|
||||||
|
call cursor(lnum, 1)
|
||||||
|
if s:syn_id_name() !~? '\vstring|regex'
|
||||||
|
call cursor(orig_lnum, orig_col)
|
||||||
|
return indent(lnum)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
call cursor(orig_lnum, orig_col)
|
||||||
|
return indent
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
setlocal indentexpr=GetClojureIndent()
|
setlocal indentexpr=GetClojureIndent()
|
||||||
@@ -303,85 +374,6 @@ else
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Specially indented symbols from clojure.core and clojure.test.
|
|
||||||
"
|
|
||||||
" Clojure symbols are indented in the defn style when they:
|
|
||||||
"
|
|
||||||
" * Define vars and anonymous functions
|
|
||||||
" * Create new lexical scopes or scopes with altered environments
|
|
||||||
" * Create conditional branches from a predicate function or value
|
|
||||||
"
|
|
||||||
" The arglists for these functions are generally in the form of [x & body];
|
|
||||||
" Functions that accept a flat list of forms do not treat the first argument
|
|
||||||
" specially and hence are not indented specially.
|
|
||||||
|
|
||||||
" Definitions
|
|
||||||
setlocal lispwords=
|
|
||||||
setlocal lispwords+=bound-fn
|
|
||||||
setlocal lispwords+=def
|
|
||||||
setlocal lispwords+=definline
|
|
||||||
setlocal lispwords+=definterface
|
|
||||||
setlocal lispwords+=defmacro
|
|
||||||
setlocal lispwords+=defmethod
|
|
||||||
setlocal lispwords+=defmulti
|
|
||||||
setlocal lispwords+=defn
|
|
||||||
setlocal lispwords+=defn-
|
|
||||||
setlocal lispwords+=defonce
|
|
||||||
setlocal lispwords+=defprotocol
|
|
||||||
setlocal lispwords+=defrecord
|
|
||||||
setlocal lispwords+=defstruct
|
|
||||||
setlocal lispwords+=deftest " clojure.test
|
|
||||||
setlocal lispwords+=deftest- " clojure.test
|
|
||||||
setlocal lispwords+=deftype
|
|
||||||
setlocal lispwords+=extend
|
|
||||||
setlocal lispwords+=extend-protocol
|
|
||||||
setlocal lispwords+=extend-type
|
|
||||||
setlocal lispwords+=fn
|
|
||||||
setlocal lispwords+=ns
|
|
||||||
setlocal lispwords+=proxy
|
|
||||||
setlocal lispwords+=reify
|
|
||||||
setlocal lispwords+=set-test " clojure.test
|
|
||||||
|
|
||||||
" Binding forms
|
|
||||||
setlocal lispwords+=as->
|
|
||||||
setlocal lispwords+=binding
|
|
||||||
setlocal lispwords+=doall
|
|
||||||
setlocal lispwords+=dorun
|
|
||||||
setlocal lispwords+=doseq
|
|
||||||
setlocal lispwords+=dotimes
|
|
||||||
setlocal lispwords+=doto
|
|
||||||
setlocal lispwords+=for
|
|
||||||
setlocal lispwords+=if-let
|
|
||||||
setlocal lispwords+=let
|
|
||||||
setlocal lispwords+=letfn
|
|
||||||
setlocal lispwords+=locking
|
|
||||||
setlocal lispwords+=loop
|
|
||||||
setlocal lispwords+=testing " clojure.test
|
|
||||||
setlocal lispwords+=when-first
|
|
||||||
setlocal lispwords+=when-let
|
|
||||||
setlocal lispwords+=with-bindings
|
|
||||||
setlocal lispwords+=with-in-str
|
|
||||||
setlocal lispwords+=with-local-vars
|
|
||||||
setlocal lispwords+=with-open
|
|
||||||
setlocal lispwords+=with-precision
|
|
||||||
setlocal lispwords+=with-redefs
|
|
||||||
setlocal lispwords+=with-redefs-fn
|
|
||||||
setlocal lispwords+=with-test " clojure.test
|
|
||||||
|
|
||||||
" Conditional branching
|
|
||||||
setlocal lispwords+=case
|
|
||||||
setlocal lispwords+=cond->
|
|
||||||
setlocal lispwords+=cond->>
|
|
||||||
setlocal lispwords+=condp
|
|
||||||
setlocal lispwords+=if
|
|
||||||
setlocal lispwords+=if-not
|
|
||||||
setlocal lispwords+=when
|
|
||||||
setlocal lispwords+=when-not
|
|
||||||
setlocal lispwords+=while
|
|
||||||
|
|
||||||
" Exception handling
|
|
||||||
setlocal lispwords+=catch
|
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
unlet! s:save_cpo
|
unlet! s:save_cpo
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
" Language: CoffeeScript
|
" Language: CoffeeScript
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
" Maintainer: Mick Koch <mick@kochm.co>
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
" URL: http://github.com/kchmck/vim-coffee-script
|
||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
@@ -99,6 +99,16 @@ let s:SYNTAX_COMMENT = 'coffee\%(Comment\|BlockComment\|HeregexComment\)'
|
|||||||
" Syntax names for strings and comments
|
" Syntax names for strings and comments
|
||||||
let s:SYNTAX_STRING_COMMENT = s:SYNTAX_STRING . '\|' . s:SYNTAX_COMMENT
|
let s:SYNTAX_STRING_COMMENT = s:SYNTAX_STRING . '\|' . s:SYNTAX_COMMENT
|
||||||
|
|
||||||
|
" Compatibility code for shiftwidth() as recommended by the docs, but modified
|
||||||
|
" so there isn't as much of a penalty if shiftwidth() exists.
|
||||||
|
if exists('*shiftwidth')
|
||||||
|
let s:ShiftWidth = function('shiftwidth')
|
||||||
|
else
|
||||||
|
function! s:ShiftWidth()
|
||||||
|
return &shiftwidth
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
" Get the linked syntax name of a character.
|
" Get the linked syntax name of a character.
|
||||||
function! s:SyntaxName(lnum, col)
|
function! s:SyntaxName(lnum, col)
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name')
|
return synIDattr(synID(a:lnum, a:col, 1), 'name')
|
||||||
@@ -329,16 +339,16 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
|
|
||||||
" Always indent after these operators.
|
" Always indent after these operators.
|
||||||
if prevline =~ s:BEGIN_BLOCK_OP
|
if prevline =~ s:BEGIN_BLOCK_OP
|
||||||
return indent(prevnlnum) + shiftwidth()
|
return indent(prevnlnum) + s:ShiftWidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indent if the previous line starts a function block, but don't force
|
" Indent if the previous line starts a function block, but don't force
|
||||||
" indenting if the line is non-blank (for empty function bodies.)
|
" indenting if the line is non-blank (for empty function bodies.)
|
||||||
if prevline =~ s:FUNCTION
|
if prevline =~ s:FUNCTION
|
||||||
if strlen(getline(a:curlnum)) > indent(a:curlnum)
|
if strlen(getline(a:curlnum)) > indent(a:curlnum)
|
||||||
return min([indent(prevnlnum) + shiftwidth(), indent(a:curlnum)])
|
return min([indent(prevnlnum) + s:ShiftWidth(), indent(a:curlnum)])
|
||||||
else
|
else
|
||||||
return indent(prevnlnum) + shiftwidth()
|
return indent(prevnlnum) + s:ShiftWidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -365,7 +375,7 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Otherwise indent a level.
|
" Otherwise indent a level.
|
||||||
return indent(prevnlnum) + shiftwidth()
|
return indent(prevnlnum) + s:ShiftWidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Check if the previous line starts with a keyword that begins a block.
|
" Check if the previous line starts with a keyword that begins a block.
|
||||||
@@ -374,7 +384,7 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
" isn't a single-line statement.
|
" isn't a single-line statement.
|
||||||
if curline !~ '\C^\<then\>' && !s:SearchCode(prevnlnum, '\C\<then\>') &&
|
if curline !~ '\C^\<then\>' && !s:SearchCode(prevnlnum, '\C\<then\>') &&
|
||||||
\ prevline !~ s:SINGLE_LINE_ELSE
|
\ prevline !~ s:SINGLE_LINE_ELSE
|
||||||
return indent(prevnlnum) + shiftwidth()
|
return indent(prevnlnum) + s:ShiftWidth()
|
||||||
else
|
else
|
||||||
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
||||||
endif
|
endif
|
||||||
@@ -383,7 +393,7 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
" Indent a dot access if it's the first.
|
" Indent a dot access if it's the first.
|
||||||
if curline =~ s:DOT_ACCESS
|
if curline =~ s:DOT_ACCESS
|
||||||
if prevline !~ s:DOT_ACCESS
|
if prevline !~ s:DOT_ACCESS
|
||||||
return indent(prevnlnum) + shiftwidth()
|
return indent(prevnlnum) + s:ShiftWidth()
|
||||||
else
|
else
|
||||||
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
||||||
endif
|
endif
|
||||||
@@ -396,7 +406,7 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
\ s:SearchCode(prevnlnum, '\C\<then\>') &&
|
\ s:SearchCode(prevnlnum, '\C\<then\>') &&
|
||||||
\ !s:SearchCode(prevnlnum, s:CONTAINED_THEN)
|
\ !s:SearchCode(prevnlnum, s:CONTAINED_THEN)
|
||||||
" Don't force indenting.
|
" Don't force indenting.
|
||||||
return min([indent(a:curlnum), indent(prevnlnum) - shiftwidth()])
|
return min([indent(a:curlnum), indent(prevnlnum) - s:ShiftWidth()])
|
||||||
else
|
else
|
||||||
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
exec 'return' s:GetDefaultPolicy(a:curlnum)
|
||||||
endif
|
endif
|
||||||
@@ -410,7 +420,7 @@ function! GetCoffeeIndent(curlnum)
|
|||||||
" If inside brackets, indent relative to the brackets, but don't outdent an
|
" If inside brackets, indent relative to the brackets, but don't outdent an
|
||||||
" already indented line.
|
" already indented line.
|
||||||
if matchlnum
|
if matchlnum
|
||||||
return max([indent(a:curlnum), indent(matchlnum) + shiftwidth()])
|
return max([indent(a:curlnum), indent(matchlnum) + s:ShiftWidth()])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" No special rules applied, so use the default policy.
|
" No special rules applied, so use the default policy.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Cucumber
|
" Language: Cucumber
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2010 May 21
|
" Last Change: 2013 May 30
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
|
|||||||
72
indent/eelixir.vim
Normal file
72
indent/eelixir.vim
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Embedded Elixir
|
||||||
|
" URL: https://github.com/elixir-lang/vim-elixir
|
||||||
|
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! indent/elixir.vim
|
||||||
|
unlet! b:did_indent
|
||||||
|
setlocal indentexpr=
|
||||||
|
|
||||||
|
if exists("b:eelixir_subtype")
|
||||||
|
exe "runtime! indent/".b:eelixir_subtype.".vim"
|
||||||
|
else
|
||||||
|
runtime! indent/html.vim
|
||||||
|
endif
|
||||||
|
unlet! b:did_indent
|
||||||
|
|
||||||
|
if &l:indentexpr == ''
|
||||||
|
if &l:cindent
|
||||||
|
let &l:indentexpr = 'cindent(v:lnum)'
|
||||||
|
else
|
||||||
|
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let b:eelixir_subtype_indentexpr = &l:indentexpr
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal indentexpr=GetEelixirIndent()
|
||||||
|
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=catch,=after,=rescue
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetEelixirIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! GetEelixirIndent(...)
|
||||||
|
if a:0 && a:1 == '.'
|
||||||
|
let v:lnum = line('.')
|
||||||
|
elseif a:0 && a:1 =~ '^\d'
|
||||||
|
let v:lnum = a:1
|
||||||
|
endif
|
||||||
|
let vcol = col('.')
|
||||||
|
call cursor(v:lnum,1)
|
||||||
|
let inelixir = searchpair('<%','','%>','W')
|
||||||
|
call cursor(v:lnum,vcol)
|
||||||
|
if inelixir && getline(v:lnum) !~ '^<%\|^\s*%>'
|
||||||
|
let ind = GetElixirIndent()
|
||||||
|
else
|
||||||
|
exe "let ind = ".b:eelixir_subtype_indentexpr
|
||||||
|
endif
|
||||||
|
let lnum = prevnonblank(v:lnum-1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
let cline = getline(v:lnum)
|
||||||
|
if cline =~# '^\s*<%\s*\%(end\|else\|elsif\|catch\|after\|rescue\)\>.*%>'
|
||||||
|
let ind = ind - &sw
|
||||||
|
elseif line =~# '\S\s*<%\s*end\s*%>'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
if line =~# '<%[=%]\=\s*.*\<do\s*%>'
|
||||||
|
let ind = ind + &sw
|
||||||
|
elseif line =~# '<%\s*\%(else\|elsif\|catch\|after\|rescue\)\>.*%>'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
if cline =~# '^\s*%>\s*$'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
@@ -10,8 +10,8 @@ let b:did_indent = 1
|
|||||||
|
|
||||||
setlocal nosmartindent
|
setlocal nosmartindent
|
||||||
|
|
||||||
setlocal indentexpr=GetElixirIndent(v:lnum)
|
setlocal indentexpr=GetElixirIndent()
|
||||||
setlocal indentkeys+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue:
|
setlocal indentkeys+=0=end,0=else,0=match,0=elsif,0=catch,0=after,0=rescue
|
||||||
|
|
||||||
if exists("*GetElixirIndent")
|
if exists("*GetElixirIndent")
|
||||||
finish
|
finish
|
||||||
@@ -25,11 +25,13 @@ let s:block_skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . s:s
|
|||||||
let s:block_start = 'do\|fn'
|
let s:block_start = 'do\|fn'
|
||||||
let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue'
|
let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue'
|
||||||
let s:block_end = 'end'
|
let s:block_end = 'end'
|
||||||
|
let s:arrow = '^.*->$'
|
||||||
|
let s:pipeline = '^\s*|>.*$'
|
||||||
|
|
||||||
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$'
|
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$' . '\|' . s:arrow
|
||||||
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>'
|
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>' . '\|' . s:arrow
|
||||||
|
|
||||||
function! GetElixirIndent(...)
|
function! GetElixirIndent()
|
||||||
let lnum = prevnonblank(v:lnum - 1)
|
let lnum = prevnonblank(v:lnum - 1)
|
||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
|
|
||||||
@@ -38,20 +40,71 @@ function! GetElixirIndent(...)
|
|||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if synIDattr(synID(v:lnum, 1, 1), "name") !~ '\(Comment\|String\)$'
|
" TODO: Remove these 2 lines
|
||||||
if getline(lnum) =~ s:indent_keywords .
|
" I don't know why, but for the test on spec/indent/lists_spec.rb:24.
|
||||||
\ '\|^\s*\%(^.*[\[{(].*[,:]\|.*->\)$'
|
" Vim is making some mess on parsing the syntax of 'end', it is being
|
||||||
|
" recognized as 'elixirString' when should be recognized as 'elixirBlock'.
|
||||||
|
" This forces vim to sync the syntax.
|
||||||
|
call synID(v:lnum, 1, 1)
|
||||||
|
syntax sync fromstart
|
||||||
|
|
||||||
|
if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax
|
||||||
|
let current_line = getline(v:lnum)
|
||||||
|
let last_line = getline(lnum)
|
||||||
|
|
||||||
|
let splited_line = split(last_line, '\zs')
|
||||||
|
let opened_symbol = 0
|
||||||
|
let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
|
||||||
|
let opened_symbol += count(splited_line, '{') - count(splited_line, '}')
|
||||||
|
|
||||||
|
let ind += opened_symbol * &sw
|
||||||
|
|
||||||
|
if current_line =~ '^\s*\(\]\|}\)'
|
||||||
|
let ind -= &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
if last_line =~ s:indent_keywords
|
||||||
let ind += &sw
|
let ind += &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if getline(v:lnum) =~ s:deindent_keywords
|
" if line starts with pipeline
|
||||||
|
" and last line contains pipeline(s)
|
||||||
|
" align them
|
||||||
|
if last_line =~ '|>.*$' &&
|
||||||
|
\ current_line =~ s:pipeline
|
||||||
|
let ind = float2nr(match(last_line, '|>') / &sw) * &sw
|
||||||
|
|
||||||
|
" if line starts with pipeline
|
||||||
|
" and last line is an attribution
|
||||||
|
" indents pipeline in same level as attribution
|
||||||
|
elseif current_line =~ s:pipeline &&
|
||||||
|
\ last_line =~ '^[^=]\+=.\+$'
|
||||||
|
let b:old_ind = ind
|
||||||
|
let ind = float2nr(matchend(last_line, '=\s*[^ ]') / &sw) * &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" if last line starts with pipeline
|
||||||
|
" and current line doesn't start with pipeline
|
||||||
|
" returns the indentation before the pipeline
|
||||||
|
if last_line =~ s:pipeline &&
|
||||||
|
\ current_line !~ s:pipeline
|
||||||
|
let ind = b:old_ind
|
||||||
|
endif
|
||||||
|
|
||||||
|
if current_line =~ s:deindent_keywords
|
||||||
let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>',
|
let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>',
|
||||||
\ '\<\%(' . s:block_middle . '\):\@!\>\zs',
|
\ '\<\%(' . s:block_middle . '\):\@!\>\zs',
|
||||||
\ '\<:\@<!' . s:block_end . '\>\zs',
|
\ '\<:\@<!' . s:block_end . '\>\zs',
|
||||||
\ 'nbW',
|
\ 'nbW',
|
||||||
\ s:block_skip )
|
\ s:block_skip )
|
||||||
|
|
||||||
let ind = indent(bslnum)
|
let ind = indent(bslnum)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" indent case statements '->'
|
||||||
|
if current_line =~ s:arrow
|
||||||
|
let ind += &sw
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
|||||||
14
indent/ember-script.vim
Normal file
14
indent/ember-script.vim
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
" Language: ember-script
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-ember-script
|
||||||
|
" Version: 1.0.1
|
||||||
|
" Last Change: 2013 Apr 17
|
||||||
|
" License: GPL-3.0
|
||||||
|
|
||||||
|
if exists('b:did_indent')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! indent/coffee.vim
|
||||||
|
unlet! b:did_indent
|
||||||
|
let b:did_indent = 1
|
||||||
6
indent/emblem.vim
Normal file
6
indent/emblem.vim
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
" Language: emblem
|
||||||
|
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||||
|
" URL: http://github.com/heartsentwined/vim-emblem
|
||||||
|
" Version: 1.2.0
|
||||||
|
" Last Change: 2013 Apr 22
|
||||||
|
" License: GPL-3.0
|
||||||
1616
indent/erlang.vim
1616
indent/erlang.vim
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,9 @@ else
|
|||||||
endif
|
endif
|
||||||
unlet! b:did_indent
|
unlet! b:did_indent
|
||||||
|
|
||||||
|
" Force HTML indent to not keep state.
|
||||||
|
let b:html_indent_usestate = 0
|
||||||
|
|
||||||
if &l:indentexpr == ''
|
if &l:indentexpr == ''
|
||||||
if &l:cindent
|
if &l:cindent
|
||||||
let &l:indentexpr = 'cindent(v:lnum)'
|
let &l:indentexpr = 'cindent(v:lnum)'
|
||||||
@@ -39,6 +42,13 @@ if exists("*GetErubyIndent")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! GetErubyIndent(...)
|
function! GetErubyIndent(...)
|
||||||
|
" The value of a single shift-width
|
||||||
|
if exists('*shiftwidth')
|
||||||
|
let sw = shiftwidth()
|
||||||
|
else
|
||||||
|
let sw = &sw
|
||||||
|
endif
|
||||||
|
|
||||||
if a:0 && a:1 == '.'
|
if a:0 && a:1 == '.'
|
||||||
let v:lnum = line('.')
|
let v:lnum = line('.')
|
||||||
elseif a:0 && a:1 =~ '^\d'
|
elseif a:0 && a:1 =~ '^\d'
|
||||||
@@ -53,7 +63,8 @@ function! GetErubyIndent(...)
|
|||||||
else
|
else
|
||||||
exe "let ind = ".b:eruby_subtype_indentexpr
|
exe "let ind = ".b:eruby_subtype_indentexpr
|
||||||
|
|
||||||
" Workaround for Andy Wokula's HTML indent
|
" Workaround for Andy Wokula's HTML indent. This should be removed after
|
||||||
|
" some time, since the newest version is fixed in a different way.
|
||||||
if b:eruby_subtype_indentexpr =~# '^HtmlIndent('
|
if b:eruby_subtype_indentexpr =~# '^HtmlIndent('
|
||||||
\ && exists('b:indent')
|
\ && exists('b:indent')
|
||||||
\ && type(b:indent) == type({})
|
\ && type(b:indent) == type({})
|
||||||
@@ -66,24 +77,24 @@ function! GetErubyIndent(...)
|
|||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
let cline = getline(v:lnum)
|
let cline = getline(v:lnum)
|
||||||
if cline =~# '^\s*<%[-=]\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%([-=]\=%>\|$\)'
|
if cline =~# '^\s*<%[-=]\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%([-=]\=%>\|$\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - sw
|
||||||
endif
|
endif
|
||||||
if line =~# '\S\s*<%[-=]\=\s*\%(}\|end\).\{-\}\s*\%([-=]\=%>\|$\)'
|
if line =~# '\S\s*<%[-=]\=\s*\%(}\|end\).\{-\}\s*\%([-=]\=%>\|$\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - sw
|
||||||
endif
|
endif
|
||||||
if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*[-=]\=%>'
|
if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*[-=]\=%>'
|
||||||
let ind = ind + &sw
|
let ind = ind + sw
|
||||||
elseif line =~# '<%[-=]\=\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>'
|
elseif line =~# '<%[-=]\=\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>'
|
||||||
let ind = ind + &sw
|
let ind = ind + sw
|
||||||
endif
|
endif
|
||||||
if line =~# '^\s*<%[=#-]\=\s*$' && cline !~# '^\s*end\>'
|
if line =~# '^\s*<%[=#-]\=\s*$' && cline !~# '^\s*end\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + sw
|
||||||
endif
|
endif
|
||||||
if line !~# '^\s*<%' && line =~# '%>\s*$'
|
if line !~# '^\s*<%' && line =~# '%>\s*$'
|
||||||
let ind = ind - &sw
|
let ind = ind - sw
|
||||||
endif
|
endif
|
||||||
if cline =~# '^\s*[-=]\=%>\s*$'
|
if cline =~# '^\s*[-=]\=%>\s*$'
|
||||||
let ind = ind - &sw
|
let ind = ind - sw
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ function! HIndent(lnum)
|
|||||||
" This is the wrong thing if you are deeply indented already and want to put
|
" This is the wrong thing if you are deeply indented already and want to put
|
||||||
" a where clause on the top-level construct, but there isn't much that can
|
" a where clause on the top-level construct, but there isn't much that can
|
||||||
" be done about that case...
|
" be done about that case...
|
||||||
if thisl =~ '^\s*where\s*$'
|
if thisl =~ '^\s*where\s*'
|
||||||
return previ + &sw
|
return previ + &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ function! HIndent(lnum)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if prevl =~ '\Wof\s*$' || prevl =~ '\Wdo\s*$'
|
if prevl =~ '\Wof\s*$' || prevl =~ '\Wm\=do\s*$'
|
||||||
return previ + &sw
|
return previ + &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -175,11 +175,11 @@ function! HIndent(lnum)
|
|||||||
return previ - &sw
|
return previ - &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" On the other hand, if the previous line is a where with some bindings
|
" On the other hand, if the previous line is a do or where with some bindings
|
||||||
" following it on the same line, accommodate and align with the first non-ws
|
" following it on the same line, accommodate and align with the first non-ws
|
||||||
" char after the where
|
" char after the where
|
||||||
if prevl =~ '\Wwhere\s\+\w'
|
if prevl =~ '\W\(do\|where\)\s\+\w'
|
||||||
let bindStart = match(prevl, '\(\Wwhere\s\+\)\@<=\w')
|
let bindStart = match(prevl, '\(\W\(do\|where\)\s\+\)\@<=\w')
|
||||||
if bindStart != -1
|
if bindStart != -1
|
||||||
return bindStart
|
return bindStart
|
||||||
endif
|
endif
|
||||||
@@ -248,7 +248,7 @@ function! s:GetAndStripTrailingComments(lnum)
|
|||||||
let aline = getline(a:lnum)
|
let aline = getline(a:lnum)
|
||||||
" We can't just remove the string literal since that leaves us with a
|
" We can't just remove the string literal since that leaves us with a
|
||||||
" trailing operator (=), so replace it with a fake identifier
|
" trailing operator (=), so replace it with a fake identifier
|
||||||
let noStrings = substitute(aline, '"\([^"]\|\\"\)*"', 's', '')
|
let noStrings = substitute(aline, '"\([^"]\|\\"\)*"', '\=repeat("s", len(submatch(0)))', '')
|
||||||
let noLineCom = substitute(noStrings, '--.*$', '', '')
|
let noLineCom = substitute(noStrings, '--.*$', '', '')
|
||||||
|
|
||||||
" If there are no fancy block comments involved, skip some of this extra
|
" If there are no fancy block comments involved, skip some of this extra
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ let b:did_indent = 1
|
|||||||
|
|
||||||
" [-- local settings (must come before aborting the script) --]
|
" [-- local settings (must come before aborting the script) --]
|
||||||
setlocal indentexpr=HtmlIndentGet(v:lnum)
|
setlocal indentexpr=HtmlIndentGet(v:lnum)
|
||||||
setlocal indentkeys=o,O,*<Return>,<>>,{,}
|
setlocal indentkeys=o,O,*<Return>,<>>,{,},!^F
|
||||||
|
|
||||||
|
|
||||||
let s:tags = []
|
let s:tags = []
|
||||||
@@ -61,6 +61,8 @@ call add(s:tags, 'dfn')
|
|||||||
call add(s:tags, 'dir')
|
call add(s:tags, 'dir')
|
||||||
call add(s:tags, 'div')
|
call add(s:tags, 'div')
|
||||||
call add(s:tags, 'dl')
|
call add(s:tags, 'dl')
|
||||||
|
call add(s:tags, 'dt')
|
||||||
|
call add(s:tags, 'dd')
|
||||||
call add(s:tags, 'em')
|
call add(s:tags, 'em')
|
||||||
call add(s:tags, 'fieldset')
|
call add(s:tags, 'fieldset')
|
||||||
call add(s:tags, 'font')
|
call add(s:tags, 'font')
|
||||||
@@ -125,17 +127,21 @@ call add(s:tags, 'meter')
|
|||||||
call add(s:tags, 'nav')
|
call add(s:tags, 'nav')
|
||||||
call add(s:tags, 'output')
|
call add(s:tags, 'output')
|
||||||
call add(s:tags, 'progress')
|
call add(s:tags, 'progress')
|
||||||
|
call add(s:tags, 'picture')
|
||||||
call add(s:tags, 'rp')
|
call add(s:tags, 'rp')
|
||||||
call add(s:tags, 'rt')
|
call add(s:tags, 'rt')
|
||||||
call add(s:tags, 'ruby')
|
call add(s:tags, 'ruby')
|
||||||
call add(s:tags, 'section')
|
call add(s:tags, 'section')
|
||||||
|
call add(s:tags, 'source')
|
||||||
call add(s:tags, 'summary')
|
call add(s:tags, 'summary')
|
||||||
call add(s:tags, 'template')
|
|
||||||
call add(s:tags, 'time')
|
call add(s:tags, 'time')
|
||||||
call add(s:tags, 'video')
|
call add(s:tags, 'video')
|
||||||
call add(s:tags, 'bdi')
|
call add(s:tags, 'bdi')
|
||||||
call add(s:tags, 'data')
|
call add(s:tags, 'data')
|
||||||
|
|
||||||
|
" Web Component
|
||||||
|
call add(s:tags, 'template')
|
||||||
|
|
||||||
" Common inline used SVG elements
|
" Common inline used SVG elements
|
||||||
call add(s:tags, 'clipPath')
|
call add(s:tags, 'clipPath')
|
||||||
call add(s:tags, 'defs')
|
call add(s:tags, 'defs')
|
||||||
@@ -167,12 +173,23 @@ call add(s:tags, 'tr')
|
|||||||
call add(s:tags, 'th')
|
call add(s:tags, 'th')
|
||||||
call add(s:tags, 'td')
|
call add(s:tags, 'td')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let s:omittable = [
|
||||||
|
\ ['address', 'article', 'aside', 'blockquote', 'dir', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],
|
||||||
|
\ ['dt', 'dd'],
|
||||||
|
\ ['li'],
|
||||||
|
\ ['thead', 'tbody', 'tfoot'],
|
||||||
|
\ ['th', 'td'],
|
||||||
|
\]
|
||||||
|
|
||||||
if exists('g:html_exclude_tags')
|
if exists('g:html_exclude_tags')
|
||||||
for tag in g:html_exclude_tags
|
for tag in g:html_exclude_tags
|
||||||
call remove(s:tags, index(s:tags, tag))
|
call remove(s:tags, index(s:tags, tag))
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
let s:html_indent_tags = join(s:tags, '\|')
|
let s:html_indent_tags = join(s:tags, '\|')
|
||||||
|
let s:html_indent_tags = s:html_indent_tags.'\|\w\+\(-\w\+\)\+'
|
||||||
if exists('g:html_indent_tags')
|
if exists('g:html_indent_tags')
|
||||||
let s:html_indent_tags = s:html_indent_tags.'\|'.g:html_indent_tags
|
let s:html_indent_tags = s:html_indent_tags.'\|'.g:html_indent_tags
|
||||||
endif
|
endif
|
||||||
@@ -267,7 +284,7 @@ fun! HtmlIndentGet(lnum)
|
|||||||
if 0 < searchpair(js, '', jse, 'nWb')
|
if 0 < searchpair(js, '', jse, 'nWb')
|
||||||
\ && 0 < searchpair(js, '', jse, 'nW')
|
\ && 0 < searchpair(js, '', jse, 'nW')
|
||||||
" we're inside javascript
|
" we're inside javascript
|
||||||
if getline(searchpair(js, '', '</script>', 'nWb')) !~ '<script [^>]*type=["'']\?text\/\(html\|template\)'
|
if getline(searchpair(js, '', '</script>', 'nWb')) !~ '<script [^>]*type=["'']\?text\/\(html\|\(ng-\)\?template\)'
|
||||||
\ && getline(lnum) !~ js && getline(a:lnum) !~ jse
|
\ && getline(lnum) !~ js && getline(a:lnum) !~ jse
|
||||||
if restore_ic == 0
|
if restore_ic == 0
|
||||||
setlocal noic
|
setlocal noic
|
||||||
@@ -331,11 +348,35 @@ fun! HtmlIndentGet(lnum)
|
|||||||
let ind = ind - 1
|
let ind = ind - 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let lind = indent(lnum)
|
||||||
|
|
||||||
|
" for tags in s:omittable
|
||||||
|
" let tags_exp = '<\(' . join(tags, '\|') . '\)>'
|
||||||
|
" let close_tags_exp = '</\(' . join(tags, '\|') . '\)>'
|
||||||
|
" if getline(a:lnum) =~ tags_exp
|
||||||
|
" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||||
|
" let prev_tag = search(tags_exp, 'bW', block_start)
|
||||||
|
" let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||||
|
" if prev_tag && !prev_closetag
|
||||||
|
" let ind = ind - 1
|
||||||
|
" endif
|
||||||
|
" endif
|
||||||
|
|
||||||
|
" if getline(a:lnum) =~ '</\w\+>'
|
||||||
|
" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||||
|
" let prev_tag = search(tags_exp, 'bW', block_start)
|
||||||
|
" let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||||
|
" if prev_tag && !prev_closetag
|
||||||
|
" let ind = ind - 1
|
||||||
|
" endif
|
||||||
|
" endif
|
||||||
|
" endfor
|
||||||
|
|
||||||
if restore_ic == 0
|
if restore_ic == 0
|
||||||
setlocal noic
|
setlocal noic
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return indent(lnum) + (&sw * ind)
|
return lind + (&sw * ind)
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ function! GetJadeIndent()
|
|||||||
return increase
|
return increase
|
||||||
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>'
|
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>'
|
||||||
return indent
|
return indent
|
||||||
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter)$'
|
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter|jadeTagBlockChar)$'
|
||||||
return increase
|
return increase
|
||||||
else
|
else
|
||||||
return indent
|
return indent
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ setlocal nosmartindent
|
|||||||
|
|
||||||
" Now, set up our indentation expression and keys that trigger it.
|
" Now, set up our indentation expression and keys that trigger it.
|
||||||
setlocal indentexpr=GetJavascriptIndent()
|
setlocal indentexpr=GetJavascriptIndent()
|
||||||
|
setlocal formatexpr=Fixedgq(v:lnum,v:count)
|
||||||
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
|
setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
@@ -437,3 +438,58 @@ endfunction
|
|||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
function! Fixedgq(lnum, count)
|
||||||
|
let l:tw = &tw ? &tw : 80;
|
||||||
|
|
||||||
|
let l:count = a:count
|
||||||
|
|
||||||
|
if mode() == 'i' " gq was not pressed, but tw was set
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if len(getline(a:lnum)) < l:tw && l:count == 1 " No need for gq
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Put all the lines on one line and do normal spliting after that
|
||||||
|
if l:count > 1
|
||||||
|
while l:count > 1
|
||||||
|
let l:count -= 1
|
||||||
|
normal J
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:winview = winsaveview()
|
||||||
|
|
||||||
|
call cursor(a:lnum, l:tw + 1)
|
||||||
|
let orig_breakpoint = searchpairpos(' ', '', '\.', 'bcW', '', a:lnum)
|
||||||
|
call cursor(a:lnum, l:tw + 1)
|
||||||
|
let breakpoint = searchpairpos(' ', '', '\.', 'bcW', s:skip_expr, a:lnum)
|
||||||
|
|
||||||
|
" No need for special treatment, normal gq handles edgecases better
|
||||||
|
if breakpoint[1] == orig_breakpoint[1]
|
||||||
|
call winrestview(l:winview)
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Try breaking after string
|
||||||
|
if breakpoint[1] <= indent(a:lnum)
|
||||||
|
call cursor(a:lnum, l:tw + 1)
|
||||||
|
let breakpoint = searchpairpos('\.', '', ' ', 'cW', s:skip_expr, a:lnum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if breakpoint[1] != 0
|
||||||
|
call feedkeys("r\<CR>")
|
||||||
|
else
|
||||||
|
let l:count = l:count - 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" run gq on new lines
|
||||||
|
if l:count == 1
|
||||||
|
call feedkeys("gqq")
|
||||||
|
endif
|
||||||
|
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: LessCSS
|
" Language: LessCSS
|
||||||
" Maintainer: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
" Maintainer: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||||
" Last Change: 2011 Sep 26
|
" Last Change: 2011 Sep 26
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
runtime! indent/css.vim
|
runtime! indent/css.vim
|
||||||
|
|
||||||
62
indent/liquid.vim
Normal file
62
indent/liquid.vim
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Liquid
|
||||||
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
|
" Last Change: 2010 May 21
|
||||||
|
|
||||||
|
if exists('b:did_indent')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
set indentexpr=
|
||||||
|
if exists('b:liquid_subtype')
|
||||||
|
exe 'runtime! indent/'.b:liquid_subtype.'.vim'
|
||||||
|
else
|
||||||
|
runtime! indent/html.vim
|
||||||
|
endif
|
||||||
|
unlet! b:did_indent
|
||||||
|
|
||||||
|
if &l:indentexpr == ''
|
||||||
|
if &l:cindent
|
||||||
|
let &l:indentexpr = 'cindent(v:lnum)'
|
||||||
|
else
|
||||||
|
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let b:liquid_subtype_indentexpr = &l:indentexpr
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal indentexpr=GetLiquidIndent()
|
||||||
|
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=endif,=endunless,=endifchanged,=endcase,=endfor,=endtablerow,=endcapture,=else,=elsif,=when,=empty
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists('*GetLiquidIndent')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:count(string,pattern)
|
||||||
|
let string = substitute(a:string,'\C'.a:pattern,"\n",'g')
|
||||||
|
return strlen(substitute(string,"[^\n]",'','g'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GetLiquidIndent(...)
|
||||||
|
if a:0 && a:1 == '.'
|
||||||
|
let v:lnum = line('.')
|
||||||
|
elseif a:0 && a:1 =~ '^\d'
|
||||||
|
let v:lnum = a:1
|
||||||
|
endif
|
||||||
|
let vcol = col('.')
|
||||||
|
call cursor(v:lnum,1)
|
||||||
|
exe "let ind = ".b:liquid_subtype_indentexpr
|
||||||
|
let lnum = prevnonblank(v:lnum-1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
let cline = getline(v:lnum)
|
||||||
|
let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||||
|
let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
|
||||||
|
let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||||
|
let ind += &sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
|
||||||
|
let ind -= &sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
|
||||||
|
let ind -= &sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
|
||||||
|
let ind -= &sw * s:count(cline,'{%\s*end\w*$')
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
10
indent/opencl.vim
Normal file
10
indent/opencl.vim
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if version > 600
|
||||||
|
runtime! indent/c.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user