mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 12:03:53 -05:00
Compare commits
70 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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
|
||||||
|
|||||||
46
README.md
46
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,66 @@ 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)
|
||||||
|
- [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/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
|
- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
|
||||||
- [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)
|
||||||
- [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/acustodioo/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)
|
||||||
|
- [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)
|
||||||
|
- [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
|
||||||
@@ -4,12 +4,12 @@
|
|||||||
" 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
|
||||||
|
|
||||||
|
|||||||
303
after/syntax/c.vim
Normal file
303
after/syntax/c.vim
Normal file
@@ -0,0 +1,303 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: C Additions
|
||||||
|
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||||
|
" URL: http://www.haeggblad.com
|
||||||
|
" Last Change: 9 Aug 2014
|
||||||
|
" Version: 0.1
|
||||||
|
" Changelog:
|
||||||
|
" 0.1 - initial version.
|
||||||
|
"
|
||||||
|
" Syntax highlighting for functions in C.
|
||||||
|
"
|
||||||
|
" Based on:
|
||||||
|
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||||
|
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
" Highlight Class and Function names.
|
||||||
|
" -----------------------------------------------------------------------------
|
||||||
|
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||||
|
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
||||||
|
syn match cCustomScope "::"
|
||||||
|
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
|
||||||
|
|
||||||
|
hi def link cCustomFunc Function
|
||||||
|
|
||||||
|
" 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,16 @@
|
|||||||
" 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 Apr 2014
|
||||||
" Version: 0.1
|
" Version: 0.3
|
||||||
" Changelog:
|
" Changelog:
|
||||||
" 0.1 - initial version.
|
" 0.1 - initial version.
|
||||||
|
" 0.2 - C++14
|
||||||
|
" 0.3 - Incorporate lastest changes from Mizuchi/STL-Syntax
|
||||||
"
|
"
|
||||||
" Additional Vim syntax highlighting for C++ (including C++11)
|
" Additional Vim syntax highlighting for C++ (including C++11)
|
||||||
"
|
"
|
||||||
" This file contains additional syntax highlighting that I use for my C++11
|
" This file contains additional syntax highlighting that I use for my 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.
|
||||||
@@ -53,6 +55,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 +87,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 +149,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 +166,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 +179,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 +319,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 +430,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 +450,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 +471,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 +547,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 +587,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 +612,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 +629,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 +649,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 +833,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 +861,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 +892,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 +901,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 +961,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 +1088,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 +1137,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 +1221,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 +1274,50 @@ 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
|
||||||
|
|
||||||
|
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 +1328,15 @@ 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
|
||||||
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
|
|
||||||
|
|||||||
@@ -9,3 +9,32 @@ 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.
|
||||||
|
let s:pre_less_cur_syn = b:current_syntax
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
" 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.
|
||||||
|
let b:current_syntax = s:pre_less_cur_syn
|
||||||
|
" 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
|
||||||
|
|||||||
6
after/syntax/less.vim
Normal file
6
after/syntax/less.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', 'lessVariableValue,lessDefinition,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')
|
||||||
|
|||||||
@@ -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
559
autoload/css_color.vim
Normal file
559
autoload/css_color.vim
Normal file
@@ -0,0 +1,559 @@
|
|||||||
|
" Language: Colorful CSS Color Preview
|
||||||
|
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
|
||||||
|
" Last Change: 2014-01-14
|
||||||
|
" Licence: No Warranties. WTFPL. But please tell me!
|
||||||
|
" Version: 1.0
|
||||||
|
|
||||||
|
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:update_matches()
|
||||||
|
call filter(b:color_match_id, 'matchdelete(v:val)')
|
||||||
|
if &l:cursorline
|
||||||
|
" adds matches based that duplicate the highlighted colors on the current line
|
||||||
|
let lnr = line('.')
|
||||||
|
let group = ''
|
||||||
|
let groupstart = 0
|
||||||
|
let endcol = col('$')
|
||||||
|
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 b:color_match_id += [ match ]
|
||||||
|
endif
|
||||||
|
let group = nextgroup
|
||||||
|
let groupstart = col
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
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:update_matches()
|
||||||
|
endfunction
|
||||||
|
function! s:parse_any_screen()
|
||||||
|
call substitute( join( getline('w0','w$'), "\n" ), s:_hexcolor, '\=s:create_syn_match()', 'g' )
|
||||||
|
call s:update_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 = {}
|
||||||
|
let b:color_match_id = []
|
||||||
|
|
||||||
|
augroup CSSColor
|
||||||
|
autocmd! * <buffer>
|
||||||
|
exe 'autocmd CursorMoved,CursorMovedI <buffer> call s:parse_'.a:type.'_screen()'
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
do CSSColor CursorMoved <buffer>
|
||||||
|
|
||||||
|
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,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' tmpdir
|
||||||
|
|
||||||
|
let path = 'unnamed.rs'
|
||||||
|
|
||||||
|
let save_mod = &mod
|
||||||
|
set nomod
|
||||||
|
|
||||||
|
silent exe 'keepalt write! ' . 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' 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', '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,
|
||||||
@@ -677,6 +683,10 @@ 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
|
||||||
|
|||||||
35
build
35
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,65 @@ 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
|
||||||
|
emberscript:heartsentwined/vim-ember-script
|
||||||
|
emblem:heartsentwined/vim-emblem
|
||||||
erlang:oscarh/vimerl
|
erlang:oscarh/vimerl
|
||||||
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
|
||||||
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:acustodioo/vim-tmux
|
||||||
tomdoc:duwanis/tomdoc.vim
|
tomdoc:duwanis/tomdoc.vim
|
||||||
|
typescript:leafgarland/typescript-vim
|
||||||
vbnet:vim-scripts/vbnet.vim
|
vbnet:vim-scripts/vbnet.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
|
||||||
|
css-color:ap/vim-css-color
|
||||||
"
|
"
|
||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
8
compiler/typescript.vim
Normal file
8
compiler/typescript.vim
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "typescript"
|
||||||
|
|
||||||
|
CompilerSet makeprg=tsc\ $*\ %
|
||||||
|
|
||||||
|
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
|
autocmd BufRead,BufNewFile *.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,21 @@ 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
|
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 +36,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 +55,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 +81,92 @@ 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,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html 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! BufRead,BufNewFile *.pp setfiletype puppet
|
||||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
|
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
||||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
|
function! s:setf(filetype) abort
|
||||||
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
|
if &filetype !=# a:filetype
|
||||||
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
|
let &filetype = a:filetype
|
||||||
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
|
endif
|
||||||
au BufNewFile,BufRead .pryrc set filetype=ruby
|
endfunction
|
||||||
au BufNewFile,BufRead *.ru set filetype=ruby
|
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Capfile set filetype=ruby
|
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Gemfile set filetype=ruby
|
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
|
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Cheffile set filetype=ruby
|
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Berksfile set filetype=ruby
|
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
|
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||||
au BufNewFile,BufRead .autotest set filetype=ruby
|
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
|
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
|
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.rabl set filetype=ruby
|
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Appraisals set filetype=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 +175,21 @@ 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
|
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf 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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
338
ftplugin/csv.vim
338
ftplugin/csv.vim
@@ -1,11 +1,11 @@
|
|||||||
" 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.
|
||||||
@@ -136,7 +136,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 +160,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 +169,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
|
||||||
@@ -275,7 +277,9 @@ fu! <sid>DoAutoCommands() "{{{3
|
|||||||
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! amenu disable CSV'
|
||||||
let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'
|
"
|
||||||
|
" b:undo_ftplugin does not support calling <sid> Functions
|
||||||
|
"let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
@@ -479,7 +483,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
|
||||||
@@ -521,12 +525,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]
|
||||||
@@ -658,7 +666,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 +701,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 +753,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 +786,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 +806,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 +864,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 +873,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)
|
||||||
|
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 +916,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 +940,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 +1006,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 +1016,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 +1078,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 +1119,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 +1213,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 +1224,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 +1278,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 +1488,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 +1540,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,14 +1586,11 @@ fu! <sid>DisableFolding() "{{{3
|
|||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>GetSID() "{{{3
|
fu! <sid>DetermineSID()
|
||||||
if v:version > 703 || v:version == 703 && has("patch032")
|
let s:SID = matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_DetermineSID$')
|
||||||
return maparg('W', "", "", 1).sid
|
|
||||||
else
|
|
||||||
"return substitute(maparg('W'), '\(<SNR>\d\+\)_', '\1', '')
|
|
||||||
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_GetSID$')
|
|
||||||
endif
|
|
||||||
endfu
|
endfu
|
||||||
|
call s:DetermineSID()
|
||||||
|
delf s:DetermineSID
|
||||||
|
|
||||||
fu! <sid>NumberFormat() "{{{3
|
fu! <sid>NumberFormat() "{{{3
|
||||||
let s:nr_format = [',', '.']
|
let s:nr_format = [',', '.']
|
||||||
@@ -1574,10 +1625,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 +1639,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 +1650,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 +1677,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 +1722,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 +1811,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 +1873,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
|
||||||
@@ -1845,8 +1906,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 +1932,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",
|
||||||
@@ -2315,27 +2373,36 @@ 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)
|
||||||
" 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 +2462,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 +2501,23 @@ 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
|
||||||
|
|
||||||
|
|
||||||
" 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
|
||||||
@@ -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,11 @@ 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$"
|
||||||
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 +383,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 +458,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 +756,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 +870,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 +920,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
|
||||||
|
|
||||||
@@ -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,33 @@ 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
|
||||||
if line =~# s:envbeginpattern
|
if g:LatexBox_fold_envs == 1
|
||||||
return "a1"
|
return "a1"
|
||||||
elseif line =~# '^\s*\\end{document}'
|
else
|
||||||
" Never fold \end{document}
|
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
|
||||||
return 0
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
elseif line =~# s:envendpattern
|
return "a1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif line =~# s:envendpattern
|
||||||
|
if g:LatexBox_fold_envs == 1
|
||||||
return "s1"
|
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
|
||||||
|
|
||||||
@@ -226,24 +278,13 @@ 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
|
||||||
@@ -259,11 +300,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 +350,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
|
||||||
@@ -89,8 +92,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 +104,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 +143,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 +166,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
|
||||||
@@ -175,6 +188,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 +227,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 +272,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 +325,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 +345,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 +413,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,19 @@ 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
|
call s:TOCFindMatch('\\' . entry['level'] . '\_\s*{' . titlestr . '}',
|
||||||
endif
|
\ duplicates, files)
|
||||||
|
|
||||||
if a:close
|
if a:close
|
||||||
if g:LatexBox_split_resize
|
if g:LatexBox_split_resize
|
||||||
@@ -109,6 +100,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 +158,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:
|
||||||
|
|||||||
115
ftplugin/mustache.vim
Normal file
115
ftplugin/mustache.vim
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
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
|
||||||
@@ -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-]>'"
|
||||||
|
|||||||
149
ftplugin/rust.vim
Normal file
149
ftplugin/rust.vim
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
" 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
|
||||||
|
|
||||||
|
setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab
|
||||||
|
|
||||||
|
setlocal textwidth=99
|
||||||
|
|
||||||
|
" 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:
|
||||||
|
|||||||
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
|
||||||
10
ftplugin/typescript.vim
Normal file
10
ftplugin/typescript.vim
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
compiler typescript
|
||||||
|
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal smartindent
|
||||||
|
setlocal indentexpr&
|
||||||
|
|
||||||
|
setlocal cindent
|
||||||
|
setlocal cino=j1J1
|
||||||
|
|
||||||
|
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<"
|
||||||
12
indent/blade.vim
Normal file
12
indent/blade.vim
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
" Language: Blade (Laravel)
|
||||||
|
" Maintainer: xsbeats <jwalton512@gmail.com>
|
||||||
|
" URL: http://github.com/xsbeats/vim-blade
|
||||||
|
" License: WTFPL
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! indent/html.vim
|
||||||
|
|
||||||
|
let b:did_indent = 1
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 +10,7 @@ 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+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue:
|
||||||
|
|
||||||
if exists("*GetElixirIndent")
|
if exists("*GetElixirIndent")
|
||||||
@@ -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,64 @@ 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 is an attribution
|
||||||
|
" indents pipeline in same level as attribution
|
||||||
|
if 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
|
||||||
@@ -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)'
|
||||||
@@ -53,7 +56,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({})
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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')
|
||||||
@@ -130,12 +132,14 @@ 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, '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,6 +171,16 @@ 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))
|
||||||
@@ -331,11 +345,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
|
||||||
|
|||||||
@@ -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
|
||||||
185
indent/perl.vim
Normal file
185
indent/perl.vim
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Perl 5
|
||||||
|
" 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}}
|
||||||
|
|
||||||
|
" Suggestions and improvements by :
|
||||||
|
" Aaron J. Sherman (use syntax for hints)
|
||||||
|
" Artem Chuprina (play nice with folding)
|
||||||
|
|
||||||
|
" TODO things that are not or not properly indented (yet) :
|
||||||
|
" - Continued statements
|
||||||
|
" print "foo",
|
||||||
|
" "bar";
|
||||||
|
" print "foo"
|
||||||
|
" if bar();
|
||||||
|
" - Multiline regular expressions (m//x)
|
||||||
|
" (The following probably needs modifying the perl syntax file)
|
||||||
|
" - qw() lists
|
||||||
|
" - Heredocs with terminators that don't match \I\i*
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" Is syntax highlighting active ?
|
||||||
|
let b:indent_use_syntax = has("syntax")
|
||||||
|
|
||||||
|
setlocal indentexpr=GetPerlIndent()
|
||||||
|
setlocal indentkeys+=0=,0),0],0=or,0=and
|
||||||
|
if !b:indent_use_syntax
|
||||||
|
setlocal indentkeys+=0=EO
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
function! GetPerlIndent()
|
||||||
|
|
||||||
|
" Get the line to be indented
|
||||||
|
let cline = getline(v:lnum)
|
||||||
|
|
||||||
|
" Indent POD markers to column 0
|
||||||
|
if cline =~ '^\s*=\L\@!'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't reindent comments on first column
|
||||||
|
if cline =~ '^#.'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Get current syntax item at the line's first char
|
||||||
|
let csynid = ''
|
||||||
|
if b:indent_use_syntax
|
||||||
|
let csynid = synIDattr(synID(v:lnum,1,0),"name")
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't reindent POD and heredocs
|
||||||
|
if csynid == "perlPOD" || csynid == "perlHereDoc" || csynid =~ "^pod"
|
||||||
|
return indent(v:lnum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Indent end-of-heredocs markers to column 0
|
||||||
|
if b:indent_use_syntax
|
||||||
|
" Assumes that an end-of-heredoc marker matches \I\i* to avoid
|
||||||
|
" confusion with other types of strings
|
||||||
|
if csynid == "perlStringStartEnd" && cline =~ '^\I\i*$'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" Without syntax hints, assume that end-of-heredocs markers begin with EO
|
||||||
|
if cline =~ '^\s*EO'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Now get the indent of the previous perl line.
|
||||||
|
|
||||||
|
" Find a non-blank line above the current line.
|
||||||
|
let lnum = prevnonblank(v:lnum - 1)
|
||||||
|
" Hit the start of the file, use zero indent.
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
" Skip heredocs, POD, and comments on 1st column
|
||||||
|
if b:indent_use_syntax
|
||||||
|
let skippin = 2
|
||||||
|
while skippin
|
||||||
|
let synid = synIDattr(synID(lnum,1,0),"name")
|
||||||
|
if (synid == "perlStringStartEnd" && line =~ '^\I\i*$')
|
||||||
|
\ || (skippin != 2 && synid == "perlPOD")
|
||||||
|
\ || (skippin != 2 && synid == "perlHereDoc")
|
||||||
|
\ || synid == "perlComment"
|
||||||
|
\ || synid =~ "^pod"
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
let skippin = 1
|
||||||
|
else
|
||||||
|
let skippin = 0
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
else
|
||||||
|
if line =~ "^EO"
|
||||||
|
let lnum = search("<<[\"']\\=EO", "bW")
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Indent blocks enclosed by {}, (), or []
|
||||||
|
if b:indent_use_syntax
|
||||||
|
" Find a real opening brace
|
||||||
|
" NOTE: Unlike Perl character classes, we do NOT need to escape the
|
||||||
|
" closing brackets with a backslash. Doing so just puts a backslash
|
||||||
|
" in the character class and causes sorrow. Instead, put the closing
|
||||||
|
" bracket as the first character in the class.
|
||||||
|
let braceclass = '[][(){}]'
|
||||||
|
let bracepos = match(line, braceclass, matchend(line, '^\s*[])}]'))
|
||||||
|
while bracepos != -1
|
||||||
|
let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name")
|
||||||
|
" If the brace is highlighted in one of those groups, indent it.
|
||||||
|
" 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'.
|
||||||
|
if synid == ""
|
||||||
|
\ || synid == "perlMatchStartEnd"
|
||||||
|
\ || synid == "perlHereDoc"
|
||||||
|
\ || synid == "perlBraces"
|
||||||
|
\ || synid == "perlStatementIndirObj"
|
||||||
|
\ || synid =~ "^perlFiledescStatement"
|
||||||
|
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
||||||
|
let brace = strpart(line, bracepos, 1)
|
||||||
|
if brace == '(' || brace == '{' || brace == '['
|
||||||
|
let ind = ind + &sw
|
||||||
|
else
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let bracepos = match(line, braceclass, bracepos + 1)
|
||||||
|
endwhile
|
||||||
|
let bracepos = matchend(cline, '^\s*[])}]')
|
||||||
|
if bracepos != -1
|
||||||
|
let synid = synIDattr(synID(v:lnum, bracepos, 0), "name")
|
||||||
|
if synid == ""
|
||||||
|
\ || synid == "perlMatchStartEnd"
|
||||||
|
\ || synid == "perlBraces"
|
||||||
|
\ || synid == "perlStatementIndirObj"
|
||||||
|
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
if cline =~ '^\s*[])}]'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Indent lines that begin with 'or' or 'and'
|
||||||
|
if cline =~ '^\s*\(or\|and\)\>'
|
||||||
|
if line !~ '^\s*\(or\|and\)\>'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
elseif line =~ '^\s*\(or\|and\)\>'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
|
||||||
132
indent/perl6.vim
Normal file
132
indent/perl6.vim
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
" Vim indent 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: Andy Lester <andy@petdance.com>
|
||||||
|
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||||
|
"
|
||||||
|
" Adapted from indent/perl.vim by Rafael Garcia-Suarez <rgarciasuarez@free.fr>
|
||||||
|
|
||||||
|
" Suggestions and improvements by :
|
||||||
|
" Aaron J. Sherman (use syntax for hints)
|
||||||
|
" Artem Chuprina (play nice with folding)
|
||||||
|
" TODO:
|
||||||
|
" This file still relies on stuff from the Perl 5 syntax file, which Perl 6
|
||||||
|
" does not use.
|
||||||
|
"
|
||||||
|
" Things that are not or not properly indented (yet) :
|
||||||
|
" - Continued statements
|
||||||
|
" print "foo",
|
||||||
|
" "bar";
|
||||||
|
" print "foo"
|
||||||
|
" if bar();
|
||||||
|
" - Multiline regular expressions (m//x)
|
||||||
|
" (The following probably needs modifying the perl syntax file)
|
||||||
|
" - qw() lists
|
||||||
|
" - Heredocs with terminators that don't match \I\i*
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" Is syntax highlighting active ?
|
||||||
|
let b:indent_use_syntax = has("syntax")
|
||||||
|
|
||||||
|
setlocal indentexpr=GetPerl6Indent()
|
||||||
|
|
||||||
|
" we reset it first because the Perl 5 indent file might have been loaded due
|
||||||
|
" to a .pl/pm file extension, and indent files don't clean up afterwards
|
||||||
|
setlocal indentkeys&
|
||||||
|
|
||||||
|
setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and
|
||||||
|
if !b:indent_use_syntax
|
||||||
|
setlocal indentkeys+=0=EO
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
function! GetPerl6Indent()
|
||||||
|
|
||||||
|
" Get the line to be indented
|
||||||
|
let cline = getline(v:lnum)
|
||||||
|
|
||||||
|
" Indent POD markers to column 0
|
||||||
|
if cline =~ '^\s*=\L\@!'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't reindent coments on first column
|
||||||
|
if cline =~ '^#'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Get current syntax item at the line's first char
|
||||||
|
let csynid = ''
|
||||||
|
if b:indent_use_syntax
|
||||||
|
let csynid = synIDattr(synID(v:lnum,1,0),"name")
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't reindent POD and heredocs
|
||||||
|
if csynid =~ "^p6Pod"
|
||||||
|
return indent(v:lnum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" Now get the indent of the previous perl line.
|
||||||
|
|
||||||
|
" Find a non-blank line above the current line.
|
||||||
|
let lnum = prevnonblank(v:lnum - 1)
|
||||||
|
" Hit the start of the file, use zero indent.
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
" Skip heredocs, POD, and comments on 1st column
|
||||||
|
if b:indent_use_syntax
|
||||||
|
let skippin = 2
|
||||||
|
while skippin
|
||||||
|
let synid = synIDattr(synID(lnum,1,0),"name")
|
||||||
|
if (synid =~ "^p6Pod" || synid =~ "p6Comment")
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let line = getline(lnum)
|
||||||
|
let ind = indent(lnum)
|
||||||
|
let skippin = 1
|
||||||
|
else
|
||||||
|
let skippin = 0
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
|
||||||
|
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
if cline =~ '^\s*[)}\]»>]'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Indent lines that begin with 'or' or 'and'
|
||||||
|
if cline =~ '^\s*\(or\|and\)\>'
|
||||||
|
if line !~ '^\s*\(or\|and\)\>'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
elseif line =~ '^\s*\(or\|and\)\>'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
||||||
|
|
||||||
|
" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Puppet
|
" Language: Puppet
|
||||||
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
||||||
" Last Change: 2009 Aug 19
|
" Last Change: 2009 Aug 19
|
||||||
" vim: set sw=4 sts=4:
|
" vim: set sw=4 sts=4:
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
@@ -67,10 +67,28 @@ function! GetPuppetIndent()
|
|||||||
let ind -= &sw
|
let ind -= &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Match } }, }; ] ]: )
|
" Match } }, }; ] ]: ], ]; )
|
||||||
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\?$\|)\)'
|
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\|],\|}]\|];\?$\|)\)'
|
||||||
let ind = indent(s:OpenBrace(v:lnum))
|
let ind = indent(s:OpenBrace(v:lnum))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Don't actually shift over for } else {
|
||||||
|
if line =~ '^\s*}\s*els\(e\|if\).*{\s*$'
|
||||||
|
let ind -= &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't indent resources that are one after another with a ->(ordering arrow)
|
||||||
|
" file {'somefile':
|
||||||
|
" ...
|
||||||
|
" } ->
|
||||||
|
"
|
||||||
|
" package { 'mycoolpackage':
|
||||||
|
" ...
|
||||||
|
" }
|
||||||
|
if line =~ '->$'
|
||||||
|
let ind -= &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
213
indent/python.vim
Normal file
213
indent/python.vim
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
" PEP8 compatible Python indent file
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal nolisp
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal indentexpr=GetPythonPEPIndent(v:lnum)
|
||||||
|
setlocal indentkeys=!^F,o,O,<:>,0),0],0},=elif,=except
|
||||||
|
|
||||||
|
let s:maxoff = 50
|
||||||
|
|
||||||
|
" Find backwards the closest open parenthesis/bracket/brace.
|
||||||
|
function! s:SearchParensPair()
|
||||||
|
let line = line('.')
|
||||||
|
let col = col('.')
|
||||||
|
|
||||||
|
" Skip strings and comments and don't look too far
|
||||||
|
let skip = "line('.') < " . (line - s:maxoff) . " ? dummy :" .
|
||||||
|
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~? ' .
|
||||||
|
\ '"string\\|comment"'
|
||||||
|
|
||||||
|
" Search for parentheses
|
||||||
|
call cursor(line, col)
|
||||||
|
let parlnum = searchpair('(', '', ')', 'bW', skip)
|
||||||
|
let parcol = col('.')
|
||||||
|
|
||||||
|
" Search for brackets
|
||||||
|
call cursor(line, col)
|
||||||
|
let par2lnum = searchpair('\[', '', '\]', 'bW', skip)
|
||||||
|
let par2col = col('.')
|
||||||
|
|
||||||
|
" Search for braces
|
||||||
|
call cursor(line, col)
|
||||||
|
let par3lnum = searchpair('{', '', '}', 'bW', skip)
|
||||||
|
let par3col = col('.')
|
||||||
|
|
||||||
|
" Get the closest match
|
||||||
|
if par2lnum > parlnum || (par2lnum == parlnum && par2col > parcol)
|
||||||
|
let parlnum = par2lnum
|
||||||
|
let parcol = par2col
|
||||||
|
endif
|
||||||
|
if par3lnum > parlnum || (par3lnum == parlnum && par3col > parcol)
|
||||||
|
let parlnum = par3lnum
|
||||||
|
let parcol = par3col
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Put the cursor on the match
|
||||||
|
if parlnum > 0
|
||||||
|
call cursor(parlnum, parcol)
|
||||||
|
endif
|
||||||
|
return parlnum
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find the start of a multi-line statement
|
||||||
|
function! s:StatementStart(lnum)
|
||||||
|
let lnum = a:lnum
|
||||||
|
while 1
|
||||||
|
if getline(lnum - 1) =~ '\\$'
|
||||||
|
let lnum = lnum - 1
|
||||||
|
else
|
||||||
|
call cursor(lnum, 1)
|
||||||
|
let maybe_lnum = s:SearchParensPair()
|
||||||
|
if maybe_lnum < 1
|
||||||
|
return lnum
|
||||||
|
else
|
||||||
|
let lnum = maybe_lnum
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find the block starter that matches the current line
|
||||||
|
function! s:BlockStarter(lnum, block_start_re)
|
||||||
|
let lnum = a:lnum
|
||||||
|
let maxindent = 10000 " whatever
|
||||||
|
while lnum > 1
|
||||||
|
let lnum = prevnonblank(lnum - 1)
|
||||||
|
if indent(lnum) < maxindent
|
||||||
|
if getline(lnum) =~ a:block_start_re
|
||||||
|
return lnum
|
||||||
|
else
|
||||||
|
let maxindent = indent(lnum)
|
||||||
|
" It's not worth going further if we reached the top level
|
||||||
|
if maxindent == 0
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return -1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GetPythonPEPIndent(lnum)
|
||||||
|
let scol = col('.')
|
||||||
|
|
||||||
|
" First line has indent 0
|
||||||
|
if a:lnum == 1
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If we can find an open parenthesis/bracket/brace, line up with it.
|
||||||
|
call cursor(a:lnum, 1)
|
||||||
|
let parlnum = s:SearchParensPair()
|
||||||
|
if parlnum > 0
|
||||||
|
let parcol = col('.')
|
||||||
|
let matches = matchlist(getline(a:lnum), '^\(\s*\)[])}]')
|
||||||
|
if len(matches) == 0
|
||||||
|
let closing_paren = 0
|
||||||
|
let closing_paren_pos = 0
|
||||||
|
else
|
||||||
|
let closing_paren = 1
|
||||||
|
let closing_paren_pos = len(matches[1])
|
||||||
|
endif
|
||||||
|
if match(getline(parlnum), '[([{]\s*$', parcol - 1) != -1
|
||||||
|
if closing_paren
|
||||||
|
return indent(parlnum)
|
||||||
|
else
|
||||||
|
return indent(parlnum) + &shiftwidth
|
||||||
|
endif
|
||||||
|
elseif a:lnum - 1 != parlnum
|
||||||
|
if closing_paren && closing_paren_pos > scol
|
||||||
|
return indent(parlnum)
|
||||||
|
else
|
||||||
|
let lastindent = match(getline(a:lnum - 1), '\S')
|
||||||
|
if lastindent != -1 && lastindent < parcol
|
||||||
|
return lastindent
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If we line up with an opening column there is a special case
|
||||||
|
" we want to handle: a docstring as argument. In that case we
|
||||||
|
" don't want to line up with the paren but with the statement
|
||||||
|
" imagine foo(doc=""" as example
|
||||||
|
echo getline(parlnum)
|
||||||
|
if match(getline(parlnum), '\("""\|' . "'''" . '\)\s*$') != -1
|
||||||
|
return indent(parlnum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return parcol
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Examine this line
|
||||||
|
let thisline = getline(a:lnum)
|
||||||
|
let thisindent = indent(a:lnum)
|
||||||
|
|
||||||
|
" If the line starts with 'elif' or 'else', line up with 'if' or 'elif'
|
||||||
|
if thisline =~ '^\s*\(elif\|else\)\>'
|
||||||
|
let bslnum = s:BlockStarter(a:lnum, '^\s*\(if\|elif\)\>')
|
||||||
|
if bslnum > 0
|
||||||
|
return indent(bslnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If the line starts with 'except' or 'finally', line up with 'try'
|
||||||
|
" or 'except'
|
||||||
|
if thisline =~ '^\s*\(except\|finally\)\>'
|
||||||
|
let bslnum = s:BlockStarter(a:lnum, '^\s*\(try\|except\)\>')
|
||||||
|
if bslnum > 0
|
||||||
|
return indent(bslnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Examine previous line
|
||||||
|
let plnum = a:lnum - 1
|
||||||
|
let pline = getline(plnum)
|
||||||
|
let sslnum = s:StatementStart(plnum)
|
||||||
|
|
||||||
|
" If the previous line is blank, keep the same indentation
|
||||||
|
if pline =~ '^\s*$'
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If this line is explicitly joined, try to find an indentation that looks
|
||||||
|
" good.
|
||||||
|
if pline =~ '\\$'
|
||||||
|
let compound_statement = '^\s*\(if\|while\|from\|import\|for\s.*\sin\|except\)\s*'
|
||||||
|
let maybe_indent = matchend(getline(sslnum), compound_statement)
|
||||||
|
if maybe_indent != -1
|
||||||
|
return maybe_indent
|
||||||
|
else
|
||||||
|
return indent(sslnum) + &sw * 2
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If the previous line ended with a colon and is not a comment, indent
|
||||||
|
" relative to statement start.
|
||||||
|
if pline =~ '^[^#]*:\s*\(#.*\)\?$'
|
||||||
|
return indent(sslnum) + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If the previous line was a stop-execution statement or a pass
|
||||||
|
if getline(sslnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
|
||||||
|
" See if the user has already dedented
|
||||||
|
if indent(a:lnum) > indent(sslnum) - &sw
|
||||||
|
" If not, recommend one dedent
|
||||||
|
return indent(sslnum) - &sw
|
||||||
|
endif
|
||||||
|
" Otherwise, trust the user
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" In all other cases, line up with the start of the previous statement.
|
||||||
|
return indent(sslnum)
|
||||||
|
endfunction
|
||||||
144
indent/ruby.vim
144
indent/ruby.vim
@@ -13,12 +13,18 @@ if exists("b:did_indent")
|
|||||||
endif
|
endif
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
if !exists('g:ruby_indent_access_modifier_style')
|
||||||
|
" Possible values: "normal", "indent", "outdent"
|
||||||
|
let g:ruby_indent_access_modifier_style = 'normal'
|
||||||
|
endif
|
||||||
|
|
||||||
setlocal nosmartindent
|
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=GetRubyIndent(v:lnum)
|
setlocal indentexpr=GetRubyIndent(v:lnum)
|
||||||
setlocal indentkeys=0{,0},0),0],!^F,o,O,e
|
setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:,.
|
||||||
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end
|
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end
|
||||||
|
setlocal indentkeys+==private,=protected,=public
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
if exists("*GetRubyIndent")
|
if exists("*GetRubyIndent")
|
||||||
@@ -34,7 +40,7 @@ set cpo&vim
|
|||||||
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
||||||
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
||||||
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
||||||
\ '\|Interpolation\|NoInterpolation\|Comment\|Documentation\)\>'
|
\ '\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|Comment\|Documentation\)\>'
|
||||||
|
|
||||||
" Regex of syntax group names that are strings.
|
" Regex of syntax group names that are strings.
|
||||||
let s:syng_string =
|
let s:syng_string =
|
||||||
@@ -49,9 +55,10 @@ let s:skip_expr =
|
|||||||
\ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
\ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
||||||
|
|
||||||
" Regex used for words that, at the start of a line, add a level of indent.
|
" Regex used for words that, at the start of a line, add a level of indent.
|
||||||
let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
|
let s:ruby_indent_keywords =
|
||||||
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' .
|
\ '^\s*\zs\<\%(module\|class\|if\|for' .
|
||||||
\ '\|rescue\):\@!\>' .
|
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' .
|
||||||
|
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
|
||||||
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
|
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
|
||||||
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
|
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
|
||||||
|
|
||||||
@@ -64,7 +71,8 @@ let s:ruby_deindent_keywords =
|
|||||||
" TODO: the do here should be restricted somewhat (only at end of line)?
|
" TODO: the do here should be restricted somewhat (only at end of line)?
|
||||||
let s:end_start_regex =
|
let s:end_start_regex =
|
||||||
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
|
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
|
||||||
\ '\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\):\@!\>' .
|
\ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
|
||||||
|
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
|
||||||
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
|
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
|
||||||
|
|
||||||
" Regex that defines the middle-match for the 'end' keyword.
|
" Regex that defines the middle-match for the 'end' keyword.
|
||||||
@@ -82,16 +90,29 @@ let s:end_skip_expr = s:skip_expr .
|
|||||||
let s:non_bracket_continuation_regex = '\%([\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
let s:non_bracket_continuation_regex = '\%([\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
" Regex that defines continuation lines.
|
" Regex that defines continuation lines.
|
||||||
" TODO: this needs to deal with if ...: and so on
|
|
||||||
let s:continuation_regex =
|
let s:continuation_regex =
|
||||||
\ '\%(%\@<![({[\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
\ '\%(%\@<![({[\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that defines continuable keywords
|
||||||
|
let s:continuable_regex =
|
||||||
|
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
|
||||||
|
\ '\<\%(if\|for\|while\|until\|unless\):\@!\>'
|
||||||
|
|
||||||
" Regex that defines bracket continuations
|
" Regex that defines bracket continuations
|
||||||
let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
|
let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that defines end of bracket continuation followed by another continuation
|
||||||
|
let s:bracket_switch_continuation_regex = '^\([^(]\+\zs).\+\)\+'.s:continuation_regex
|
||||||
|
|
||||||
" Regex that defines the first part of a splat pattern
|
" Regex that defines the first part of a splat pattern
|
||||||
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that describes all indent access modifiers
|
||||||
|
let s:access_modifier_regex = '\C^\s*\%(public\|protected\|private\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that describes the indent access modifiers (excludes public)
|
||||||
|
let s:indent_access_modifier_regex = '\C^\s*\%(protected\|private\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
" Regex that defines blocks.
|
" Regex that defines blocks.
|
||||||
"
|
"
|
||||||
" Note that there's a slight problem with this regex and s:continuation_regex.
|
" Note that there's a slight problem with this regex and s:continuation_regex.
|
||||||
@@ -106,6 +127,9 @@ let s:block_regex =
|
|||||||
|
|
||||||
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
|
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
|
||||||
|
|
||||||
|
" Regex that describes a leading operator (only a method call's dot for now)
|
||||||
|
let s:leading_operator_regex = '^\s*[.]'
|
||||||
|
|
||||||
" 2. Auxiliary Functions {{{1
|
" 2. Auxiliary Functions {{{1
|
||||||
" ======================
|
" ======================
|
||||||
|
|
||||||
@@ -165,7 +189,11 @@ function s:GetMSL(lnum)
|
|||||||
" Otherwise, terminate search as we have found our MSL already.
|
" Otherwise, terminate search as we have found our MSL already.
|
||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
|
|
||||||
if s:Match(lnum, s:splat_regex)
|
if s:Match(msl, s:leading_operator_regex)
|
||||||
|
" If the current line starts with a leading operator, keep its indent
|
||||||
|
" and keep looking for an MSL.
|
||||||
|
let msl = lnum
|
||||||
|
elseif s:Match(lnum, s:splat_regex)
|
||||||
" If the above line looks like the "*" of a splat, use the current one's
|
" If the above line looks like the "*" of a splat, use the current one's
|
||||||
" indentation.
|
" indentation.
|
||||||
"
|
"
|
||||||
@@ -175,7 +203,7 @@ function s:GetMSL(lnum)
|
|||||||
" something
|
" something
|
||||||
"
|
"
|
||||||
return msl
|
return msl
|
||||||
elseif s:Match(line, s:non_bracket_continuation_regex) &&
|
elseif s:Match(lnum, s:non_bracket_continuation_regex) &&
|
||||||
\ s:Match(msl, s:non_bracket_continuation_regex)
|
\ s:Match(msl, s:non_bracket_continuation_regex)
|
||||||
" If the current line is a non-bracket continuation and so is the
|
" If the current line is a non-bracket continuation and so is the
|
||||||
" previous one, keep its indent and continue looking for an MSL.
|
" previous one, keep its indent and continue looking for an MSL.
|
||||||
@@ -299,18 +327,39 @@ function s:ExtraBrackets(lnum)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:Match(lnum, regex)
|
function s:Match(lnum, regex)
|
||||||
let col = match(getline(a:lnum), '\C'.a:regex) + 1
|
let line = getline(a:lnum)
|
||||||
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
|
let offset = match(line, '\C'.a:regex)
|
||||||
|
let col = offset + 1
|
||||||
|
|
||||||
|
while offset > -1 && s:IsInStringOrComment(a:lnum, col)
|
||||||
|
let offset = match(line, '\C'.a:regex, offset + 1)
|
||||||
|
let col = offset + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if offset > -1
|
||||||
|
return col
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:MatchLast(lnum, regex)
|
" Locates the containing class/module's definition line, ignoring nested classes
|
||||||
let line = getline(a:lnum)
|
" along the way.
|
||||||
let col = match(line, '.*\zs' . a:regex)
|
"
|
||||||
while col != -1 && s:IsInStringOrComment(a:lnum, col)
|
function! s:FindContainingClass()
|
||||||
let line = strpart(line, 0, col)
|
let saved_position = getpos('.')
|
||||||
let col = match(line, '.*' . a:regex)
|
|
||||||
endwhile
|
while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
|
||||||
return col + 1
|
\ s:end_skip_expr) > 0
|
||||||
|
if expand('<cword>') =~# '\<class\|module\>'
|
||||||
|
let found_lnum = line('.')
|
||||||
|
call setpos('.', saved_position)
|
||||||
|
return found_lnum
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setpos('.', saved_position)
|
||||||
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" 3. GetRubyIndent Function {{{1
|
" 3. GetRubyIndent Function {{{1
|
||||||
@@ -333,6 +382,24 @@ function GetRubyIndent(...)
|
|||||||
let line = getline(clnum)
|
let line = getline(clnum)
|
||||||
let ind = -1
|
let ind = -1
|
||||||
|
|
||||||
|
" If this line is an access modifier keyword, align according to the closest
|
||||||
|
" class declaration.
|
||||||
|
if g:ruby_indent_access_modifier_style == 'indent'
|
||||||
|
if s:Match(clnum, s:access_modifier_regex)
|
||||||
|
let class_line = s:FindContainingClass()
|
||||||
|
if class_line > 0
|
||||||
|
return indent(class_line) + &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif g:ruby_indent_access_modifier_style == 'outdent'
|
||||||
|
if s:Match(clnum, s:access_modifier_regex)
|
||||||
|
let class_line = s:FindContainingClass()
|
||||||
|
if class_line > 0
|
||||||
|
return indent(class_line)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
" If we got a closing bracket on an empty line, find its match and indent
|
" If we got a closing bracket on an empty line, find its match and indent
|
||||||
" according to it. For parentheses we indent to its column - 1, for the
|
" according to it. For parentheses we indent to its column - 1, for the
|
||||||
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
||||||
@@ -389,6 +456,11 @@ function GetRubyIndent(...)
|
|||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" If the current line starts with a leading operator, add a level of indent.
|
||||||
|
if s:Match(clnum, s:leading_operator_regex)
|
||||||
|
return indent(s:GetMSL(clnum)) + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
" 3.3. Work on the previous line. {{{2
|
" 3.3. Work on the previous line. {{{2
|
||||||
" -------------------------------
|
" -------------------------------
|
||||||
|
|
||||||
@@ -409,11 +481,35 @@ function GetRubyIndent(...)
|
|||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
|
|
||||||
|
if g:ruby_indent_access_modifier_style == 'indent'
|
||||||
|
" If the previous line was a private/protected keyword, add a
|
||||||
|
" level of indent.
|
||||||
|
if s:Match(lnum, s:indent_access_modifier_regex)
|
||||||
|
return indent(lnum) + &sw
|
||||||
|
endif
|
||||||
|
elseif g:ruby_indent_access_modifier_style == 'outdent'
|
||||||
|
" If the previous line was a private/protected/public keyword, add
|
||||||
|
" a level of indent, since the keyword has been out-dented.
|
||||||
|
if s:Match(lnum, s:access_modifier_regex)
|
||||||
|
return indent(lnum) + &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:Match(lnum, s:continuable_regex) && s:Match(lnum, s:continuation_regex)
|
||||||
|
return indent(s:GetMSL(lnum)) + &sw + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
if s:Match(lnum, s:block_regex)
|
if s:Match(lnum, s:block_regex)
|
||||||
return indent(s:GetMSL(lnum)) + &sw
|
return indent(s:GetMSL(lnum)) + &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" If the previous line started with a leading operator, use its MSL's level
|
||||||
|
" of indent
|
||||||
|
if s:Match(lnum, s:leading_operator_regex)
|
||||||
|
return indent(s:GetMSL(lnum))
|
||||||
|
endif
|
||||||
|
|
||||||
" If the previous line ended with the "*" of a splat, add a level of indent
|
" If the previous line ended with the "*" of a splat, add a level of indent
|
||||||
if line =~ s:splat_regex
|
if line =~ s:splat_regex
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + &sw
|
||||||
@@ -490,10 +586,14 @@ function GetRubyIndent(...)
|
|||||||
let p_lnum = lnum
|
let p_lnum = lnum
|
||||||
let lnum = s:GetMSL(lnum)
|
let lnum = s:GetMSL(lnum)
|
||||||
|
|
||||||
" If the previous line wasn't a MSL and is continuation return its indent.
|
" If the previous line wasn't a MSL.
|
||||||
" TODO: the || s:IsInString() thing worries me a bit.
|
|
||||||
if p_lnum != lnum
|
if p_lnum != lnum
|
||||||
if s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line))
|
" If previous line ends bracket and begins non-bracket continuation decrease indent by 1.
|
||||||
|
if s:Match(p_lnum, s:bracket_switch_continuation_regex)
|
||||||
|
return ind - 1
|
||||||
|
" If previous line is a continuation return its indent.
|
||||||
|
" TODO: the || s:IsInString() thing worries me a bit.
|
||||||
|
elseif s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line))
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|||||||
194
indent/rust.vim
Normal file
194
indent/rust.vim
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Rust
|
||||||
|
" Author: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Last Change: 2013 Oct 29
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal cindent
|
||||||
|
setlocal cinoptions=L0,(0,Ws,JN,j1
|
||||||
|
setlocal cinkeys=0{,0},!^F,o,O,0[,0]
|
||||||
|
" Don't think cinwords will actually do anything at all... never mind
|
||||||
|
setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern
|
||||||
|
|
||||||
|
" Some preliminary settings
|
||||||
|
setlocal nolisp " Make sure lisp indenting doesn't supersede us
|
||||||
|
setlocal autoindent " indentexpr isn't much help otherwise
|
||||||
|
" Also do indentkeys, otherwise # gets shoved to column 0 :-/
|
||||||
|
setlocal indentkeys=0{,0},!^F,o,O,0[,0]
|
||||||
|
|
||||||
|
setlocal indentexpr=GetRustIndent(v:lnum)
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetRustIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Come here when loading the script the first time.
|
||||||
|
|
||||||
|
function! s:get_line_trimmed(lnum)
|
||||||
|
" Get the line and remove a trailing comment.
|
||||||
|
" Use syntax highlighting attributes when possible.
|
||||||
|
" NOTE: this is not accurate; /* */ or a line continuation could trick it
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
let line_len = strlen(line)
|
||||||
|
if has('syntax_items')
|
||||||
|
" If the last character in the line is a comment, do a binary search for
|
||||||
|
" the start of the comment. synID() is slow, a linear search would take
|
||||||
|
" too long on a long line.
|
||||||
|
if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo'
|
||||||
|
let min = 1
|
||||||
|
let max = line_len
|
||||||
|
while min < max
|
||||||
|
let col = (min + max) / 2
|
||||||
|
if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo'
|
||||||
|
let max = col
|
||||||
|
else
|
||||||
|
let min = col + 1
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
let line = strpart(line, 0, min - 1)
|
||||||
|
endif
|
||||||
|
return substitute(line, "\s*$", "", "")
|
||||||
|
else
|
||||||
|
" Sorry, this is not complete, nor fully correct (e.g. string "//").
|
||||||
|
" Such is life.
|
||||||
|
return substitute(line, "\s*//.*$", "", "")
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_string_comment(lnum, col)
|
||||||
|
if has('syntax_items')
|
||||||
|
for id in synstack(a:lnum, a:col)
|
||||||
|
let synname = synIDattr(id, "name")
|
||||||
|
if synname == "rustString" || synname =~ "^rustComment"
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
else
|
||||||
|
" without syntax, let's not even try
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function GetRustIndent(lnum)
|
||||||
|
|
||||||
|
" Starting assumption: cindent (called at the end) will do it right
|
||||||
|
" normally. We just want to fix up a few cases.
|
||||||
|
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
|
||||||
|
if has('syntax_items')
|
||||||
|
let synname = synIDattr(synID(a:lnum, 1, 1), "name")
|
||||||
|
if synname == "rustString"
|
||||||
|
" If the start of the line is in a string, don't change the indent
|
||||||
|
return -1
|
||||||
|
elseif synname =~ '\(Comment\|Todo\)'
|
||||||
|
\ && line !~ '^\s*/\*' " not /* opening line
|
||||||
|
if synname =~ "CommentML" " multi-line
|
||||||
|
if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*'
|
||||||
|
" This is (hopefully) the line after a /*, and it has no
|
||||||
|
" leader, so the correct indentation is that of the
|
||||||
|
" previous line.
|
||||||
|
return GetRustIndent(a:lnum - 1)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
" If it's in a comment, let cindent take care of it now. This is
|
||||||
|
" for cases like "/*" where the next line should start " * ", not
|
||||||
|
" "* " as the code below would otherwise cause for module scope
|
||||||
|
" Fun fact: " /*\n*\n*/" takes two calls to get right!
|
||||||
|
return cindent(a:lnum)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" cindent gets second and subsequent match patterns/struct members wrong,
|
||||||
|
" as it treats the comma as indicating an unfinished statement::
|
||||||
|
"
|
||||||
|
" match a {
|
||||||
|
" b => c,
|
||||||
|
" d => e,
|
||||||
|
" f => g,
|
||||||
|
" };
|
||||||
|
|
||||||
|
" Search backwards for the previous non-empty line.
|
||||||
|
let prevlinenum = prevnonblank(a:lnum - 1)
|
||||||
|
let prevline = s:get_line_trimmed(prevlinenum)
|
||||||
|
while prevlinenum > 1 && prevline !~ '[^[:blank:]]'
|
||||||
|
let prevlinenum = prevnonblank(prevlinenum - 1)
|
||||||
|
let prevline = s:get_line_trimmed(prevlinenum)
|
||||||
|
endwhile
|
||||||
|
if prevline[len(prevline) - 1] == ","
|
||||||
|
\ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
|
||||||
|
\ && prevline !~ '^\s*fn\s'
|
||||||
|
\ && prevline !~ '([^()]\+,$'
|
||||||
|
" Oh ho! The previous line ended in a comma! I bet cindent will try to
|
||||||
|
" take this too far... For now, let's normally use the previous line's
|
||||||
|
" indent.
|
||||||
|
|
||||||
|
" One case where this doesn't work out is where *this* line contains
|
||||||
|
" square or curly brackets; then we normally *do* want to be indenting
|
||||||
|
" further.
|
||||||
|
"
|
||||||
|
" Another case where we don't want to is one like a function
|
||||||
|
" definition with arguments spread over multiple lines:
|
||||||
|
"
|
||||||
|
" fn foo(baz: Baz,
|
||||||
|
" baz: Baz) // <-- cindent gets this right by itself
|
||||||
|
"
|
||||||
|
" Another case is similar to the previous, except calling a function
|
||||||
|
" instead of defining it, or any conditional expression that leaves
|
||||||
|
" an open paren:
|
||||||
|
"
|
||||||
|
" foo(baz,
|
||||||
|
" baz);
|
||||||
|
"
|
||||||
|
" if baz && (foo ||
|
||||||
|
" bar) {
|
||||||
|
"
|
||||||
|
" There are probably other cases where we don't want to do this as
|
||||||
|
" well. Add them as needed.
|
||||||
|
return GetRustIndent(a:lnum - 1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" cindent doesn't do the module scope well at all; e.g.::
|
||||||
|
"
|
||||||
|
" static FOO : &'static [bool] = [
|
||||||
|
" true,
|
||||||
|
" false,
|
||||||
|
" false,
|
||||||
|
" true,
|
||||||
|
" ];
|
||||||
|
"
|
||||||
|
" uh oh, next statement is indented further!
|
||||||
|
|
||||||
|
" Note that this does *not* apply the line continuation pattern properly;
|
||||||
|
" that's too hard to do correctly for my liking at present, so I'll just
|
||||||
|
" start with these two main cases (square brackets and not returning to
|
||||||
|
" column zero)
|
||||||
|
|
||||||
|
call cursor(a:lnum, 1)
|
||||||
|
if searchpair('{\|(', '', '}\|)', 'nbW',
|
||||||
|
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||||
|
if searchpair('\[', '', '\]', 'nbW',
|
||||||
|
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||||
|
" Global scope, should be zero
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
" At the module scope, inside square brackets only
|
||||||
|
"if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum
|
||||||
|
if line =~ "^\\s*]"
|
||||||
|
" It's the closing line, dedent it
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return &shiftwidth
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fall back on cindent, which does it mostly right
|
||||||
|
return cindent(a:lnum)
|
||||||
|
endfunction
|
||||||
@@ -4,18 +4,22 @@
|
|||||||
" Modifications by : Derek Wyatt
|
" Modifications by : Derek Wyatt
|
||||||
" Last Change: 2011 Mar 19 (Derek Wyatt)
|
" Last Change: 2011 Mar 19 (Derek Wyatt)
|
||||||
|
|
||||||
"if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
" finish
|
finish
|
||||||
"endif
|
endif
|
||||||
"let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
setlocal indentexpr=GetScalaIndent()
|
setlocal indentexpr=GetScalaIndent()
|
||||||
setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>
|
setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>
|
||||||
setlocal autoindent
|
setlocal autoindent
|
||||||
|
setlocal softtabstop=2
|
||||||
|
setlocal tabstop=2
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
setlocal expandtab
|
||||||
|
|
||||||
"if exists("*GetScalaIndent")
|
if exists("*GetScalaIndent")
|
||||||
" finish
|
finish
|
||||||
"endif
|
endif
|
||||||
|
|
||||||
let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\<def\>'
|
let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\<def\>'
|
||||||
let s:funcNameMatcher = '\w\+'
|
let s:funcNameMatcher = '\w\+'
|
||||||
@@ -32,12 +36,12 @@ endfunction
|
|||||||
|
|
||||||
function! scala#GetLine(lnum)
|
function! scala#GetLine(lnum)
|
||||||
let line = substitute(getline(a:lnum), '//.*$', '', '')
|
let line = substitute(getline(a:lnum), '//.*$', '', '')
|
||||||
let line = substitute(line, '"[^"]*"', '""', 'g')
|
let line = substitute(line, '"\(.\|\\"\)\{-}"', '""', 'g')
|
||||||
return line
|
return line
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! scala#CountBrackets(line, openBracket, closedBracket)
|
function! scala#CountBrackets(line, openBracket, closedBracket)
|
||||||
let line = substitute(a:line, '"\(.\|\\"\)*"', '', 'g')
|
let line = substitute(a:line, '"\(.\|\\"\)\{-}"', '', 'g')
|
||||||
let open = substitute(line, '[^' . a:openBracket . ']', '', 'g')
|
let open = substitute(line, '[^' . a:openBracket . ']', '', 'g')
|
||||||
let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g')
|
let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g')
|
||||||
return strlen(open) - strlen(close)
|
return strlen(open) - strlen(close)
|
||||||
@@ -98,7 +102,7 @@ function! scala#CurlyMatcher()
|
|||||||
if scala#CountParens(scala#GetLine(matchline)) < 0
|
if scala#CountParens(scala#GetLine(matchline)) < 0
|
||||||
let savedpos = getpos('.')
|
let savedpos = getpos('.')
|
||||||
call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]])
|
call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]])
|
||||||
call searchpos('{', 'Wb')
|
call searchpos('{', 'Wbc')
|
||||||
call searchpos(')', 'Wb')
|
call searchpos(')', 'Wb')
|
||||||
let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn')
|
let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn')
|
||||||
call setpos('.', savedpos)
|
call setpos('.', savedpos)
|
||||||
@@ -129,7 +133,7 @@ function! scala#GetLineAndColumnThatMatchesBracket(openBracket, closedBracket)
|
|||||||
call searchpos(a:closedBracket . '\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W')
|
call searchpos(a:closedBracket . '\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W')
|
||||||
else
|
else
|
||||||
call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]])
|
call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]])
|
||||||
call searchpos(a:closedBracket, 'Wb')
|
call searchpos(a:closedBracket, 'Wbc')
|
||||||
endif
|
endif
|
||||||
let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')
|
let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')
|
||||||
call setpos('.', savedpos)
|
call setpos('.', savedpos)
|
||||||
@@ -378,7 +382,11 @@ function! GetScalaIndent()
|
|||||||
let curline = scala#GetLine(curlnum)
|
let curline = scala#GetLine(curlnum)
|
||||||
|
|
||||||
if prevline =~ '^\s*/\*\*'
|
if prevline =~ '^\s*/\*\*'
|
||||||
return ind + 1
|
if prevline =~ '\*/\s*$'
|
||||||
|
return ind
|
||||||
|
else
|
||||||
|
return ind + 1
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if curline =~ '^\s*\*'
|
if curline =~ '^\s*\*'
|
||||||
@@ -515,7 +523,7 @@ function! GetScalaIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let prevCurlyCount = scala#CountCurlies(prevline)
|
let prevCurlyCount = scala#CountCurlies(prevline)
|
||||||
if prevCurlyCount == 0 && prevline =~ '^.*=>\s*$' && prevline !~ '^\s*this\s*:.*=>\s*$' && curline !~ '^\s*\<case\>'
|
if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\<case\>'
|
||||||
call scala#ConditionalConfirm("16")
|
call scala#ConditionalConfirm("16")
|
||||||
let ind = ind + &shiftwidth
|
let ind = ind + &shiftwidth
|
||||||
endif
|
endif
|
||||||
|
|||||||
15
indent/swift.vim
Normal file
15
indent/swift.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
" Language: Swift<https://developer.apple.com/swift/>
|
||||||
|
" Maintainer: toyama satoshi <toyamarinyon@gmail.com>
|
||||||
|
" URL: http://github.com/toyamarinyon/vim-swift
|
||||||
|
" License: GPL
|
||||||
|
|
||||||
|
" 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<"
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
" LaTeX indent file (part of LaTeX Box)
|
" LaTeX indent file (part of LaTeX Box)
|
||||||
" Maintainer: David Munger (mungerd@gmail.com)
|
" Maintainer: David Munger (mungerd@gmail.com)
|
||||||
|
|
||||||
|
if exists("g:LatexBox_custom_indent") && ! g:LatexBox_custom_indent
|
||||||
|
finish
|
||||||
|
endif
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,14 +1,22 @@
|
|||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
require 'timeout'
|
||||||
|
|
||||||
describe "My Vim plugin" do
|
describe "My Vim plugin" do
|
||||||
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
|
|
||||||
|
|
||||||
languages.each do |lang|
|
extensions = `cat ftdetect/polyglot.vim | grep '^au' | tr "\t" ' ' | cut -d ' ' -f 3 | grep -v / | grep -v '^\*$' | grep -v '^$'`.strip
|
||||||
it "should parse .#{lang} file" do
|
|
||||||
write_file "test.#{lang}", ""
|
extensions.gsub!(/\[(.).+\]/) { $1 }.gsub!('*', 'test')
|
||||||
vim.edit "test.#{lang}"
|
|
||||||
vim.insert "sample"
|
extensions = extensions.split(/[\n,]/)
|
||||||
vim.write
|
|
||||||
|
extensions.each do |ext|
|
||||||
|
it "should parse #{ext} file" do
|
||||||
|
Timeout::timeout(5) do
|
||||||
|
write_file "#{ext}", ""
|
||||||
|
vim.edit "#{ext}"
|
||||||
|
vim.insert "sample"
|
||||||
|
vim.write
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ $plugin_path = File.expand_path('../..', __FILE__)
|
|||||||
Vimrunner::RSpec.configure do |config|
|
Vimrunner::RSpec.configure do |config|
|
||||||
# Use a single Vim instance for the test suite. Set to false to use an
|
# Use a single Vim instance for the test suite. Set to false to use an
|
||||||
# instance per test (slower, but can be easier to manage).
|
# instance per test (slower, but can be easier to manage).
|
||||||
config.reuse_server = true
|
config.reuse_server = !ENV['REUSE_SERVER'].nil?
|
||||||
|
|
||||||
# Decide how to start a Vim instance. In this block, an instance should be
|
# Decide how to start a Vim instance. In this block, an instance should be
|
||||||
# spawned and set up with anything project-specific.
|
# spawned and set up with anything project-specific.
|
||||||
|
|||||||
35
syntax/blade.vim
Normal file
35
syntax/blade.vim
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
" Language: Blade (Laravel)
|
||||||
|
" Maintainer: xsbeats <jwalton512@gmail.com>
|
||||||
|
" URL: http://github.com/xsbeats/vim-blade
|
||||||
|
" License: WTFPL
|
||||||
|
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
runtime! syntax/html.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
runtime! syntax/php.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
syn match bladeConditional /@\(choice\|each\|elseif\|extends\|for\|foreach\|if\|include\|lang\|section\|unless\|while\|yield\)\>\s*/ nextgroup=bladeParenBlock containedin=ALLBUT,bladeComment
|
||||||
|
|
||||||
|
syn match bladeKeyword /@\(else\|endfor\|endforeach\|endif\|endsection\|endunless\|endwhile\|overwrite\|parent\|show\|stop\)\>/ containedin=ALL,bladeComment
|
||||||
|
|
||||||
|
syn region bladeCommentBlock start="{{--" end="--}}" contains=bladeComment keepend containedin=TOP
|
||||||
|
syn match bladeComment /.*/ contained containedin=bladeCommentBlock
|
||||||
|
|
||||||
|
syn region bladeEchoUnescaped matchgroup=bladeEchoDelim start="\([@|{]\)\@<!{{\(--\)\@!" end="}}" contains=@phpClInside containedin=ALLBUT,bladeComment
|
||||||
|
syn region bladeEchoEscaped matchgroup=bladeEchoDelim start="\(@\)\@<!{{{" end="}}}" contains=@phpClInside containedin=ALLBUT,bladeComment
|
||||||
|
|
||||||
|
syn cluster bladeStatement contains=bladeConditional,bladeKeyword
|
||||||
|
|
||||||
|
syn region bladeParenBlock start="(" end=")" contained oneline contains=bladeParenBlock,@phpClInside,@bladeStatement extend keepend
|
||||||
|
|
||||||
|
hi def link bladeComment Comment
|
||||||
|
hi def link bladeConditional Conditional
|
||||||
|
hi def link bladeKeyword Keyword
|
||||||
|
hi def link bladeEchoDelim Delimiter
|
||||||
|
|
||||||
|
let b:current_syntax = 'blade'
|
||||||
25
syntax/c.vim
25
syntax/c.vim
@@ -1,7 +1,7 @@
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: C
|
" Language: C
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2013 Jun 06
|
" Last Change: 2013 Jul 05
|
||||||
|
|
||||||
" Quit when a (custom) syntax file was already loaded
|
" Quit when a (custom) syntax file was already loaded
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
@@ -11,6 +11,8 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
let s:ft = matchstr(&ft, '^\([^.]\)\+')
|
||||||
|
|
||||||
" A bunch of useful C keywords
|
" A bunch of useful C keywords
|
||||||
syn keyword cStatement goto break return continue asm
|
syn keyword cStatement goto break return continue asm
|
||||||
syn keyword cLabel case default
|
syn keyword cLabel case default
|
||||||
@@ -110,7 +112,7 @@ endif
|
|||||||
" But avoid matching <::.
|
" But avoid matching <::.
|
||||||
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
||||||
if exists("c_no_curly_error")
|
if exists("c_no_curly_error")
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||||
@@ -124,7 +126,7 @@ if exists("c_no_curly_error")
|
|||||||
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
||||||
endif
|
endif
|
||||||
elseif exists("c_no_bracket_error")
|
elseif exists("c_no_bracket_error")
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||||
@@ -138,7 +140,7 @@ elseif exists("c_no_bracket_error")
|
|||||||
syn match cErrInParen display contained "[{}]\|<%\|%>"
|
syn match cErrInParen display contained "[{}]\|<%\|%>"
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
||||||
@@ -158,7 +160,7 @@ else
|
|||||||
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
if s:ft ==# 'c' || exists("cpp_no_cpp11")
|
||||||
syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
|
syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -370,15 +372,20 @@ syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>
|
|||||||
|
|
||||||
" Highlight User Labels
|
" Highlight User Labels
|
||||||
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
||||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
if s:ft ==# 'c' || exists("cpp_no_cpp11")
|
||||||
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
||||||
endif
|
endif
|
||||||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
||||||
syn cluster cLabelGroup contains=cUserLabel
|
syn cluster cLabelGroup contains=cUserLabel
|
||||||
syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup
|
syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup
|
||||||
syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup
|
syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup
|
||||||
syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
if s:ft ==# 'cpp'
|
||||||
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
syn match cUserCont display "^\s*\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||||
|
syn match cUserCont display ";\s*\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||||
|
else
|
||||||
|
syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||||
|
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||||
|
endif
|
||||||
|
|
||||||
syn match cUserLabel display "\I\i*" contained
|
syn match cUserLabel display "\I\i*" contained
|
||||||
|
|
||||||
@@ -457,6 +464,8 @@ hi def link cCppOut Comment
|
|||||||
|
|
||||||
let b:current_syntax = "c"
|
let b:current_syntax = "c"
|
||||||
|
|
||||||
|
unlet s:ft
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
" vim: ts=8
|
" vim: ts=8
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ syn match cabalOperator '\W\@<=impl\((.\+)\)\@='
|
|||||||
syn match cabalOperator '\W\@<=flag\((.\+)\)\@='
|
syn match cabalOperator '\W\@<=flag\((.\+)\)\@='
|
||||||
syn match cabalOperator '\(^\s*--.*\)\@<!\(<\|>\|=\|||\|&&\)'
|
syn match cabalOperator '\(^\s*--.*\)\@<!\(<\|>\|=\|||\|&&\)'
|
||||||
|
|
||||||
syn match cabalComment '\s\@<=--.*$'
|
syn match cabalComment '--.*$' contains=@Spell
|
||||||
|
|
||||||
if version >= 508 || !exists('did_cabal_syntax_inits')
|
if version >= 508 || !exists('did_cabal_syntax_inits')
|
||||||
if version < 508
|
if version < 508
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user