mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
9d92f10375 | ||
|
|
fc0b11afe1 | ||
|
|
0fcd056648 | ||
|
|
78cd7e48cb | ||
|
|
ba1305772d | ||
|
|
ff3cc42bf3 | ||
|
|
e69f9f91d9 | ||
|
|
c37e16fbbd | ||
|
|
d7873996b4 | ||
|
|
73cbf0269e | ||
|
|
0077bd5a31 | ||
|
|
e8c16931f9 | ||
|
|
752a647be1 | ||
|
|
97a0bdcef6 | ||
|
|
58f119c57f | ||
|
|
0ac0389039 | ||
|
|
4bf3f6c300 | ||
|
|
4a80e945ad | ||
|
|
27f22774b1 | ||
|
|
f6be1d3d13 | ||
|
|
77f091c8c7 |
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
|
||||||
|
|||||||
8
.travis.yml
Normal file
8
.travis.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
language: ruby
|
||||||
|
rvm:
|
||||||
|
- 1.9.3
|
||||||
|
before_install: sudo apt-get install vim-gtk
|
||||||
|
before_script:
|
||||||
|
- "export DISPLAY=:99.0"
|
||||||
|
- "sh -e /etc/init.d/xvfb start"
|
||||||
|
script: bundle exec rspec --format=documentation
|
||||||
4
Gemfile
Normal file
4
Gemfile
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'vimrunner'
|
||||||
|
gem 'rspec'
|
||||||
20
Gemfile.lock
Normal file
20
Gemfile.lock
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
diff-lcs (1.1.3)
|
||||||
|
rspec (2.12.0)
|
||||||
|
rspec-core (~> 2.12.0)
|
||||||
|
rspec-expectations (~> 2.12.0)
|
||||||
|
rspec-mocks (~> 2.12.0)
|
||||||
|
rspec-core (2.12.2)
|
||||||
|
rspec-expectations (2.12.1)
|
||||||
|
diff-lcs (~> 1.1.3)
|
||||||
|
rspec-mocks (2.12.0)
|
||||||
|
vimrunner (0.3.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
rspec
|
||||||
|
vimrunner
|
||||||
59
README.md
59
README.md
@@ -1,14 +1,20 @@
|
|||||||
# vim-polyglot
|
# vim-polyglot [![Build Status][travis-img-url]][travis-url]
|
||||||
|
|
||||||
|
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.png
|
||||||
|
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
|
||||||
|
|
||||||
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 all files 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 vimrunner script on CI. See `spec` directory.
|
||||||
|
|
||||||
|
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -19,49 +25,62 @@ 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)
|
||||||
- [bundler](https://github.com/tpope/vim-bundler) (compiler)
|
|
||||||
- [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)
|
|
||||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
|
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
|
||||||
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [erlang](https://github.com/jimenezrick/vimerl) (syntax, indent, compiler, autoload, ftplugin)
|
- [emberscript](https://github.com/heartsentwined/vim-ember-script) (syntax, indent, ftplugin, ftdetect)
|
||||||
|
- [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/jnwhiteh/vim-golang) (syntax, indent, compiler, autoload, ftplugin, 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/jcf/vim-latex) (indent, compiler, 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, 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)
|
||||||
- [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
|
||||||
|
|
||||||
@@ -72,3 +91,7 @@ Feel free to add your language, and send pull-request.
|
|||||||
## License
|
## License
|
||||||
|
|
||||||
See linked repositories for detailed license information.
|
See linked repositories for detailed license information.
|
||||||
|
|
||||||
|
|
||||||
|
[](https://bitdeli.com/free "Bitdeli Badge")
|
||||||
|
|
||||||
|
|||||||
2
after/ftdetect/rspec.vim
Normal file
2
after/ftdetect/rspec.vim
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
autocmd BufReadPost,BufNewFile *_spec.rb set syntax=rspec
|
||||||
|
autocmd BufReadPost,BufNewFile *_spec.rb setlocal commentstring=#\ %s
|
||||||
11
after/ftplugin/puppet.vim
Normal file
11
after/ftplugin/puppet.vim
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>A
|
||||||
|
function! s:puppetalign()
|
||||||
|
let p = '^\s*\w+\s*[=+]>.*$'
|
||||||
|
let lineContainsHashrocket = getline('.') =~# '^\s*\w+\s*[=+]>'
|
||||||
|
let hashrocketOnPrevLine = getline(line('.') - 1) =~# p
|
||||||
|
let hashrocketOnNextLine = getline(line('.') + 1) =~# p
|
||||||
|
if exists(':Tabularize') " && lineContainsHashrocket && (hashrocketOnPrevLine || hashrocketOnNextLine)
|
||||||
|
Tabularize /=>/l1
|
||||||
|
normal! 0
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
279
after/syntax/c.vim
Normal file
279
after/syntax/c.vim
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
" 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,10 @@ 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
|
||||||
|
" 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')
|
||||||
32
after/syntax/rspec.vim
Normal file
32
after/syntax/rspec.vim
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
"
|
||||||
|
" An rspec syntax file
|
||||||
|
" Originally from http://www.vim.org/scripts/script.php?script_id=2286
|
||||||
|
"
|
||||||
|
"
|
||||||
|
|
||||||
|
runtime! syntax/ruby.vim
|
||||||
|
unlet! b:current_syntax
|
||||||
|
|
||||||
|
syntax keyword rspecGroupMethods context describe example it its let it_should_behave_like shared_examples_for subject it_behaves_like pending specify When Then Given Invariant feature scenario given
|
||||||
|
highlight link rspecGroupMethods Type
|
||||||
|
|
||||||
|
syntax keyword rspecBeforeAndAfter after after_suite_parts append_after append_before before before_suite_parts prepend_after prepend_before around
|
||||||
|
highlight link rspecBeforeAndAfter Statement
|
||||||
|
|
||||||
|
syntax keyword rspecMocks double mock stub stub_chain
|
||||||
|
highlight link rspecMocks Constant
|
||||||
|
|
||||||
|
syntax keyword rspecMockMethods and_raise and_return and_throw and_yield build_child called_max_times expected_args invoke matches
|
||||||
|
highlight link rspecMockMethods Function
|
||||||
|
|
||||||
|
syntax keyword rspecKeywords should should_not should_not_receive should_receive
|
||||||
|
highlight link rspecKeywords Constant
|
||||||
|
|
||||||
|
syntax keyword rspecMatchers be change eql equal exist expect have have_at_least have_at_most have_exactly include match matcher raise_error raise_exception respond_to satisfy throw_symbol to to_not not_to when wrap_expectation
|
||||||
|
syntax match rspecMatchers /\<\(be\|have\)_\w\+\>/
|
||||||
|
highlight link rspecMatchers Function
|
||||||
|
|
||||||
|
syntax keyword rspecMessageExpectation advise any_args any_number_of_times anything at_least at_most exactly expected_messages_received generate_error hash_including hash_not_including ignoring_args instance_of matches_at_least_count matches_at_most_count matches_exact_count matches_name_but_not_args negative_expectation_for never no_args once ordered similar_messages times twice verify_messages_received with
|
||||||
|
highlight link rspecMessageExpectation Function
|
||||||
|
|
||||||
|
let b:current_syntax = 'rspec'
|
||||||
@@ -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
|
||||||
|
|||||||
33
after/syntax/rust.vim
Normal file
33
after/syntax/rust.vim
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
setlocal conceallevel=2
|
||||||
@@ -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')
|
||||||
|
|||||||
9
after/syntax/tex.vim
Normal file
9
after/syntax/tex.vim
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
" adds support for cleverref package
|
||||||
|
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
|
||||||
|
" adds support for listings package
|
||||||
|
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
|
||||||
|
syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
|
||||||
|
syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}"
|
||||||
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,219 +0,0 @@
|
|||||||
" Vim omni completion file
|
|
||||||
" Language: Erlang
|
|
||||||
" Author: Oscar Hellström <oscar@oscarh.net>
|
|
||||||
" Contributors: kTT (http://github.com/kTT)
|
|
||||||
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
|
||||||
" Eduardo Lopez (http://github.com/tapichu)
|
|
||||||
" Zhihui Jiao (http://github.com/onlychoice)
|
|
||||||
" License: Vim license
|
|
||||||
" Version: 2012/11/26
|
|
||||||
|
|
||||||
if !exists('g:erlang_completion_cache')
|
|
||||||
let g:erlang_completion_cache = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Completion program path
|
|
||||||
let s:erlang_complete_file = expand('<sfile>:p:h') . '/erlang_complete.erl'
|
|
||||||
|
|
||||||
" Modules cache used to speed up the completion
|
|
||||||
let s:modules_cache = {}
|
|
||||||
|
|
||||||
" File cache for persistence between Vim sessions
|
|
||||||
if filewritable(expand('<sfile>:p:h')) == 2
|
|
||||||
let s:file_cache = expand('<sfile>:p:h') . '/vimerl_cache'
|
|
||||||
else
|
|
||||||
let s:file_cache = '/tmp/vimerl_cache'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Patterns for completions
|
|
||||||
let s:erlang_local_func_beg = '\(\<[0-9A-Za-z_-]*\|\s*\)$'
|
|
||||||
let s:erlang_external_func_beg = '\<[0-9A-Za-z_-]\+:[0-9A-Za-z_-]*$'
|
|
||||||
let s:erlang_blank_line = '^\s*\(%.*\)\?$'
|
|
||||||
|
|
||||||
" Main function for completion
|
|
||||||
function erlang_complete#Complete(findstart, base)
|
|
||||||
let lnum = line('.')
|
|
||||||
let column = col('.')
|
|
||||||
let line = strpart(getline('.'), 0, column - 1)
|
|
||||||
|
|
||||||
" 1) Check if the char to the left of us are part of a function call
|
|
||||||
"
|
|
||||||
" Nothing interesting is written at the char just before the cursor
|
|
||||||
" This means _anything_ could be started here
|
|
||||||
" In this case, keyword completion should probably be used,
|
|
||||||
" for now we'll only try and complete local functions.
|
|
||||||
"
|
|
||||||
" TODO: Examine if we can stare Identifiers end complete on them
|
|
||||||
" Is this worth it? Is /completion/ of a "blank" wanted? Can we consider
|
|
||||||
" `(' interesting and check if we are in a function call etc.?
|
|
||||||
if line[column - 2] !~ '[0-9A-Za-z:_-]'
|
|
||||||
if a:findstart
|
|
||||||
return column
|
|
||||||
else
|
|
||||||
return s:ErlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 2) Function in external module
|
|
||||||
if line =~ s:erlang_external_func_beg
|
|
||||||
let delimiter = match(line, ':[0-9A-Za-z_-]*$') + 1
|
|
||||||
if a:findstart
|
|
||||||
return delimiter
|
|
||||||
else
|
|
||||||
let module = matchstr(line[:-2], '\<\k*\>$')
|
|
||||||
return s:ErlangFindExternalFunc(module, a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 3) Local function
|
|
||||||
if line =~ s:erlang_local_func_beg
|
|
||||||
let funcstart = match(line, ':\@<![0-9A-Za-z_-]*$')
|
|
||||||
if a:findstart
|
|
||||||
return funcstart
|
|
||||||
else
|
|
||||||
return s:ErlangFindLocalFunc(a:base)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" 4) Unhandled situation
|
|
||||||
if a:findstart
|
|
||||||
return -1
|
|
||||||
else
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Find the next non-blank line
|
|
||||||
function s:ErlangFindNextNonBlank(lnum)
|
|
||||||
let lnum = nextnonblank(a:lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
|
|
||||||
while line =~ s:erlang_blank_line && 0 != lnum
|
|
||||||
let lnum = nextnonblank(lnum + 1)
|
|
||||||
let line = getline(lnum)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
return lnum
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Find external function names
|
|
||||||
function s:ErlangFindExternalFunc(module, base)
|
|
||||||
" If the module is cached, load its functions
|
|
||||||
if has_key(s:modules_cache, a:module)
|
|
||||||
for field_cache in get(s:modules_cache, a:module)
|
|
||||||
if match(field_cache.word, a:base) == 0
|
|
||||||
call complete_add(field_cache)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
|
|
||||||
let functions = system(s:erlang_complete_file . ' ' . a:module)
|
|
||||||
for function_spec in split(functions, '\n')
|
|
||||||
if match(function_spec, a:base) == 0
|
|
||||||
let function_name = matchstr(function_spec, a:base . '\w*')
|
|
||||||
let field = {'word': function_name . '(', 'abbr': function_spec,
|
|
||||||
\ 'kind': 'f', 'dup': 1}
|
|
||||||
call complete_add(field)
|
|
||||||
|
|
||||||
" Populate the cache only when iterating over all the
|
|
||||||
" module functions (i.e. no prefix for the completion)
|
|
||||||
if g:erlang_completion_cache && a:base == ''
|
|
||||||
if !has_key(s:modules_cache, a:module)
|
|
||||||
let s:modules_cache[a:module] = [field]
|
|
||||||
else
|
|
||||||
let fields_cache = get(s:modules_cache, a:module)
|
|
||||||
let s:modules_cache[a:module] = add(fields_cache, field)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The user entered some text, so stop the completion
|
|
||||||
if complete_check()
|
|
||||||
" The module couldn't be entirely cached
|
|
||||||
if has_key(s:modules_cache, a:module)
|
|
||||||
call remove(s:modules_cache, a:module)
|
|
||||||
endif
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
|
|
||||||
call s:ErlangWriteCache(a:module)
|
|
||||||
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Find local function names
|
|
||||||
function s:ErlangFindLocalFunc(base)
|
|
||||||
" Begin at line 1
|
|
||||||
let lnum = s:ErlangFindNextNonBlank(1)
|
|
||||||
|
|
||||||
if "" == a:base
|
|
||||||
let base = '\w' " Used to match against word symbol
|
|
||||||
else
|
|
||||||
let base = a:base
|
|
||||||
endif
|
|
||||||
|
|
||||||
while 0 != lnum && !complete_check()
|
|
||||||
let line = getline(lnum)
|
|
||||||
let function_name = matchstr(line, '^' . base . '[0-9A-Za-z_-]\+(\@=')
|
|
||||||
if function_name != ""
|
|
||||||
call complete_add({'word': function_name, 'kind': 'f'})
|
|
||||||
endif
|
|
||||||
let lnum = s:ErlangFindNextNonBlank(lnum)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
return []
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:ErlangLoadCache()
|
|
||||||
if filereadable(s:file_cache)
|
|
||||||
for line in readfile(s:file_cache)
|
|
||||||
let cache_entry = eval(line)
|
|
||||||
" cache_entry is a dict with just one key with the
|
|
||||||
" module name and the function list we are going to
|
|
||||||
" add to the memory cache as the value of this key
|
|
||||||
for mod_name in keys(cache_entry)
|
|
||||||
let func_list = get(cache_entry, mod_name)
|
|
||||||
let s:modules_cache[mod_name] = func_list
|
|
||||||
endfor
|
|
||||||
endfor
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:ErlangWriteCache(module)
|
|
||||||
" Write all the module functions to the cache file
|
|
||||||
if has_key(s:modules_cache, a:module)
|
|
||||||
let func_list = get(s:modules_cache, a:module)
|
|
||||||
if len(func_list) > 0
|
|
||||||
let cache_entry = {a:module : func_list}
|
|
||||||
execute 'redir >>' . s:file_cache
|
|
||||||
silent echon cache_entry
|
|
||||||
silent echon "\n"
|
|
||||||
redir END
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:ErlangPurgeCache(...)
|
|
||||||
for mod_name in a:000
|
|
||||||
if has_key(s:modules_cache, mod_name)
|
|
||||||
call remove(s:modules_cache, mod_name)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
|
|
||||||
" Delete the old cache file
|
|
||||||
call delete(s:file_cache)
|
|
||||||
|
|
||||||
" Write a new one
|
|
||||||
for mod_name in keys(s:modules_cache)
|
|
||||||
call s:ErlangWriteCache(mod_name)
|
|
||||||
endfor
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Load the file cache when this script is autoloaded
|
|
||||||
call s:ErlangLoadCache()
|
|
||||||
|
|
||||||
" Command for removing modules from the cache
|
|
||||||
command -nargs=+ ErlangPurgeCache silent call s:ErlangPurgeCache(<f-args>)
|
|
||||||
161
autoload/erlangcomplete.vim
Normal file
161
autoload/erlangcomplete.vim
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
" ------------------------------------------------------------------------------
|
||||||
|
" Vim omni-completion script
|
||||||
|
" Author: Oscar Hellström
|
||||||
|
" Email: oscar@oscarh.net
|
||||||
|
" Version: 2010-08-10
|
||||||
|
" Contributors: kTT (http://github.com/kTT)
|
||||||
|
" Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
||||||
|
" ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Patterns for completions {{{1
|
||||||
|
let s:erlangLocalFuncBeg = '\(\<[0-9A-Za-z_-]*\|\s*\)$'
|
||||||
|
let s:erlangExternalFuncBeg = '\<[0-9A-Za-z_-]\+:[0-9A-Za-z_-]*$'
|
||||||
|
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
||||||
|
let s:erlangCompletionPath = expand('<sfile>:p:h') . '/erlang_completion.erl'
|
||||||
|
|
||||||
|
if !exists('g:erlangCompletionGrep')
|
||||||
|
let g:erlangCompletionGrep = 'grep'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:erlangManSuffix')
|
||||||
|
let g:erlangManSuffix = ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:erlangManPath')
|
||||||
|
let g:erlangManPath = '/usr/lib/erlang/man'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:erlangCompletionDisplayDoc')
|
||||||
|
let g:erlangCompletionDisplayDoc = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Main function for completion {{{1
|
||||||
|
function! erlangcomplete#Complete(findstart, base)
|
||||||
|
" 0) Init {{{2
|
||||||
|
let lnum = line('.')
|
||||||
|
let column = col('.')
|
||||||
|
let line = strpart(getline('.'), 0, column - 1)
|
||||||
|
|
||||||
|
" 1) First, check if completion is impossible {{{2
|
||||||
|
if line =~ '[^~\\]%'
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
|
||||||
|
"echo "line[col - 1]:" . line[column - 1] . " line[col - 2]:" . line[column - 2] . "\n" . line . "\n"
|
||||||
|
|
||||||
|
" 2) Check if the char to the left of us are part of a function call {{{2
|
||||||
|
"
|
||||||
|
" Nothing interesting is written at the char just before the cursor
|
||||||
|
" This means _anything_ could be started here
|
||||||
|
" In this case, keyword completion should probably be used,
|
||||||
|
" for now we'll only try and complete local functions.
|
||||||
|
" TODO: Examine if we can stare Identifiers end complete on them
|
||||||
|
" Is this worth it? Is /completion/ of a "blank" wanted? Can we consider (
|
||||||
|
" interesting and check if we are in a function call etc.?
|
||||||
|
if line[column - 2] !~ '[0-9A-Za-z:_-]'
|
||||||
|
if a:findstart
|
||||||
|
return column
|
||||||
|
else
|
||||||
|
return s:erlangFindLocalFunc(a:base)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" 3) Function in external module {{{2
|
||||||
|
if line =~ s:erlangExternalFuncBeg
|
||||||
|
let delimiter = match(line, ':[0-9A-Za-z_-]*$') + 1
|
||||||
|
if a:findstart
|
||||||
|
return delimiter
|
||||||
|
else
|
||||||
|
let module = matchstr(line[:-2], '\<\k*\>$')
|
||||||
|
return s:erlangFindExternalFunc(module, a:base)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 4) Local function {{{2
|
||||||
|
if line =~ s:erlangLocalFuncBeg
|
||||||
|
let funcstart = match(line, ':\@<![0-9A-Za-z_-]*$')
|
||||||
|
if a:findstart
|
||||||
|
return funcstart
|
||||||
|
else
|
||||||
|
return s:erlangFindLocalFunc(a:base)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 5) Unhandled situation {{{2
|
||||||
|
if a:findstart
|
||||||
|
return -1
|
||||||
|
else
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Auxiliary functions for completion {{{1
|
||||||
|
" Find the next non-blank line {{{2
|
||||||
|
function s:erlangFindNextNonBlank(lnum)
|
||||||
|
let lnum = nextnonblank(a:lnum + 1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
while line =~ s:ErlangBlankLine && 0 != lnum
|
||||||
|
let lnum = nextnonblank(lnum + 1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
endwhile
|
||||||
|
return lnum
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" vim: foldmethod=marker:
|
||||||
|
" Find external function names {{{2
|
||||||
|
function s:erlangFindExternalFunc(module, base)
|
||||||
|
" If it's a local module, try to compile it
|
||||||
|
if filereadable(a:module . '.erl') && !filereadable(a:module . '.beam')
|
||||||
|
silent execute '!erlc' a:module . '.erl' '>/dev/null' '2>/dev/null'
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
let functions = system(s:erlangCompletionPath . ' ' . a:module)
|
||||||
|
for element in sort(split(functions, '\n'))
|
||||||
|
if match(element, a:base) == 0
|
||||||
|
let function_name = matchstr(element, a:base . '\w\+')
|
||||||
|
let number_of_args = matchstr(element, '\d\+', len(function_name))
|
||||||
|
let number_of_comma = max([number_of_args - 1, 0])
|
||||||
|
let file_path = g:erlangManPath . '/man?/' . a:module . '\.?' . g:erlangManSuffix
|
||||||
|
" [:-2] cutting some weird characters at the end
|
||||||
|
" becouse grep doesn't support multilines, we have to filter
|
||||||
|
" first by .B and next by looking via function name
|
||||||
|
" if someone have better idea, please change it
|
||||||
|
let description = ''
|
||||||
|
" Don't look man pages if the module is present in the current directory
|
||||||
|
if g:erlangCompletionDisplayDoc != 0 && !filereadable(a:module . '.erl')
|
||||||
|
let system_command = g:erlangCompletionGrep . ' -A 1 "\.B" ' . file_path . ' | grep -EZo "\<' .
|
||||||
|
\ function_name . '\>\((\w+, ){' . number_of_comma . '}[^),]*\) -> .*"'
|
||||||
|
let description = system(system_command)
|
||||||
|
let description = description[:-2]
|
||||||
|
endif
|
||||||
|
if description == ''
|
||||||
|
let description = element " if function doesn't have description e.g. lists:rmerge, put rmerge/2 instead
|
||||||
|
endif
|
||||||
|
let field = {'word': function_name . '(', 'abbr': description, 'kind': 'f', 'dup': 1} " always duplicate functions
|
||||||
|
call complete_add(field)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return []
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find local function names {{{2
|
||||||
|
function s:erlangFindLocalFunc(base)
|
||||||
|
" begin at line 1
|
||||||
|
let lnum = s:erlangFindNextNonBlank(1)
|
||||||
|
if "" == a:base
|
||||||
|
let base = '\w' " used to match against word symbol
|
||||||
|
else
|
||||||
|
let base = a:base
|
||||||
|
endif
|
||||||
|
while 0 != lnum && !complete_check()
|
||||||
|
let line = getline(lnum)
|
||||||
|
let function_name = matchstr(line, '^' . base . '[0-9A-Za-z_-]\+(\@=')
|
||||||
|
if function_name != ""
|
||||||
|
call complete_add(function_name)
|
||||||
|
endif
|
||||||
|
let lnum = s:erlangFindNextNonBlank(lnum)
|
||||||
|
endwhile
|
||||||
|
return []
|
||||||
|
endfunction
|
||||||
|
|
||||||
@@ -28,43 +28,75 @@ if len(s:goarch) == 0
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
function! go#complete#PackageMembers(package, member)
|
||||||
|
silent! let content = system('godoc ' . a:package)
|
||||||
|
if v:shell_error || !len(content)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
|
||||||
|
try
|
||||||
|
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
|
||||||
|
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
|
||||||
|
let candidates =
|
||||||
|
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
|
||||||
|
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
|
||||||
|
return filter(candidates, '!stridx(v:val, a:member)')
|
||||||
|
catch
|
||||||
|
return []
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
||||||
let dirs = []
|
let dirs = []
|
||||||
|
|
||||||
|
let words = split(a:CmdLine, '\s\+', 1)
|
||||||
|
if len(words) > 2
|
||||||
|
" Complete package members
|
||||||
|
return go#complete#PackageMembers(words[1], words[2])
|
||||||
|
endif
|
||||||
|
|
||||||
if executable('go')
|
if executable('go')
|
||||||
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
echo '\'go env GOROOT\' failed'
|
echomsg '''go env GOROOT'' failed'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let goroot = $GOROOT
|
let goroot = $GOROOT
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if len(goroot) != 0 && isdirectory(goroot)
|
if len(goroot) != 0 && isdirectory(goroot)
|
||||||
let dirs += [ goroot ]
|
let dirs += [goroot]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let workspaces = split($GOPATH, ':')
|
let pathsep = ':'
|
||||||
|
if s:goos == 'windows'
|
||||||
|
let pathsep = ';'
|
||||||
|
endif
|
||||||
|
let workspaces = split($GOPATH, pathsep)
|
||||||
if workspaces != []
|
if workspaces != []
|
||||||
let dirs += workspaces
|
let dirs += workspaces
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if len(dirs) == 0
|
if len(dirs) == 0
|
||||||
" should not happen
|
" should not happen
|
||||||
return []
|
return []
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let ret = {}
|
let ret = {}
|
||||||
for dir in dirs
|
for dir in dirs
|
||||||
let root = expand(dir . '/pkg/' . s:goos . '_' . s:goarch)
|
" this may expand to multiple lines
|
||||||
for i in split(globpath(root, a:ArgLead.'*'), "\n")
|
let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n")
|
||||||
if isdirectory(i)
|
call add(root, expand(dir . '/src'))
|
||||||
let i .= '/'
|
for r in root
|
||||||
elseif i !~ '\.a$'
|
for i in split(globpath(r, a:ArgLead.'*'), "\n")
|
||||||
continue
|
if isdirectory(i)
|
||||||
endif
|
let i .= '/'
|
||||||
let i = substitute(substitute(i[len(root)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
elseif i !~ '\.a$'
|
||||||
let ret[i] = i
|
continue
|
||||||
|
endif
|
||||||
|
let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
||||||
|
let ret[i] = i
|
||||||
|
endfor
|
||||||
endfor
|
endfor
|
||||||
endfor
|
endfor
|
||||||
return sort(keys(ret))
|
return sort(keys(ret))
|
||||||
|
|||||||
@@ -7,9 +7,11 @@
|
|||||||
" 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
|
||||||
|
|
||||||
|
let b:html_omni_flavor = 'html5'
|
||||||
|
|
||||||
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
|
||||||
@@ -167,11 +169,11 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
"runtime! autoload/xml/xhtml10s.vim
|
"runtime! autoload/xml/xhtml10s.vim
|
||||||
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
|
||||||
@@ -469,9 +471,9 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
"runtime! autoload/xml/xhtml10s.vim
|
"runtime! autoload/xml/xhtml10s.vim
|
||||||
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
|
||||||
@@ -551,9 +553,9 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
if !exists("b:html_omni")
|
if !exists("b:html_omni")
|
||||||
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)
|
||||||
@@ -658,9 +660,9 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
|||||||
"runtime! autoload/xml/xhtml10s.vim
|
"runtime! autoload/xml/xhtml10s.vim
|
||||||
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 +765,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
|
||||||
|
|||||||
@@ -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', '']})
|
||||||
@@ -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
|
||||||
|
|||||||
61
build
61
build
@@ -1,11 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
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"
|
||||||
|
|
||||||
# Fetches syntax files from given Github repo
|
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
for pack in $1; do
|
for pack in $1; do
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
@@ -25,7 +23,6 @@ extract() {
|
|||||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
printf -- "- [$name](https://github.com/$path) ("
|
printf -- "- [$name](https://github.com/$path) ("
|
||||||
|
|
||||||
# which tree > /dev/null && tree tmp
|
|
||||||
subdirs=""
|
subdirs=""
|
||||||
for subdir in $DIRS; do
|
for subdir in $DIRS; do
|
||||||
if [ -d "$dir/$subdir" ]; then
|
if [ -d "$dir/$subdir" ]; then
|
||||||
@@ -38,70 +35,102 @@ extract() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
printf "${subdirs##, })\n"
|
printf "${subdirs##, })\n"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
for pack in $1; do
|
||||||
|
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||||
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
|
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||||
|
|
||||||
|
if [ -d "$dir/plugin" ]; then
|
||||||
|
printf "Possible error (plugin directory exists): $path\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_dir() {
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
rm -rf tmp
|
concat_ftdetect() {
|
||||||
rm -rf $DIRS
|
cat ftdetect/* | grep -E '^[^"]' > tmp/polyglot.vim
|
||||||
mkdir -p tmp
|
rm -f ftdetect/*
|
||||||
|
mv tmp/polyglot.vim ftdetect/
|
||||||
|
}
|
||||||
|
|
||||||
PACKS="
|
PACKS="
|
||||||
arduino:sudar/vim-arduino-syntax
|
arduino:sudar/vim-arduino-syntax
|
||||||
bundler:tpope/vim-bundler
|
|
||||||
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
|
|
||||||
csv:chrisbra/csv.vim
|
csv:chrisbra/csv.vim
|
||||||
cucumber:tpope/vim-cucumber
|
cucumber:tpope/vim-cucumber
|
||||||
|
dockerfile:honza/dockerfile.vim
|
||||||
elixir:elixir-lang/vim-elixir
|
elixir:elixir-lang/vim-elixir
|
||||||
erlang:jimenezrick/vimerl
|
emberscript:heartsentwined/vim-ember-script
|
||||||
|
erlang:oscarh/vimerl
|
||||||
git:tpope/vim-git
|
git:tpope/vim-git
|
||||||
go:jnwhiteh/vim-golang
|
go:jnwhiteh/vim-golang
|
||||||
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:jcf/vim-latex
|
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
|
||||||
rspec:skwp/vim-rspec
|
r-lang:vim-scripts/R.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
|
||||||
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 $DIRS
|
||||||
|
mkdir tmp
|
||||||
|
|
||||||
printf "Downloading packs..."
|
printf "Downloading packs..."
|
||||||
download "$PACKS"
|
download "$PACKS"
|
||||||
extract "$PACKS"
|
extract "$PACKS"
|
||||||
|
concat_ftdetect
|
||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
" Vim compiler file
|
|
||||||
|
|
||||||
if exists("current_compiler")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let current_compiler = "bundler"
|
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
CompilerSet makeprg=bundle
|
|
||||||
|
|
||||||
CompilerSet errorformat=
|
|
||||||
\%+E%f:%l:\ parse\ error,
|
|
||||||
\%W%f:%l:\ warning:\ %m,
|
|
||||||
\%E%f:%l:in\ %*[^:]:\ %m,
|
|
||||||
\%E%f:%l:\ %m,
|
|
||||||
\%-C%\tfrom\ %f:%l:in\ %.%#,
|
|
||||||
\%-Z%\tfrom\ %f:%l,
|
|
||||||
\%-Z%p^,
|
|
||||||
\%-G%.%#
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
" vim: sw=2:
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -1,111 +1,80 @@
|
|||||||
" Vim compiler file
|
" Erlang compiler file
|
||||||
" Language: Erlang
|
" Language: Erlang
|
||||||
" Author: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
||||||
" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
" URL: http://ktototaki.info
|
||||||
" License: Vim license
|
|
||||||
" Version: 2013/03/06
|
|
||||||
|
|
||||||
if exists("current_compiler") || v:version < 703
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
else
|
|
||||||
let current_compiler = "erlang"
|
|
||||||
endif
|
endif
|
||||||
|
let current_compiler = "erlang"
|
||||||
let b:error_list = {}
|
|
||||||
let b:is_showing_msg = 0
|
|
||||||
let b:next_sign_id = 1
|
|
||||||
|
|
||||||
if exists(":CompilerSet") != 2
|
if exists(":CompilerSet") != 2
|
||||||
command -nargs=* CompilerSet setlocal <args>
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CompilerSet makeprg=make
|
if !exists('g:erlangCheckFile')
|
||||||
CompilerSet errorformat=%f:%l:\ %tarning:\ %m,%f:%l:\ %m
|
let g:erlangCheckFile = "~/.vim/compiler/erlang_check_file.erl"
|
||||||
|
|
||||||
" Only define functions and script scope variables once
|
|
||||||
if exists("*s:ShowErrors")
|
|
||||||
finish
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists("g:erlang_show_errors")
|
if !exists('g:erlangHighlightErrors')
|
||||||
let g:erlang_show_errors = 1
|
let g:erlangHighlightErrors = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:erlang_check_file = expand("<sfile>:p:h") . "/erlang_check.erl"
|
let b:error_list = {}
|
||||||
let s:autocmds_defined = 0
|
let b:is_showing_msg = 0
|
||||||
|
|
||||||
sign define ErlangError text=>> texthl=Error
|
function! HighlightErlangErrors()
|
||||||
sign define ErlangWarning text=>> texthl=Todo
|
if match(getline(1), "#!.*escript") != -1
|
||||||
|
setlocal makeprg=escript\ -s\ %
|
||||||
command ErlangDisableShowErrors silent call s:DisableShowErrors()
|
else
|
||||||
command ErlangEnableShowErrors silent call s:EnableShowErrors()
|
execute "setlocal makeprg=" . g:erlangCheckFile . "\\ \%"
|
||||||
|
endif
|
||||||
function s:ShowErrors()
|
silent make!
|
||||||
setlocal shellpipe=>
|
call s:clear_matches()
|
||||||
if match(getline(1), "#!.*escript") != -1
|
for error in getqflist()
|
||||||
setlocal makeprg=escript\ -s\ %
|
let item = {}
|
||||||
else
|
let item['lnum'] = error.lnum
|
||||||
execute "setlocal makeprg=" . s:erlang_check_file . "\\ \%"
|
let item['msg'] = error.text
|
||||||
endif
|
let b:error_list[error.lnum] = item
|
||||||
silent make!
|
call matchadd('SpellBad', "\\%" . error.lnum . "l")
|
||||||
for error in getqflist()
|
endfor
|
||||||
let item = {}
|
if len(getqflist())
|
||||||
let item["lnum"] = error.lnum
|
redraw!
|
||||||
let item["text"] = error.text
|
endif
|
||||||
let b:error_list[error.lnum] = item
|
call s:show_msg()
|
||||||
let type = error.type == "W" ? "ErlangWarning" : "ErlangError"
|
setlocal makeprg=erlc\ %
|
||||||
execute "sign place" b:next_sign_id "line=" . item.lnum "name=" . type "file=" . expand("%:p")
|
|
||||||
let b:next_sign_id += 1
|
|
||||||
endfor
|
|
||||||
setlocal shellpipe&
|
|
||||||
setlocal makeprg=make
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:ShowErrorMsg()
|
function! s:show_msg()
|
||||||
let pos = getpos(".")
|
let pos = getpos(".")
|
||||||
if has_key(b:error_list, pos[1])
|
if has_key(b:error_list, pos[1])
|
||||||
let item = get(b:error_list, pos[1])
|
let item = get(b:error_list, pos[1])
|
||||||
echo item.text
|
echo item.msg
|
||||||
let b:is_showing_msg = 1
|
let b:is_showing_msg = 1
|
||||||
else
|
else
|
||||||
if b:is_showing_msg
|
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
||||||
echo
|
echo
|
||||||
let b:is_showing_msg = 0
|
let b:is_showing_msg = 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endf
|
endf
|
||||||
|
|
||||||
function s:ClearErrors()
|
function! s:clear_matches()
|
||||||
sign unplace *
|
call clearmatches()
|
||||||
let b:error_list = {}
|
let b:error_list = {}
|
||||||
let b:next_sign_id = 1
|
if exists("b:is_showing_msg") && b:is_showing_msg == 1
|
||||||
if b:is_showing_msg
|
echo
|
||||||
echo
|
let b:is_showing_msg = 0
|
||||||
let b:is_showing_msg = 0
|
endif
|
||||||
endif
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:EnableShowErrors()
|
CompilerSet makeprg=erlc\ %
|
||||||
if !s:autocmds_defined
|
CompilerSet errorformat=%f:%l:\ %tarning:\ %m,%E%f:%l:\ %m
|
||||||
augroup vimerl
|
|
||||||
autocmd!
|
|
||||||
autocmd BufWritePre *.erl call s:ClearErrors()
|
|
||||||
autocmd BufWritePost *.erl call s:ShowErrors()
|
|
||||||
autocmd CursorHold *.erl call s:ShowErrorMsg()
|
|
||||||
autocmd CursorMoved *.erl call s:ShowErrorMsg()
|
|
||||||
augroup END
|
|
||||||
let s:autocmds_defined = 1
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:DisableShowErrors()
|
if g:erlangHighlightErrors
|
||||||
sign unplace *
|
autocmd BufLeave *.erl call s:clear_matches()
|
||||||
augroup vimerl
|
autocmd BufEnter *.erl call s:clear_matches()
|
||||||
autocmd!
|
autocmd BufWritePost *.erl call HighlightErlangErrors()
|
||||||
augroup END
|
autocmd CursorHold *.erl call s:show_msg()
|
||||||
let s:autocmds_defined = 0
|
autocmd CursorMoved *.erl call s:show_msg()
|
||||||
endfunction
|
|
||||||
|
|
||||||
if g:erlang_show_errors
|
|
||||||
call s:EnableShowErrors()
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
30
compiler/go.vim
Normal file
30
compiler/go.vim
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
" Copyright 2013 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.
|
||||||
|
"
|
||||||
|
" compiler/go.vim: Vim compiler file for Go.
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "go"
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
CompilerSet makeprg=go\ build
|
||||||
|
CompilerSet errorformat=
|
||||||
|
\%-G#\ %.%#,
|
||||||
|
\%A%f:%l:%c:\ %m,
|
||||||
|
\%A%f:%l:\ %m,
|
||||||
|
\%C%*\\s%m,
|
||||||
|
\%-G%.%#
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim:ts=4:sw=4:et
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
298
compiler/tex.vim
298
compiler/tex.vim
@@ -1,298 +0,0 @@
|
|||||||
" File: tex.vim
|
|
||||||
" Type: compiler plugin for LaTeX
|
|
||||||
" Original Author: Artem Chuprina <ran@ran.pp.ru>
|
|
||||||
" Customization: Srinath Avadhanula <srinath@fastmail.fm>
|
|
||||||
" Description: {{{
|
|
||||||
" This file sets the 'makeprg' and 'errorformat' options for the LaTeX
|
|
||||||
" compiler. It is customizable to optionally ignore certain warnings and
|
|
||||||
" provides the ability to set a dynamic 'ignore-warning' level.
|
|
||||||
"
|
|
||||||
" By default it is set up in a 'non-verbose', 'ignore-common-warnings' mode,
|
|
||||||
" which means that irrelevant lines from the compilers output will be
|
|
||||||
" ignored and also some very common warnings are ignored.
|
|
||||||
"
|
|
||||||
" Depending on the 'ignore-level', the following kinds of messages are
|
|
||||||
" ignored. An ignore level of 3 for instance means that messages 1-3 will be
|
|
||||||
" ignored. By default, the ignore level is set to 4.
|
|
||||||
"
|
|
||||||
" 1. LaTeX Warning: Specifier 'h' changed to 't'.
|
|
||||||
" This errors occurs when TeX is not able to correctly place a floating
|
|
||||||
" object at a specified location, because of which it defaulted to the
|
|
||||||
" top of the page.
|
|
||||||
" 2. LaTeX Warning: Underfull box ...
|
|
||||||
" 3. LaTeX Warning: Overfull box ...
|
|
||||||
" both these warnings (very common) are due to \hbox settings not being
|
|
||||||
" satisfied nicely.
|
|
||||||
" 4. LaTeX Warning: You have requested ...,
|
|
||||||
" This warning occurs in slitex when using the xypic package.
|
|
||||||
" 5. Missing number error:
|
|
||||||
" Usually, when the name of an included eps file is spelled incorrectly,
|
|
||||||
" then the \bb-error message is accompanied by a bunch of "missing
|
|
||||||
" number, treated as zero" error messages. This level ignores these
|
|
||||||
" warnings.
|
|
||||||
" NOTE: number 5 is actually a latex error, not a warning!
|
|
||||||
"
|
|
||||||
" Use
|
|
||||||
" TCLevel <level>
|
|
||||||
" where level is a number to set the ignore level dynamically.
|
|
||||||
"
|
|
||||||
" When TCLevel is called with the unquoted string strict
|
|
||||||
" TClevel strict
|
|
||||||
" then the 'efm' switches to a 'verbose', 'no-lines-ignored' mode which is
|
|
||||||
" useful when you want to make final checks of your document and want to be
|
|
||||||
" careful not to let things slip by.
|
|
||||||
"
|
|
||||||
" TIP: MikTeX has a bug where it sometimes erroneously splits a line number
|
|
||||||
" into multiple lines. i.e, if the warning is on line 1234. the compiler
|
|
||||||
" output is:
|
|
||||||
" LaTeX Warning: ... on input line 123
|
|
||||||
" 4.
|
|
||||||
" In this case, vim will wrongly interpret the line-number as 123 instead
|
|
||||||
" of 1234. If you have cygwin, a simple remedy around this is to first
|
|
||||||
" copy the file vimlatex (provided) into your $PATH, make sure its
|
|
||||||
" executable and then set the variable g:tex_flavor to vimlatex in your
|
|
||||||
" ~/.vimrc (i.e putting let "g:tex_flavor = 'vimlatex'" in your .vimrc).
|
|
||||||
" This problem occurs rarely enough that its not a botheration for most
|
|
||||||
" people.
|
|
||||||
"
|
|
||||||
" TODO:
|
|
||||||
" 1. menu items for dynamically selecting a ignore warning level.
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" avoid reinclusion for the same buffer. keep it buffer local so it can be
|
|
||||||
" externally reset in case of emergency re-sourcing.
|
|
||||||
if exists('b:doneTexCompiler') && !exists('b:forceRedoTexCompiler')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let b:doneTexCompiler = 1
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Customization of 'efm': {{{
|
|
||||||
" This section contains the customization variables which the user can set.
|
|
||||||
" g:Tex_IgnoredWarnings: This variable contains a ¡ seperated list of
|
|
||||||
" patterns which will be ignored in the TeX compiler's output. Use this
|
|
||||||
" carefully, otherwise you might end up losing valuable information.
|
|
||||||
if !exists('g:Tex_IgnoredWarnings')
|
|
||||||
let g:Tex_IgnoredWarnings =
|
|
||||||
\'Underfull'."\n".
|
|
||||||
\'Overfull'."\n".
|
|
||||||
\'specifier changed to'."\n".
|
|
||||||
\'You have requested'."\n".
|
|
||||||
\'Missing number, treated as zero.'."\n".
|
|
||||||
\'There were undefined references'."\n".
|
|
||||||
\'Citation %.%# undefined'
|
|
||||||
endif
|
|
||||||
" This is the number of warnings in the g:Tex_IgnoredWarnings string which
|
|
||||||
" will be ignored.
|
|
||||||
if !exists('g:Tex_IgnoreLevel')
|
|
||||||
let g:Tex_IgnoreLevel = 7
|
|
||||||
endif
|
|
||||||
" There will be lots of stuff in a typical compiler output which will
|
|
||||||
" completely fall through the 'efm' parsing. This options sets whether or not
|
|
||||||
" you will be shown those lines.
|
|
||||||
if !exists('g:Tex_IgnoreUnmatched')
|
|
||||||
let g:Tex_IgnoreUnmatched = 1
|
|
||||||
endif
|
|
||||||
" With all this customization, there is a slight risk that you might be
|
|
||||||
" ignoring valid warnings or errors. Therefore before getting the final copy
|
|
||||||
" of your work, you might want to reset the 'efm' with this variable set to 1.
|
|
||||||
" With that value, all the lines from the compiler are shown irrespective of
|
|
||||||
" whether they match the error or warning patterns.
|
|
||||||
" NOTE: An easier way of resetting the 'efm' to show everything is to do
|
|
||||||
" TCLevel strict
|
|
||||||
if !exists('g:Tex_ShowallLines')
|
|
||||||
let g:Tex_ShowallLines = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" ==============================================================================
|
|
||||||
" Customization of 'makeprg': {{{
|
|
||||||
|
|
||||||
" There are several alternate ways in which 'makeprg' is set up.
|
|
||||||
"
|
|
||||||
" Case 1
|
|
||||||
" ------
|
|
||||||
" The first is when this file is a part of latex-suite. In this case, a
|
|
||||||
" variable called g:Tex_DefaultTargetFormat exists, which gives the default
|
|
||||||
" format .tex files should be compiled into. In this case, we use the TTarget
|
|
||||||
" command provided by latex-suite.
|
|
||||||
"
|
|
||||||
" Case 2
|
|
||||||
" ------
|
|
||||||
" The user is using this file without latex-suite AND he wants to directly
|
|
||||||
" specify the complete 'makeprg'. Then he should set the g:Tex_CompileRule_dvi
|
|
||||||
" variable. This is a string which should be directly be able to be cast into
|
|
||||||
" &makeprg. An example of one such string is:
|
|
||||||
"
|
|
||||||
" g:Tex_CompileRule_dvi = 'pdflatex \\nonstopmode \\input\{$*\}'
|
|
||||||
"
|
|
||||||
" NOTE: You will need to escape back-slashes, {'s etc yourself if you are
|
|
||||||
" using this file independently of latex-suite.
|
|
||||||
" TODO: Should we also have a check for backslash escaping here based on
|
|
||||||
" platform?
|
|
||||||
"
|
|
||||||
" Case 3
|
|
||||||
" ------
|
|
||||||
" The use is using this file without latex-suite and he doesnt want any
|
|
||||||
" customization. In this case, this file makes some intelligent guesses based
|
|
||||||
" on the platform. If he doesn't want to specify the complete 'makeprg' but
|
|
||||||
" only the name of the compiler program (for example 'pdflatex' or 'latex'),
|
|
||||||
" then he sets b:tex_flavor or g:tex_flavor.
|
|
||||||
|
|
||||||
if exists('g:Tex_DefaultTargetFormat')
|
|
||||||
exec 'TTarget '.g:Tex_DefaultTargetFormat
|
|
||||||
elseif exists('g:Tex_CompileRule_dvi')
|
|
||||||
let &l:makeprg = g:Tex_CompileRule_dvi
|
|
||||||
else
|
|
||||||
" If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
|
|
||||||
" otherwize the same for global variable with same name, else it will be LaTeX
|
|
||||||
if exists("b:tex_flavor")
|
|
||||||
let current_compiler = b:tex_flavor
|
|
||||||
elseif exists("g:tex_flavor")
|
|
||||||
let current_compiler = g:tex_flavor
|
|
||||||
else
|
|
||||||
let current_compiler = "latex"
|
|
||||||
end
|
|
||||||
if has('win32')
|
|
||||||
let escChars = ''
|
|
||||||
else
|
|
||||||
let escChars = '{}\'
|
|
||||||
endif
|
|
||||||
" Furthermore, if 'win32' is detected, then we want to set the arguments up so
|
|
||||||
" that miktex can handle it.
|
|
||||||
if has('win32')
|
|
||||||
let options = '--src-specials'
|
|
||||||
else
|
|
||||||
let options = ''
|
|
||||||
endif
|
|
||||||
let &l:makeprg = current_compiler . ' ' . options .
|
|
||||||
\ escape(' \nonstopmode \input{$*}', escChars)
|
|
||||||
endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" ==============================================================================
|
|
||||||
" Functions for setting up a customized 'efm' {{{
|
|
||||||
|
|
||||||
" IgnoreWarnings: parses g:Tex_IgnoredWarnings for message customization {{{
|
|
||||||
" Description:
|
|
||||||
function! <SID>IgnoreWarnings()
|
|
||||||
let i = 1
|
|
||||||
while s:Strntok(g:Tex_IgnoredWarnings, "\n", i) != '' &&
|
|
||||||
\ i <= g:Tex_IgnoreLevel
|
|
||||||
let warningPat = s:Strntok(g:Tex_IgnoredWarnings, "\n", i)
|
|
||||||
let warningPat = escape(substitute(warningPat, '[\,]', '%\\\\&', 'g'), ' ')
|
|
||||||
exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" SetLatexEfm: sets the 'efm' for the latex compiler {{{
|
|
||||||
" Description:
|
|
||||||
function! <SID>SetLatexEfm()
|
|
||||||
|
|
||||||
let pm = ( g:Tex_ShowallLines == 1 ? '+' : '-' )
|
|
||||||
|
|
||||||
setlocal efm=
|
|
||||||
" remove default error formats that cause issues with revtex, where they
|
|
||||||
" match version messages
|
|
||||||
" Reference: http://bugs.debian.org/582100
|
|
||||||
setlocal efm-=%f:%l:%m
|
|
||||||
setlocal efm-=%f:%l:%c:%m
|
|
||||||
|
|
||||||
if !g:Tex_ShowallLines
|
|
||||||
call s:IgnoreWarnings()
|
|
||||||
endif
|
|
||||||
|
|
||||||
setlocal efm+=%E!\ LaTeX\ %trror:\ %m
|
|
||||||
setlocal efm+=%E!\ %m
|
|
||||||
setlocal efm+=%E%f:%l:\ %m
|
|
||||||
|
|
||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
|
||||||
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
|
||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
|
||||||
|
|
||||||
exec 'setlocal efm+=%'.pm.'Cl.%l\ %m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'Cl.%l\ '
|
|
||||||
exec 'setlocal efm+=%'.pm.'C\ \ %m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C%.%#-%.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C%.%#[]%.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C[]%.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C%.%#%[{}\\]%.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C<%.%#>%m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'C\ \ %m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'GSee\ the\ LaTeX%m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'GType\ \ H\ <return>%m'
|
|
||||||
exec 'setlocal efm+=%'.pm.'G\ ...%.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'G%.%#\ (C)\ %.%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'G(see\ the\ transcript%.%#)'
|
|
||||||
exec 'setlocal efm+=%'.pm.'G\\s%#'
|
|
||||||
exec 'setlocal efm+=%'.pm.'O(%*[^()])%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'P(%f%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'P\ %\\=(%f%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'P%*[^()](%f%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'P(%f%*[^()]'
|
|
||||||
exec 'setlocal efm+=%'.pm.'P[%\\d%[^()]%#(%f%r'
|
|
||||||
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
|
|
||||||
setlocal efm+=%-P%*[^()]
|
|
||||||
endif
|
|
||||||
exec 'setlocal efm+=%'.pm.'Q)%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'Q%*[^()])%r'
|
|
||||||
exec 'setlocal efm+=%'.pm.'Q[%\\d%*[^()])%r'
|
|
||||||
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
|
|
||||||
setlocal efm+=%-Q%*[^()]
|
|
||||||
endif
|
|
||||||
if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
|
|
||||||
setlocal efm+=%-G%.%#
|
|
||||||
endif
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Strntok: extract the n^th token from a list {{{
|
|
||||||
" example: Strntok('1,23,3', ',', 2) = 23
|
|
||||||
fun! <SID>Strntok(s, tok, n)
|
|
||||||
return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
|
|
||||||
endfun
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" SetTexCompilerLevel: sets the "level" for the latex compiler {{{
|
|
||||||
function! <SID>SetTexCompilerLevel(...)
|
|
||||||
if a:0 > 0
|
|
||||||
let level = a:1
|
|
||||||
else
|
|
||||||
call Tex_ResetIncrementNumber(0)
|
|
||||||
echo substitute(g:Tex_IgnoredWarnings,
|
|
||||||
\ '^\|\n\zs\S', '\=Tex_IncrementNumber(1)." ".submatch(0)', 'g')
|
|
||||||
let level = input("\nChoose an ignore level: ")
|
|
||||||
if level == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if level == 'strict'
|
|
||||||
let g:Tex_ShowallLines = 1
|
|
||||||
elseif level =~ '^\d\+$'
|
|
||||||
let g:Tex_ShowallLines = 0
|
|
||||||
let g:Tex_IgnoreLevel = level
|
|
||||||
else
|
|
||||||
echoerr "SetTexCompilerLevel: Unkwown option [".level."]"
|
|
||||||
end
|
|
||||||
call s:SetLatexEfm()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
com! -nargs=? TCLevel :call <SID>SetTexCompilerLevel(<f-args>)
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" ==============================================================================
|
|
||||||
|
|
||||||
call s:SetLatexEfm()
|
|
||||||
|
|
||||||
if !exists('*Tex_Debug')
|
|
||||||
function! Tex_Debug(...)
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_Debug("compiler/tex.vim: sourcing this file", "comp")
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
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 +0,0 @@
|
|||||||
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
" Language: CoffeeScript
|
|
||||||
" Maintainer: Mick Koch <kchmck@gmail.com>
|
|
||||||
" URL: http://github.com/kchmck/vim-coffee-script
|
|
||||||
" License: WTFPL
|
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
|
||||||
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
|
||||||
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
|
||||||
autocmd BufNewFile,BufRead *._coffee set filetype=coffee
|
|
||||||
|
|
||||||
function! s:DetectCoffee()
|
|
||||||
if getline(1) =~ '^#!.*\<coffee\>'
|
|
||||||
set filetype=coffee
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
" Install Filetype detection for CSV files
|
|
||||||
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
" Cucumber
|
|
||||||
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
|
||||||
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
" Git
|
|
||||||
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit
|
|
||||||
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules 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-rebase-todo set ft=gitrebase
|
|
||||||
autocmd BufNewFile,BufRead .msg.[0-9]*
|
|
||||||
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
|
||||||
\ set ft=gitsendemail |
|
|
||||||
\ endif
|
|
||||||
autocmd BufNewFile,BufRead *.git/**
|
|
||||||
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
|
||||||
\ set ft=git |
|
|
||||||
\ endif
|
|
||||||
|
|
||||||
" This logic really belongs in scripts.vim
|
|
||||||
autocmd BufNewFile,BufRead,StdinReadPost *
|
|
||||||
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
|
||||||
\ set ft=git |
|
|
||||||
\ endif
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
" We take care to preserve the user's fileencodings and fileformats,
|
|
||||||
" because those settings are global (not buffer local), yet we want
|
|
||||||
" to override them for loading Go files, which are defined to be UTF-8.
|
|
||||||
let s:current_fileformats = ''
|
|
||||||
let s:current_fileencodings = ''
|
|
||||||
|
|
||||||
" define fileencodings to open as utf-8 encoding even if it's ascii.
|
|
||||||
function! s:gofiletype_pre()
|
|
||||||
let s:current_fileformats = &g:fileformats
|
|
||||||
let s:current_fileencodings = &g:fileencodings
|
|
||||||
set fileencodings=utf-8 fileformats=unix
|
|
||||||
setlocal filetype=go
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" restore fileencodings as others
|
|
||||||
function! s:gofiletype_post()
|
|
||||||
let &g:fileformats = s:current_fileformats
|
|
||||||
let &g:fileencodings = s:current_fileencodings
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
|
||||||
au BufRead *.go call s:gofiletype_pre()
|
|
||||||
au BufReadPost *.go call s:gofiletype_post()
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
|
|
||||||
autocmd BufNewFile,BufRead *.sass setf sass
|
|
||||||
autocmd BufNewFile,BufRead *.scss setf scss
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has("autocmd")
|
|
||||||
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
|
|
||||||
endif
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
" Jade
|
|
||||||
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
au BufNewFile,BufRead *.js setf javascript
|
|
||||||
au BufNewFile,BufRead *.jsm setf javascript
|
|
||||||
au BufNewFile,BufRead *.json setf javascript
|
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
|
||||||
|
|
||||||
fun! s:SelectJavascript()
|
|
||||||
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
|
||||||
set ft=javascript
|
|
||||||
endif
|
|
||||||
endfun
|
|
||||||
au BufNewFile,BufRead * call s:SelectJavascript()
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.json set filetype=json
|
|
||||||
|
|
||||||
augroup json_autocmd
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType json setlocal autoindent
|
|
||||||
autocmd FileType json setlocal formatoptions=tcq2l
|
|
||||||
autocmd FileType json setlocal foldmethod=syntax
|
|
||||||
augroup END
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
au BufNewFile,BufRead *.ejs set filetype=jst
|
|
||||||
au BufNewFile,BufRead *.jst set filetype=jst
|
|
||||||
au BufNewFile,BufRead *.hamljs set filetype=jst
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.less setf less
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
|
||||||
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
|
||||||
\ set ft=markdown |
|
|
||||||
\ else |
|
|
||||||
\ setf markdown |
|
|
||||||
\ endif
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
|
||||||
156
ftdetect/polyglot.vim
Normal file
156
ftdetect/polyglot.vim
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
||||||
|
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
|
||||||
|
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
||||||
|
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
||||||
|
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
||||||
|
autocmd BufNewFile,BufRead *._coffee set filetype=coffee
|
||||||
|
function! s:DetectCoffee()
|
||||||
|
if getline(1) =~ '^#!.*\<coffee\>'
|
||||||
|
set filetype=coffee
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
autocmd BufNewFile,BufRead * call s:DetectCoffee()
|
||||||
|
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
|
||||||
|
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
||||||
|
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
|
||||||
|
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
||||||
|
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
|
||||||
|
autocmd BufNewFile,BufRead *.em set filetype=ember-script
|
||||||
|
autocmd FileType ember-script 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 */.config/git/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 .gitsendemail.* set ft=gitsendemail
|
||||||
|
autocmd BufNewFile,BufRead *.git/**
|
||||||
|
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
||||||
|
\ set ft=git |
|
||||||
|
\ endif
|
||||||
|
autocmd BufNewFile,BufRead,StdinReadPost *
|
||||||
|
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
||||||
|
\ set ft=git |
|
||||||
|
\ endif
|
||||||
|
let s:current_fileformats = ''
|
||||||
|
let s:current_fileencodings = ''
|
||||||
|
function! s:gofiletype_pre()
|
||||||
|
let s:current_fileformats = &g:fileformats
|
||||||
|
let s:current_fileencodings = &g:fileencodings
|
||||||
|
set fileencodings=utf-8 fileformats=unix
|
||||||
|
setlocal filetype=go
|
||||||
|
endfunction
|
||||||
|
function! s:gofiletype_post()
|
||||||
|
let &g:fileformats = s:current_fileformats
|
||||||
|
let &g:fileencodings = s:current_fileencodings
|
||||||
|
endfunction
|
||||||
|
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
||||||
|
au BufRead *.go call s:gofiletype_pre()
|
||||||
|
au BufReadPost *.go call s:gofiletype_post()
|
||||||
|
autocmd BufNewFile,BufRead *.haml,*.hamlbars,*.hamlc setf haml
|
||||||
|
autocmd BufNewFile,BufRead *.sass setf sass
|
||||||
|
autocmd BufNewFile,BufRead *.scss setf scss
|
||||||
|
autocmd BufNewFile,BufRead *.hx setf haxe
|
||||||
|
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 *.jsm setf javascript
|
||||||
|
au BufNewFile,BufRead Jakefile setf javascript
|
||||||
|
fun! s:SelectJavascript()
|
||||||
|
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
||||||
|
set ft=javascript
|
||||||
|
endif
|
||||||
|
endfun
|
||||||
|
au BufNewFile,BufRead * call s:SelectJavascript()
|
||||||
|
autocmd BufNewFile,BufRead *.json set filetype=json
|
||||||
|
augroup json_autocmd
|
||||||
|
autocmd!
|
||||||
|
autocmd FileType json setlocal autoindent
|
||||||
|
autocmd FileType json setlocal formatoptions=tcq2l
|
||||||
|
autocmd FileType json setlocal foldmethod=syntax
|
||||||
|
augroup END
|
||||||
|
au BufNewFile,BufRead *.ejs set filetype=jst
|
||||||
|
au BufNewFile,BufRead *.jst set filetype=jst
|
||||||
|
au BufNewFile,BufRead *.hamljs set filetype=jst
|
||||||
|
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
|
||||||
|
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
||||||
|
\ set ft=markdown |
|
||||||
|
\ else |
|
||||||
|
\ setf markdown |
|
||||||
|
\ 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 *.cl set filetype=opencl
|
||||||
|
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
||||||
|
au! BufRead,BufNewFile *.pp setfiletype puppet
|
||||||
|
function! s:setf(filetype) abort
|
||||||
|
if &filetype !=# a:filetype
|
||||||
|
let &filetype = a:filetype
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Capfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
||||||
|
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
||||||
|
au BufRead,BufNewFile *.rs set filetype=rust
|
||||||
|
au BufRead,BufNewFile *.sbt set filetype=sbt
|
||||||
|
fun! s:DetectScala()
|
||||||
|
if getline(1) == '#!/usr/bin/env scala'
|
||||||
|
set filetype=scala
|
||||||
|
endif
|
||||||
|
endfun
|
||||||
|
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
||||||
|
au BufRead,BufNewFile * call s:DetectScala()
|
||||||
|
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
||||||
|
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
||||||
|
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
||||||
|
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
|
||||||
|
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 *.html.twig set filetype=html.twig
|
||||||
|
autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript
|
||||||
@@ -1 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
" detect puppet filetype
|
|
||||||
au BufRead,BufNewFile *.pp set filetype=puppet
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
" Ruby
|
|
||||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
|
|
||||||
|
|
||||||
" Ruby on Rails
|
|
||||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
|
|
||||||
|
|
||||||
" Rakefile
|
|
||||||
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
|
|
||||||
|
|
||||||
" Rantfile
|
|
||||||
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
|
|
||||||
|
|
||||||
" IRB config
|
|
||||||
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
|
|
||||||
|
|
||||||
" Pry config
|
|
||||||
au BufNewFile,BufRead .pryrc set filetype=ruby
|
|
||||||
|
|
||||||
" Rackup
|
|
||||||
au BufNewFile,BufRead *.ru set filetype=ruby
|
|
||||||
|
|
||||||
" Capistrano
|
|
||||||
au BufNewFile,BufRead Capfile set filetype=ruby
|
|
||||||
|
|
||||||
" Bundler
|
|
||||||
au BufNewFile,BufRead Gemfile set filetype=ruby
|
|
||||||
|
|
||||||
" Guard
|
|
||||||
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
|
|
||||||
|
|
||||||
" Chef
|
|
||||||
au BufNewFile,BufRead Cheffile set filetype=ruby
|
|
||||||
au BufNewFile,BufRead Berksfile set filetype=ruby
|
|
||||||
|
|
||||||
" Vagrant
|
|
||||||
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
|
|
||||||
|
|
||||||
" Autotest
|
|
||||||
au BufNewFile,BufRead .autotest set filetype=ruby
|
|
||||||
|
|
||||||
" eRuby
|
|
||||||
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
|
|
||||||
|
|
||||||
" Thor
|
|
||||||
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
|
|
||||||
|
|
||||||
" Rabl
|
|
||||||
au BufNewFile,BufRead *.rabl set filetype=ruby
|
|
||||||
|
|
||||||
" Jbuilder
|
|
||||||
au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
|
||||||
|
|
||||||
" Puppet librarian
|
|
||||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
|
||||||
"
|
|
||||||
" Buildr Buildfile
|
|
||||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
|
||||||
|
|
||||||
" Appraisal
|
|
||||||
au BufNewFile,BufRead Appraisals set filetype=ruby
|
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
" Vim detect file
|
|
||||||
" Language: sbt
|
|
||||||
" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
|
|
||||||
" Last Change: 2012 Jan 19
|
|
||||||
|
|
||||||
au BufRead,BufNewFile *.sbt set filetype=sbt
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fun! s:DetectScala()
|
|
||||||
if getline(1) == '#!/usr/bin/env scala'
|
|
||||||
set filetype=scala
|
|
||||||
endif
|
|
||||||
endfun
|
|
||||||
|
|
||||||
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
|
||||||
au BufRead,BufNewFile * call s:DetectScala()
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead *.slim setf slim
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
" Stylus
|
|
||||||
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
|
||||||
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
" textile.vim
|
|
||||||
"
|
|
||||||
" Tim Harper (tim.theenchanter.com)
|
|
||||||
|
|
||||||
" Force filetype to be textile even if already set
|
|
||||||
" This will override the system ftplugin/changelog
|
|
||||||
" set on some distros
|
|
||||||
au BufRead,BufNewFile *.textile set filetype=textile
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
" Twig
|
|
||||||
autocmd BufNewFile,BufRead *.twig set filetype=twig
|
|
||||||
|
|
||||||
" HTML Twig
|
|
||||||
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
" File: bib_latexSuite.vim
|
|
||||||
" Author: Srinath Avadhanula
|
|
||||||
" License: Vim Charityware License
|
|
||||||
" Description:
|
|
||||||
" This file sources the bibtex.vim file distributed as part of latex-suite.
|
|
||||||
" That file sets up 3 maps BBB, BAS, and BBA which are easy wasy to type in
|
|
||||||
" bibliographic entries.
|
|
||||||
"
|
|
||||||
|
|
||||||
" source main.vim because we need a few functions from it.
|
|
||||||
runtime ftplugin/latex-suite/main.vim
|
|
||||||
" Disable smart-quotes because we need to enter real quotes in bib files.
|
|
||||||
runtime ftplugin/latex-suite/bibtex.vim
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
|
|
||||||
@@ -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
|
||||||
|
|||||||
307
ftplugin/csv.vim
307
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
|
||||||
@@ -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
|
||||||
@@ -795,16 +823,13 @@ fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
|||||||
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
|
||||||
@@ -1043,13 +1088,19 @@ fu! <sid>Sort(bang, line1, line2, colnr) range "{{{3
|
|||||||
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, '', '')
|
||||||
@@ -1574,10 +1630,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 +1644,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 +1655,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 +1682,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 +1727,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 +1816,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 +1878,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 +1911,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 +1937,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 +2378,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 +2467,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 +2506,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,17 @@ 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>
|
|
||||||
nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W>] :<C-U>exe <SID>jump('split',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> <C-W><C-]> :<C-U>exe <SID>jump('split',v:count)<CR>
|
|
||||||
nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR>
|
||||||
nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR>
|
nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',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>
|
||||||
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 +140,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:
|
||||||
|
|||||||
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
|
||||||
@@ -1,85 +1,151 @@
|
|||||||
" Vim ftplugin file
|
" Vim ftplugin file
|
||||||
" Language: Erlang
|
" Language: Erlang
|
||||||
" Author: Oscar Hellström <oscar@oscarh.net>
|
" Maintainer: Oscar Hellström <oscar@oscarh.net>
|
||||||
" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
" URL: http://personal.oscarh.net
|
||||||
" Eduardo Lopez (http://github.com/tapichu)
|
" Contributor: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
||||||
" License: Vim license
|
" Version: 2010-09-03
|
||||||
" Version: 2012/11/25
|
" ------------------------------------------------------------------------------
|
||||||
|
" Usage:
|
||||||
if exists('b:did_ftplugin')
|
"
|
||||||
|
" To enable folding put in your vimrc:
|
||||||
|
" set foldenable
|
||||||
|
"
|
||||||
|
" Folding will make only one fold for a complete function, even though it has
|
||||||
|
" more than one function head and body.
|
||||||
|
"
|
||||||
|
" To change this behaviour put in your vimrc file:
|
||||||
|
" let g:erlangFoldSplitFunction=1
|
||||||
|
"
|
||||||
|
" ------------------------------------------------------------------------------
|
||||||
|
" Plugin init
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
finish
|
finish
|
||||||
else
|
|
||||||
let b:did_ftplugin = 1
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists('s:did_function_definitions')
|
" Don't load any other
|
||||||
|
let b:did_ftplugin=1
|
||||||
|
|
||||||
|
if exists('s:doneFunctionDefinitions')
|
||||||
call s:SetErlangOptions()
|
call s:SetErlangOptions()
|
||||||
finish
|
finish
|
||||||
else
|
|
||||||
let s:did_function_definitions = 1
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('g:erlang_keywordprg')
|
let s:doneFunctionDefinitions=1
|
||||||
let g:erlang_keywordprg = 'erl -man'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:erlang_folding')
|
|
||||||
let g:erlang_folding = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:erlang_fun_begin = '^\(\a\w*\|[''][^'']*['']\)(.*$'
|
|
||||||
let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
|
|
||||||
|
|
||||||
|
" Local settings
|
||||||
function s:SetErlangOptions()
|
function s:SetErlangOptions()
|
||||||
compiler erlang
|
compiler erlang
|
||||||
if version >= 700
|
if version >= 700
|
||||||
setlocal omnifunc=erlang_complete#Complete
|
setlocal omnifunc=erlangcomplete#Complete
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:erlang_folding
|
setlocal foldmethod=expr
|
||||||
setlocal foldmethod=expr
|
setlocal foldexpr=GetErlangFold(v:lnum)
|
||||||
setlocal foldexpr=GetErlangFold(v:lnum)
|
setlocal foldtext=ErlangFoldText()
|
||||||
setlocal foldtext=ErlangFoldText()
|
|
||||||
endif
|
|
||||||
|
|
||||||
setlocal comments=:%%%,:%%,:%
|
|
||||||
setlocal commentstring=%%s
|
|
||||||
setlocal formatoptions+=ro
|
|
||||||
setlocal suffixesadd=.erl
|
|
||||||
let libs = substitute(system('which erl'), '/bin/erl', '/lib/erlang/lib/**/src/', '')
|
|
||||||
execute 'setlocal path+=' . libs
|
|
||||||
let &l:keywordprg = g:erlang_keywordprg
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function GetErlangFold(lnum)
|
" Define folding functions
|
||||||
let lnum = a:lnum
|
if !exists("*GetErlangFold")
|
||||||
let line = getline(lnum)
|
" Folding params
|
||||||
|
let s:ErlangFunBegin = '^\a\w*(.*$'
|
||||||
|
let s:ErlangFunEnd = '^[^%]*\.\s*\(%.*\)\?$'
|
||||||
|
let s:ErlangBlankLine = '^\s*\(%.*\)\?$'
|
||||||
|
|
||||||
if line =~ s:erlang_fun_end
|
" Auxiliary fold functions
|
||||||
return '<1'
|
function s:GetNextNonBlank(lnum)
|
||||||
endif
|
let lnum = nextnonblank(a:lnum + 1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
while line =~ s:ErlangBlankLine && 0 != lnum
|
||||||
|
let lnum = nextnonblank(lnum + 1)
|
||||||
|
let line = getline(lnum)
|
||||||
|
endwhile
|
||||||
|
return lnum
|
||||||
|
endfunction
|
||||||
|
|
||||||
if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
|
function s:GetFunName(str)
|
||||||
return '1'
|
return matchstr(a:str, '^\a\w*(\@=')
|
||||||
endif
|
endfunction
|
||||||
|
|
||||||
if line =~ s:erlang_fun_begin
|
function s:GetFunArgs(str, lnum)
|
||||||
return '>1'
|
let str = a:str
|
||||||
endif
|
let lnum = a:lnum
|
||||||
|
while str !~ '->\s*\(%.*\)\?$'
|
||||||
|
let lnum = s:GetNextNonBlank(lnum)
|
||||||
|
if 0 == lnum " EOF
|
||||||
|
return ""
|
||||||
|
endif
|
||||||
|
let str .= getline(lnum)
|
||||||
|
endwhile
|
||||||
|
return matchstr(str,
|
||||||
|
\ '\(^(\s*\)\@<=.*\(\s*)\(\s\+when\s\+.*\)\?\s\+->\s*\(%.*\)\?$\)\@=')
|
||||||
|
endfunction
|
||||||
|
|
||||||
return '='
|
function s:CountFunArgs(arguments)
|
||||||
endfunction
|
let pos = 0
|
||||||
|
let ac = 0 " arg count
|
||||||
|
let arguments = a:arguments
|
||||||
|
|
||||||
|
" Change list / tuples into just one A(rgument)
|
||||||
|
let erlangTuple = '{\([A-Za-z_,|=\-\[\]]\|\s\)*}'
|
||||||
|
let erlangList = '\[\([A-Za-z_,|=\-{}]\|\s\)*\]'
|
||||||
|
|
||||||
function ErlangFoldText()
|
" FIXME: Use searchpair?
|
||||||
let line = getline(v:foldstart)
|
while arguments =~ erlangTuple
|
||||||
let foldlen = v:foldend - v:foldstart + 1
|
let arguments = substitute(arguments, erlangTuple, "A", "g")
|
||||||
let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[ \t]*", '', '')
|
endwhile
|
||||||
if foldlen < 10
|
" FIXME: Use searchpair?
|
||||||
let lines = ' ' . lines
|
while arguments =~ erlangList
|
||||||
endif
|
let arguments = substitute(arguments, erlangList, "A", "g")
|
||||||
let retval = '+' . v:folddashes . lines
|
endwhile
|
||||||
|
|
||||||
|
let len = strlen(arguments)
|
||||||
|
while pos < len && pos > -1
|
||||||
|
let ac += 1
|
||||||
|
let pos = matchend(arguments, ',\s*', pos)
|
||||||
|
endwhile
|
||||||
|
return ac
|
||||||
|
endfunction
|
||||||
|
|
||||||
return retval
|
" Main fold function
|
||||||
endfunction
|
function GetErlangFold(lnum)
|
||||||
|
let lnum = a:lnum
|
||||||
|
let line = getline(lnum)
|
||||||
|
|
||||||
|
if line =~ s:ErlangFunEnd
|
||||||
|
return '<1'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if line =~ s:ErlangFunBegin && foldlevel(lnum - 1) == 1
|
||||||
|
if exists("g:erlangFoldSplitFunction") && g:erlangFoldSplitFunction
|
||||||
|
return '>1'
|
||||||
|
else
|
||||||
|
return '1'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if line =~ s:ErlangFunBegin
|
||||||
|
return '>1'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return '='
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Erlang fold description (foldtext function)
|
||||||
|
function ErlangFoldText()
|
||||||
|
let foldlen = v:foldend - v:foldstart
|
||||||
|
if 1 < foldlen
|
||||||
|
let lines = "lines"
|
||||||
|
else
|
||||||
|
let lines = "line"
|
||||||
|
endif
|
||||||
|
let line = getline(v:foldstart)
|
||||||
|
let name = s:GetFunName(line)
|
||||||
|
let arguments = s:GetFunArgs(strpart(line, strlen(name)), v:foldstart)
|
||||||
|
let argcount = s:CountFunArgs(arguments)
|
||||||
|
let retval = "+" . v:folddashes . " " . name . "/" . argcount
|
||||||
|
let retval .= " (" . foldlen . " " . lines . ")"
|
||||||
|
return retval
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
call s:SetErlangOptions()
|
call s:SetErlangOptions()
|
||||||
|
|||||||
295
ftplugin/erlang_refactor.vim
Normal file
295
ftplugin/erlang_refactor.vim
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
" Erlang refactor file
|
||||||
|
" Language: Erlang
|
||||||
|
" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
|
||||||
|
" URL: http://ktototaki.info
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin_erlang")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load any other
|
||||||
|
let b:did_ftplugin_erlang=1
|
||||||
|
|
||||||
|
if !exists('g:erlangRefactoring') || g:erlangRefactoring == 0
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:erlangWranglerPath')
|
||||||
|
let g:erlangWranglerPath = '/usr/share/wrangler/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if glob(g:erlangWranglerPath) == ""
|
||||||
|
call confirm("Wrong path to wrangler dir")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
autocmd VimLeavePre * call StopWranglerServer()
|
||||||
|
|
||||||
|
let s:erlangServerName = "wrangler_vim"
|
||||||
|
|
||||||
|
" Starting background erlang session with wrangler on
|
||||||
|
function! StartWranglerServer()
|
||||||
|
let wranglerEbinDir = g:erlangWranglerPath . "/ebin"
|
||||||
|
let command = "erl_call -s -sname " . s:erlangServerName . " -x 'erl -pa " . wranglerEbinDir . "'"
|
||||||
|
call system(command)
|
||||||
|
call s:send_rpc('application', 'start', '[wrangler_app]')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Stopping erlang session
|
||||||
|
function! StopWranglerServer()
|
||||||
|
echo s:send_rpc('erlang', 'halt', '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Sending rpc call to erlang session
|
||||||
|
function! s:send_rpc(module, fun, args)
|
||||||
|
let command = "erl_call -sname " . s:erlangServerName . " -a '" . a:module . " " . a:fun . " " . a:args . "'"
|
||||||
|
let result = system(command)
|
||||||
|
if match(result, 'erl_call: failed to connect to node .*') != -1
|
||||||
|
call StartWranglerServer()
|
||||||
|
return system(command)
|
||||||
|
endif
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ErlangUndo()
|
||||||
|
echo s:send_rpc("wrangler_undo_server", "undo", "[]")
|
||||||
|
:e!
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:trim(text)
|
||||||
|
return substitute(a:text, "^\\s\\+\\|\\s\\+$", "", "g")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_msg(result, tuple_start)
|
||||||
|
let msg_begin = '{' . a:tuple_start . ','
|
||||||
|
let matching_start = match(a:result, msg_begin)
|
||||||
|
if matching_start != -1
|
||||||
|
return s:trim(matchstr(a:result, '[^}]*', matching_start + strlen(msg_begin)))
|
||||||
|
endif
|
||||||
|
return ""
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Check if there is an error in result
|
||||||
|
function! s:check_for_error(result)
|
||||||
|
let msg = s:get_msg(a:result, 'ok')
|
||||||
|
if msg != ""
|
||||||
|
return [0, msg]
|
||||||
|
endif
|
||||||
|
let msg = s:get_msg(a:result, 'warning')
|
||||||
|
if msg != ""
|
||||||
|
return [1, msg]
|
||||||
|
endif
|
||||||
|
let msg = s:get_msg(a:result, 'error')
|
||||||
|
if msg != ""
|
||||||
|
return [2, msg]
|
||||||
|
endif
|
||||||
|
return [-1, ""]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Sending apply changes to file
|
||||||
|
function! s:send_confirm()
|
||||||
|
let choice = confirm("What do you want?", "&Preview\n&Confirm\nCa&ncel", 0)
|
||||||
|
if choice == 1
|
||||||
|
echo "TODO: Display preview :)"
|
||||||
|
elseif choice == 2
|
||||||
|
let module = 'wrangler_preview_server'
|
||||||
|
let fun = 'commit'
|
||||||
|
let args = '[]'
|
||||||
|
return s:send_rpc(module, fun, args)
|
||||||
|
else
|
||||||
|
let module = 'wrangler_preview_server'
|
||||||
|
let fun = 'abort'
|
||||||
|
let args = '[]'
|
||||||
|
return s:send_rpc(module, fun, args)
|
||||||
|
echo "Canceled"
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Manually send confirm, for testing purpose only
|
||||||
|
function! SendConfirm()
|
||||||
|
echo s:send_confirm()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Format and send function extracton call
|
||||||
|
function! s:call_extract(start_line, start_col, end_line, end_col, name)
|
||||||
|
let file = expand("%:p")
|
||||||
|
let module = 'wrangler'
|
||||||
|
let fun = 'fun_extraction'
|
||||||
|
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, "' . a:name . '", ' . &sw . ']'
|
||||||
|
let result = s:send_rpc(module, fun, args)
|
||||||
|
let [error_code, msg] = s:check_for_error(result)
|
||||||
|
if error_code != 0
|
||||||
|
call confirm(msg)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
||||||
|
echo s:send_confirm()
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ErlangExtractFunction(mode) range
|
||||||
|
silent w!
|
||||||
|
let name = inputdialog("New function name: ")
|
||||||
|
if name != ""
|
||||||
|
if a:mode == "v"
|
||||||
|
let start_pos = getpos("'<")
|
||||||
|
let start_line = start_pos[1]
|
||||||
|
let start_col = start_pos[2]
|
||||||
|
|
||||||
|
let end_pos = getpos("'>")
|
||||||
|
let end_line = end_pos[1]
|
||||||
|
let end_col = end_pos[2]
|
||||||
|
elseif a:mode == "n"
|
||||||
|
let pos = getpos(".")
|
||||||
|
let start_line = pos[1]
|
||||||
|
let start_col = pos[2]
|
||||||
|
let end_line = pos[1]
|
||||||
|
let end_col = pos[2]
|
||||||
|
else
|
||||||
|
echo "Mode not supported."
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
if s:call_extract(start_line, start_col, end_line, end_col, name)
|
||||||
|
let temp = &autoread
|
||||||
|
set autoread
|
||||||
|
:e
|
||||||
|
if temp == 0
|
||||||
|
set noautoread
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
echo "Empty function name. Ignoring."
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
nmap <A-r>e :call ErlangExtractFunction("n")<ENTER>
|
||||||
|
vmap <A-r>e :call ErlangExtractFunction("v")<ENTER>
|
||||||
|
|
||||||
|
function! s:call_rename(mode, line, col, name, search_path)
|
||||||
|
let file = expand("%:p")
|
||||||
|
let module = 'wrangler'
|
||||||
|
let fun = 'rename_' . a:mode
|
||||||
|
let args = '["' . file .'", '
|
||||||
|
if a:mode != "mod"
|
||||||
|
let args = args . a:line . ', ' . a:col . ', '
|
||||||
|
endif
|
||||||
|
let args = args . '"' . a:name . '", ["' . a:search_path . '"], ' . &sw . ']'
|
||||||
|
let result = s:send_rpc(module, fun, args)
|
||||||
|
let [error_code, msg] = s:check_for_error(result)
|
||||||
|
if error_code != 0
|
||||||
|
call confirm(msg)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
echo "This files will be changed: " . matchstr(msg, "[^]]*", 1)
|
||||||
|
echo s:send_confirm()
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ErlangRename(mode)
|
||||||
|
silent w!
|
||||||
|
if a:mode == "mod"
|
||||||
|
let name = inputdialog('Rename module to: ')
|
||||||
|
else
|
||||||
|
let name = inputdialog('Rename "' . expand("<cword>") . '" to: ')
|
||||||
|
endif
|
||||||
|
if name != ""
|
||||||
|
let search_path = expand("%:p:h")
|
||||||
|
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
||||||
|
let pos = getpos(".")
|
||||||
|
let line = pos[1]
|
||||||
|
let col = pos[2]
|
||||||
|
let current_filename = expand("%")
|
||||||
|
let current_filepath = expand("%:p")
|
||||||
|
let new_filename = name . '.erl'
|
||||||
|
if s:call_rename(a:mode, line, col, name, search_path)
|
||||||
|
if a:mode == "mod"
|
||||||
|
execute ':bd ' . current_filename
|
||||||
|
execute ':e ' . new_filename
|
||||||
|
silent execute '!mv ' . current_filepath . ' ' . current_filepath . '.bak'
|
||||||
|
redraw!
|
||||||
|
else
|
||||||
|
let temp = &autoread
|
||||||
|
set autoread
|
||||||
|
:e
|
||||||
|
if temp == 0
|
||||||
|
set noautoread
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
echo "Empty name. Ignoring."
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ErlangRenameFunction()
|
||||||
|
call ErlangRename("fun")
|
||||||
|
endfunction
|
||||||
|
map <A-r>f :call ErlangRenameFunction()<ENTER>
|
||||||
|
|
||||||
|
function! ErlangRenameVariable()
|
||||||
|
call ErlangRename("var")
|
||||||
|
endfunction
|
||||||
|
map <A-r>v :call ErlangRenameVariable()<ENTER>
|
||||||
|
|
||||||
|
function! ErlangRenameModule()
|
||||||
|
call ErlangRename("mod")
|
||||||
|
endfunction
|
||||||
|
map <A-r>m :call ErlangRenameModule()<ENTER>
|
||||||
|
|
||||||
|
function! ErlangRenameProcess()
|
||||||
|
call ErlangRename("process")
|
||||||
|
endfunction
|
||||||
|
map <A-r>p :call ErlangRenameProcess()<ENTER>
|
||||||
|
|
||||||
|
function! s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
||||||
|
let file = expand("%:p")
|
||||||
|
let module = 'wrangler'
|
||||||
|
let fun = 'tuple_funpar'
|
||||||
|
let args = '["' . file . '", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, ["' . a:search_path . '"], ' . &sw . ']'
|
||||||
|
let result = s:send_rpc(module, fun, args)
|
||||||
|
if s:check_for_error(result)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
call s:send_confirm()
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ErlangTupleFunArgs(mode)
|
||||||
|
silent w!
|
||||||
|
let search_path = expand("%:p:h")
|
||||||
|
"let search_path = inputdialog('Search path: ', expand("%:p:h"))
|
||||||
|
if a:mode == "v"
|
||||||
|
let start_pos = getpos("'<")
|
||||||
|
let start_line = start_pos[1]
|
||||||
|
let start_col = start_pos[2]
|
||||||
|
|
||||||
|
let end_pos = getpos("'>")
|
||||||
|
let end_line = end_pos[1]
|
||||||
|
let end_col = end_pos[2]
|
||||||
|
if s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)
|
||||||
|
let temp = &autoread
|
||||||
|
set autoread
|
||||||
|
:e
|
||||||
|
if temp == 0
|
||||||
|
set noautoread
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif a:mode == "n"
|
||||||
|
let pos = getpos(".")
|
||||||
|
let line = pos[1]
|
||||||
|
let col = pos[2]
|
||||||
|
if s:call_tuple_fun_args(line, col, line, col, search_path)
|
||||||
|
let temp = &autoread
|
||||||
|
set autoread
|
||||||
|
:e
|
||||||
|
if temp == 0
|
||||||
|
set noautoread
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
echo "Mode not supported."
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
nmap <A-r>t :call ErlangTupleFunArgs("n")<ENTER>
|
||||||
|
vmap <A-r>t :call ErlangTupleFunArgs("v")<ENTER>
|
||||||
|
|
||||||
|
" vim: set foldmethod=marker:
|
||||||
19
ftplugin/go.vim
Normal file
19
ftplugin/go.vim
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
" Copyright 2013 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.
|
||||||
|
"
|
||||||
|
" go.vim: Vim filetype plugin for Go.
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
|
||||||
|
setlocal comments=s1:/*,mb:*,ex:*/,://
|
||||||
|
setlocal commentstring=//\ %s
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl fo< com< cms<"
|
||||||
|
|
||||||
|
" vim:ts=4:sw=4:et
|
||||||
@@ -12,15 +12,35 @@
|
|||||||
" It tries to preserve cursor position and avoids
|
" It tries to preserve cursor position and avoids
|
||||||
" replacing the buffer with stderr output.
|
" replacing the buffer with stderr output.
|
||||||
"
|
"
|
||||||
|
" Options:
|
||||||
|
"
|
||||||
|
" g:go_fmt_commands [default=1]
|
||||||
|
"
|
||||||
|
" Flag to indicate whether to enable the commands listed above.
|
||||||
|
"
|
||||||
|
" g:gofmt_command [default="gofmt"]
|
||||||
|
"
|
||||||
|
" Flag naming the gofmt executable to use.
|
||||||
|
"
|
||||||
if exists("b:did_ftplugin_go_fmt")
|
if exists("b:did_ftplugin_go_fmt")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
command! -buffer Fmt call s:GoFormat()
|
if !exists("g:go_fmt_commands")
|
||||||
|
let g:go_fmt_commands = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:gofmt_command")
|
||||||
|
let g:gofmt_command = "gofmt"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:go_fmt_commands
|
||||||
|
command! -buffer Fmt call s:GoFormat()
|
||||||
|
endif
|
||||||
|
|
||||||
function! s:GoFormat()
|
function! s:GoFormat()
|
||||||
let view = winsaveview()
|
let view = winsaveview()
|
||||||
silent %!gofmt
|
silent execute "%!" . g:gofmt_command
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
let errors = []
|
let errors = []
|
||||||
for line in getline(1, line('$'))
|
for line in getline(1, line('$'))
|
||||||
@@ -37,7 +57,7 @@ function! s:GoFormat()
|
|||||||
endif
|
endif
|
||||||
undo
|
undo
|
||||||
if !empty(errors)
|
if !empty(errors)
|
||||||
call setloclist(0, errors, 'r')
|
call setqflist(errors, 'r')
|
||||||
endif
|
endif
|
||||||
echohl Error | echomsg "Gofmt returned error" | echohl None
|
echohl Error | echomsg "Gofmt returned error" | echohl None
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -24,23 +24,40 @@
|
|||||||
" imported, an error will be displayed and the buffer will be
|
" imported, an error will be displayed and the buffer will be
|
||||||
" untouched.
|
" untouched.
|
||||||
"
|
"
|
||||||
" In addition to these commands, there are also two shortcuts mapped:
|
" If you would like to add shortcuts, you can do so by doing the following:
|
||||||
"
|
"
|
||||||
" \f - Runs :Import fmt
|
" Import fmt
|
||||||
" \F - Runs :Drop fmt
|
" au Filetype go nnoremap <buffer> <LocalLeader>f :Import fmt<CR>
|
||||||
"
|
"
|
||||||
" The backslash is the default maplocalleader, so it is possible that
|
" Drop fmt
|
||||||
|
" au Filetype go nnoremap <buffer> <LocalLeader>F :Drop fmt<CR>
|
||||||
|
"
|
||||||
|
" Import the word under your cursor
|
||||||
|
" au Filetype go nnoremap <buffer> <LocalLeader>k
|
||||||
|
" \ :exe 'Import ' . expand('<cword>')<CR>
|
||||||
|
"
|
||||||
|
" The backslash '\' is the default maplocalleader, so it is possible that
|
||||||
" your vim is set to use a different character (:help maplocalleader).
|
" your vim is set to use a different character (:help maplocalleader).
|
||||||
"
|
"
|
||||||
|
" Options:
|
||||||
|
"
|
||||||
|
" g:go_import_commands [default=1]
|
||||||
|
"
|
||||||
|
" Flag to indicate whether to enable the commands listed above.
|
||||||
|
"
|
||||||
if exists("b:did_ftplugin_go_import")
|
if exists("b:did_ftplugin_go_import")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
|
if !exists("g:go_import_commands")
|
||||||
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
|
let g:go_import_commands = 1
|
||||||
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
|
endif
|
||||||
map <buffer> <LocalLeader>f :Import fmt<CR>
|
|
||||||
map <buffer> <LocalLeader>F :Drop fmt<CR>
|
if g:go_import_commands
|
||||||
|
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>)
|
||||||
|
endif
|
||||||
|
|
||||||
function! s:SwitchImport(enabled, localname, path)
|
function! s:SwitchImport(enabled, localname, path)
|
||||||
let view = winsaveview()
|
let view = winsaveview()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
360
ftplugin/latex-box/common.vim
Normal file
360
ftplugin/latex-box/common.vim
Normal file
@@ -0,0 +1,360 @@
|
|||||||
|
" LaTeX Box common functions
|
||||||
|
|
||||||
|
" Error Format {{{
|
||||||
|
" Note: The error formats assume we're using the -file-line-error with
|
||||||
|
" [pdf]latex.
|
||||||
|
" Note: See |errorformat-LaTeX| for more info.
|
||||||
|
|
||||||
|
" Check for options
|
||||||
|
if !exists("g:LatexBox_show_warnings")
|
||||||
|
let g:LatexBox_show_warnings=1
|
||||||
|
endif
|
||||||
|
if !exists("g:LatexBox_ignore_warnings")
|
||||||
|
let g:LatexBox_ignore_warnings =
|
||||||
|
\['Underfull',
|
||||||
|
\ 'Overfull',
|
||||||
|
\ 'specifier changed to']
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Standard error message formats
|
||||||
|
" Note: We consider statements that starts with "!" as errors
|
||||||
|
setlocal efm=%E!\ LaTeX\ %trror:\ %m
|
||||||
|
setlocal efm+=%E%f:%l:\ %m
|
||||||
|
setlocal efm+=%E!\ %m
|
||||||
|
|
||||||
|
" More info for undefined control sequences
|
||||||
|
setlocal efm+=%Z<argument>\ %m
|
||||||
|
|
||||||
|
" Show or ignore warnings
|
||||||
|
if g:LatexBox_show_warnings
|
||||||
|
for w in g:LatexBox_ignore_warnings
|
||||||
|
let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ')
|
||||||
|
exe 'setlocal efm+=%-G%.%#'. warning .'%.%#'
|
||||||
|
endfor
|
||||||
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
|
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
||||||
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
||||||
|
setlocal efm+=%+W%.%#Warning:\ %m
|
||||||
|
else
|
||||||
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
|
setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
|
||||||
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
|
||||||
|
setlocal efm+=%-W%.%#Warning:\ %m
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Push file to file stack
|
||||||
|
setlocal efm+=%+P**%f
|
||||||
|
|
||||||
|
" Ignore unmatched lines
|
||||||
|
setlocal efm+=%-G%.%#
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Vim Windows {{{
|
||||||
|
|
||||||
|
" Width of vertical splits
|
||||||
|
if !exists('g:LatexBox_split_width')
|
||||||
|
let g:LatexBox_split_width = 30
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Where vertical splits appear
|
||||||
|
if !exists('g:LatexBox_split_side')
|
||||||
|
let g:LatexBox_split_side = "leftabove"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Resize when split?
|
||||||
|
if !exists('g:LatexBox_split_resize')
|
||||||
|
let g:LatexBox_split_resize = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Toggle help info
|
||||||
|
if !exists('g:LatexBox_toc_hidehelp')
|
||||||
|
let g:LatexBox_toc_hidehelp = 0
|
||||||
|
endif
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Filename utilities {{{
|
||||||
|
function! LatexBox_GetMainTexFile()
|
||||||
|
|
||||||
|
" 1. check for the b:main_tex_file variable
|
||||||
|
if exists('b:main_tex_file') && filereadable(b:main_tex_file)
|
||||||
|
return b:main_tex_file
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" 2. scan the first few lines of the file for root = filename
|
||||||
|
for linenum in range(1,5)
|
||||||
|
let linecontents = getline(linenum)
|
||||||
|
if linecontents =~ 'root\s*='
|
||||||
|
" Remove everything but the filename
|
||||||
|
let b:main_tex_file = substitute(linecontents,
|
||||||
|
\ '.*root\s*=\s*', "", "")
|
||||||
|
let b:main_tex_file = substitute(b:main_tex_file, '\s*$', "", "")
|
||||||
|
" Prepend current directory if this isn't an absolute path
|
||||||
|
if b:main_tex_file !~ '^/'
|
||||||
|
let b:main_tex_file = expand('%:p:h') . '/' . b:main_tex_file
|
||||||
|
endif
|
||||||
|
let b:main_tex_file = fnamemodify(b:main_tex_file, ":p")
|
||||||
|
if b:main_tex_file !~ '\.tex$'
|
||||||
|
let b:main_tex_file .= '.tex'
|
||||||
|
endif
|
||||||
|
return b:main_tex_file
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" 3. scan current file for "\begin{document}"
|
||||||
|
if &filetype == 'tex' && search('\m\C\\begin\_\s*{document}', 'nw') != 0
|
||||||
|
return expand('%:p')
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 4. use 'main.tex' if it exists in the same directory (and is readable)
|
||||||
|
let s:main_dot_tex_file=expand('%:p:h') . '/main.tex'
|
||||||
|
if filereadable(s:main_dot_tex_file)
|
||||||
|
let b:main_tex_file=s:main_dot_tex_file
|
||||||
|
return b:main_tex_file
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 5. borrow the Vim-Latex-Suite method of finding it
|
||||||
|
if Tex_GetMainFileName() != expand('%:p')
|
||||||
|
let b:main_tex_file = Tex_GetMainFileName()
|
||||||
|
return b:main_tex_file
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 6. prompt for file with completion
|
||||||
|
let b:main_tex_file = s:PromptForMainFile()
|
||||||
|
return b:main_tex_file
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:PromptForMainFile()
|
||||||
|
let saved_dir = getcwd()
|
||||||
|
execute 'cd ' . fnameescape(expand('%:p:h'))
|
||||||
|
let l:file = ''
|
||||||
|
while !filereadable(l:file)
|
||||||
|
let l:file = input('main LaTeX file: ', '', 'file')
|
||||||
|
if l:file !~ '\.tex$'
|
||||||
|
let l:file .= '.tex'
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
let l:file = fnamemodify(l:file, ':p')
|
||||||
|
execute 'cd ' . fnameescape(saved_dir)
|
||||||
|
return l:file
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Return the directory of the main tex file
|
||||||
|
function! LatexBox_GetTexRoot()
|
||||||
|
return fnamemodify(LatexBox_GetMainTexFile(), ':h')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LatexBox_GetTexBasename(with_dir)
|
||||||
|
if a:with_dir
|
||||||
|
return fnamemodify(LatexBox_GetMainTexFile(), ':r')
|
||||||
|
else
|
||||||
|
return fnamemodify(LatexBox_GetMainTexFile(), ':t:r')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LatexBox_GetAuxFile()
|
||||||
|
" 1. check for b:build_dir variable
|
||||||
|
if exists('b:build_dir') && isdirectory(b:build_dir)
|
||||||
|
return b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 2. check for g:LatexBox_build_dir variable
|
||||||
|
if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
|
||||||
|
return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 3. use the base name of main tex file
|
||||||
|
return LatexBox_GetTexBasename(1) . '.aux'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LatexBox_GetLogFile()
|
||||||
|
" 1. check for b:build_dir variable
|
||||||
|
if exists('b:build_dir') && isdirectory(b:build_dir)
|
||||||
|
return b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 2. check for g:LatexBox_build_dir variable
|
||||||
|
if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
|
||||||
|
return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 3. use the base name of main tex file
|
||||||
|
return LatexBox_GetTexBasename(1) . '.log'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LatexBox_GetOutputFile()
|
||||||
|
" 1. check for b:build_dir variable
|
||||||
|
if exists('b:build_dir') && isdirectory(b:build_dir)
|
||||||
|
return b:build_dir . '/' . LatexBox_GetTexBasename(0)
|
||||||
|
\ . '.' . g:LatexBox_output_type
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 2. check for g:LatexBox_build_dir variable
|
||||||
|
if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
|
||||||
|
return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0)
|
||||||
|
\ . '.' . g:LatexBox_output_type
|
||||||
|
endif
|
||||||
|
|
||||||
|
" 3. use the base name of main tex file
|
||||||
|
return LatexBox_GetTexBasename(1) . '.' . g:LatexBox_output_type
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" View Output {{{
|
||||||
|
|
||||||
|
" Default pdf viewer
|
||||||
|
if !exists('g:LatexBox_viewer')
|
||||||
|
if has('win32')
|
||||||
|
" On windows, 'running' a file will open it with the default program
|
||||||
|
let g:LatexBox_viewer = ''
|
||||||
|
else
|
||||||
|
let g:LatexBox_viewer = 'xdg-open'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! LatexBox_View()
|
||||||
|
let outfile = LatexBox_GetOutputFile()
|
||||||
|
if !filereadable(outfile)
|
||||||
|
echomsg fnamemodify(outfile, ':.') . ' is not readable'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let cmd = g:LatexBox_viewer . ' ' . shellescape(outfile)
|
||||||
|
if has('win32')
|
||||||
|
let cmd = '!start /b' . cmd . ' >nul'
|
||||||
|
else
|
||||||
|
let cmd = '!' . cmd . ' &>/dev/null &'
|
||||||
|
endif
|
||||||
|
silent execute cmd
|
||||||
|
if !has("gui_running")
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command! LatexView call LatexBox_View()
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" In Comment {{{
|
||||||
|
|
||||||
|
" LatexBox_InComment([line], [col])
|
||||||
|
" return true if inside comment
|
||||||
|
function! LatexBox_InComment(...)
|
||||||
|
let line = a:0 >= 1 ? a:1 : line('.')
|
||||||
|
let col = a:0 >= 2 ? a:2 : col('.')
|
||||||
|
return synIDattr(synID(line, col, 0), "name") =~# '^texComment'
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Get Current Environment {{{
|
||||||
|
|
||||||
|
" LatexBox_GetCurrentEnvironment([with_pos])
|
||||||
|
" Returns:
|
||||||
|
" - environment
|
||||||
|
" if with_pos is not given
|
||||||
|
" - [envirnoment, lnum_begin, cnum_begin, lnum_end, cnum_end]
|
||||||
|
" if with_pos is nonzero
|
||||||
|
function! LatexBox_GetCurrentEnvironment(...)
|
||||||
|
if a:0 > 0
|
||||||
|
let with_pos = a:1
|
||||||
|
else
|
||||||
|
let with_pos = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let begin_pat = '\C\\begin\_\s*{[^}]*}\|\\\@<!\\\[\|\\\@<!\\('
|
||||||
|
let end_pat = '\C\\end\_\s*{[^}]*}\|\\\@<!\\\]\|\\\@<!\\)'
|
||||||
|
let saved_pos = getpos('.')
|
||||||
|
|
||||||
|
" move to the left until on a backslash
|
||||||
|
let [bufnum, lnum, cnum, off] = getpos('.')
|
||||||
|
let line = getline(lnum)
|
||||||
|
while cnum > 1 && line[cnum - 1] != '\'
|
||||||
|
let cnum -= 1
|
||||||
|
endwhile
|
||||||
|
call cursor(lnum, cnum)
|
||||||
|
|
||||||
|
" match begin/end pairs but skip comments
|
||||||
|
let flags = 'bnW'
|
||||||
|
if strpart(getline('.'), col('.') - 1) =~ '^\%(' . begin_pat . '\)'
|
||||||
|
let flags .= 'c'
|
||||||
|
endif
|
||||||
|
let [lnum1, cnum1] = searchpairpos(begin_pat, '', end_pat, flags,
|
||||||
|
\ 'LatexBox_InComment()')
|
||||||
|
|
||||||
|
let env = ''
|
||||||
|
|
||||||
|
if lnum1
|
||||||
|
let line = strpart(getline(lnum1), cnum1 - 1)
|
||||||
|
|
||||||
|
if empty(env)
|
||||||
|
let env = matchstr(line, '^\C\\begin\_\s*{\zs[^}]*\ze}')
|
||||||
|
endif
|
||||||
|
if empty(env)
|
||||||
|
let env = matchstr(line, '^\\\[')
|
||||||
|
endif
|
||||||
|
if empty(env)
|
||||||
|
let env = matchstr(line, '^\\(')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if with_pos == 1
|
||||||
|
let flags = 'nW'
|
||||||
|
if !(lnum1 == lnum && cnum1 == cnum)
|
||||||
|
let flags .= 'c'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let [lnum2, cnum2] = searchpairpos(begin_pat, '', end_pat, flags,
|
||||||
|
\ 'LatexBox_InComment()')
|
||||||
|
|
||||||
|
call setpos('.', saved_pos)
|
||||||
|
return [env, lnum1, cnum1, lnum2, cnum2]
|
||||||
|
else
|
||||||
|
call setpos('.', saved_pos)
|
||||||
|
return env
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Tex To Tree {{{
|
||||||
|
" stores nested braces in a tree structure
|
||||||
|
function! LatexBox_TexToTree(str)
|
||||||
|
let tree = []
|
||||||
|
let i1 = 0
|
||||||
|
let i2 = -1
|
||||||
|
let depth = 0
|
||||||
|
while i2 < len(a:str)
|
||||||
|
let i2 = match(a:str, '[{}]', i2 + 1)
|
||||||
|
if i2 < 0
|
||||||
|
let i2 = len(a:str)
|
||||||
|
endif
|
||||||
|
if i2 >= len(a:str) || a:str[i2] == '{'
|
||||||
|
if depth == 0
|
||||||
|
let item = substitute(strpart(a:str, i1, i2 - i1),
|
||||||
|
\ '^\s*\|\s*$', '', 'g')
|
||||||
|
if !empty(item)
|
||||||
|
call add(tree, item)
|
||||||
|
endif
|
||||||
|
let i1 = i2 + 1
|
||||||
|
endif
|
||||||
|
let depth += 1
|
||||||
|
else
|
||||||
|
let depth -= 1
|
||||||
|
if depth == 0
|
||||||
|
call add(tree, LatexBox_TexToTree(strpart(a:str, i1, i2 - i1)))
|
||||||
|
let i1 = i2 + 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return tree
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Tree To Tex {{{
|
||||||
|
function! LatexBox_TreeToTex(tree)
|
||||||
|
if type(a:tree) == type('')
|
||||||
|
return a:tree
|
||||||
|
else
|
||||||
|
return '{' . join(map(a:tree, 'LatexBox_TreeToTex(v:val)'), '') . '}'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||||
929
ftplugin/latex-box/complete.vim
Normal file
929
ftplugin/latex-box/complete.vim
Normal file
@@ -0,0 +1,929 @@
|
|||||||
|
" LaTeX Box completion
|
||||||
|
|
||||||
|
setlocal omnifunc=LatexBox_Complete
|
||||||
|
|
||||||
|
" <SID> Wrap {{{
|
||||||
|
function! s:GetSID()
|
||||||
|
return matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
|
||||||
|
endfunction
|
||||||
|
let s:SID = s:GetSID()
|
||||||
|
function! s:SIDWrap(func)
|
||||||
|
return s:SID . a:func
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Completion {{{
|
||||||
|
if !exists('g:LatexBox_completion_close_braces')
|
||||||
|
let g:LatexBox_completion_close_braces = 1
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_bibtex_wild_spaces')
|
||||||
|
let g:LatexBox_bibtex_wild_spaces = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_cite_pattern')
|
||||||
|
let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_ref_pattern')
|
||||||
|
let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\|labelc\)\?ref\*\?\_\s*{'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_completion_environments')
|
||||||
|
let g:LatexBox_completion_environments = [
|
||||||
|
\ {'word': 'itemize', 'menu': 'bullet list' },
|
||||||
|
\ {'word': 'enumerate', 'menu': 'numbered list' },
|
||||||
|
\ {'word': 'description', 'menu': 'description' },
|
||||||
|
\ {'word': 'center', 'menu': 'centered text' },
|
||||||
|
\ {'word': 'figure', 'menu': 'floating figure' },
|
||||||
|
\ {'word': 'table', 'menu': 'floating table' },
|
||||||
|
\ {'word': 'equation', 'menu': 'equation (numbered)' },
|
||||||
|
\ {'word': 'align', 'menu': 'aligned equations (numbered)' },
|
||||||
|
\ {'word': 'align*', 'menu': 'aligned equations' },
|
||||||
|
\ {'word': 'document' },
|
||||||
|
\ {'word': 'abstract' },
|
||||||
|
\ ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_completion_commands')
|
||||||
|
let g:LatexBox_completion_commands = [
|
||||||
|
\ {'word': '\begin{' },
|
||||||
|
\ {'word': '\end{' },
|
||||||
|
\ {'word': '\item' },
|
||||||
|
\ {'word': '\label{' },
|
||||||
|
\ {'word': '\ref{' },
|
||||||
|
\ {'word': '\eqref{eq:' },
|
||||||
|
\ {'word': '\cite{' },
|
||||||
|
\ {'word': '\chapter{' },
|
||||||
|
\ {'word': '\section{' },
|
||||||
|
\ {'word': '\subsection{' },
|
||||||
|
\ {'word': '\subsubsection{' },
|
||||||
|
\ {'word': '\paragraph{' },
|
||||||
|
\ {'word': '\nonumber' },
|
||||||
|
\ {'word': '\bibliography' },
|
||||||
|
\ {'word': '\bibliographystyle' },
|
||||||
|
\ ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_complete_inlineMath')
|
||||||
|
let g:LatexBox_complete_inlineMath = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_eq_env_patterns')
|
||||||
|
let g:LatexBox_eq_env_patterns = 'equation\|gather\|multiline\|align\|flalign\|alignat\|eqnarray'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
"LatexBox_kpsewhich {{{
|
||||||
|
function! LatexBox_kpsewhich(file)
|
||||||
|
let old_dir = getcwd()
|
||||||
|
execute 'lcd ' . fnameescape(LatexBox_GetTexRoot())
|
||||||
|
let out = system('kpsewhich "' . a:file . '"')
|
||||||
|
|
||||||
|
" If kpsewhich has found something, it returns a non-empty string with a
|
||||||
|
" newline at the end; otherwise the string is empty
|
||||||
|
if len(out)
|
||||||
|
" Remove the trailing newline
|
||||||
|
let out = fnamemodify(out[:-2], ':p')
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute 'lcd ' . fnameescape(old_dir)
|
||||||
|
|
||||||
|
return out
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" Omni Completion {{{
|
||||||
|
|
||||||
|
let s:completion_type = ''
|
||||||
|
|
||||||
|
function! LatexBox_Complete(findstart, base)
|
||||||
|
if a:findstart
|
||||||
|
" return the starting position of the word
|
||||||
|
let line = getline('.')
|
||||||
|
let pos = col('.') - 1
|
||||||
|
while pos > 0 && line[pos - 1] !~ '\\\|{'
|
||||||
|
let pos -= 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
let line_start = line[:pos-1]
|
||||||
|
if line_start =~ '\m\C\\begin\_\s*{$'
|
||||||
|
let s:completion_type = 'begin'
|
||||||
|
elseif line_start =~ '\m\C\\end\_\s*{$'
|
||||||
|
let s:completion_type = 'end'
|
||||||
|
elseif line_start =~ '\m' . g:LatexBox_ref_pattern . '$'
|
||||||
|
let s:completion_type = 'ref'
|
||||||
|
elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$'
|
||||||
|
let s:completion_type = 'bib'
|
||||||
|
" check for multiple citations
|
||||||
|
let pos = col('.') - 1
|
||||||
|
while pos > 0 && line[pos - 1] !~ '{\|,'
|
||||||
|
let pos -= 1
|
||||||
|
endwhile
|
||||||
|
elseif s:LatexBox_complete_inlineMath_or_not()
|
||||||
|
let s:completion_type = 'inlineMath'
|
||||||
|
let pos = s:eq_pos
|
||||||
|
else
|
||||||
|
let s:completion_type = 'command'
|
||||||
|
if line[pos - 1] == '\'
|
||||||
|
let pos -= 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return pos
|
||||||
|
else
|
||||||
|
" return suggestions in an array
|
||||||
|
let suggestions = []
|
||||||
|
|
||||||
|
if s:completion_type == 'begin'
|
||||||
|
" suggest known environments
|
||||||
|
for entry in g:LatexBox_completion_environments
|
||||||
|
if entry.word =~ '^' . escape(a:base, '\')
|
||||||
|
if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^}')
|
||||||
|
" add trailing '}'
|
||||||
|
let entry = copy(entry)
|
||||||
|
let entry.abbr = entry.word
|
||||||
|
let entry.word = entry.word . '}'
|
||||||
|
endif
|
||||||
|
call add(suggestions, entry)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
elseif s:completion_type == 'end'
|
||||||
|
" suggest known environments
|
||||||
|
let env = LatexBox_GetCurrentEnvironment()
|
||||||
|
if env != ''
|
||||||
|
if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
|
||||||
|
call add(suggestions, {'word': env . '}', 'abbr': env})
|
||||||
|
else
|
||||||
|
call add(suggestions, env)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif s:completion_type == 'command'
|
||||||
|
" suggest known commands
|
||||||
|
for entry in g:LatexBox_completion_commands
|
||||||
|
if entry.word =~ '^' . escape(a:base, '\')
|
||||||
|
" do not display trailing '{'
|
||||||
|
if entry.word =~ '{'
|
||||||
|
let entry.abbr = entry.word[0:-2]
|
||||||
|
endif
|
||||||
|
call add(suggestions, entry)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
elseif s:completion_type == 'ref'
|
||||||
|
let suggestions = s:CompleteLabels(a:base)
|
||||||
|
elseif s:completion_type == 'bib'
|
||||||
|
" suggest BibTeX entries
|
||||||
|
let suggestions = LatexBox_BibComplete(a:base)
|
||||||
|
elseif s:completion_type == 'inlineMath'
|
||||||
|
let suggestions = s:LatexBox_inlineMath_completion(a:base)
|
||||||
|
endif
|
||||||
|
if !has('gui_running')
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
return suggestions
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" BibTeX search {{{
|
||||||
|
|
||||||
|
" find the \bibliography{...} commands
|
||||||
|
" the optional argument is the file name to be searched
|
||||||
|
|
||||||
|
function! s:FindBibData(...)
|
||||||
|
if a:0 == 0
|
||||||
|
let file = LatexBox_GetMainTexFile()
|
||||||
|
else
|
||||||
|
let file = a:1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !filereadable(file)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let lines = readfile(file)
|
||||||
|
let bibdata_list = []
|
||||||
|
|
||||||
|
"
|
||||||
|
" Search for added bibliographies
|
||||||
|
"
|
||||||
|
let bibliography_cmds = [
|
||||||
|
\ '\\bibliography',
|
||||||
|
\ '\\addbibresource',
|
||||||
|
\ '\\addglobalbib',
|
||||||
|
\ '\\addsectionbib',
|
||||||
|
\ ]
|
||||||
|
for cmd in bibliography_cmds
|
||||||
|
let filtered = filter(copy(lines),
|
||||||
|
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}''')
|
||||||
|
let files = map(filtered,
|
||||||
|
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
|
||||||
|
for file in files
|
||||||
|
let bibdata_list += map(split(file, ','),
|
||||||
|
\ 'fnamemodify(v:val, '':r'')')
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
"
|
||||||
|
" Also search included files
|
||||||
|
"
|
||||||
|
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
|
||||||
|
|
||||||
|
return bibdata_list
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
|
||||||
|
|
||||||
|
function! LatexBox_BibSearch(regexp)
|
||||||
|
let res = []
|
||||||
|
|
||||||
|
" Find data from bib files
|
||||||
|
let bibdata = join(s:FindBibData(), ',')
|
||||||
|
if bibdata != ''
|
||||||
|
|
||||||
|
" write temporary aux file
|
||||||
|
let tmpbase = LatexBox_GetTexRoot() . '/_LatexBox_BibComplete'
|
||||||
|
let auxfile = tmpbase . '.aux'
|
||||||
|
let bblfile = tmpbase . '.bbl'
|
||||||
|
let blgfile = tmpbase . '.blg'
|
||||||
|
|
||||||
|
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
|
||||||
|
\ '\bibdata{' . bibdata . '}'], auxfile)
|
||||||
|
|
||||||
|
if has('win32')
|
||||||
|
let l:old_shellslash = &l:shellslash
|
||||||
|
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"),
|
||||||
|
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
|
||||||
|
|
||||||
|
for line in filter(lines, 'v:val =~ a:regexp')
|
||||||
|
let matches = matchlist(line,
|
||||||
|
\ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
|
||||||
|
if !empty(matches) && !empty(matches[1])
|
||||||
|
let s:type_length = max([s:type_length,
|
||||||
|
\ len(matches[2]) + 3])
|
||||||
|
call add(res, {
|
||||||
|
\ 'key': matches[1],
|
||||||
|
\ 'type': matches[2],
|
||||||
|
\ 'author': matches[3],
|
||||||
|
\ 'year': matches[4],
|
||||||
|
\ 'title': matches[5],
|
||||||
|
\ })
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call delete(auxfile)
|
||||||
|
call delete(bblfile)
|
||||||
|
call delete(blgfile)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Find data from 'thebibliography' environments
|
||||||
|
let lines = readfile(LatexBox_GetMainTexFile())
|
||||||
|
if match(lines, '\C\\begin{thebibliography}') >= 0
|
||||||
|
for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
|
||||||
|
\ 'v:val =~ a:regexp')
|
||||||
|
let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
|
||||||
|
call add(res, {
|
||||||
|
\ 'key': match,
|
||||||
|
\ 'type': '',
|
||||||
|
\ 'author': '',
|
||||||
|
\ 'year': '',
|
||||||
|
\ 'title': match,
|
||||||
|
\ })
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
|
||||||
|
return res
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" BibTeX completion {{{
|
||||||
|
let s:type_length=0
|
||||||
|
function! LatexBox_BibComplete(regexp)
|
||||||
|
|
||||||
|
" treat spaces as '.*' if needed
|
||||||
|
if g:LatexBox_bibtex_wild_spaces
|
||||||
|
"let regexp = substitute(a:regexp, '\s\+', '.*', 'g')
|
||||||
|
let regexp = '.*' . substitute(a:regexp, '\s\+', '\\\&.*', 'g')
|
||||||
|
else
|
||||||
|
let regexp = a:regexp
|
||||||
|
endif
|
||||||
|
|
||||||
|
let res = []
|
||||||
|
let s:type_length = 4
|
||||||
|
for m in LatexBox_BibSearch(regexp)
|
||||||
|
let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
|
||||||
|
let type = printf('%-' . s:type_length . 's', type)
|
||||||
|
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
||||||
|
let auth = substitute(auth, '\~', ' ', 'g')
|
||||||
|
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
||||||
|
let w = { 'word': m['key'],
|
||||||
|
\ 'abbr': type . auth . year,
|
||||||
|
\ 'menu': m['title'] }
|
||||||
|
|
||||||
|
" close braces if needed
|
||||||
|
if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
|
||||||
|
let w.word = w.word . '}'
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(res, w)
|
||||||
|
endfor
|
||||||
|
return res
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" ExtractLabels {{{
|
||||||
|
" Generate list of \newlabel commands in current buffer.
|
||||||
|
"
|
||||||
|
" Searches the current buffer for commands of the form
|
||||||
|
" \newlabel{name}{{number}{page}.*
|
||||||
|
" and returns list of [ name, number, page ] tuples.
|
||||||
|
function! s:ExtractLabels()
|
||||||
|
call cursor(1,1)
|
||||||
|
|
||||||
|
let matches = []
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
|
||||||
|
while [lblline, lblbegin] != [0,0]
|
||||||
|
let [nln, nameend] = searchpairpos( '{', '', '}', 'W' )
|
||||||
|
if nln != lblline
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
|
||||||
|
|
||||||
|
" Ignore cref entries (because they are duplicates)
|
||||||
|
if curname =~ "\@cref\|cref\@"
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
if 0 == search( '\m{\w*{', 'ce', lblline )
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let numberbegin = getpos('.')[2]
|
||||||
|
let [nln, numberend] = searchpairpos( '{', '', '}', 'W' )
|
||||||
|
if nln != lblline
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
|
||||||
|
|
||||||
|
if 0 == search( '\m\w*{', 'ce', lblline )
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let pagebegin = getpos('.')[2]
|
||||||
|
let [nln, pageend] = searchpairpos( '{', '', '}', 'W' )
|
||||||
|
if nln != lblline
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let curpage = strpart( getline( lblline ), pagebegin, pageend - pagebegin - 1 )
|
||||||
|
|
||||||
|
let matches += [ [ curname, curnumber, curpage ] ]
|
||||||
|
|
||||||
|
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return matches
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" ExtractInputs {{{
|
||||||
|
" Generate list of \@input commands in current buffer.
|
||||||
|
"
|
||||||
|
" Searches the current buffer for \@input{file} entries and
|
||||||
|
" returns list of all files.
|
||||||
|
function! s:ExtractInputs()
|
||||||
|
call cursor(1,1)
|
||||||
|
|
||||||
|
let matches = []
|
||||||
|
let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
|
||||||
|
|
||||||
|
while [inline, inbegin] != [0,0]
|
||||||
|
let [nln, inend] = searchpairpos( '{', '', '}', 'W' )
|
||||||
|
if nln != inline
|
||||||
|
let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let matches += [ LatexBox_kpsewhich(strpart( getline( inline ), inbegin, inend - inbegin - 1 )) ]
|
||||||
|
|
||||||
|
let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Remove empty strings for nonexistant .aux files
|
||||||
|
return filter(matches, 'v:val != ""')
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" LabelCache {{{
|
||||||
|
" Cache of all labels.
|
||||||
|
"
|
||||||
|
" LabelCache is a dictionary mapping filenames to tuples
|
||||||
|
" [ time, labels, inputs ]
|
||||||
|
" where
|
||||||
|
" * time is modification time of the cache entry
|
||||||
|
" * labels is a list like returned by ExtractLabels
|
||||||
|
" * inputs is a list like returned by ExtractInputs
|
||||||
|
let s:LabelCache = {}
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" GetLabelCache {{{
|
||||||
|
" Extract labels from LabelCache and update it.
|
||||||
|
"
|
||||||
|
" Compares modification time of each entry in the label
|
||||||
|
" cache and updates it, if necessary. During traversal of
|
||||||
|
" the LabelCache, all current labels are collected and
|
||||||
|
" returned.
|
||||||
|
function! s:GetLabelCache(file)
|
||||||
|
if !filereadable(a:file)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
|
||||||
|
" Open file in temporary split window for label extraction.
|
||||||
|
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 ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
" We need to create a copy of s:LabelCache[fid][1], otherwise all inputs'
|
||||||
|
" labels would be added to the current file's label cache upon each
|
||||||
|
" completion call, leading to duplicates/triplicates/etc. and decreased
|
||||||
|
" performance.
|
||||||
|
" Also, because we don't anything with the list besides matching copies,
|
||||||
|
" we can get away with a shallow copy for now.
|
||||||
|
let labels = copy(s:LabelCache[a:file][1])
|
||||||
|
|
||||||
|
for input in s:LabelCache[a:file][2]
|
||||||
|
let labels += s:GetLabelCache(input)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return labels
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" Complete Labels {{{
|
||||||
|
function! s:CompleteLabels(regex)
|
||||||
|
let labels = s:GetLabelCache(LatexBox_GetAuxFile())
|
||||||
|
|
||||||
|
let matches = filter( copy(labels), 'match(v:val[0], "' . a:regex . '") != -1' )
|
||||||
|
if empty(matches)
|
||||||
|
" also try to match label and number
|
||||||
|
let regex_split = split(a:regex)
|
||||||
|
if len(regex_split) > 1
|
||||||
|
let base = regex_split[0]
|
||||||
|
let number = escape(join(regex_split[1:], ' '), '.')
|
||||||
|
let matches = filter( copy(labels), 'match(v:val[0], "' . base . '") != -1 && match(v:val[1], "' . number . '") != -1' )
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if empty(matches)
|
||||||
|
" also try to match number
|
||||||
|
let matches = filter( copy(labels), 'match(v:val[1], "' . a:regex . '") != -1' )
|
||||||
|
endif
|
||||||
|
|
||||||
|
let suggestions = []
|
||||||
|
for m in matches
|
||||||
|
let entry = {'word': m[0], 'menu': printf("%7s [p. %s]", '('.m[1].')', m[2])}
|
||||||
|
if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
|
||||||
|
" add trailing '}'
|
||||||
|
let entry = copy(entry)
|
||||||
|
let entry.abbr = entry.word
|
||||||
|
let entry.word = entry.word . '}'
|
||||||
|
endif
|
||||||
|
call add(suggestions, entry)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return suggestions
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Complete Inline Math Or Not {{{
|
||||||
|
" Return 1, when cursor is in a math env:
|
||||||
|
" 1, there is a single $ in the current line on the left of cursor
|
||||||
|
" 2, there is an open-eq-env on/above the current line
|
||||||
|
" (open-eq-env : \(, \[, and \begin{eq-env} )
|
||||||
|
" Return 0, when cursor is not in a math env
|
||||||
|
function! s:LatexBox_complete_inlineMath_or_not()
|
||||||
|
|
||||||
|
" switch of inline math completion feature
|
||||||
|
if g:LatexBox_complete_inlineMath == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" env names that can't appear in an eq env
|
||||||
|
if !exists('s:LatexBox_doc_structure_patterns')
|
||||||
|
let s:LatexBox_doc_structure_patterns = '\%(' . '\\begin\s*{document}\|' .
|
||||||
|
\ '\\\%(chapter\|section\|subsection\|subsubsection\)\*\?\s*{' . '\)'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('s:LatexBox_eq_env_open_patterns')
|
||||||
|
let s:LatexBox_eq_env_open_patterns = ['\\(','\\\[']
|
||||||
|
endif
|
||||||
|
if !exists('s:LatexBox_eq_env_close_patterns')
|
||||||
|
let s:LatexBox_eq_env_close_patterns = ['\\)','\\\]']
|
||||||
|
endif
|
||||||
|
|
||||||
|
let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
|
||||||
|
|
||||||
|
let lnum_saved = line('.')
|
||||||
|
let cnum_saved = col('.') -1
|
||||||
|
|
||||||
|
let line = getline('.')
|
||||||
|
let line_start_2_cnum_saved = line[:cnum_saved]
|
||||||
|
|
||||||
|
" determine whether there is a single $ before cursor
|
||||||
|
let cursor_dollar_pair = 0
|
||||||
|
while matchend(line_start_2_cnum_saved, '\$[^$]\+\$', cursor_dollar_pair) >= 0
|
||||||
|
" find the end of dollar pair
|
||||||
|
let cursor_dollar_pair = matchend(line_start_2_cnum_saved, '\$[^$]\+\$', cursor_dollar_pair)
|
||||||
|
endwhile
|
||||||
|
" find single $ after cursor_dollar_pair
|
||||||
|
let cursor_single_dollar = matchend(line_start_2_cnum_saved, '\$', cursor_dollar_pair)
|
||||||
|
|
||||||
|
" if single $ is found
|
||||||
|
if cursor_single_dollar >= 0
|
||||||
|
" check whether $ is in \(...\), \[...\], or \begin{eq}...\end{eq}
|
||||||
|
|
||||||
|
" check current line,
|
||||||
|
" search for LatexBox_eq_env_close_patterns: \[ and \(
|
||||||
|
let lnum = line('.')
|
||||||
|
for i in range(0, (len(s:LatexBox_eq_env_open_patterns)-1))
|
||||||
|
call cursor(lnum_saved, cnum_saved)
|
||||||
|
let cnum_close = searchpos(''. s:LatexBox_eq_env_close_patterns[i].'', 'cbW', lnum_saved)[1]
|
||||||
|
let cnum_open = matchend(line_start_2_cnum_saved, s:LatexBox_eq_env_open_patterns[i], cnum_close)
|
||||||
|
if cnum_open >= 0
|
||||||
|
let s:eq_dollar_parenthesis_bracket_empty = ''
|
||||||
|
let s:eq_pos = cursor_single_dollar - 1
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" check the lines above
|
||||||
|
" search for s:LatexBox_doc_structure_patterns, and end-of-math-env
|
||||||
|
let lnum -= 1
|
||||||
|
while lnum > 0
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~ notcomment . '\(' . s:LatexBox_doc_structure_patterns .
|
||||||
|
\ '\|' . '\\end\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}\)'
|
||||||
|
" when s:LatexBox_doc_structure_patterns or g:LatexBox_eq_env_patterns
|
||||||
|
" are found first, complete math, leave with $ at both sides
|
||||||
|
let s:eq_dollar_parenthesis_bracket_empty = '$'
|
||||||
|
let s:eq_pos = cursor_single_dollar
|
||||||
|
break
|
||||||
|
elseif line =~ notcomment . '\\begin\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}'
|
||||||
|
" g:LatexBox_eq_env_patterns is found, complete math, remove $
|
||||||
|
let s:eq_dollar_parenthesis_bracket_empty = ''
|
||||||
|
let s:eq_pos = cursor_single_dollar - 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum -= 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
" no $ is found, then search for \( or \[ in current line
|
||||||
|
" 1, whether there is \(
|
||||||
|
call cursor(lnum_saved, cnum_saved)
|
||||||
|
let cnum_parenthesis_close = searchpos('\\)', 'cbW', lnum_saved)[1]
|
||||||
|
let cnum_parenthesis_open = matchend(line_start_2_cnum_saved, '\\(', cnum_parenthesis_close)
|
||||||
|
if cnum_parenthesis_open >= 0
|
||||||
|
let s:eq_dollar_parenthesis_bracket_empty = '\)'
|
||||||
|
let s:eq_pos = cnum_parenthesis_open
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
" 2, whether there is \[
|
||||||
|
call cursor(lnum_saved, cnum_saved)
|
||||||
|
let cnum_bracket_close = searchpos('\\\]', 'cbW', lnum_saved)[1]
|
||||||
|
let cnum_bracket_open = matchend(line_start_2_cnum_saved, '\\\[', cnum_bracket_close)
|
||||||
|
if cnum_bracket_open >= 0
|
||||||
|
let s:eq_dollar_parenthesis_bracket_empty = '\]'
|
||||||
|
let s:eq_pos = cnum_bracket_open
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
" not inline math completion
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Complete inline euqation{{{
|
||||||
|
function! s:LatexBox_inlineMath_completion(regex, ...)
|
||||||
|
|
||||||
|
if a:0 == 0
|
||||||
|
let file = LatexBox_GetMainTexFile()
|
||||||
|
else
|
||||||
|
let file = a:1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(glob(file, 1))
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(s:eq_dollar_parenthesis_bracket_empty)
|
||||||
|
let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$'
|
||||||
|
let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)'
|
||||||
|
else
|
||||||
|
let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$'
|
||||||
|
let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)'
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
let suggestions = []
|
||||||
|
let line_num = 0
|
||||||
|
for line in readfile(file)
|
||||||
|
let line_num = line_num + 1
|
||||||
|
|
||||||
|
let suggestions += s:LatexBox_inlineMath_mathlist(line,inline_pattern1 , line_num) + s:LatexBox_inlineMath_mathlist( line,inline_pattern2, line_num)
|
||||||
|
|
||||||
|
" search for included files
|
||||||
|
let included_file = matchstr(line, '^\\@input{\zs[^}]*\ze}')
|
||||||
|
if included_file != ''
|
||||||
|
let included_file = LatexBox_kpsewhich(included_file)
|
||||||
|
call extend(suggestions, s:LatexBox_inlineMath_completion(a:regex, included_file))
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return suggestions
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Search for inline maths {{{
|
||||||
|
" search for $ ... $ and \( ... \) in each line
|
||||||
|
function! s:LatexBox_inlineMath_mathlist(line,inline_pattern, line_num)
|
||||||
|
let col_start = 0
|
||||||
|
let suggestions = []
|
||||||
|
while 1
|
||||||
|
let matches = matchlist(a:line, a:inline_pattern, col_start)
|
||||||
|
if !empty(matches)
|
||||||
|
|
||||||
|
" show line number of inline math
|
||||||
|
let entry = {'word': matches[1], 'menu': '[' . a:line_num . ']'}
|
||||||
|
|
||||||
|
if s:eq_dollar_parenthesis_bracket_empty != ''
|
||||||
|
let entry = copy(entry)
|
||||||
|
let entry.abbr = entry.word
|
||||||
|
let entry.word = entry.word . s:eq_dollar_parenthesis_bracket_empty
|
||||||
|
endif
|
||||||
|
call add(suggestions, entry)
|
||||||
|
|
||||||
|
" update col_start
|
||||||
|
let col_start = matchend(a:line, a:inline_pattern, col_start)
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return suggestions
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Close Current Environment {{{
|
||||||
|
function! s:CloseCurEnv()
|
||||||
|
" first, try with \left/\right pairs
|
||||||
|
let [lnum, cnum] = searchpairpos('\C\\left\>', '', '\C\\right\>', 'bnW', 'LatexBox_InComment()')
|
||||||
|
if lnum
|
||||||
|
let line = strpart(getline(lnum), cnum - 1)
|
||||||
|
let bracket = matchstr(line, '^\\left\zs\((\|\[\|\\{\||\|\.\)\ze')
|
||||||
|
for [open, close] in [['(', ')'], ['\[', '\]'], ['\\{', '\\}'], ['|', '|'], ['\.', '|']]
|
||||||
|
let bracket = substitute(bracket, open, close, 'g')
|
||||||
|
endfor
|
||||||
|
return '\right' . bracket
|
||||||
|
endif
|
||||||
|
|
||||||
|
" second, try with environments
|
||||||
|
let env = LatexBox_GetCurrentEnvironment()
|
||||||
|
if env == '\['
|
||||||
|
return '\]'
|
||||||
|
elseif env == '\('
|
||||||
|
return '\)'
|
||||||
|
elseif env != ''
|
||||||
|
return '\end{' . env . '}'
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Wrap Selection {{{
|
||||||
|
function! s:WrapSelection(wrapper)
|
||||||
|
keepjumps normal! `>a}
|
||||||
|
execute 'keepjumps normal! `<i\' . a:wrapper . '{'
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Wrap Selection in Environment with Prompt {{{
|
||||||
|
function! s:PromptEnvWrapSelection(...)
|
||||||
|
let env = input('environment: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))
|
||||||
|
if empty(env)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" LaTeXBox's custom indentation can interfere with environment
|
||||||
|
" insertion when environments are indented (common for nested
|
||||||
|
" environments). Temporarily disable it for this operation:
|
||||||
|
let ieOld = &indentexpr
|
||||||
|
setlocal indentexpr=""
|
||||||
|
if visualmode() ==# 'V'
|
||||||
|
execute 'keepjumps normal! `>o\end{' . env . '}'
|
||||||
|
execute 'keepjumps normal! `<O\begin{' . env . '}'
|
||||||
|
" indent and format, if requested.
|
||||||
|
if a:0 && a:1
|
||||||
|
normal! gv>
|
||||||
|
normal! gvgq
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
execute 'keepjumps normal! `>a\end{' . env . '}'
|
||||||
|
execute 'keepjumps normal! `<i\begin{' . env . '}'
|
||||||
|
endif
|
||||||
|
exe "setlocal indentexpr=" . ieOld
|
||||||
|
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 {{{
|
||||||
|
function! s:ChangeEnvPrompt()
|
||||||
|
|
||||||
|
let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)
|
||||||
|
|
||||||
|
let new_env = input('change ' . env . ' for: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))
|
||||||
|
if empty(new_env)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if new_env == '\[' || new_env == '['
|
||||||
|
let begin = '\['
|
||||||
|
let end = '\]'
|
||||||
|
elseif new_env == '\(' || new_env == '('
|
||||||
|
let begin = '\('
|
||||||
|
let end = '\)'
|
||||||
|
else
|
||||||
|
let l:begin = '\begin{' . new_env . '}'
|
||||||
|
let l:end = '\end{' . new_env . '}'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if env == '\[' || 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
|
||||||
|
|
||||||
|
function! s:GetEnvironmentList(lead, cmdline, pos)
|
||||||
|
let suggestions = []
|
||||||
|
for entry in g:LatexBox_completion_environments
|
||||||
|
let env = entry.word
|
||||||
|
if env =~ '^' . a:lead
|
||||||
|
call add(suggestions, env)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return suggestions
|
||||||
|
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 {{{
|
||||||
|
function! s:NextCharsMatch(regex)
|
||||||
|
let rest_of_line = strpart(getline('.'), col('.') - 1)
|
||||||
|
return rest_of_line =~ a:regex
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Mappings {{{
|
||||||
|
inoremap <silent> <Plug>LatexCloseCurEnv <C-R>=<SID>CloseCurEnv()<CR>
|
||||||
|
vnoremap <silent> <Plug>LatexWrapSelection :<c-u>call <SID>WrapSelection('')<CR>i
|
||||||
|
vnoremap <silent> <Plug>LatexEnvWrapSelection :<c-u>call <SID>PromptEnvWrapSelection()<CR>
|
||||||
|
vnoremap <silent> <Plug>LatexEnvWrapFmtSelection :<c-u>call <SID>PromptEnvWrapSelection(1)<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
|
||||||
64
ftplugin/latex-box/findmain.vim
Normal file
64
ftplugin/latex-box/findmain.vim
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
|
||||||
|
" Description: returns the full path name of the main file.
|
||||||
|
" This function checks for the existence of a .latexmain file
|
||||||
|
" which might point to the location of a "main" latex file.
|
||||||
|
" If .latexmain exists, then return the full path name of the
|
||||||
|
" file being pointed to by it.
|
||||||
|
"
|
||||||
|
" Otherwise, return the full path name of the current buffer.
|
||||||
|
"
|
||||||
|
" You can supply an optional "modifier" argument to the
|
||||||
|
" function, which will optionally modify the file name before
|
||||||
|
" returning.
|
||||||
|
" NOTE: From version 1.6 onwards, this function always trims
|
||||||
|
" away the .latexmain part of the file name before applying the
|
||||||
|
" modifier argument.
|
||||||
|
function! Tex_GetMainFileName(...)
|
||||||
|
if a:0 > 0
|
||||||
|
let modifier = a:1
|
||||||
|
else
|
||||||
|
let modifier = ':p'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:origdir = fnameescape(getcwd())
|
||||||
|
|
||||||
|
let dirmodifier = '%:p:h'
|
||||||
|
let dirLast = fnameescape(expand(dirmodifier))
|
||||||
|
exe 'cd '.dirLast
|
||||||
|
|
||||||
|
" move up the directory tree until we find a .latexmain file.
|
||||||
|
" TODO: Should we be doing this recursion by default, or should there be a
|
||||||
|
" setting?
|
||||||
|
while glob('*.latexmain') == ''
|
||||||
|
let dirmodifier = dirmodifier.':h'
|
||||||
|
let dirNew = fnameescape(expand(dirmodifier))
|
||||||
|
" break from the loop if we cannot go up any further.
|
||||||
|
if dirNew == dirLast
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let dirLast = dirNew
|
||||||
|
exe 'cd '.dirLast
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
let lheadfile = glob('*.latexmain')
|
||||||
|
if lheadfile != ''
|
||||||
|
" Remove the trailing .latexmain part of the filename... We never want
|
||||||
|
" that.
|
||||||
|
let lheadfile = fnamemodify(substitute(lheadfile, '\.latexmain$', '', ''), modifier)
|
||||||
|
else
|
||||||
|
" If we cannot find any main file, just modify the filename of the
|
||||||
|
" current buffer.
|
||||||
|
let lheadfile = expand('%'.modifier)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if lheadfile !~ '\.tex$'
|
||||||
|
let lheadfile .= '.tex'
|
||||||
|
endif
|
||||||
|
exe 'cd '.s:origdir
|
||||||
|
|
||||||
|
" 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
|
||||||
|
" safe if this file is to be used as part of an external command on
|
||||||
|
" certain platforms.
|
||||||
|
return lheadfile
|
||||||
|
endfunction
|
||||||
338
ftplugin/latex-box/folding.vim
Normal file
338
ftplugin/latex-box/folding.vim
Normal file
@@ -0,0 +1,338 @@
|
|||||||
|
" Folding support for LaTeX
|
||||||
|
"
|
||||||
|
" Options
|
||||||
|
" g:LatexBox_Folding - Turn on/off folding
|
||||||
|
" g:LatexBox_fold_preamble - Turn on/off folding of preamble
|
||||||
|
" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
|
||||||
|
" g:LatexBox_fold_sections - Define section levels to fold
|
||||||
|
" g:LatexBox_fold_envs - Turn on/off folding of environments
|
||||||
|
"
|
||||||
|
|
||||||
|
" {{{1 Set options
|
||||||
|
if exists('g:LatexBox_Folding') && g:LatexBox_Folding == 1
|
||||||
|
setl foldmethod=expr
|
||||||
|
setl foldexpr=LatexBox_FoldLevel(v:lnum)
|
||||||
|
setl foldtext=LatexBox_FoldText()
|
||||||
|
"
|
||||||
|
" 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
|
||||||
|
if !exists('g:LatexBox_fold_preamble')
|
||||||
|
let g:LatexBox_fold_preamble=1
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_envs')
|
||||||
|
let g:LatexBox_fold_envs=1
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_envs_force')
|
||||||
|
let g:LatexBox_fold_envs_force = []
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_parts')
|
||||||
|
let g:LatexBox_fold_parts=[
|
||||||
|
\ "appendix",
|
||||||
|
\ "frontmatter",
|
||||||
|
\ "mainmatter",
|
||||||
|
\ "backmatter"
|
||||||
|
\ ]
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_sections')
|
||||||
|
let g:LatexBox_fold_sections=[
|
||||||
|
\ "part",
|
||||||
|
\ "chapter",
|
||||||
|
\ "section",
|
||||||
|
\ "subsection",
|
||||||
|
\ "subsubsection"
|
||||||
|
\ ]
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_toc')
|
||||||
|
let g:LatexBox_fold_toc=0
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_toc_levels')
|
||||||
|
let g:LatexBox_fold_toc_levels=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" {{{1 LatexBox_FoldLevel help functions
|
||||||
|
|
||||||
|
" This function parses the tex file to find the sections that are to be folded
|
||||||
|
" and their levels, and then predefines the patterns for optimized folding.
|
||||||
|
function! s:FoldSectionLevels()
|
||||||
|
" Initialize
|
||||||
|
let level = 1
|
||||||
|
let foldsections = []
|
||||||
|
|
||||||
|
" If we use two or more of the *matter commands, we need one more foldlevel
|
||||||
|
let nparts = 0
|
||||||
|
for part in g:LatexBox_fold_parts
|
||||||
|
let i = 1
|
||||||
|
while i < line("$")
|
||||||
|
if getline(i) =~ '^\s*\\' . part . '\>'
|
||||||
|
let nparts += 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
if nparts > 1
|
||||||
|
let level = 2
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Combine sections and levels, but ignore unused section commands: If we
|
||||||
|
" don't use the part command, then chapter should have the highest
|
||||||
|
" level. If we don't use the chapter command, then section should be the
|
||||||
|
" highest level. And so on.
|
||||||
|
let ignore = 1
|
||||||
|
for part in g:LatexBox_fold_sections
|
||||||
|
" For each part, check if it is used in the file. We start adding the
|
||||||
|
" part patterns to the fold sections array whenever we find one.
|
||||||
|
let partpattern = '^\s*\(\\\|% Fake\)' . part . '\>'
|
||||||
|
if ignore
|
||||||
|
let i = 1
|
||||||
|
while i < line("$")
|
||||||
|
if getline(i) =~# partpattern
|
||||||
|
call insert(foldsections, [partpattern, level])
|
||||||
|
let level += 1
|
||||||
|
let ignore = 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
else
|
||||||
|
call insert(foldsections, [partpattern, level])
|
||||||
|
let level += 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return foldsections
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 LatexBox_FoldLevel
|
||||||
|
|
||||||
|
" Parse file to dynamically set the sectioning fold levels
|
||||||
|
let b:LatexBox_FoldSections = s:FoldSectionLevels()
|
||||||
|
|
||||||
|
" Optimize by predefine common patterns
|
||||||
|
let s:notbslash = '\%(\\\@<!\%(\\\\\)*\)\@<='
|
||||||
|
let s:notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
|
||||||
|
let s:envbeginpattern = s:notcomment . s:notbslash . '\\begin\s*{.\{-}}'
|
||||||
|
let s:envendpattern = s:notcomment . s:notbslash . '\\end\s*{.\{-}}'
|
||||||
|
let s:foldparts = '^\s*\\\%(' . join(g:LatexBox_fold_parts, '\|') . '\)'
|
||||||
|
let s:folded = '\(% Fake\|\\\(document\|begin\|end\|'
|
||||||
|
\ . 'front\|main\|back\|app\|sub\|section\|chapter\|part\)\)'
|
||||||
|
|
||||||
|
function! LatexBox_FoldLevel(lnum)
|
||||||
|
" Check for normal lines first (optimization)
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
if line !~ s:folded
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fold preamble
|
||||||
|
if g:LatexBox_fold_preamble == 1
|
||||||
|
if line =~# '\s*\\documentclass'
|
||||||
|
return ">1"
|
||||||
|
elseif line =~# '^\s*\\begin\s*{\s*document\s*}'
|
||||||
|
return "0"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fold parts (\frontmatter, \mainmatter, \backmatter, and \appendix)
|
||||||
|
if line =~# s:foldparts
|
||||||
|
return ">1"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fold chapters and sections
|
||||||
|
for [part, level] in b:LatexBox_FoldSections
|
||||||
|
if line =~# part
|
||||||
|
return ">" . level
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Never fold \end{document}
|
||||||
|
if line =~# '^\s*\\end{document}'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fold environments
|
||||||
|
if line =~# s:envbeginpattern
|
||||||
|
if g:LatexBox_fold_envs == 1
|
||||||
|
return "a1"
|
||||||
|
else
|
||||||
|
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "a1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif line =~# s:envendpattern
|
||||||
|
if g:LatexBox_fold_envs == 1
|
||||||
|
return "s1"
|
||||||
|
else
|
||||||
|
let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "s1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Return foldlevel of previous line
|
||||||
|
return "="
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 LatexBox_FoldText help functions
|
||||||
|
function! s:LabelEnv()
|
||||||
|
let i = v:foldend
|
||||||
|
while i >= v:foldstart
|
||||||
|
if getline(i) =~ '^\s*\\label'
|
||||||
|
return matchstr(getline(i), '^\s*\\label{\zs.*\ze}')
|
||||||
|
end
|
||||||
|
let i -= 1
|
||||||
|
endwhile
|
||||||
|
return ""
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:CaptionEnv()
|
||||||
|
let i = v:foldend
|
||||||
|
while i >= v:foldstart
|
||||||
|
if getline(i) =~ '^\s*\\caption'
|
||||||
|
return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+')
|
||||||
|
end
|
||||||
|
let i -= 1
|
||||||
|
endwhile
|
||||||
|
return ""
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:CaptionTable()
|
||||||
|
let i = v:foldstart
|
||||||
|
while i <= v:foldend
|
||||||
|
if getline(i) =~ '^\s*\\caption'
|
||||||
|
return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+')
|
||||||
|
end
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
return ""
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:CaptionFrame(line)
|
||||||
|
" Test simple variants first
|
||||||
|
let caption1 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+\ze}')
|
||||||
|
let caption2 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+')
|
||||||
|
|
||||||
|
if len(caption1) > 0
|
||||||
|
return caption1
|
||||||
|
elseif len(caption2) > 0
|
||||||
|
return caption2
|
||||||
|
else
|
||||||
|
let i = v:foldstart
|
||||||
|
while i <= v:foldend
|
||||||
|
if getline(i) =~ '^\s*\\frametitle'
|
||||||
|
return matchstr(getline(i),
|
||||||
|
\ '^\s*\\frametitle\(\[.*\]\)\?{\zs.\+')
|
||||||
|
end
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return ""
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 LatexBox_FoldText
|
||||||
|
function! LatexBox_FoldText()
|
||||||
|
" Initialize
|
||||||
|
let line = getline(v:foldstart)
|
||||||
|
let nlines = v:foldend - v:foldstart + 1
|
||||||
|
let level = ''
|
||||||
|
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
|
||||||
|
if line =~ '\s*\\documentclass'
|
||||||
|
let title = "Preamble"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Parts, sections and fakesections
|
||||||
|
let sections = '\(\(sub\)*section\|part\|chapter\)'
|
||||||
|
let secpat1 = '^\s*\\' . sections . '\*\?\s*{'
|
||||||
|
let secpat2 = '^\s*\\' . sections . '\*\?\s*\['
|
||||||
|
if line =~ '\\frontmatter'
|
||||||
|
let title = "Frontmatter"
|
||||||
|
elseif line =~ '\\mainmatter'
|
||||||
|
let title = "Mainmatter"
|
||||||
|
elseif line =~ '\\backmatter'
|
||||||
|
let title = "Backmatter"
|
||||||
|
elseif line =~ '\\appendix'
|
||||||
|
let title = "Appendix"
|
||||||
|
elseif line =~ secpat1 . '.*}'
|
||||||
|
let title = matchstr(line, secpat1 . '\zs.*\ze}')
|
||||||
|
elseif line =~ secpat1
|
||||||
|
let title = matchstr(line, secpat1 . '\zs.*')
|
||||||
|
elseif line =~ secpat2 . '.*\]'
|
||||||
|
let title = matchstr(line, secpat2 . '\zs.*\ze\]')
|
||||||
|
elseif line =~ secpat2
|
||||||
|
let title = matchstr(line, secpat2 . '\zs.*')
|
||||||
|
elseif line =~ 'Fake' . sections . ':'
|
||||||
|
let title = matchstr(line,'Fake' . sections . ':\s*\zs.*')
|
||||||
|
elseif line =~ 'Fake' . sections
|
||||||
|
let title = matchstr(line, 'Fake' . sections)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Environments
|
||||||
|
if line =~ '\\begin'
|
||||||
|
" Capture environment name
|
||||||
|
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
|
||||||
|
|
||||||
|
" Set caption based on type of environment
|
||||||
|
if env == 'frame'
|
||||||
|
let label = ''
|
||||||
|
let caption = s:CaptionFrame(line)
|
||||||
|
elseif env == 'table'
|
||||||
|
let label = s:LabelEnv()
|
||||||
|
let caption = s:CaptionTable()
|
||||||
|
else
|
||||||
|
let label = s:LabelEnv()
|
||||||
|
let caption = s:CaptionEnv()
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If no caption found, check for a caption comment
|
||||||
|
if caption == ''
|
||||||
|
let caption = matchstr(line,'\\begin\*\?{.*}\s*%\s*\zs.*')
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Create title based on caption and label
|
||||||
|
if caption . label == ''
|
||||||
|
let title = env
|
||||||
|
elseif label == ''
|
||||||
|
let title = printf('%-12s%s', env . ':',
|
||||||
|
\ substitute(caption, '}\s*$', '',''))
|
||||||
|
elseif caption == ''
|
||||||
|
let title = printf('%-12s%56s', env, '(' . label . ')')
|
||||||
|
else
|
||||||
|
let title = printf('%-12s%-30s %21s', env . ':',
|
||||||
|
\ strpart(substitute(caption, '}\s*$', '',''),0,34),
|
||||||
|
\ '(' . label . ')')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let title = strpart(title, 0, 68)
|
||||||
|
return printf('%-3s %-68s #%5d', level, title, nlines)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 Footer
|
||||||
|
" vim:fdm=marker:ff=unix:ts=4:sw=4
|
||||||
500
ftplugin/latex-box/latexmk.vim
Normal file
500
ftplugin/latex-box/latexmk.vim
Normal file
@@ -0,0 +1,500 @@
|
|||||||
|
" LaTeX Box latexmk functions
|
||||||
|
|
||||||
|
" Options and variables {{{
|
||||||
|
|
||||||
|
if !exists('g:LatexBox_latexmk_options')
|
||||||
|
let g:LatexBox_latexmk_options = ''
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_latexmk_env')
|
||||||
|
let g:LatexBox_latexmk_env = ''
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_latexmk_async')
|
||||||
|
let g:LatexBox_latexmk_async = 0
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_latexmk_preview_continuously')
|
||||||
|
let g:LatexBox_latexmk_preview_continuously = 0
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_output_type')
|
||||||
|
let g:LatexBox_output_type = 'pdf'
|
||||||
|
endif
|
||||||
|
if !exists('g:LatexBox_autojump')
|
||||||
|
let g:LatexBox_autojump = 0
|
||||||
|
endif
|
||||||
|
if ! exists('g:LatexBox_quickfix')
|
||||||
|
let g:LatexBox_quickfix = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Process ID management (used for asynchronous and continuous mode) {{{
|
||||||
|
|
||||||
|
" A dictionary of latexmk PID's (basename: pid)
|
||||||
|
if !exists('g:latexmk_running_pids')
|
||||||
|
let g:latexmk_running_pids = {}
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set PID {{{
|
||||||
|
function! s:LatexmkSetPID(basename, pid)
|
||||||
|
let g:latexmk_running_pids[a:basename] = a:pid
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" kill_latexmk_process {{{
|
||||||
|
function! s:kill_latexmk_process(pid)
|
||||||
|
if has('win32')
|
||||||
|
silent execute '!taskkill /PID ' . a:pid . ' /T /F'
|
||||||
|
else
|
||||||
|
if g:LatexBox_latexmk_async
|
||||||
|
" vim-server mode
|
||||||
|
let pids = []
|
||||||
|
let tmpfile = tempname()
|
||||||
|
silent execute '!ps x -o pgid,pid > ' . tmpfile
|
||||||
|
for line in readfile(tmpfile)
|
||||||
|
let new_pid = matchstr(line, '^\s*' . a:pid . '\s\+\zs\d\+\ze')
|
||||||
|
if !empty(new_pid)
|
||||||
|
call add(pids, new_pid)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
call delete(tmpfile)
|
||||||
|
if !empty(pids)
|
||||||
|
silent execute '!kill ' . join(pids)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" single background process
|
||||||
|
silent execute '!kill ' . a:pid
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if !has('gui_running')
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" kill_all_latexmk_processes {{{
|
||||||
|
function! s:kill_all_latexmk_processes()
|
||||||
|
for pid in values(g:latexmk_running_pids)
|
||||||
|
call s:kill_latexmk_process(pid)
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Setup for vim-server {{{
|
||||||
|
function! s:SIDWrap(func)
|
||||||
|
if !exists('s:SID')
|
||||||
|
let s:SID = matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
|
||||||
|
endif
|
||||||
|
return s:SID . a:func
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:LatexmkCallback(basename, status)
|
||||||
|
" Only remove the pid if not in continuous mode
|
||||||
|
if !g:LatexBox_latexmk_preview_continuously
|
||||||
|
call remove(g:latexmk_running_pids, a:basename)
|
||||||
|
endif
|
||||||
|
call LatexBox_LatexErrors(a:status, a:basename)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:setup_vim_server()
|
||||||
|
if !exists('g:vim_program')
|
||||||
|
|
||||||
|
" attempt autodetection of vim executable
|
||||||
|
let g:vim_program = ''
|
||||||
|
if has('win32')
|
||||||
|
" Just drop through to the default for windows
|
||||||
|
else
|
||||||
|
if match(&shell, '\(bash\|zsh\)$') >= 0
|
||||||
|
let ppid = '$PPID'
|
||||||
|
else
|
||||||
|
let ppid = '$$'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let tmpfile = tempname()
|
||||||
|
silent execute '!ps -o command= -p ' . ppid . ' > ' . tmpfile
|
||||||
|
for line in readfile(tmpfile)
|
||||||
|
let line = matchstr(line, '^\S\+\>')
|
||||||
|
if !empty(line) && executable(line)
|
||||||
|
let g:vim_program = line . ' -g'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
call delete(tmpfile)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(g:vim_program)
|
||||||
|
if has('gui_macvim')
|
||||||
|
let g:vim_program
|
||||||
|
\ = '/Applications/MacVim.app/Contents/MacOS/Vim -g'
|
||||||
|
else
|
||||||
|
let g:vim_program = v:progname
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Latexmk {{{
|
||||||
|
|
||||||
|
function! LatexBox_Latexmk(force)
|
||||||
|
" Define often used names
|
||||||
|
let basepath = LatexBox_GetTexBasename(1)
|
||||||
|
let basename = fnamemodify(basepath, ':t')
|
||||||
|
let texroot = shellescape(LatexBox_GetTexRoot())
|
||||||
|
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
|
||||||
|
if has_key(g:latexmk_running_pids, basepath)
|
||||||
|
echomsg "latexmk is already running for `" . basename . "'"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set wrap width in log file
|
||||||
|
let max_print_line = 2000
|
||||||
|
if has('win32')
|
||||||
|
let env = 'set max_print_line=' . max_print_line . ' & '
|
||||||
|
elseif match(&shell, '/tcsh$') >= 0
|
||||||
|
let env = 'setenv max_print_line ' . max_print_line . '; '
|
||||||
|
else
|
||||||
|
let env = 'max_print_line=' . max_print_line
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Set environment options
|
||||||
|
let env .= ' ' . g:LatexBox_latexmk_env . ' '
|
||||||
|
|
||||||
|
" Set latexmk command with options
|
||||||
|
if has('win32')
|
||||||
|
" Make sure to switch drive as well as directory
|
||||||
|
let cmd = 'cd /D ' . texroot . ' && '
|
||||||
|
else
|
||||||
|
let cmd = 'cd ' . texroot . ' && '
|
||||||
|
endif
|
||||||
|
let cmd .= env . ' latexmk'
|
||||||
|
let cmd .= ' -' . g:LatexBox_output_type
|
||||||
|
let cmd .= ' -quiet '
|
||||||
|
let cmd .= g:LatexBox_latexmk_options
|
||||||
|
if a:force
|
||||||
|
let cmd .= ' -g'
|
||||||
|
endif
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
let cmd .= ' -pvc'
|
||||||
|
endif
|
||||||
|
let cmd .= ' -e ' . shellescape('$pdflatex =~ 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
|
||||||
|
|
||||||
|
" Redirect output to null
|
||||||
|
if has('win32')
|
||||||
|
let cmd .= ' >nul'
|
||||||
|
else
|
||||||
|
let cmd .= ' &>/dev/null'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:LatexBox_latexmk_async
|
||||||
|
" Check if VIM server exists
|
||||||
|
if empty(v:servername)
|
||||||
|
echoerr "cannot run latexmk in background without a VIM server"
|
||||||
|
echoerr "set g:LatexBox_latexmk_async to 0 to change compiling mode"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Start vim server if necessary
|
||||||
|
call s:setup_vim_server()
|
||||||
|
|
||||||
|
let setpidfunc = s:SIDWrap('LatexmkSetPID')
|
||||||
|
let callbackfunc = s:SIDWrap('LatexmkCallback')
|
||||||
|
if has('win32')
|
||||||
|
let vim_program = substitute(g:vim_program,
|
||||||
|
\ 'gvim\.exe$', 'vim.exe', '')
|
||||||
|
|
||||||
|
" Define callback to set the pid
|
||||||
|
let callsetpid = setpidfunc . '(''' . basepath . ''', %CMDPID%)'
|
||||||
|
let vimsetpid = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . shellescape(callsetpid)
|
||||||
|
|
||||||
|
" Define callback after latexmk is finished
|
||||||
|
let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
|
||||||
|
let vimcmd = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --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'
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
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,
|
||||||
|
\ 'set SUCCESSCMD='.svimcmd,
|
||||||
|
\ 'set FAILURECMD='.fvimcmd,
|
||||||
|
\ 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
|
||||||
|
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
||||||
|
else
|
||||||
|
" Define callback to set the pid
|
||||||
|
let callsetpid = shellescape(setpidfunc).'"(\"'.basepath.'\",$$)"'
|
||||||
|
let vimsetpid = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . callsetpid
|
||||||
|
|
||||||
|
" Define callback after latexmk is finished
|
||||||
|
let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
|
||||||
|
let vimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --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
|
||||||
|
" Note: Here we escape '%' because it may be given as a user option
|
||||||
|
" through g:LatexBox_latexmk_options, for instance with
|
||||||
|
" g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
|
||||||
|
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 &'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
echo 'Compiling to ' . g:LatexBox_output_type
|
||||||
|
\ . ' with continuous preview.'
|
||||||
|
else
|
||||||
|
echo 'Compiling to ' . g:LatexBox_output_type . ' ...'
|
||||||
|
endif
|
||||||
|
silent execute cmd
|
||||||
|
else
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
if has('win32')
|
||||||
|
let cmd = '!start /b cmd /s /c "' . cmd . '"'
|
||||||
|
else
|
||||||
|
let cmd = '!' . cmd . ' &'
|
||||||
|
endif
|
||||||
|
echo 'Compiling to ' . g:LatexBox_output_type . ' ...'
|
||||||
|
silent execute cmd
|
||||||
|
|
||||||
|
" Save PID in order to be able to kill the process when wanted.
|
||||||
|
if has('win32')
|
||||||
|
let tmpfile = tempname()
|
||||||
|
let pidcmd = 'cmd /c "wmic process where '
|
||||||
|
\ . '(CommandLine LIKE "latexmk\%'.mainfile.'\%") '
|
||||||
|
\ . 'get ProcessId /value | find "ProcessId" '
|
||||||
|
\ . '>'.tmpfile.' "'
|
||||||
|
silent execute '! ' . pidcmd
|
||||||
|
let pids = readfile(tmpfile)
|
||||||
|
let pid = strpart(pids[0], 10)
|
||||||
|
let g:latexmk_running_pids[basepath] = pid
|
||||||
|
else
|
||||||
|
let pid = substitute(system('pgrep -f "perl.*'
|
||||||
|
\ . mainfile . '" | head -n 1'),'\D','','')
|
||||||
|
let g:latexmk_running_pids[basepath] = pid
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" Execute command and check for errors
|
||||||
|
echo 'Compiling to ' . g:LatexBox_output_type . ' ... (async off!)'
|
||||||
|
call system(cmd)
|
||||||
|
call LatexBox_LatexErrors(v:shell_error)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Redraw screen if necessary
|
||||||
|
if !has("gui_running")
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" LatexmkClean {{{
|
||||||
|
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)
|
||||||
|
|
||||||
|
if has_key(g:latexmk_running_pids, basename)
|
||||||
|
echomsg "don't clean when latexmk is running"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has('win32')
|
||||||
|
let cmd = 'cd /D ' . shellescape(LatexBox_GetTexRoot()) . ' & '
|
||||||
|
else
|
||||||
|
let cmd = 'cd ' . shellescape(LatexBox_GetTexRoot()) . ';'
|
||||||
|
endif
|
||||||
|
if a:cleanall
|
||||||
|
let cmd .= 'latexmk -C '
|
||||||
|
else
|
||||||
|
let cmd .= 'latexmk -c '
|
||||||
|
endif
|
||||||
|
let cmd .= shellescape(LatexBox_GetMainTexFile())
|
||||||
|
if has('win32')
|
||||||
|
let cmd .= ' >nul'
|
||||||
|
else
|
||||||
|
let cmd .= ' >&/dev/null'
|
||||||
|
endif
|
||||||
|
|
||||||
|
call system(cmd)
|
||||||
|
if !has('gui_running')
|
||||||
|
redraw!
|
||||||
|
endif
|
||||||
|
|
||||||
|
echomsg "latexmk clean finished"
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" LatexErrors {{{
|
||||||
|
function! LatexBox_LatexErrors(status, ...)
|
||||||
|
if a:0 >= 1
|
||||||
|
let log = a:1 . '.log'
|
||||||
|
else
|
||||||
|
let log = LatexBox_GetLogFile()
|
||||||
|
endif
|
||||||
|
|
||||||
|
cclose
|
||||||
|
|
||||||
|
" set cwd to expand error file correctly
|
||||||
|
let l:cwd = fnamemodify(getcwd(), ':p')
|
||||||
|
execute 'lcd ' . fnameescape(LatexBox_GetTexRoot())
|
||||||
|
try
|
||||||
|
if g:LatexBox_autojump
|
||||||
|
execute 'cfile ' . fnameescape(log)
|
||||||
|
else
|
||||||
|
execute 'cgetfile ' . fnameescape(log)
|
||||||
|
endif
|
||||||
|
finally
|
||||||
|
" restore cwd
|
||||||
|
execute 'lcd ' . fnameescape(l:cwd)
|
||||||
|
endtry
|
||||||
|
|
||||||
|
" Always open window if started by LatexErrors command
|
||||||
|
if a:status < 0
|
||||||
|
botright copen
|
||||||
|
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
|
||||||
|
if g:LatexBox_quickfix
|
||||||
|
belowright cw
|
||||||
|
if g:LatexBox_quickfix==2
|
||||||
|
wincmd p
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" LatexmkStatus {{{
|
||||||
|
function! LatexBox_LatexmkStatus(detailed)
|
||||||
|
if a:detailed
|
||||||
|
if empty(g:latexmk_running_pids)
|
||||||
|
echo "latexmk is not running"
|
||||||
|
else
|
||||||
|
let plist = ""
|
||||||
|
for [basename, pid] in items(g:latexmk_running_pids)
|
||||||
|
if !empty(plist)
|
||||||
|
let plist .= '; '
|
||||||
|
endif
|
||||||
|
let plist .= fnamemodify(basename, ':t') . ':' . pid
|
||||||
|
endfor
|
||||||
|
echo "latexmk is running (" . plist . ")"
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let basename = LatexBox_GetTexBasename(1)
|
||||||
|
if has_key(g:latexmk_running_pids, basename)
|
||||||
|
echo "latexmk is running"
|
||||||
|
else
|
||||||
|
echo "latexmk is not running"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" LatexmkStop {{{
|
||||||
|
function! LatexBox_LatexmkStop(silent)
|
||||||
|
if empty(g:latexmk_running_pids)
|
||||||
|
if !a:silent
|
||||||
|
let basepath = LatexBox_GetTexBasename(1)
|
||||||
|
let basename = fnamemodify(basepath, ':t')
|
||||||
|
echoerr "latexmk is not running for `" . basename . "'"
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let basepath = LatexBox_GetTexBasename(1)
|
||||||
|
let basename = fnamemodify(basepath, ':t')
|
||||||
|
if has_key(g:latexmk_running_pids, basepath)
|
||||||
|
call s:kill_latexmk_process(g:latexmk_running_pids[basepath])
|
||||||
|
call remove(g:latexmk_running_pids, basepath)
|
||||||
|
if !a:silent
|
||||||
|
echomsg "latexmk stopped for `" . basename . "'"
|
||||||
|
endif
|
||||||
|
elseif !a:silent
|
||||||
|
echoerr "latexmk is not running for `" . basename . "'"
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Commands {{{
|
||||||
|
|
||||||
|
command! -bang Latexmk call LatexBox_Latexmk(<q-bang> == "!")
|
||||||
|
command! -bang LatexmkClean call LatexBox_LatexmkClean(<q-bang> == "!")
|
||||||
|
command! -bang LatexmkStatus call LatexBox_LatexmkStatus(<q-bang> == "!")
|
||||||
|
command! LatexmkStop call LatexBox_LatexmkStop(0)
|
||||||
|
command! LatexErrors call LatexBox_LatexErrors(-1)
|
||||||
|
|
||||||
|
if g:LatexBox_latexmk_async || g:LatexBox_latexmk_preview_continuously
|
||||||
|
autocmd BufUnload <buffer> call LatexBox_LatexmkStop(1)
|
||||||
|
autocmd VimLeave * call <SID>kill_all_latexmk_processes()
|
||||||
|
endif
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||||
100
ftplugin/latex-box/mappings.vim
Normal file
100
ftplugin/latex-box/mappings.vim
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
" LaTeX Box mappings
|
||||||
|
|
||||||
|
if exists("g:LatexBox_no_mappings")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" latexmk {{{
|
||||||
|
map <buffer> <LocalLeader>ll :Latexmk<CR>
|
||||||
|
map <buffer> <LocalLeader>lL :Latexmk!<CR>
|
||||||
|
map <buffer> <LocalLeader>lc :LatexmkClean<CR>
|
||||||
|
map <buffer> <LocalLeader>lC :LatexmkClean!<CR>
|
||||||
|
map <buffer> <LocalLeader>lg :LatexmkStatus<CR>
|
||||||
|
map <buffer> <LocalLeader>lG :LatexmkStatus!<CR>
|
||||||
|
map <buffer> <LocalLeader>lk :LatexmkStop<CR>
|
||||||
|
map <buffer> <LocalLeader>le :LatexErrors<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" View {{{
|
||||||
|
map <buffer> <LocalLeader>lv :LatexView<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" TOC {{{
|
||||||
|
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" List of labels {{{
|
||||||
|
map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Jump to match {{{
|
||||||
|
if !exists('g:LatexBox_loaded_matchparen')
|
||||||
|
nmap <buffer> % <Plug>LatexBox_JumpToMatch
|
||||||
|
vmap <buffer> % <Plug>LatexBox_JumpToMatch
|
||||||
|
omap <buffer> % <Plug>LatexBox_JumpToMatch
|
||||||
|
endif
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Define text objects {{{
|
||||||
|
vmap <buffer> ie <Plug>LatexBox_SelectCurrentEnvInner
|
||||||
|
vmap <buffer> ae <Plug>LatexBox_SelectCurrentEnvOuter
|
||||||
|
omap <buffer> ie :normal vie<CR>
|
||||||
|
omap <buffer> ae :normal vae<CR>
|
||||||
|
vmap <buffer> i$ <Plug>LatexBox_SelectInlineMathInner
|
||||||
|
vmap <buffer> a$ <Plug>LatexBox_SelectInlineMathOuter
|
||||||
|
omap <buffer> i$ :normal vi$<CR>
|
||||||
|
omap <buffer> a$ :normal va$<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Jump between sections {{{
|
||||||
|
function! s:LatexBoxNextSection(type, backwards, visual)
|
||||||
|
" Restore visual mode if desired
|
||||||
|
if a:visual
|
||||||
|
normal! gv
|
||||||
|
endif
|
||||||
|
|
||||||
|
" For the [] and ][ commands we move up or down before the search
|
||||||
|
if a:type == 1
|
||||||
|
if a:backwards
|
||||||
|
normal! k
|
||||||
|
else
|
||||||
|
normal! j
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Define search pattern and do the search while preserving "/
|
||||||
|
let save_search = @/
|
||||||
|
let flags = 'W'
|
||||||
|
if a:backwards
|
||||||
|
let flags = 'b' . flags
|
||||||
|
endif
|
||||||
|
let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
|
||||||
|
let pattern = notcomment . '\v\s*\\(' . join([
|
||||||
|
\ '(sub)*section',
|
||||||
|
\ 'chapter',
|
||||||
|
\ 'part',
|
||||||
|
\ 'appendix',
|
||||||
|
\ '(front|back|main)matter'], '|') . ')>'
|
||||||
|
call search(pattern, flags)
|
||||||
|
let @/ = save_search
|
||||||
|
|
||||||
|
" For the [] and ][ commands we move down or up after the search
|
||||||
|
if a:type == 1
|
||||||
|
if a:backwards
|
||||||
|
normal! j
|
||||||
|
else
|
||||||
|
normal! k
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
noremap <buffer> <silent> ]] :call <SID>LatexBoxNextSection(0,0,0)<CR>
|
||||||
|
noremap <buffer> <silent> ][ :call <SID>LatexBoxNextSection(1,0,0)<CR>
|
||||||
|
noremap <buffer> <silent> [] :call <SID>LatexBoxNextSection(1,1,0)<CR>
|
||||||
|
noremap <buffer> <silent> [[ :call <SID>LatexBoxNextSection(0,1,0)<CR>
|
||||||
|
vnoremap <buffer> <silent> ]] :<c-u>call <SID>LatexBoxNextSection(0,0,1)<CR>
|
||||||
|
vnoremap <buffer> <silent> ][ :<c-u>call <SID>LatexBoxNextSection(1,0,1)<CR>
|
||||||
|
vnoremap <buffer> <silent> [] :<c-u>call <SID>LatexBoxNextSection(1,1,1)<CR>
|
||||||
|
vnoremap <buffer> <silent> [[ :<c-u>call <SID>LatexBoxNextSection(0,1,1)<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||||
531
ftplugin/latex-box/motion.vim
Normal file
531
ftplugin/latex-box/motion.vim
Normal file
@@ -0,0 +1,531 @@
|
|||||||
|
" LaTeX Box motion functions
|
||||||
|
|
||||||
|
" Motion options {{{
|
||||||
|
" Opening and closing patterns
|
||||||
|
if !exists('g:LatexBox_open_pats')
|
||||||
|
let g:LatexBox_open_pats = [ '\\{','{','\\(','(','\\\[','\[',
|
||||||
|
\ '\\begin\s*{.\{-}}', '\\left\s*\%([^\\]\|\\.\|\\\a*\)']
|
||||||
|
let g:LatexBox_close_pats = [ '\\}','}','\\)',')','\\\]','\]',
|
||||||
|
\ '\\end\s*{.\{-}}', '\\right\s*\%([^\\]\|\\.\|\\\a*\)']
|
||||||
|
endif
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" HasSyntax {{{
|
||||||
|
" s:HasSyntax(syntaxName, [line], [col])
|
||||||
|
function! s:HasSyntax(syntaxName, ...)
|
||||||
|
let line = a:0 >= 1 ? a:1 : line('.')
|
||||||
|
let col = a:0 >= 2 ? a:2 : col('.')
|
||||||
|
return index(map(synstack(line, col),
|
||||||
|
\ 'synIDattr(v:val, "name") == "' . a:syntaxName . '"'),
|
||||||
|
\ 1) >= 0
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Search and Skip Comments {{{
|
||||||
|
" s:SearchAndSkipComments(pattern, [flags], [stopline])
|
||||||
|
function! s:SearchAndSkipComments(pat, ...)
|
||||||
|
let flags = a:0 >= 1 ? a:1 : ''
|
||||||
|
let stopline = a:0 >= 2 ? a:2 : 0
|
||||||
|
let saved_pos = getpos('.')
|
||||||
|
|
||||||
|
" search once
|
||||||
|
let ret = search(a:pat, flags, stopline)
|
||||||
|
|
||||||
|
if ret
|
||||||
|
" do not match at current position if inside comment
|
||||||
|
let flags = substitute(flags, 'c', '', 'g')
|
||||||
|
|
||||||
|
" keep searching while in comment
|
||||||
|
while LatexBox_InComment()
|
||||||
|
let ret = search(a:pat, flags, stopline)
|
||||||
|
if !ret
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !ret
|
||||||
|
" if no match found, restore position
|
||||||
|
call setpos('.', saved_pos)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ret
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Finding Matching Pair {{{
|
||||||
|
function! s:FindMatchingPair(mode)
|
||||||
|
|
||||||
|
if a:mode =~ 'h\|i'
|
||||||
|
2match none
|
||||||
|
elseif a:mode == 'v'
|
||||||
|
normal! gv
|
||||||
|
endif
|
||||||
|
|
||||||
|
if LatexBox_InComment() | return | endif
|
||||||
|
|
||||||
|
" open/close pairs (dollars signs are treated apart)
|
||||||
|
let dollar_pat = '\$'
|
||||||
|
let notbslash = '\%(\\\@<!\%(\\\\\)*\)\@<='
|
||||||
|
let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
|
||||||
|
let anymatch = '\('
|
||||||
|
\ . join(g:LatexBox_open_pats + g:LatexBox_close_pats, '\|')
|
||||||
|
\ . '\|' . dollar_pat . '\)'
|
||||||
|
|
||||||
|
let lnum = line('.')
|
||||||
|
let cnum = searchpos('\A', 'cbnW', lnum)[1]
|
||||||
|
" if the previous char is a backslash
|
||||||
|
if strpart(getline(lnum), cnum-2, 1) == '\'
|
||||||
|
let cnum = cnum-1
|
||||||
|
endif
|
||||||
|
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
||||||
|
|
||||||
|
if empty(delim) || strlen(delim)+cnum-1< col('.')
|
||||||
|
if a:mode =~ 'n\|v\|o'
|
||||||
|
" if not found, search forward
|
||||||
|
let cnum = match(getline(lnum), '\C'. anymatch , col('.') - 1) + 1
|
||||||
|
if cnum == 0 | return | endif
|
||||||
|
call cursor(lnum, cnum)
|
||||||
|
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
||||||
|
elseif a:mode =~ 'i'
|
||||||
|
" if not found, move one char bacward and search
|
||||||
|
let cnum = searchpos('\A', 'bnW', lnum)[1]
|
||||||
|
" if the previous char is a backslash
|
||||||
|
if strpart(getline(lnum), cnum-2, 1) == '\'
|
||||||
|
let cnum = cnum-1
|
||||||
|
endif
|
||||||
|
let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
|
||||||
|
if empty(delim) || strlen(delim)+cnum< col('.') | return | endif
|
||||||
|
elseif a:mode =~ 'h'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if delim =~ '^\$'
|
||||||
|
|
||||||
|
" match $-pairs
|
||||||
|
" check if next character is in inline math
|
||||||
|
let [lnum0, cnum0] = searchpos('.', 'nW')
|
||||||
|
if lnum0 && s:HasSyntax('texMathZoneX', lnum0, cnum0)
|
||||||
|
let [lnum2, cnum2] = searchpos(notcomment . notbslash. dollar_pat, 'nW', line('w$')*(a:mode =~ 'h\|i') , 200)
|
||||||
|
else
|
||||||
|
let [lnum2, cnum2] = searchpos('\%(\%'. lnum . 'l\%' . cnum . 'c\)\@!'. notcomment . notbslash . dollar_pat, 'bnW', line('w0')*(a:mode =~ 'h\|i') , 200)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:mode =~ 'h\|i'
|
||||||
|
execute '2match MatchParen /\%(\%' . lnum . 'l\%' . cnum . 'c\$' . '\|\%' . lnum2 . 'l\%' . cnum2 . 'c\$\)/'
|
||||||
|
elseif a:mode =~ 'n\|v\|o'
|
||||||
|
call cursor(lnum2,cnum2)
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
" match other pairs
|
||||||
|
for i in range(len(g:LatexBox_open_pats))
|
||||||
|
let open_pat = notbslash . g:LatexBox_open_pats[i]
|
||||||
|
let close_pat = notbslash . g:LatexBox_close_pats[i]
|
||||||
|
|
||||||
|
if delim =~# '^' . open_pat
|
||||||
|
" if on opening pattern, search for closing pattern
|
||||||
|
let [lnum2, cnum2] = searchpairpos('\C' . open_pat, '', '\C'
|
||||||
|
\ . close_pat, 'nW', 'LatexBox_InComment()',
|
||||||
|
\ line('w$')*(a:mode =~ 'h\|i') , 200)
|
||||||
|
if a:mode =~ 'h\|i'
|
||||||
|
execute '2match MatchParen /\%(\%' . lnum . 'l\%' . cnum
|
||||||
|
\ . 'c' . g:LatexBox_open_pats[i] . '\|\%'
|
||||||
|
\ . lnum2 . 'l\%' . cnum2 . 'c'
|
||||||
|
\ . g:LatexBox_close_pats[i] . '\)/'
|
||||||
|
elseif a:mode =~ 'n\|v\|o'
|
||||||
|
call cursor(lnum2,cnum2)
|
||||||
|
if strlen(close_pat)>1 && a:mode =~ 'o'
|
||||||
|
call cursor(lnum2, matchend(getline('.'), '\C'
|
||||||
|
\ . close_pat, col('.')-1))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
break
|
||||||
|
elseif delim =~# '^' . close_pat
|
||||||
|
" if on closing pattern, search for opening pattern
|
||||||
|
let [lnum2, cnum2] = searchpairpos('\C' . open_pat, '',
|
||||||
|
\ '\C\%(\%'. lnum . 'l\%' . cnum . 'c\)\@!'
|
||||||
|
\ . close_pat, 'bnW', 'LatexBox_InComment()',
|
||||||
|
\ line('w0')*(a:mode =~ 'h\|i') , 200)
|
||||||
|
if a:mode =~ 'h\|i'
|
||||||
|
execute '2match MatchParen /\%(\%' . lnum2 . 'l\%' . cnum2
|
||||||
|
\ . 'c' . g:LatexBox_open_pats[i] . '\|\%'
|
||||||
|
\ . lnum . 'l\%' . cnum . 'c'
|
||||||
|
\ . g:LatexBox_close_pats[i] . '\)/'
|
||||||
|
elseif a:mode =~ 'n\|v\|o'
|
||||||
|
call cursor(lnum2,cnum2)
|
||||||
|
endif
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Allow to disable functionality if desired
|
||||||
|
if !exists('g:LatexBox_loaded_matchparen')
|
||||||
|
" Disable matchparen autocommands
|
||||||
|
augroup LatexBox_HighlightPairs
|
||||||
|
autocmd BufEnter * if !exists("g:loaded_matchparen") || !g:loaded_matchparen | runtime plugin/matchparen.vim | endif
|
||||||
|
autocmd BufEnter *.tex 3match none | unlet! g:loaded_matchparen | au! matchparen
|
||||||
|
autocmd! CursorMoved *.tex call s:FindMatchingPair('h')
|
||||||
|
autocmd! CursorMovedI *.tex call s:FindMatchingPair('i')
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Use LatexBox'es FindMatchingPair as '%' (enable jump between e.g. $'s)
|
||||||
|
nnoremap <silent> <Plug>LatexBox_JumpToMatch :call <SID>FindMatchingPair('n')<CR>
|
||||||
|
vnoremap <silent> <Plug>LatexBox_JumpToMatch :call <SID>FindMatchingPair('v')<CR>
|
||||||
|
onoremap <silent> <Plug>LatexBox_JumpToMatch v:call <SID>FindMatchingPair('o')<CR>
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" select inline math {{{
|
||||||
|
" s:SelectInlineMath(seltype)
|
||||||
|
" where seltype is either 'inner' or 'outer'
|
||||||
|
function! s:SelectInlineMath(seltype)
|
||||||
|
|
||||||
|
let dollar_pat = '\\\@<!\$'
|
||||||
|
|
||||||
|
if s:HasSyntax('texMathZoneX')
|
||||||
|
call s:SearchAndSkipComments(dollar_pat, 'cbW')
|
||||||
|
elseif getline('.')[col('.') - 1] == '$'
|
||||||
|
call s:SearchAndSkipComments(dollar_pat, 'bW')
|
||||||
|
else
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:seltype == 'inner'
|
||||||
|
normal! l
|
||||||
|
endif
|
||||||
|
|
||||||
|
if visualmode() ==# 'V'
|
||||||
|
normal! V
|
||||||
|
else
|
||||||
|
normal! v
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:SearchAndSkipComments(dollar_pat, 'W')
|
||||||
|
|
||||||
|
if a:seltype == 'inner'
|
||||||
|
normal! h
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
vnoremap <silent> <Plug>LatexBox_SelectInlineMathInner
|
||||||
|
\ :<C-U>call <SID>SelectInlineMath('inner')<CR>
|
||||||
|
vnoremap <silent> <Plug>LatexBox_SelectInlineMathOuter
|
||||||
|
\ :<C-U>call <SID>SelectInlineMath('outer')<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" select current environment {{{
|
||||||
|
function! s:SelectCurrentEnv(seltype)
|
||||||
|
let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)
|
||||||
|
call cursor(lnum, cnum)
|
||||||
|
if a:seltype == 'inner'
|
||||||
|
if env =~ '^\'
|
||||||
|
call search('\\.\_\s*\S', 'eW')
|
||||||
|
else
|
||||||
|
call search('}\(\_\s*\[\_[^]]*\]\)\?\_\s*\S', 'eW')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if visualmode() ==# 'V'
|
||||||
|
normal! V
|
||||||
|
else
|
||||||
|
normal! v
|
||||||
|
endif
|
||||||
|
call cursor(lnum2, cnum2)
|
||||||
|
if a:seltype == 'inner'
|
||||||
|
call search('\S\_\s*', 'bW')
|
||||||
|
else
|
||||||
|
if env =~ '^\'
|
||||||
|
normal! l
|
||||||
|
else
|
||||||
|
call search('}', 'eW')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
vnoremap <silent> <Plug>LatexBox_SelectCurrentEnvInner :<C-U>call <SID>SelectCurrentEnv('inner')<CR>
|
||||||
|
vnoremap <silent> <Plug>LatexBox_SelectCurrentEnvOuter :<C-U>call <SID>SelectCurrentEnv('outer')<CR>
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Jump to the next braces {{{
|
||||||
|
"
|
||||||
|
function! LatexBox_JumpToNextBraces(backward)
|
||||||
|
let flags = ''
|
||||||
|
if a:backward
|
||||||
|
normal h
|
||||||
|
let flags .= 'b'
|
||||||
|
else
|
||||||
|
let flags .= 'c'
|
||||||
|
endif
|
||||||
|
if search('[][}{]', flags) > 0
|
||||||
|
normal l
|
||||||
|
endif
|
||||||
|
let prev = strpart(getline('.'), col('.') - 2, 1)
|
||||||
|
let next = strpart(getline('.'), col('.') - 1, 1)
|
||||||
|
if next =~ '[]}]' && prev !~ '[][{}]'
|
||||||
|
return "\<Right>"
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Table of Contents {{{
|
||||||
|
|
||||||
|
" Special UTF-8 conversion
|
||||||
|
function! s:ConvertBack(line)
|
||||||
|
let line = a:line
|
||||||
|
if exists('g:LatexBox_plaintext_toc')
|
||||||
|
"
|
||||||
|
" Substitute stuff like '\IeC{\"u}' to plain 'u'
|
||||||
|
"
|
||||||
|
let line = substitute(line, '\\IeC\s*{\\.\(.\)}', '\1', 'g')
|
||||||
|
else
|
||||||
|
"
|
||||||
|
" Substitute stuff like '\IeC{\"u}' to corresponding unicode symbols
|
||||||
|
"
|
||||||
|
for [pat, symbol] in s:ConvBackPats
|
||||||
|
let line = substitute(line, pat, symbol, 'g')
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
return line
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:ReadTOC(auxfile, texfile, ...)
|
||||||
|
let texfile = a:texfile
|
||||||
|
let prefix = fnamemodify(a:auxfile, ':p:h')
|
||||||
|
|
||||||
|
if a:0 != 2
|
||||||
|
let toc = []
|
||||||
|
let fileindices = { texfile : [] }
|
||||||
|
else
|
||||||
|
let toc = a:1
|
||||||
|
let fileindices = a:2
|
||||||
|
let fileindices[ texfile ] = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
for line in readfile(a:auxfile)
|
||||||
|
let included = matchstr(line, '^\\@input{\zs[^}]*\ze}')
|
||||||
|
if included != ''
|
||||||
|
" append the input TOX to `toc` and `fileindices`
|
||||||
|
let newaux = prefix . '/' . included
|
||||||
|
let newtex = fnamemodify(newaux, ':r') . '.tex'
|
||||||
|
call s:ReadTOC(newaux, newtex, toc, fileindices)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Parse statements like:
|
||||||
|
" \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}}
|
||||||
|
" \@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Section Title}}{pagenumber}}
|
||||||
|
" \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}{otherstuff}}
|
||||||
|
|
||||||
|
let line = matchstr(line,
|
||||||
|
\ '\\@writefile{toc}{\\contentsline\s*\zs.*\ze}\s*$')
|
||||||
|
if empty(line)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let tree = LatexBox_TexToTree(s:ConvertBack(line))
|
||||||
|
|
||||||
|
if len(tree) < 3
|
||||||
|
" unknown entry type: just skip it
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
" parse level
|
||||||
|
let level = tree[0][0]
|
||||||
|
" parse page
|
||||||
|
if !empty(tree[2])
|
||||||
|
let page = tree[2][0]
|
||||||
|
else
|
||||||
|
let page = ''
|
||||||
|
endif
|
||||||
|
" parse section number
|
||||||
|
let secnum = ''
|
||||||
|
if len(tree[1]) > 3 && empty(tree[1][1])
|
||||||
|
call remove(tree[1], 1)
|
||||||
|
endif
|
||||||
|
if len(tree[1]) > 1 && tree[1][0] =~ '\(numberline\|tocsection\)'
|
||||||
|
if !empty(tree[1][1])
|
||||||
|
let secnum = LatexBox_TreeToTex(tree[1][1])
|
||||||
|
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
||||||
|
let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
|
||||||
|
let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
|
||||||
|
endif
|
||||||
|
let tree = tree[1][2:]
|
||||||
|
else
|
||||||
|
let tree = tree[1]
|
||||||
|
endif
|
||||||
|
" parse section title
|
||||||
|
let text = LatexBox_TreeToTex(tree)
|
||||||
|
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
||||||
|
let text = substitute(text, '\*', '', 'g')
|
||||||
|
|
||||||
|
" add TOC entry
|
||||||
|
call add(fileindices[texfile], len(toc))
|
||||||
|
call add(toc, {'file': texfile,
|
||||||
|
\ 'level': level,
|
||||||
|
\ 'number': secnum,
|
||||||
|
\ 'text': text,
|
||||||
|
\ 'page': page})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return [toc, fileindices]
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LatexBox_TOC(...)
|
||||||
|
|
||||||
|
" Check if window already exists
|
||||||
|
let winnr = bufwinnr(bufnr('LaTeX TOC'))
|
||||||
|
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 TOC window
|
||||||
|
if g:LatexBox_split_resize
|
||||||
|
silent exe "set columns-=" . g:LatexBox_split_width
|
||||||
|
endif
|
||||||
|
silent execute 'bwipeout' . bufnr('LaTeX TOC')
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Read TOC
|
||||||
|
let [toc, fileindices] = s:ReadTOC(LatexBox_GetAuxFile(),
|
||||||
|
\ LatexBox_GetMainTexFile())
|
||||||
|
let calling_buf = bufnr('%')
|
||||||
|
|
||||||
|
" Find closest section in current buffer
|
||||||
|
let closest_index = s:FindClosestSection(toc,fileindices)
|
||||||
|
|
||||||
|
" Create TOC 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\ TOC'
|
||||||
|
let b:toc = toc
|
||||||
|
let b:toc_numbers = 1
|
||||||
|
let b:calling_win = bufwinnr(calling_buf)
|
||||||
|
setlocal filetype=latextoc
|
||||||
|
|
||||||
|
" Add TOC entries and jump to the closest section
|
||||||
|
for entry in toc
|
||||||
|
call append('$', entry['number'] . "\t" . entry['text'])
|
||||||
|
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 _
|
||||||
|
|
||||||
|
execute 'normal! ' . (closest_index + 1) . 'G'
|
||||||
|
|
||||||
|
" Lock buffer
|
||||||
|
setlocal nomodifiable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Binary search for the closest section
|
||||||
|
" return the index of the TOC entry
|
||||||
|
function! s:FindClosestSection(toc, fileindices)
|
||||||
|
let file = expand('%:p')
|
||||||
|
if !has_key(a:fileindices, file)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let imax = len(a:fileindices[file])
|
||||||
|
if imax > 0
|
||||||
|
let imin = 0
|
||||||
|
while imin < imax - 1
|
||||||
|
let i = (imax + imin) / 2
|
||||||
|
let tocindex = a:fileindices[file][i]
|
||||||
|
let entry = a:toc[tocindex]
|
||||||
|
let titlestr = entry['text']
|
||||||
|
let titlestr = escape(titlestr, '\')
|
||||||
|
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
||||||
|
let [lnum, cnum] = searchpos('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'nW')
|
||||||
|
if lnum
|
||||||
|
let imax = i
|
||||||
|
else
|
||||||
|
let imin = i
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return a:fileindices[file][imin]
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
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 {{{
|
||||||
|
command! LatexTOC call LatexBox_TOC()
|
||||||
|
command! LatexTOCToggle call LatexBox_TOC(1)
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||||
@@ -1,265 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: bibtex.vim
|
|
||||||
" Function: BibT
|
|
||||||
" Author: Alan G Isaac <aisaac@american.edu>
|
|
||||||
" modified by Srinath Avadhanula for latex-suite.
|
|
||||||
" License: Vim Charityware license.
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
" Fields:
|
|
||||||
" Define what field type each letter denotes {{{
|
|
||||||
"
|
|
||||||
let s:w_standsfor = 'address'
|
|
||||||
let s:a_standsfor = 'author'
|
|
||||||
let s:b_standsfor = 'booktitle'
|
|
||||||
let s:c_standsfor = 'chapter'
|
|
||||||
let s:d_standsfor = 'edition'
|
|
||||||
let s:e_standsfor = 'editor'
|
|
||||||
let s:h_standsfor = 'howpublished'
|
|
||||||
let s:i_standsfor = 'institution'
|
|
||||||
let s:k_standsfor = 'isbn'
|
|
||||||
let s:j_standsfor = 'journal'
|
|
||||||
let s:m_standsfor = 'month'
|
|
||||||
let s:n_standsfor = 'number'
|
|
||||||
let s:o_standsfor = 'organization'
|
|
||||||
let s:p_standsfor = 'pages'
|
|
||||||
let s:q_standsfor = 'publisher'
|
|
||||||
let s:r_standsfor = 'school'
|
|
||||||
let s:s_standsfor = 'series'
|
|
||||||
let s:t_standsfor = 'title'
|
|
||||||
let s:u_standsfor = 'type'
|
|
||||||
let s:v_standsfor = 'volume'
|
|
||||||
let s:y_standsfor = 'year'
|
|
||||||
let s:z_standsfor = 'note'
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Define the fields required for the various entry types {{{
|
|
||||||
"
|
|
||||||
" s:{type}_required defines the required fields
|
|
||||||
" s:{type}_optional1 defines common optional fields
|
|
||||||
" s:{type}_optional2 defines uncommmon optional fields
|
|
||||||
" s:{type}_retval defines the first line of the formatted bib entry.
|
|
||||||
"
|
|
||||||
let s:key='<+key+>'
|
|
||||||
|
|
||||||
let s:{'article'}_required="atjy"
|
|
||||||
let s:{'article'}_optional1="vnpm"
|
|
||||||
let s:{'article'}_optional2="z" " z is note
|
|
||||||
let s:{'article'}_retval = '@ARTICLE{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'book'}_required="aetqy" " requires author *or* editor
|
|
||||||
let s:{'book'}_optional1="wd"
|
|
||||||
let s:{'book'}_optional2="vnsmz" " w is address, d is edition
|
|
||||||
let s:{'book'}_extras="k" " isbn
|
|
||||||
let s:{'book'}_retval = '@BOOK{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'booklet'}_required="t"
|
|
||||||
let s:{'booklet'}_optional1="ahy"
|
|
||||||
let s:{'booklet'}_optional2="wmz" " w is address
|
|
||||||
let s:{'booklet'}_retval = '@BOOKLET{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'inbook'}_required="aetcpqy"
|
|
||||||
let s:{'inbook'}_optional1="w" " w is address
|
|
||||||
let s:{'inbook'}_optional2="vnsudmz" " d is edition
|
|
||||||
let s:{'inbook'}_extras="k" " isbn
|
|
||||||
let s:{'inbook'}_retval = '@INBOOK{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'incollection'}_required="atbqy" " b is booktitle
|
|
||||||
let s:{'incollection'}_optional1="cpw" " w is address, c is chapter
|
|
||||||
let s:{'incollection'}_optional2="evnsudmz" " d is edition
|
|
||||||
let s:{'incollection'}_extras="k" " isbn
|
|
||||||
let s:{'incollection'}_retval = '@INCOLLECTION{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'inproceedings'}_required="atby" " b is booktitle
|
|
||||||
let s:{'inproceedings'}_optional1="epwoq" " w is address, q is publisher
|
|
||||||
let s:{'inproceedings'}_optional2="vnsmz"
|
|
||||||
let s:{'inproceedings'}_extras="k" " isbn
|
|
||||||
let s:{'inproceedings'}_retval = '@INPROCEEDINGS{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'conference'}_required="atby" " b is booktitle
|
|
||||||
let s:{'conference'}_optional1="epwoq" " w is address, q is publisher
|
|
||||||
let s:{'conference'}_optional2="vnsmz"
|
|
||||||
let s:{'conference'}_extras="k" " isbn
|
|
||||||
let s:{'conference'}_retval = '@CONFERENCE{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'manual'}_required="t"
|
|
||||||
let s:{'manual'}_optional1="ow"
|
|
||||||
let s:{'manual'}_optional2="admyz" " w is address
|
|
||||||
let s:{'manual'}_retval = '@MANUAL{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'msthesis'}_required="atry" " r is school
|
|
||||||
let s:{'msthesis'}_optional1="w" " w is address
|
|
||||||
let s:{'msthesis'}_optional2="umz" " u is type, w is address
|
|
||||||
let s:{'msthesis'}_retval = '@MASTERSTHESIS{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'misc'}_required=""
|
|
||||||
let s:{'misc'}_optional1="ath"
|
|
||||||
let s:{'misc'}_optional2="myz"
|
|
||||||
let s:{'misc'}_retval = '@MISC{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'phdthesis'}_required="atry" " r is school
|
|
||||||
let s:{'phdthesis'}_optional1="w" " w is address
|
|
||||||
let s:{'phdthesis'}_optional2="umz" " u is type
|
|
||||||
let s:{'phdthesis'}_retval = '@PHDTHESIS{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'proceedings'}_required="ty"
|
|
||||||
let s:{'proceedings'}_optional1="ewo" " w is address
|
|
||||||
let s:{'proceedings'}_optional2="vnsmqz" " q is publisher
|
|
||||||
let s:{'proceedings'}_retval = '@PROCEEDINGS{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'techreport'}_required="atiy"
|
|
||||||
let s:{'techreport'}_optional1="unw" " u is type, w is address
|
|
||||||
let s:{'techreport'}_optional2="mz"
|
|
||||||
let s:{'techreport'}_retval = '@TECHREPORT{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
let s:{'unpublished'}_required="atz"
|
|
||||||
let s:{'unpublished'}_optional1="y"
|
|
||||||
let s:{'unpublished'}_optional2="m"
|
|
||||||
let s:{'unpublished'}_retval = '@UNPUBLISHED{' . s:key . ','."\n"
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
if exists('s:done')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let s:done = 1
|
|
||||||
|
|
||||||
call IMAP ('BBB', "\<C-r>=BibT('', '', 0)\<CR>", 'bib')
|
|
||||||
call IMAP ('BBL', "\<C-r>=BibT('', 'o', 0)\<CR>", 'bib')
|
|
||||||
call IMAP ('BBH', "\<C-r>=BibT('', 'O', 0)\<CR>", 'bib')
|
|
||||||
call IMAP ('BBX', "\<C-r>=BibT('', 'Ox', 0)\<CR>", 'bib')
|
|
||||||
|
|
||||||
" BibT: function to generate a formatted bibtex entry {{{
|
|
||||||
" three sample usages:
|
|
||||||
" :call BibT() will request type choice
|
|
||||||
" :call BibT("article") preferred, provides most common fields
|
|
||||||
" :call BibT("article","ox") more optional fields (o) and extras (x)
|
|
||||||
"
|
|
||||||
" Input Arguments:
|
|
||||||
" type: is one of the types listed above. (this should be a complete name, not
|
|
||||||
" the acronym).
|
|
||||||
" options: a string containing 0 or more of the letters 'oOx'
|
|
||||||
" where
|
|
||||||
" o: include a bib entry with first set of options
|
|
||||||
" O: include a bib entry with extended options
|
|
||||||
" x: incude bib entry with extra options
|
|
||||||
" prompt: whether the fields are asked to be filled on the command prompt or
|
|
||||||
" whether place-holders are used. when prompt == 1, then comman line
|
|
||||||
" questions are used.
|
|
||||||
"
|
|
||||||
" Returns:
|
|
||||||
" a string containing a formatted bib entry
|
|
||||||
function BibT(type, options, prompt)
|
|
||||||
if a:type != ''
|
|
||||||
let choosetype = a:type
|
|
||||||
else
|
|
||||||
let types =
|
|
||||||
\ 'article'."\n".
|
|
||||||
\ 'booklet'."\n".
|
|
||||||
\ 'book'."\n".
|
|
||||||
\ 'conference'."\n".
|
|
||||||
\ 'inbook'."\n".
|
|
||||||
\ 'incollection'."\n".
|
|
||||||
\ 'inproceedings'."\n".
|
|
||||||
\ 'manual'."\n".
|
|
||||||
\ 'msthesis'."\n".
|
|
||||||
\ 'misc'."\n".
|
|
||||||
\ 'phdthesis'."\n".
|
|
||||||
\ 'proceedings'."\n".
|
|
||||||
\ 'techreport'."\n".
|
|
||||||
\ 'unpublished'
|
|
||||||
let choosetype = Tex_ChooseFromPrompt(
|
|
||||||
\ "Choose the type of bibliographic entry: \n" .
|
|
||||||
\ Tex_CreatePrompt(types, 3, "\n") .
|
|
||||||
\ "\nEnter number or filename :",
|
|
||||||
\ types, "\n")
|
|
||||||
if choosetype == ''
|
|
||||||
let choosetype = 'article'
|
|
||||||
endif
|
|
||||||
if types !~ '^\|\n'.choosetype.'$\|\n'
|
|
||||||
echomsg 'Please choose only one of the given types'
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if a:options != ''
|
|
||||||
let options = a:options
|
|
||||||
else
|
|
||||||
let options = ""
|
|
||||||
endif
|
|
||||||
|
|
||||||
let fields = ''
|
|
||||||
let extras=""
|
|
||||||
let retval = ""
|
|
||||||
|
|
||||||
" define fields
|
|
||||||
let fields = s:{choosetype}_required
|
|
||||||
if options =~ 'o' && exists('s:'.choosetype.'_optional1')
|
|
||||||
let fields = fields . s:{choosetype}_optional1
|
|
||||||
endif
|
|
||||||
if options =~ "O" && exists('s:'.choosetype.'_optional2')
|
|
||||||
if options !~ 'o'&& exists('s:'.choosetype.'_optional1')
|
|
||||||
let fields = fields . s:{choosetype}_optional1
|
|
||||||
endif
|
|
||||||
let fields = fields . s:{choosetype}_optional2
|
|
||||||
endif
|
|
||||||
if options =~ "x" && exists('s:'.choosetype.'_extras')
|
|
||||||
let fields = fields . extras
|
|
||||||
endif
|
|
||||||
if exists('g:Bib_'.choosetype.'_options')
|
|
||||||
let fields = fields . g:Bib_{choosetype}_options
|
|
||||||
endif
|
|
||||||
|
|
||||||
let retval = s:{choosetype}_retval
|
|
||||||
|
|
||||||
let i = 0
|
|
||||||
while i < strlen(fields)
|
|
||||||
let field = strpart(fields, i, 1)
|
|
||||||
|
|
||||||
if exists('s:'.field.'_standsfor')
|
|
||||||
let field_name = s:{field}_standsfor
|
|
||||||
let retval = retval.field_name." = {<++>},\n"
|
|
||||||
endif
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" If the user wants even more fine-tuning...
|
|
||||||
if Tex_GetVarValue('Bib_'.choosetype.'_extrafields') != ''
|
|
||||||
|
|
||||||
let extrafields = Tex_GetVarValue('Bib_'.choosetype.'_extrafields')
|
|
||||||
|
|
||||||
let i = 1
|
|
||||||
while 1
|
|
||||||
let field_name = Tex_Strntok(extrafields, "\n", i)
|
|
||||||
if field_name == ''
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let retval = retval.field_name." = {<++>},\n"
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
let retval = retval.'otherinfo = {<++>}'."\n"
|
|
||||||
let retval = retval."}<++>"."\n"
|
|
||||||
|
|
||||||
return IMAP_PutTextWithMovement(retval)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
function! s:Input(prompt, ask) " {{{
|
|
||||||
if a:ask == 1
|
|
||||||
let retval = input(a:prompt)
|
|
||||||
if retval == ''
|
|
||||||
return "<++>"
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
return "<++>"
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
" ==============================================================================
|
|
||||||
" History: This was originally part of auctex.vim by Carl Mueller.
|
|
||||||
" Srinath Avadhanula incorporated it into latex-suite with
|
|
||||||
" significant modifications.
|
|
||||||
" Parts of this file may be copyrighted by others as noted.
|
|
||||||
" Description:
|
|
||||||
" This ftplugin provides the following maps:
|
|
||||||
" . <M-b> encloses the previous character in \mathbf{}
|
|
||||||
" . <M-c> is polymorphic as follows:
|
|
||||||
" Insert mode:
|
|
||||||
" 1. If the previous character is a letter or number, then capitalize it and
|
|
||||||
" enclose it in \mathcal{}
|
|
||||||
" 2. otherwise insert \cite{}
|
|
||||||
" Visual Mode:
|
|
||||||
" 1. Enclose selection in \mathcal{}
|
|
||||||
" . <M-l> is also polymorphic as follows:
|
|
||||||
" If the character before typing <M-l> is one of '([{|<q', then do the
|
|
||||||
" following:
|
|
||||||
" 1. (<M-l> \left(\right
|
|
||||||
" similarly for [, |
|
|
||||||
" {<M-l> \left\{\right\}
|
|
||||||
" 2. <<M-l> \langle\rangle
|
|
||||||
" 3. q<M-l> \lefteqn{}
|
|
||||||
" otherwise insert \label{}
|
|
||||||
" . <M-i> inserts \item commands at the current cursor location depending on
|
|
||||||
" the surrounding environment. For example, inside itemize, it will
|
|
||||||
" insert a simple \item, but within a description, it will insert
|
|
||||||
" \item[<+label+>] etc.
|
|
||||||
"
|
|
||||||
" These functions make it extremeley easy to do all the \left \right stuff in
|
|
||||||
" latex.
|
|
||||||
" ==============================================================================
|
|
||||||
|
|
||||||
" Avoid reinclusion.
|
|
||||||
if exists('b:did_brackets')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let b:did_brackets = 1
|
|
||||||
|
|
||||||
" define the funtions only once.
|
|
||||||
if exists('*Tex_MathBF')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Tex_MathBF: encloses te previous letter/number in \mathbf{} {{{
|
|
||||||
" Description:
|
|
||||||
function! Tex_MathBF()
|
|
||||||
return "\<Left>\\mathbf{\<Right>}"
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_MathCal: enclose the previous letter/number in \mathcal {{{
|
|
||||||
" Description:
|
|
||||||
" if the last character is not a letter/number, then insert \cite{}
|
|
||||||
function! Tex_MathCal()
|
|
||||||
let line = getline(line("."))
|
|
||||||
let char = line[col(".")-2]
|
|
||||||
|
|
||||||
if char =~ '[a-zA-Z0-9]'
|
|
||||||
return "\<BS>".'\mathcal{'.toupper(char).'}'
|
|
||||||
else
|
|
||||||
return IMAP_PutTextWithMovement('\cite{<++>}<++>')
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
" Tex_LeftRight: maps <M-l> in insert mode. {{{
|
|
||||||
" Description:
|
|
||||||
" This is a polymorphic function, which maps the behaviour of <M-l> in the
|
|
||||||
" following way:
|
|
||||||
" If the character before typing <M-l> is one of '([{|<q', then do the
|
|
||||||
" following:
|
|
||||||
" 1. (<M-l> \left(<++>\right<++>
|
|
||||||
" similarly for [, |
|
|
||||||
" {<M-l> \left\{<++>\right\}<++>
|
|
||||||
" 2. <<M-l> \langle<++>\rangle<++>
|
|
||||||
" 3. q<M-l> \lefteqn{<++>}<++>
|
|
||||||
" otherwise insert \label{<++>}<++>
|
|
||||||
function! Tex_LeftRight()
|
|
||||||
let line = getline(line("."))
|
|
||||||
let char = line[col(".")-2]
|
|
||||||
let previous = line[col(".")-3]
|
|
||||||
|
|
||||||
let matchedbrackets = '()[]{}||'
|
|
||||||
if char =~ '(\|\[\|{\||'
|
|
||||||
let add = ''
|
|
||||||
if char =~ '{'
|
|
||||||
let add = "\\"
|
|
||||||
endif
|
|
||||||
let rhs = matchstr(matchedbrackets, char.'\zs.\ze')
|
|
||||||
return "\<BS>".IMAP_PutTextWithMovement('\left'.add.char.'<++>\right'.add.rhs.'<++>')
|
|
||||||
elseif char == '<'
|
|
||||||
return "\<BS>".IMAP_PutTextWithMovement('\langle <++>\rangle<++>')
|
|
||||||
elseif char == 'q'
|
|
||||||
return "\<BS>".IMAP_PutTextWithMovement('\lefteqn{<++>}<++>')
|
|
||||||
else
|
|
||||||
return IMAP_PutTextWithMovement('\label{<++>}<++>')
|
|
||||||
endif
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_PutLeftRight: maps <M-l> in normal mode {{{
|
|
||||||
" Description:
|
|
||||||
" Put \left...\right in front of the matched brackets.
|
|
||||||
function! Tex_PutLeftRight()
|
|
||||||
let previous = getline(line("."))[col(".") - 2]
|
|
||||||
let char = getline(line("."))[col(".") - 1]
|
|
||||||
if previous == '\'
|
|
||||||
if char == '{'
|
|
||||||
exe "normal ileft\\\<Esc>l%iright\\\<Esc>l%"
|
|
||||||
elseif char == '}'
|
|
||||||
exe "normal iright\\\<Esc>l%ileft\\\<Esc>l%"
|
|
||||||
endif
|
|
||||||
elseif char =~ '\[\|('
|
|
||||||
exe "normal i\\left\<Esc>l%i\\right\<Esc>l%"
|
|
||||||
elseif char =~ '\]\|)'
|
|
||||||
exe "normal i\\right\<Esc>l%i\\left\<Esc>l%"
|
|
||||||
endif
|
|
||||||
endfunction " }}}
|
|
||||||
|
|
||||||
" Provide <plug>'d mapping for easy user customization. {{{
|
|
||||||
inoremap <silent> <Plug>Tex_MathBF <C-r>=Tex_MathBF()<CR>
|
|
||||||
inoremap <silent> <Plug>Tex_MathCal <C-r>=Tex_MathCal()<CR>
|
|
||||||
inoremap <silent> <Plug>Tex_LeftRight <C-r>=Tex_LeftRight()<CR>
|
|
||||||
vnoremap <silent> <Plug>Tex_MathBF <C-C>`>a}<Esc>`<i\mathbf{<Esc>
|
|
||||||
vnoremap <silent> <Plug>Tex_MathCal <C-C>`>a}<Esc>`<i\mathcal{<Esc>
|
|
||||||
nnoremap <silent> <Plug>Tex_LeftRight :call Tex_PutLeftRight()<CR>
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_SetBracketingMaps: create mappings for the current buffer {{{
|
|
||||||
function! <SID>Tex_SetBracketingMaps()
|
|
||||||
|
|
||||||
call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'i', '<buffer> <silent>')
|
|
||||||
call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'i', '<buffer> <silent>')
|
|
||||||
call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'i', '<buffer> <silent>')
|
|
||||||
call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'v', '<buffer> <silent>')
|
|
||||||
call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'v', '<buffer> <silent>')
|
|
||||||
call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'n', '<buffer> <silent>')
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
augroup LatexSuite
|
|
||||||
au LatexSuite User LatexSuiteFileType
|
|
||||||
\ call Tex_Debug('brackets.vim: Catching LatexSuiteFileType event', 'brak') |
|
|
||||||
\ call <SID>Tex_SetBracketingMaps()
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" vim:fdm=marker
|
|
||||||
@@ -1,874 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: compiler.vim
|
|
||||||
" Author: Srinath Avadhanula
|
|
||||||
" Created: Tue Apr 23 05:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: functions for compiling/viewing/searching latex documents
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
" Tex_SetTeXCompilerTarget: sets the 'target' for the next call to Tex_RunLaTeX() {{{
|
|
||||||
function! Tex_SetTeXCompilerTarget(type, target)
|
|
||||||
call Tex_Debug("+Tex_SetTeXCompilerTarget: setting target to [".a:target."] for ".a:type."r", "comp")
|
|
||||||
|
|
||||||
if a:target == ''
|
|
||||||
let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
|
|
||||||
let target = input('Enter the target format for '.a:type.'r: ', target)
|
|
||||||
else
|
|
||||||
let target = a:target
|
|
||||||
endif
|
|
||||||
if target == ''
|
|
||||||
let target = 'dvi'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let targetRule = Tex_GetVarValue('Tex_'.a:type.'Rule_'.target)
|
|
||||||
|
|
||||||
if targetRule != ''
|
|
||||||
if a:type == 'Compile'
|
|
||||||
let &l:makeprg = escape(targetRule, Tex_GetVarValue('Tex_EscapeChars'))
|
|
||||||
elseif a:type == 'View'
|
|
||||||
let s:viewer = targetRule
|
|
||||||
endif
|
|
||||||
let s:target = target
|
|
||||||
|
|
||||||
elseif Tex_GetVarValue('Tex_'.a:type.'RuleComplete_'.target) != ''
|
|
||||||
let s:target = target
|
|
||||||
|
|
||||||
elseif a:type == 'View' && has('macunix')
|
|
||||||
" On the mac, we can have empty view rules, so do not complain when
|
|
||||||
" both Tex_ViewRule_target and Tex_ViewRuleComplete_target are
|
|
||||||
" empty. On other platforms, we will complain... see below.
|
|
||||||
let s:target = target
|
|
||||||
|
|
||||||
else
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
exe 'cd '.fnameescape(expand('%:p:h'))
|
|
||||||
if !Tex_GetVarValue('Tex_UseMakefile') || (glob('makefile*') == '' && glob('Makefile*') == '')
|
|
||||||
if has('gui_running')
|
|
||||||
call confirm(
|
|
||||||
\'No '.a:type.' rule defined for target '.target."\n".
|
|
||||||
\'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
|
|
||||||
\' :help Tex_'.a:type.'Rule_format'."\n".
|
|
||||||
\'for more information',
|
|
||||||
\"&ok", 1, 'Warning')
|
|
||||||
else
|
|
||||||
call input(
|
|
||||||
\'No '.a:type.' rule defined for target '.target."\n".
|
|
||||||
\'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
|
|
||||||
\' :help Tex_'.a:type.'Rule_format'."\n".
|
|
||||||
\'for more information'
|
|
||||||
\)
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
echomsg 'Assuming target is for makefile'
|
|
||||||
let s:target = target
|
|
||||||
endif
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetTeXTarget(...)
|
|
||||||
if a:0 < 1
|
|
||||||
let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
|
|
||||||
let target = input('Enter the target format for compiler and viewer: ', target)
|
|
||||||
else
|
|
||||||
let target = a:1
|
|
||||||
endif
|
|
||||||
if target == ''
|
|
||||||
let target = 'dvi'
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_SetTeXCompilerTarget('Compile', target)
|
|
||||||
call Tex_SetTeXCompilerTarget('View', target)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
com! -nargs=1 TCTarget :call Tex_SetTeXCompilerTarget('Compile', <f-args>)
|
|
||||||
com! -nargs=1 TVTarget :call Tex_SetTeXCompilerTarget('View', <f-args>)
|
|
||||||
com! -nargs=? TTarget :call SetTeXTarget(<f-args>)
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_CompileLatex: compiles the present file. {{{
|
|
||||||
" Description:
|
|
||||||
function! Tex_CompileLatex()
|
|
||||||
if &ft != 'tex'
|
|
||||||
echo "calling Tex_RunLaTeX from a non-tex file"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
" close any preview windows left open.
|
|
||||||
pclose!
|
|
||||||
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
|
|
||||||
" Find the main file corresponding to this file. Always cd to the
|
|
||||||
" directory containing the file to avoid problems with the directory
|
|
||||||
" containing spaces.
|
|
||||||
" Latex on linux seems to be unable to handle file names with spaces at
|
|
||||||
" all! Therefore for the moment, do not attempt to handle spaces in the
|
|
||||||
" file name.
|
|
||||||
if exists('b:fragmentFile')
|
|
||||||
let mainfname = expand('%:p:t')
|
|
||||||
call Tex_CD(expand('%:p:h'))
|
|
||||||
else
|
|
||||||
let mainfname = Tex_GetMainFileName(':p:t')
|
|
||||||
call Tex_CD(Tex_GetMainFileName(':p:h'))
|
|
||||||
end
|
|
||||||
|
|
||||||
call Tex_Debug('Tex_CompileLatex: getting mainfname = ['.mainfname.'] from Tex_GetMainFileName', 'comp')
|
|
||||||
|
|
||||||
" if a makefile exists and the user wants to use it, then use that
|
|
||||||
" irrespective of whether *.latexmain exists or not. mainfname is still
|
|
||||||
" extracted from *.latexmain (if possible) log file name depends on the
|
|
||||||
" main file which will be compiled.
|
|
||||||
if Tex_GetVarValue('Tex_UseMakefile') && (glob('makefile') != '' || glob('Makefile') != '')
|
|
||||||
let _makeprg = &l:makeprg
|
|
||||||
call Tex_Debug("Tex_CompileLatex: using the makefile in the current directory", "comp")
|
|
||||||
let &l:makeprg = 'make $*'
|
|
||||||
if exists('s:target')
|
|
||||||
call Tex_Debug('Tex_CompileLatex: execing [make! '.s:target.']', 'comp')
|
|
||||||
exec 'make! '.s:target
|
|
||||||
else
|
|
||||||
call Tex_Debug('Tex_CompileLatex: execing [make!]', 'comp')
|
|
||||||
exec 'make!'
|
|
||||||
endif
|
|
||||||
let &l:makeprg = _makeprg
|
|
||||||
else
|
|
||||||
" If &makeprg has something like "$*.ps", it means that it wants the
|
|
||||||
" file-name without the extension... Therefore remove it.
|
|
||||||
if &makeprg =~ '\$\*\.\w\+'
|
|
||||||
let mainfname = fnamemodify(mainfname, ':r')
|
|
||||||
endif
|
|
||||||
call Tex_Debug('Tex_CompileLatex: execing [make! '.mainfname.']', 'comp')
|
|
||||||
exec 'make! '.mainfname
|
|
||||||
endif
|
|
||||||
redraw!
|
|
||||||
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_RunLaTeX: compilation function {{{
|
|
||||||
" this function runs the latex command on the currently open file. often times
|
|
||||||
" the file being currently edited is only a fragment being \input'ed into some
|
|
||||||
" master tex file. in this case, make a file called mainfile.latexmain in the
|
|
||||||
" directory containig the file. in other words, if the current file is
|
|
||||||
" ~/thesis/chapter.tex
|
|
||||||
" so that doing "latex chapter.tex" doesnt make sense, then make a file called
|
|
||||||
" main.tex.latexmain
|
|
||||||
" in the ~/thesis directory. this will then run "latex main.tex" when
|
|
||||||
" Tex_RunLaTeX() is called.
|
|
||||||
function! Tex_RunLaTeX()
|
|
||||||
call Tex_Debug('+Tex_RunLaTeX, b:fragmentFile = '.exists('b:fragmentFile'), 'comp')
|
|
||||||
|
|
||||||
let dir = expand("%:p:h").'/'
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
call Tex_CD(expand("%:p:h"))
|
|
||||||
|
|
||||||
let initTarget = s:target
|
|
||||||
|
|
||||||
" first get the dependency chain of this format.
|
|
||||||
call Tex_Debug("Tex_RunLaTeX: compiling to target [".s:target."]", "comp")
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_FormatDependency_'.s:target) != ''
|
|
||||||
let dependency = Tex_GetVarValue('Tex_FormatDependency_'.s:target)
|
|
||||||
if dependency !~ ','.s:target.'$'
|
|
||||||
let dependency = dependency.','.s:target
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let dependency = s:target
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_Debug('Tex_RunLaTeX: getting dependency chain = ['.dependency.']', 'comp')
|
|
||||||
|
|
||||||
" now compile to the final target format via each dependency.
|
|
||||||
let i = 1
|
|
||||||
while Tex_Strntok(dependency, ',', i) != ''
|
|
||||||
let s:target = Tex_Strntok(dependency, ',', i)
|
|
||||||
|
|
||||||
call Tex_SetTeXCompilerTarget('Compile', s:target)
|
|
||||||
call Tex_Debug('Tex_RunLaTeX: setting target to '.s:target, 'comp')
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_MultipleCompileFormats') =~ '\<'.s:target.'\>'
|
|
||||||
call Tex_Debug("Tex_RunLaTeX: compiling file multiple times via Tex_CompileMultipleTimes", "comp")
|
|
||||||
call Tex_CompileMultipleTimes()
|
|
||||||
else
|
|
||||||
call Tex_Debug("Tex_RunLaTeX: compiling file once via Tex_CompileLatex", "comp")
|
|
||||||
call Tex_CompileLatex()
|
|
||||||
endif
|
|
||||||
|
|
||||||
let errlist = Tex_GetErrorList()
|
|
||||||
call Tex_Debug("Tex_RunLaTeX: errlist = [".errlist."]", "comp")
|
|
||||||
|
|
||||||
" If there are any errors, then break from the rest of the steps
|
|
||||||
if errlist =~ '\v(error|warning)'
|
|
||||||
call Tex_Debug('Tex_RunLaTeX: There were errors in compiling, breaking chain...', 'comp')
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
let s:target = initTarget
|
|
||||||
let s:origwinnum = winnr()
|
|
||||||
call Tex_SetupErrorWindow()
|
|
||||||
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
call Tex_Debug("-Tex_RunLaTeX", "comp")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_ViewLaTeX: opens viewer {{{
|
|
||||||
" Description: opens the DVI viewer for the file being currently edited.
|
|
||||||
" Again, if the current file is a \input in a master file, see text above
|
|
||||||
" Tex_RunLaTeX() to see how to set this information.
|
|
||||||
function! Tex_ViewLaTeX()
|
|
||||||
if &ft != 'tex'
|
|
||||||
echo "calling Tex_ViewLaTeX from a non-tex file"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
|
|
||||||
" If b:fragmentFile is set, it means this file was compiled as a fragment
|
|
||||||
" using Tex_PartCompile, which means that we want to ignore any
|
|
||||||
" *.latexmain or makefile's.
|
|
||||||
if !exists('b:fragmentFile')
|
|
||||||
" cd to the location of the file to avoid having to deal with spaces
|
|
||||||
" in the directory name.
|
|
||||||
let mainfname = Tex_GetMainFileName(':p:t:r')
|
|
||||||
call Tex_CD(Tex_GetMainFileName(':p:h'))
|
|
||||||
else
|
|
||||||
let mainfname = expand("%:p:t:r")
|
|
||||||
call Tex_CD(expand("%:p:h"))
|
|
||||||
endif
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target) != ''
|
|
||||||
|
|
||||||
let execString = Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target)
|
|
||||||
let execString = substitute(execString, '{v:servername}', v:servername, 'g')
|
|
||||||
|
|
||||||
elseif has('win32')
|
|
||||||
" unfortunately, yap does not allow the specification of an external
|
|
||||||
" editor from the command line. that would have really helped ensure
|
|
||||||
" that this particular vim and yap are connected.
|
|
||||||
let execString = 'start '.s:viewer.' "$*.'.s:target.'"'
|
|
||||||
|
|
||||||
elseif (has('macunix') && Tex_GetVarValue('Tex_TreatMacViewerAsUNIX') != 1)
|
|
||||||
|
|
||||||
if strlen(s:viewer)
|
|
||||||
let appOpt = '-a '
|
|
||||||
else
|
|
||||||
let appOpt = ''
|
|
||||||
endif
|
|
||||||
let execString = 'open '.appOpt.s:viewer.' $*.'.s:target
|
|
||||||
|
|
||||||
else
|
|
||||||
" taken from Dimitri Antoniou's tip on vim.sf.net (tip #225).
|
|
||||||
" slight change to actually use the current servername instead of
|
|
||||||
" hardcoding it as xdvi.
|
|
||||||
" Using an option for specifying the editor in the command line
|
|
||||||
" because that seems to not work on older bash'es.
|
|
||||||
if s:target == 'dvi'
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
|
|
||||||
\ v:servername != '' &&
|
|
||||||
\ s:viewer =~ '^ *xdvik\?\( \|$\)'
|
|
||||||
|
|
||||||
let execString = s:viewer.' -editor "gvim --servername '.v:servername.
|
|
||||||
\ ' --remote-silent +\%l \%f" $*.dvi'
|
|
||||||
|
|
||||||
elseif Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
|
|
||||||
\ s:viewer =~ '^ *kdvi\( \|$\)'
|
|
||||||
|
|
||||||
let execString = s:viewer.' --unique $*.dvi'
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
let execString = s:viewer.' $*.dvi'
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
let execString = s:viewer.' $*.'.s:target
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
|
|
||||||
let execString = execString.' &'
|
|
||||||
endif
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
let execString = substitute(execString, '\V$*', mainfname, 'g')
|
|
||||||
call Tex_Debug("Tex_ViewLaTeX: execString = ".execString, "comp")
|
|
||||||
|
|
||||||
exec 'silent! !'.execString
|
|
||||||
|
|
||||||
if !has('gui_running')
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_ForwardSearchLaTeX: searches for current location in dvi file. {{{
|
|
||||||
" Description: if the DVI viewer is compatible, then take the viewer to that
|
|
||||||
" position in the dvi file. see docs for Tex_RunLaTeX() to set a
|
|
||||||
" master file if this is an \input'ed file.
|
|
||||||
" Tip: With YAP on Windows, it is possible to do forward and inverse searches
|
|
||||||
" on DVI files. to do forward search, you'll have to compile the file
|
|
||||||
" with the --src-specials option. then set the following as the command
|
|
||||||
" line in the 'view/options/inverse search' dialog box:
|
|
||||||
" gvim --servername LATEX --remote-silent +%l "%f"
|
|
||||||
" For inverse search, if you are reading this, then just pressing \ls
|
|
||||||
" will work.
|
|
||||||
function! Tex_ForwardSearchLaTeX()
|
|
||||||
if &ft != 'tex'
|
|
||||||
echo "calling Tex_ForwardSeachLaTeX from a non-tex file"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_ViewRule_'.s:target) == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let viewer = Tex_GetVarValue('Tex_ViewRule_'.s:target)
|
|
||||||
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
|
|
||||||
let mainfname = Tex_GetMainFileName(':t')
|
|
||||||
let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
|
|
||||||
let mainfnameFull = Tex_GetMainFileName(':p:r')
|
|
||||||
" cd to the location of the file to avoid problems with directory name
|
|
||||||
" containing spaces.
|
|
||||||
call Tex_CD(Tex_GetMainFileName(':p:h'))
|
|
||||||
|
|
||||||
" inverse search tips taken from Dimitri Antoniou's tip and Benji Fisher's
|
|
||||||
" tips on vim.sf.net (vim.sf.net tip #225)
|
|
||||||
if (has('win32') && (viewer =~? '^ *yap\( \|$\)'))
|
|
||||||
|
|
||||||
let execString = 'silent! !start '. viewer.' -s '.line('.').expand('%').' '.mainfnameRoot
|
|
||||||
|
|
||||||
|
|
||||||
elseif (has('macunix') && (viewer =~ '^ *\(Skim\|PDFView\|TeXniscope\)\( \|$\)'))
|
|
||||||
" We're on a Mac using a traditional Mac viewer
|
|
||||||
|
|
||||||
if viewer =~ '^ *Skim'
|
|
||||||
|
|
||||||
let execString = 'silent! !/Applications/Skim.app/Contents/SharedSupport/displayline '.
|
|
||||||
\ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
|
|
||||||
|
|
||||||
elseif viewer =~ '^ *PDFView'
|
|
||||||
|
|
||||||
let execString = 'silent! !/Applications/PDFView.app/Contents/MacOS/gotoline.sh '.
|
|
||||||
\ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
|
|
||||||
|
|
||||||
elseif viewer =~ '^ *TeXniscope'
|
|
||||||
|
|
||||||
let execString = 'silent! !/Applications/TeXniscope.app/Contents/Resources/forward-search.sh '.
|
|
||||||
\ line('.').' "'.expand("%:p").'" "'.mainfnameFull.'.'.s:target.'"'
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
else
|
|
||||||
" We're either UNIX or Mac and using a UNIX-type viewer
|
|
||||||
|
|
||||||
" Check for the special DVI viewers first
|
|
||||||
if viewer =~ '^ *\(xdvi\|xdvik\|kdvi\|okular\)\( \|$\)'
|
|
||||||
|
|
||||||
if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
|
|
||||||
\ exists('v:servername') &&
|
|
||||||
\ viewer =~ '^ *xdvik\?\( \|$\)'
|
|
||||||
|
|
||||||
let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'"'.
|
|
||||||
\ ' -editor "gvim --servername '.v:servername.' --remote-silent +\%l \%f" '.
|
|
||||||
\ mainfnameRoot.'.dvi'
|
|
||||||
|
|
||||||
elseif viewer =~ '^ *kdvi'
|
|
||||||
|
|
||||||
let execString = 'silent! !'.viewer.' --unique file:'.mainfnameRoot.'.dvi\#src:'.line('.').expand("%")
|
|
||||||
|
|
||||||
elseif viewer =~ '^ *xdvik\?\( \|$\)'
|
|
||||||
|
|
||||||
let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'" '.mainfnameRoot.'.dvi'
|
|
||||||
|
|
||||||
elseif viewer =~ '^ *okular'
|
|
||||||
|
|
||||||
let execString = 'silent! !'.viewer.' --unique '.mainfnameRoot.'.'.s:target.'\#src:'.line('.').expand("%:p")
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
else
|
|
||||||
" We must be using a generic UNIX viewer
|
|
||||||
" syntax is: viewer TARGET_FILE LINE_NUMBER SOURCE_FILE
|
|
||||||
|
|
||||||
let execString = 'silent! !'.viewer.' "'.mainfnameRoot.'.'.s:target.'" '.line('.').' "'.expand('%').'"'
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
" See if we should add &. On Mac (at least in MacVim), it seems
|
|
||||||
" like this should NOT be added...
|
|
||||||
if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
|
|
||||||
let execString = execString.' &'
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_Debug("Tex_ForwardSearchLaTeX: execString = ".execString, "comp")
|
|
||||||
execute execString
|
|
||||||
if !has('gui_running')
|
|
||||||
redraw!
|
|
||||||
endif
|
|
||||||
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Functions for compiling parts of a file.
|
|
||||||
" ==============================================================================
|
|
||||||
" Tex_PartCompile: compiles selected fragment {{{
|
|
||||||
" Description: creates a temporary file from the selected fragment of text
|
|
||||||
" prepending the preamble and \end{document} and then asks Tex_RunLaTeX() to
|
|
||||||
" compile it.
|
|
||||||
function! Tex_PartCompile() range
|
|
||||||
call Tex_Debug('+Tex_PartCompile', 'comp')
|
|
||||||
|
|
||||||
" Get a temporary file in the same directory as the file from which
|
|
||||||
" fragment is being extracted. This is to enable the use of relative path
|
|
||||||
" names in the fragment.
|
|
||||||
let tmpfile = Tex_GetTempName(expand('%:p:h'))
|
|
||||||
|
|
||||||
" Remember all the temp files and for each temp file created, remember
|
|
||||||
" where the temp file came from.
|
|
||||||
let s:Tex_NumTempFiles = (exists('s:Tex_NumTempFiles') ? s:Tex_NumTempFiles + 1 : 1)
|
|
||||||
let s:Tex_TempFiles = (exists('s:Tex_TempFiles') ? s:Tex_TempFiles : '')
|
|
||||||
\ . tmpfile."\n"
|
|
||||||
let s:Tex_TempFile_{s:Tex_NumTempFiles} = tmpfile
|
|
||||||
" TODO: For a function Tex_RestoreFragment which restores a temp file to
|
|
||||||
" its original location.
|
|
||||||
let s:Tex_TempFileOrig_{s:Tex_NumTempFiles} = expand('%:p')
|
|
||||||
let s:Tex_TempFileRange_{s:Tex_NumTempFiles} = a:firstline.','.a:lastline
|
|
||||||
|
|
||||||
" Set up an autocmd to clean up the temp files when Vim exits.
|
|
||||||
if Tex_GetVarValue('Tex_RemoveTempFiles')
|
|
||||||
augroup RemoveTmpFiles
|
|
||||||
au!
|
|
||||||
au VimLeave * :call Tex_RemoveTempFiles()
|
|
||||||
augroup END
|
|
||||||
endif
|
|
||||||
|
|
||||||
" If mainfile exists open it in tiny window and extract preamble there,
|
|
||||||
" otherwise do it from current file
|
|
||||||
let mainfile = Tex_GetMainFileName(":p")
|
|
||||||
exe 'bot 1 split '.escape(mainfile, ' ')
|
|
||||||
exe '1,/\s*\\begin{document}/w '.tmpfile
|
|
||||||
wincmd q
|
|
||||||
|
|
||||||
exe a:firstline.','.a:lastline."w! >> ".tmpfile
|
|
||||||
|
|
||||||
" edit the temporary file
|
|
||||||
exec 'drop '.tmpfile
|
|
||||||
|
|
||||||
" append the \end{document} line.
|
|
||||||
$ put ='\end{document}'
|
|
||||||
w
|
|
||||||
|
|
||||||
" set this as a fragment file.
|
|
||||||
let b:fragmentFile = 1
|
|
||||||
|
|
||||||
silent! call Tex_RunLaTeX()
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_RemoveTempFiles: cleans up temporary files created during part compilation {{{
|
|
||||||
" Description: During part compilation, temporary files containing the
|
|
||||||
" visually selected text are created. These files need to be
|
|
||||||
" removed when Vim exits to avoid "file leakage".
|
|
||||||
function! Tex_RemoveTempFiles()
|
|
||||||
if !exists('s:Tex_NumTempFiles') || !Tex_GetVarValue('Tex_RemoveTempFiles')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let i = 1
|
|
||||||
while i <= s:Tex_NumTempFiles
|
|
||||||
let tmpfile = s:Tex_TempFile_{i}
|
|
||||||
" Remove the tmp file and all other associated files such as the
|
|
||||||
" .log files etc.
|
|
||||||
call Tex_DeleteFile(fnamemodify(tmpfile, ':p:r').'.*')
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
endfunction " }}}
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Compiling a file multiple times to resolve references/citations etc.
|
|
||||||
" ==============================================================================
|
|
||||||
" Tex_CompileMultipleTimes: The main function {{{
|
|
||||||
" Description: compiles a file multiple times to get cross-references right.
|
|
||||||
function! Tex_CompileMultipleTimes()
|
|
||||||
" Just extract the root without any extension because we want to construct
|
|
||||||
" the log file names etc from it.
|
|
||||||
let s:origdir = fnameescape(getcwd())
|
|
||||||
let mainFileName_root = Tex_GetMainFileName(':p:t:r')
|
|
||||||
call Tex_CD(Tex_GetMainFileName(':p:h'))
|
|
||||||
|
|
||||||
" First ignore undefined references and the
|
|
||||||
" "rerun to get cross-references right" message from
|
|
||||||
" the compiler output.
|
|
||||||
let origlevel = Tex_GetVarValue('Tex_IgnoreLevel')
|
|
||||||
let origpats = Tex_GetVarValue('Tex_IgnoredWarnings')
|
|
||||||
|
|
||||||
let g:Tex_IgnoredWarnings = g:Tex_IgnoredWarnings."\n"
|
|
||||||
\ . 'Reference %.%# undefined'."\n"
|
|
||||||
\ . 'Rerun to get cross-references right'
|
|
||||||
TCLevel 1000
|
|
||||||
|
|
||||||
let idxFileName = mainFileName_root.'.idx'
|
|
||||||
let auxFileName = mainFileName_root.'.aux'
|
|
||||||
|
|
||||||
let runCount = 0
|
|
||||||
let needToRerun = 1
|
|
||||||
while needToRerun == 1 && runCount < 5
|
|
||||||
" assume we need to run only once.
|
|
||||||
let needToRerun = 0
|
|
||||||
|
|
||||||
let idxlinesBefore = Tex_CatFile(idxFileName)
|
|
||||||
let auxlinesBefore = Tex_GetAuxFile(auxFileName)
|
|
||||||
|
|
||||||
" first run latex.
|
|
||||||
echomsg "latex run number : ".(runCount+1)
|
|
||||||
call Tex_Debug("Tex_CompileMultipleTimes: latex run number : ".(runCount+1), "comp")
|
|
||||||
silent! call Tex_CompileLatex()
|
|
||||||
|
|
||||||
" If there are errors in any latex compilation step, immediately
|
|
||||||
" return. For now, do not bother with warnings because those might go
|
|
||||||
" away after compiling again or after bibtex is run etc.
|
|
||||||
let errlist = Tex_GetErrorList()
|
|
||||||
call Tex_Debug("Tex_CompileMultipleTimes: errors = [".errlist."]", "comp")
|
|
||||||
|
|
||||||
if errlist =~ 'error'
|
|
||||||
let g:Tex_IgnoredWarnings = origpats
|
|
||||||
exec 'TCLevel '.origlevel
|
|
||||||
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
let idxlinesAfter = Tex_CatFile(idxFileName)
|
|
||||||
|
|
||||||
" If .idx file changed, then run makeindex to generate the new .ind
|
|
||||||
" file and remember to rerun latex.
|
|
||||||
if runCount == 0 && glob(idxFileName) != '' && idxlinesBefore != idxlinesAfter
|
|
||||||
echomsg "Running makeindex..."
|
|
||||||
let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_MakeIndexFlavor')
|
|
||||||
exec 'silent! make '.mainFileName_root
|
|
||||||
let &mp = temp_mp
|
|
||||||
|
|
||||||
let needToRerun = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The first time we see if we need to run bibtex and if the .bbl file
|
|
||||||
" changes, we will rerun latex.
|
|
||||||
if runCount == 0 && Tex_IsPresentInFile('\\bibdata', mainFileName_root.'.aux')
|
|
||||||
let bibFileName = mainFileName_root.'.bbl'
|
|
||||||
|
|
||||||
let biblinesBefore = Tex_CatFile(bibFileName)
|
|
||||||
|
|
||||||
echomsg "Running '".Tex_GetVarValue('Tex_BibtexFlavor')."' ..."
|
|
||||||
let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_BibtexFlavor')
|
|
||||||
exec 'silent! make '.mainFileName_root
|
|
||||||
let &mp = temp_mp
|
|
||||||
|
|
||||||
let biblinesAfter = Tex_CatFile(bibFileName)
|
|
||||||
|
|
||||||
" If the .bbl file changed after running bibtex, we need to
|
|
||||||
" latex again.
|
|
||||||
if biblinesAfter != biblinesBefore
|
|
||||||
echomsg 'Need to rerun because bibliography file changed...'
|
|
||||||
call Tex_Debug('Tex_CompileMultipleTimes: Need to rerun because bibliography file changed...', 'comp')
|
|
||||||
let needToRerun = 1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" check if latex asks us to rerun
|
|
||||||
let auxlinesAfter = Tex_GetAuxFile(auxFileName)
|
|
||||||
if auxlinesAfter != auxlinesBefore
|
|
||||||
echomsg "Need to rerun because the AUX file changed..."
|
|
||||||
call Tex_Debug("Tex_CompileMultipleTimes: Need to rerun to get cross-references right...", 'comp')
|
|
||||||
let needToRerun = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
let runCount = runCount + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
redraw!
|
|
||||||
call Tex_Debug("Tex_CompileMultipleTimes: Ran latex ".runCount." time(s)", "comp")
|
|
||||||
echomsg "Ran latex ".runCount." time(s)"
|
|
||||||
|
|
||||||
let g:Tex_IgnoredWarnings = origpats
|
|
||||||
exec 'TCLevel '.origlevel
|
|
||||||
" After all compiler calls are done, reparse the .log file for
|
|
||||||
" errors/warnings to handle the situation where the clist might have been
|
|
||||||
" emptied because of bibtex/makeindex being run as the last step.
|
|
||||||
exec 'silent! cfile '.mainFileName_root.'.log'
|
|
||||||
|
|
||||||
exe 'cd '.s:origdir
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_GetAuxFile: get the contents of the AUX file {{{
|
|
||||||
" Description: get the contents of the AUX file recursively including any
|
|
||||||
" @\input'ted AUX files.
|
|
||||||
function! Tex_GetAuxFile(auxFile)
|
|
||||||
if !filereadable(a:auxFile)
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
let auxContents = Tex_CatFile(a:auxFile)
|
|
||||||
let pattern = '@\input{\(.\{-}\)}'
|
|
||||||
|
|
||||||
let auxContents = substitute(auxContents, pattern, '\=Tex_GetAuxFile(submatch(1))', 'g')
|
|
||||||
|
|
||||||
return auxContents
|
|
||||||
endfunction " }}}
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Helper functions for
|
|
||||||
" . viewing the log file in preview mode.
|
|
||||||
" . syncing the display between the quickfix window and preview window
|
|
||||||
" . going to the correct line _and column_ number from from the quick fix
|
|
||||||
" window.
|
|
||||||
" ==============================================================================
|
|
||||||
" Tex_SetupErrorWindow: sets up the cwindow and preview of the .log file {{{
|
|
||||||
" Description:
|
|
||||||
function! Tex_SetupErrorWindow()
|
|
||||||
let mainfname = Tex_GetMainFileName()
|
|
||||||
|
|
||||||
let winnum = winnr()
|
|
||||||
|
|
||||||
" close the quickfix window before trying to open it again, otherwise
|
|
||||||
" whether or not we end up in the quickfix window after the :cwindow
|
|
||||||
" command is not fixed.
|
|
||||||
cclose
|
|
||||||
cwindow
|
|
||||||
" create log file name from mainfname
|
|
||||||
let mfnlog = fnamemodify(mainfname, ":t:r").'.log'
|
|
||||||
call Tex_Debug('Tex_SetupErrorWindow: mfnlog = '.mfnlog, 'comp')
|
|
||||||
" if we moved to a different window, then it means we had some errors.
|
|
||||||
if winnum != winnr()
|
|
||||||
if Tex_GetVarValue('Tex_ShowErrorContext')
|
|
||||||
call Tex_UpdatePreviewWindow(mfnlog)
|
|
||||||
exe 'nnoremap <buffer> <silent> j j:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
|
|
||||||
exe 'nnoremap <buffer> <silent> k k:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
|
|
||||||
exe 'nnoremap <buffer> <silent> <up> <up>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
|
|
||||||
exe 'nnoremap <buffer> <silent> <down> <down>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
|
|
||||||
endif
|
|
||||||
exe 'nnoremap <buffer> <silent> <enter> :call Tex_GotoErrorLocation("'.mfnlog.'")<CR>'
|
|
||||||
|
|
||||||
setlocal nowrap
|
|
||||||
|
|
||||||
" resize the window to just fit in with the number of lines.
|
|
||||||
exec ( line('$') < 4 ? line('$') : 4 ).' wincmd _'
|
|
||||||
if Tex_GetVarValue('Tex_GotoError') == 1
|
|
||||||
call Tex_GotoErrorLocation(mfnlog)
|
|
||||||
else
|
|
||||||
exec s:origwinnum.' wincmd w'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_PositionPreviewWindow: positions the preview window correctly. {{{
|
|
||||||
" Description:
|
|
||||||
" The purpose of this function is to count the number of times an error
|
|
||||||
" occurs on the same line. or in other words, if the current line is
|
|
||||||
" something like |10 error|, then we want to count the number of
|
|
||||||
" lines in the quickfix window before this line which also contain lines
|
|
||||||
" like |10 error|.
|
|
||||||
"
|
|
||||||
function! Tex_PositionPreviewWindow(filename)
|
|
||||||
|
|
||||||
if getline('.') !~ '|\d\+ \(error\|warning\)|'
|
|
||||||
if !search('|\d\+ \(error\|warning\)|')
|
|
||||||
call Tex_Debug("not finding error pattern anywhere in quickfix window :".bufname(bufnr('%')),
|
|
||||||
\ 'comp')
|
|
||||||
pclose!
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" extract the error pattern (something like 'file.tex|10 error|') on the
|
|
||||||
" current line.
|
|
||||||
let errpat = matchstr(getline('.'), '^\f*|\d\+ \(error\|warning\)|\ze')
|
|
||||||
let errfile = matchstr(getline('.'), '^\f*\ze|\d\+ \(error\|warning\)|')
|
|
||||||
" extract the line number from the error pattern.
|
|
||||||
let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(error\|warning\)|')
|
|
||||||
|
|
||||||
" if we are on an error, then count the number of lines before this in the
|
|
||||||
" quickfix window with an error on the same line.
|
|
||||||
if errpat =~ 'error|$'
|
|
||||||
" our location in the quick fix window.
|
|
||||||
let errline = line('.')
|
|
||||||
|
|
||||||
" goto the beginning of the quickfix window and begin counting the lines
|
|
||||||
" which show an error on the same line.
|
|
||||||
0
|
|
||||||
let numrep = 0
|
|
||||||
while 1
|
|
||||||
" if we are on the same kind of error line, then means we have another
|
|
||||||
" line containing the same error pattern.
|
|
||||||
if getline('.') =~ errpat
|
|
||||||
let numrep = numrep + 1
|
|
||||||
normal! 0
|
|
||||||
endif
|
|
||||||
" if we have reached the original location in the quick fix window,
|
|
||||||
" then break.
|
|
||||||
if line('.') == errline
|
|
||||||
break
|
|
||||||
else
|
|
||||||
" otherwise, search for the next line which contains the same
|
|
||||||
" error pattern again. goto the end of the current line so we
|
|
||||||
" dont count this line again.
|
|
||||||
normal! $
|
|
||||||
call search(errpat, 'W')
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
else
|
|
||||||
let numrep = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
if getline('.') =~ '|\d\+ warning|'
|
|
||||||
let searchpat = escape(matchstr(getline('.'), '|\d\+ warning|\s*\zs.*'), '\ ')
|
|
||||||
else
|
|
||||||
let searchpat = 'l\.'.linenum
|
|
||||||
endif
|
|
||||||
|
|
||||||
" We first need to be in the scope of the correct file in the .log file.
|
|
||||||
" This is important for example, when a.tex and b.tex both have errors on
|
|
||||||
" line 9 of the file and we want to go to the error of b.tex. Merely
|
|
||||||
" searching forward from the beginning of the log file for l.9 will always
|
|
||||||
" land us on the error in a.tex.
|
|
||||||
if errfile != ''
|
|
||||||
exec 'silent! bot pedit +/(\\(\\f\\|\\[\\|\]\\|\\s\\)*'.errfile.'/ '.a:filename
|
|
||||||
else
|
|
||||||
exec 'bot pedit +0 '.a:filename
|
|
||||||
endif
|
|
||||||
" Goto the preview window
|
|
||||||
" TODO: This is not robust enough. Check that a wincmd j actually takes
|
|
||||||
" us to the preview window.
|
|
||||||
wincmd j
|
|
||||||
" now search forward from this position in the preview window for the
|
|
||||||
" numrep^th error of the current line in the quickfix window.
|
|
||||||
while numrep > 0
|
|
||||||
call search(searchpat, 'W')
|
|
||||||
let numrep = numrep - 1
|
|
||||||
endwhile
|
|
||||||
normal! z.
|
|
||||||
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_UpdatePreviewWindow: updates the view of the log file {{{
|
|
||||||
" Description:
|
|
||||||
" This function should be called when focus is in a quickfix window.
|
|
||||||
" It opens the log file in a preview window and makes it display that
|
|
||||||
" part of the log file which corresponds to the error which the user is
|
|
||||||
" currently on in the quickfix window. Control returns to the quickfix
|
|
||||||
" window when the function returns.
|
|
||||||
"
|
|
||||||
function! Tex_UpdatePreviewWindow(filename)
|
|
||||||
call Tex_PositionPreviewWindow(a:filename)
|
|
||||||
|
|
||||||
if &previewwindow
|
|
||||||
6 wincmd _
|
|
||||||
wincmd p
|
|
||||||
endif
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_GotoErrorLocation: goes to the correct location of error in the tex file {{{
|
|
||||||
" Description:
|
|
||||||
" This function should be called when focus is in a quickfix window. This
|
|
||||||
" function will first open the preview window of the log file (if it is not
|
|
||||||
" already open), position the display of the preview to coincide with the
|
|
||||||
" current error under the cursor and then take the user to the file in
|
|
||||||
" which this error has occured.
|
|
||||||
"
|
|
||||||
" The position is both the correct line number and the column number.
|
|
||||||
function! Tex_GotoErrorLocation(filename)
|
|
||||||
|
|
||||||
" first use vim's functionality to take us to the location of the error
|
|
||||||
" accurate to the line (not column). This lets us go to the correct file
|
|
||||||
" without applying any logic.
|
|
||||||
exec "normal! \<enter>"
|
|
||||||
" If the log file is not found, then going to the correct line number is
|
|
||||||
" all we can do.
|
|
||||||
if glob(a:filename) == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
let winnum = winnr()
|
|
||||||
" then come back to the quickfix window
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
" find out where in the file we had the error.
|
|
||||||
let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(warning\|error\)|')
|
|
||||||
call Tex_PositionPreviewWindow(a:filename)
|
|
||||||
|
|
||||||
if getline('.') =~ 'l.\d\+'
|
|
||||||
|
|
||||||
let brokenline = matchstr(getline('.'), 'l.'.linenum.' \zs.*\ze')
|
|
||||||
" If the line is of the form
|
|
||||||
" l.10 ...and then there was some error
|
|
||||||
" it means (most probably) that only part of the erroneous line is
|
|
||||||
" shown. In this case, finding the length of the broken line is not
|
|
||||||
" correct. Instead goto the beginning of the line and search forward
|
|
||||||
" for the part which is displayed and then go to its end.
|
|
||||||
if brokenline =~ '^\M...'
|
|
||||||
let partline = matchstr(brokenline, '^\M...\m\zs.*')
|
|
||||||
let normcmd = "0/\\V".escape(partline, "\\")."/e+1\<CR>"
|
|
||||||
else
|
|
||||||
let column = strlen(brokenline) + 1
|
|
||||||
let normcmd = column.'|'
|
|
||||||
endif
|
|
||||||
|
|
||||||
elseif getline('.') =~ 'LaTeX Warning: \(Citation\|Reference\) `.*'
|
|
||||||
|
|
||||||
let ref = matchstr(getline('.'), "LaTeX Warning: \\(Citation\\|Reference\\) `\\zs[^']\\+\\ze'")
|
|
||||||
let normcmd = '0/'.ref."\<CR>"
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
let normcmd = '0'
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
" go back to the window where we came from.
|
|
||||||
exec winnum.' wincmd w'
|
|
||||||
exec 'silent! '.linenum.' | normal! '.normcmd
|
|
||||||
|
|
||||||
if !Tex_GetVarValue('Tex_ShowErrorContext')
|
|
||||||
pclose!
|
|
||||||
endif
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_SetCompilerMaps: sets maps for compiling/viewing/searching {{{
|
|
||||||
" Description:
|
|
||||||
function! <SID>Tex_SetCompilerMaps()
|
|
||||||
if exists('b:Tex_doneCompilerMaps')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let s:ml = '<Leader>'
|
|
||||||
|
|
||||||
nnoremap <buffer> <Plug>Tex_Compile :call Tex_RunLaTeX()<cr>
|
|
||||||
vnoremap <buffer> <Plug>Tex_Compile :call Tex_PartCompile()<cr>
|
|
||||||
nnoremap <buffer> <Plug>Tex_View :call Tex_ViewLaTeX()<cr>
|
|
||||||
nnoremap <buffer> <Plug>Tex_ForwardSearch :call Tex_ForwardSearchLaTeX()<cr>
|
|
||||||
|
|
||||||
call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'n', '<buffer>')
|
|
||||||
call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'v', '<buffer>')
|
|
||||||
call Tex_MakeMap(s:ml."lv", "<Plug>Tex_View", 'n', '<buffer>')
|
|
||||||
call Tex_MakeMap(s:ml."ls", "<Plug>Tex_ForwardSearch", 'n', '<buffer>')
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
augroup LatexSuite
|
|
||||||
au LatexSuite User LatexSuiteFileType
|
|
||||||
\ call Tex_Debug('compiler.vim: Catching LatexSuiteFileType event', 'comp') |
|
|
||||||
\ call <SID>Tex_SetCompilerMaps()
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
command! -nargs=0 -range=% TPartCompile :<line1>, <line2> silent! call Tex_PartCompile()
|
|
||||||
" Setting b:fragmentFile = 1 makes Tex_CompileLatex consider the present file
|
|
||||||
" the _main_ file irrespective of the presence of a .latexmain file.
|
|
||||||
command! -nargs=0 TCompileThis let b:fragmentFile = 1
|
|
||||||
command! -nargs=0 TCompileMainFile let b:fragmentFile = 0
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
@@ -1,255 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: custommacros.vim
|
|
||||||
" Author: Mikolaj Machowski
|
|
||||||
" Version: 1.0
|
|
||||||
" Created: Tue Apr 23 05:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: functions for processing custom macros in the
|
|
||||||
" latex-suite/macros directory
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
let s:path = expand('<sfile>:p:h')
|
|
||||||
|
|
||||||
" Set path to macros dir dependent on OS {{{
|
|
||||||
if has("unix") || has("macunix")
|
|
||||||
let s:macrodirpath = $HOME."/.vim/ftplugin/latex-suite/macros/"
|
|
||||||
elseif has("win32")
|
|
||||||
if exists("$HOME")
|
|
||||||
let s:macrodirpath = $HOME."/vimfiles/ftplugin/latex-suite/macros/"
|
|
||||||
else
|
|
||||||
let s:macrodirpath = $VIM."/vimfiles/ftplugin/latex-suite/macros/"
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" SetCustomMacrosMenu: sets up the menu for Macros {{{
|
|
||||||
function! <SID>SetCustomMacrosMenu()
|
|
||||||
let flist = Tex_FindInRtp('', 'macros')
|
|
||||||
exe 'amenu '.g:Tex_MacrosMenuLocation.'&New :call <SID>NewMacro("FFFromMMMenu")<CR>'
|
|
||||||
exe 'amenu '.g:Tex_MacrosMenuLocation.'&Redraw :call RedrawMacro()<CR>'
|
|
||||||
|
|
||||||
let i = 1
|
|
||||||
while 1
|
|
||||||
let fname = Tex_Strntok(flist, ',', i)
|
|
||||||
if fname == ''
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
exe "amenu ".g:Tex_MacrosMenuLocation."&Delete.&".i.":<tab>".fname." :call <SID>DeleteMacro('".fname."')<CR>"
|
|
||||||
exe "amenu ".g:Tex_MacrosMenuLocation."&Edit.&".i.":<tab>".fname." :call <SID>EditMacro('".fname."')<CR>"
|
|
||||||
exe "imenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." <C-r>=<SID>ReadMacro('".fname."')<CR>"
|
|
||||||
exe "nmenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." i<C-r>=<SID>ReadMacro('".fname."')<CR>"
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if g:Tex_Menus
|
|
||||||
call <SID>SetCustomMacrosMenu()
|
|
||||||
endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" NewMacro: opens new file in macros directory {{{
|
|
||||||
function! <SID>NewMacro(...)
|
|
||||||
" Allow for calling :TMacroNew without argument or from menu and prompt
|
|
||||||
" for name.
|
|
||||||
if a:0 > 0
|
|
||||||
let newmacroname = a:1
|
|
||||||
else
|
|
||||||
let newmacroname = input("Name of new macro: ")
|
|
||||||
if newmacroname == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if newmacroname == "FFFromMMMenu"
|
|
||||||
" Check if NewMacro was called from menu and prompt for insert macro
|
|
||||||
" name
|
|
||||||
let newmacroname = input("Name of new macro: ")
|
|
||||||
if newmacroname == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
elseif Tex_FindInRtp(newmacroname, 'macros') != ''
|
|
||||||
" If macro with this name already exists, prompt for another name.
|
|
||||||
exe "echomsg 'Macro ".newmacroname." already exists. Try another name.'"
|
|
||||||
let newmacroname = input("Name of new macro: ")
|
|
||||||
if newmacroname == ''
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
exec 'split '.Tex_EscapeSpaces(s:macrodirpath.newmacroname)
|
|
||||||
setlocal filetype=tex
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" RedrawMacro: refreshes macro menu {{{
|
|
||||||
function! RedrawMacro()
|
|
||||||
aunmenu TeX-Suite.Macros
|
|
||||||
call <SID>SetCustomMacrosMenu()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" ChooseMacro: choose a macro file {{{
|
|
||||||
" " Description:
|
|
||||||
function! s:ChooseMacro(ask)
|
|
||||||
let filelist = Tex_FindInRtp('', 'macros')
|
|
||||||
let filename = Tex_ChooseFromPrompt(
|
|
||||||
\ a:ask."\n" .
|
|
||||||
\ Tex_CreatePrompt(filelist, 2, ',') .
|
|
||||||
\ "\nEnter number or filename :",
|
|
||||||
\ filelist, ',')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" DeleteMacro: deletes macro file {{{
|
|
||||||
function! <SID>DeleteMacro(...)
|
|
||||||
if a:0 > 0
|
|
||||||
let filename = a:1
|
|
||||||
else
|
|
||||||
let filename = s:ChooseMacro('Choose a macro file for deletion :')
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !filereadable(s:macrodirpath.filename)
|
|
||||||
" When file is not in local directory decline to remove it.
|
|
||||||
call confirm('This file is not in your local directory: '.filename."\n".
|
|
||||||
\ 'It will not be deleted.' , '&OK', 1)
|
|
||||||
|
|
||||||
else
|
|
||||||
let ch = confirm('Really delete '.filename.' ?', "&Yes\n&No", 2)
|
|
||||||
if ch == 1
|
|
||||||
call delete(s:macrodirpath.filename)
|
|
||||||
endif
|
|
||||||
call RedrawMacro()
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" EditMacro: edits macro file {{{
|
|
||||||
function! <SID>EditMacro(...)
|
|
||||||
if a:0 > 0
|
|
||||||
let filename = a:1
|
|
||||||
else
|
|
||||||
let filename = s:ChooseMacro('Choose a macro file for insertion:')
|
|
||||||
endif
|
|
||||||
|
|
||||||
if filereadable(s:macrodirpath.filename)
|
|
||||||
" If file exists in local directory open it.
|
|
||||||
exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename)
|
|
||||||
else
|
|
||||||
" But if file doesn't exist in local dir it probably is in user
|
|
||||||
" restricted area. Instead opening try to copy it to local dir.
|
|
||||||
" Pity VimL doesn't have mkdir() function :)
|
|
||||||
let ch = confirm("You are trying to edit file which is probably read-only.\n".
|
|
||||||
\ "It will be copied to your local LaTeX-Suite macros directory\n".
|
|
||||||
\ "and you will be operating on local copy with suffix -local.\n".
|
|
||||||
\ "It will succeed only if ftplugin/latex-suite/macros dir exists.\n".
|
|
||||||
\ "Do you agree?", "&Yes\n&No", 1)
|
|
||||||
if ch == 1
|
|
||||||
" But there is possibility we already created local modification.
|
|
||||||
" Check it and offer opening this file.
|
|
||||||
if filereadable(s:macrodirpath.filename.'-local')
|
|
||||||
let ch = confirm('Local version of '.filename." already exists.\n".
|
|
||||||
\ 'Do you want to open it or overwrite with original version?',
|
|
||||||
\ "&Open\nOver&write\n&Cancel", 1)
|
|
||||||
if ch == 1
|
|
||||||
exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename.'-local')
|
|
||||||
elseif ch == 2
|
|
||||||
new
|
|
||||||
exe '0read '.Tex_FindInRtp(filename, 'macros')
|
|
||||||
" This is possible macro was edited before, wipe it out.
|
|
||||||
if bufexists(s:macrodirpath.filename.'-local')
|
|
||||||
exe 'bwipe '.s:macrodirpath.filename.'-local'
|
|
||||||
endif
|
|
||||||
exe 'write! '.s:macrodirpath.filename.'-local'
|
|
||||||
else
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
" If file doesn't exist, open new file, read in system macro and
|
|
||||||
" save it in local macro dir with suffix -local
|
|
||||||
new
|
|
||||||
exe '0read '.Tex_FindInRtp(filename, 'macros')
|
|
||||||
exe 'write '.s:macrodirpath.filename.'-local'
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
setlocal filetype=tex
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" ReadMacro: reads in a macro from a macro file. {{{
|
|
||||||
" allowing for placement via placeholders.
|
|
||||||
function! <SID>ReadMacro(...)
|
|
||||||
|
|
||||||
if a:0 > 0
|
|
||||||
let filename = a:1
|
|
||||||
else
|
|
||||||
let filelist = Tex_FindInRtp('', 'macros')
|
|
||||||
let filename =
|
|
||||||
\ Tex_ChooseFromPrompt("Choose a macro file:\n" .
|
|
||||||
\ Tex_CreatePrompt(filelist, 2, ',') .
|
|
||||||
\ "\nEnter number or name of file :",
|
|
||||||
\ filelist, ',')
|
|
||||||
endif
|
|
||||||
|
|
||||||
let fname = Tex_FindInRtp(filename, 'macros', ':p')
|
|
||||||
|
|
||||||
let markerString = '<---- Latex Suite End Macro ---->'
|
|
||||||
let _a = @a
|
|
||||||
silent! call append(line('.'), markerString)
|
|
||||||
silent! exec "read ".fname
|
|
||||||
silent! exec "normal! V/^".markerString."$/-1\<CR>\"ax"
|
|
||||||
" This is kind of tricky: At this stage, we are one line after the one we
|
|
||||||
" started from with the marker text on it. We need to
|
|
||||||
" 1. remove the marker and the line.
|
|
||||||
" 2. get focus to the previous line.
|
|
||||||
" 3. not remove anything from the previous line.
|
|
||||||
silent! exec "normal! $v0k$\"_x"
|
|
||||||
|
|
||||||
call Tex_CleanSearchHistory()
|
|
||||||
|
|
||||||
let @a = substitute(@a, '['."\n\r\t ".']*$', '', '')
|
|
||||||
let textWithMovement = IMAP_PutTextWithMovement(@a)
|
|
||||||
let @a = _a
|
|
||||||
|
|
||||||
return textWithMovement
|
|
||||||
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" commands for macros {{{
|
|
||||||
com! -nargs=? TMacroNew :call <SID>NewMacro(<f-args>)
|
|
||||||
|
|
||||||
" This macros had to have 2 versions:
|
|
||||||
if v:version >= 602
|
|
||||||
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacro
|
|
||||||
\ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
|
|
||||||
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroEdit
|
|
||||||
\ :call <SID>EditMacro(<f-args>)
|
|
||||||
com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroDelete
|
|
||||||
\ :call <SID>DeleteMacro(<f-args>)
|
|
||||||
|
|
||||||
" Tex_CompleteMacroName: for completing names in TMacro... commands {{{
|
|
||||||
" Description: get list of macro names with Tex_FindInRtp(), remove full path
|
|
||||||
" and return list of names separated with newlines.
|
|
||||||
"
|
|
||||||
function! Tex_CompleteMacroName(A,P,L)
|
|
||||||
" Get name of macros from all runtimepath directories
|
|
||||||
let macronames = Tex_FindInRtp('', 'macros')
|
|
||||||
" Separate names with \n not ,
|
|
||||||
let macronames = substitute(macronames,',','\n','g')
|
|
||||||
return macronames
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
else
|
|
||||||
com! -nargs=? TMacro
|
|
||||||
\ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
|
|
||||||
com! -nargs=? TMacroEdit :call <SID>EditMacro(<f-args>)
|
|
||||||
com! -nargs=? TMacroDelete :call <SID>DeleteMacro(<f-args>)
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: diacritics.vim
|
|
||||||
" Author: Lubomir Host
|
|
||||||
" Created: Tue Apr 23 07:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: shortcuts for all diacritics.
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
if !g:Tex_Diacritics
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" \'{a} {{{
|
|
||||||
call IMAP ('=a', "\\\'{a}", 'tex')
|
|
||||||
call IMAP ('=b', "\\'{b}", 'tex')
|
|
||||||
call IMAP ('=c', "\\'{c}", 'tex')
|
|
||||||
call IMAP ('=d', "\\'{d}", 'tex')
|
|
||||||
call IMAP ('=e', "\\'{e}", 'tex')
|
|
||||||
call IMAP ('=f', "\\'{f}", 'tex')
|
|
||||||
call IMAP ('=g', "\\'{g}", 'tex')
|
|
||||||
call IMAP ('=h', "\\'{h}", 'tex')
|
|
||||||
call IMAP ('=i', "\\'{\i}", 'tex')
|
|
||||||
call IMAP ('=j', "\\'{j}", 'tex')
|
|
||||||
call IMAP ('=k', "\\'{k}", 'tex')
|
|
||||||
call IMAP ('=l', "\\'{l}", 'tex')
|
|
||||||
call IMAP ('=m', "\\'{m}", 'tex')
|
|
||||||
call IMAP ('=n', "\\'{n}", 'tex')
|
|
||||||
call IMAP ('=o', "\\'{o}", 'tex')
|
|
||||||
call IMAP ('=p', "\\'{p}", 'tex')
|
|
||||||
call IMAP ('=q', "\\'{q}", 'tex')
|
|
||||||
call IMAP ('=r', "\\'{r}", 'tex')
|
|
||||||
call IMAP ('=s', "\\'{s}", 'tex')
|
|
||||||
call IMAP ('=t', "\\'{t}", 'tex')
|
|
||||||
call IMAP ('=u', "\\'{u}", 'tex')
|
|
||||||
call IMAP ('=v', "\\'{v}", 'tex')
|
|
||||||
call IMAP ('=w', "\\'{w}", 'tex')
|
|
||||||
call IMAP ('=x', "\\'{x}", 'tex')
|
|
||||||
call IMAP ('=y', "\\'{y}", 'tex')
|
|
||||||
call IMAP ('=z', "\\'{z}", 'tex')
|
|
||||||
call IMAP ('=A', "\\'{A}", 'tex')
|
|
||||||
call IMAP ('=B', "\\'{B}", 'tex')
|
|
||||||
call IMAP ('=C', "\\'{C}", 'tex')
|
|
||||||
call IMAP ('=D', "\\'{D}", 'tex')
|
|
||||||
call IMAP ('=E', "\\'{E}", 'tex')
|
|
||||||
call IMAP ('=F', "\\'{F}", 'tex')
|
|
||||||
call IMAP ('=G', "\\'{G}", 'tex')
|
|
||||||
call IMAP ('=H', "\\'{H}", 'tex')
|
|
||||||
call IMAP ('=I', "\\'{\I}", 'tex')
|
|
||||||
call IMAP ('=J', "\\'{J}", 'tex')
|
|
||||||
call IMAP ('=K', "\\'{K}", 'tex')
|
|
||||||
call IMAP ('=L', "\\'{L}", 'tex')
|
|
||||||
call IMAP ('=M', "\\'{M}", 'tex')
|
|
||||||
call IMAP ('=N', "\\'{N}", 'tex')
|
|
||||||
call IMAP ('=O', "\\'{O}", 'tex')
|
|
||||||
call IMAP ('=P', "\\'{P}", 'tex')
|
|
||||||
call IMAP ('=Q', "\\'{Q}", 'tex')
|
|
||||||
call IMAP ('=R', "\\'{R}", 'tex')
|
|
||||||
call IMAP ('=S', "\\'{S}", 'tex')
|
|
||||||
call IMAP ('=T', "\\'{T}", 'tex')
|
|
||||||
call IMAP ('=U', "\\'{U}", 'tex')
|
|
||||||
call IMAP ('=V', "\\'{V}", 'tex')
|
|
||||||
call IMAP ('=W', "\\'{W}", 'tex')
|
|
||||||
call IMAP ('=X', "\\'{X}", 'tex')
|
|
||||||
call IMAP ('=Y', "\\'{Y}", 'tex')
|
|
||||||
call IMAP ('=Z', "\\'{Z}", 'tex')
|
|
||||||
" }}}
|
|
||||||
" \v{a} {{{
|
|
||||||
call IMAP ('+a', "\\v{a}", 'tex')
|
|
||||||
call IMAP ('+b', "\\v{b}", 'tex')
|
|
||||||
call IMAP ('+c', "\\v{c}", 'tex')
|
|
||||||
call IMAP ('+d', "\\v{d}", 'tex')
|
|
||||||
call IMAP ('+e', "\\v{e}", 'tex')
|
|
||||||
call IMAP ('+f', "\\v{f}", 'tex')
|
|
||||||
call IMAP ('+g', "\\v{g}", 'tex')
|
|
||||||
call IMAP ('+h', "\\v{h}", 'tex')
|
|
||||||
call IMAP ('+i', "\\v{\i}", 'tex')
|
|
||||||
call IMAP ('+j', "\\v{j}", 'tex')
|
|
||||||
call IMAP ('+k', "\\v{k}", 'tex')
|
|
||||||
call IMAP ('+l', "\\q l", 'tex')
|
|
||||||
call IMAP ('+m', "\\v{m}", 'tex')
|
|
||||||
call IMAP ('+n', "\\v{n}", 'tex')
|
|
||||||
call IMAP ('+o', "\\v{o}", 'tex')
|
|
||||||
call IMAP ('+p', "\\v{p}", 'tex')
|
|
||||||
call IMAP ('+q', "\\v{q}", 'tex')
|
|
||||||
call IMAP ('+r', "\\v{r}", 'tex')
|
|
||||||
call IMAP ('+s', "\\v{s}", 'tex')
|
|
||||||
call IMAP ('+t', "\\q t", 'tex')
|
|
||||||
call IMAP ('+u', "\\v{u}", 'tex')
|
|
||||||
call IMAP ('+v', "\\v{v}", 'tex')
|
|
||||||
call IMAP ('+w', "\\v{w}", 'tex')
|
|
||||||
call IMAP ('+x', "\\v{x}", 'tex')
|
|
||||||
call IMAP ('+y', "\\v{y}", 'tex')
|
|
||||||
call IMAP ('+z', "\\v{z}", 'tex')
|
|
||||||
call IMAP ('+A', "\\v{A}", 'tex')
|
|
||||||
call IMAP ('+B', "\\v{B}", 'tex')
|
|
||||||
call IMAP ('+C', "\\v{C}", 'tex')
|
|
||||||
call IMAP ('+D', "\\v{D}", 'tex')
|
|
||||||
call IMAP ('+E', "\\v{E}", 'tex')
|
|
||||||
call IMAP ('+F', "\\v{F}", 'tex')
|
|
||||||
call IMAP ('+G', "\\v{G}", 'tex')
|
|
||||||
call IMAP ('+H', "\\v{H}", 'tex')
|
|
||||||
call IMAP ('+I', "\\v{\I}", 'tex')
|
|
||||||
call IMAP ('+J', "\\v{J}", 'tex')
|
|
||||||
call IMAP ('+K', "\\v{K}", 'tex')
|
|
||||||
call IMAP ('+L', "\\v{L}", 'tex')
|
|
||||||
call IMAP ('+M', "\\v{M}", 'tex')
|
|
||||||
call IMAP ('+N', "\\v{N}", 'tex')
|
|
||||||
call IMAP ('+O', "\\v{O}", 'tex')
|
|
||||||
call IMAP ('+P', "\\v{P}", 'tex')
|
|
||||||
call IMAP ('+Q', "\\v{Q}", 'tex')
|
|
||||||
call IMAP ('+R', "\\v{R}", 'tex')
|
|
||||||
call IMAP ('+S', "\\v{S}", 'tex')
|
|
||||||
call IMAP ('+T', "\\v{T}", 'tex')
|
|
||||||
call IMAP ('+U', "\\v{U}", 'tex')
|
|
||||||
call IMAP ('+V', "\\v{V}", 'tex')
|
|
||||||
call IMAP ('+W', "\\v{W}", 'tex')
|
|
||||||
call IMAP ('+X', "\\v{X}", 'tex')
|
|
||||||
call IMAP ('+Y', "\\v{Y}", 'tex')
|
|
||||||
call IMAP ('+Z', "\\v{Z}", 'tex')
|
|
||||||
" }}}
|
|
||||||
call IMAP ('+}', "\\\"{a}", 'tex')
|
|
||||||
call IMAP ('+:', "\\^{o}", 'tex')
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
@@ -1,330 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: elementmacros.vim
|
|
||||||
" Author: Mikolaj Machowski
|
|
||||||
" Created: Tue Apr 23 06:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: macros for dimensions/fonts/counters.
|
|
||||||
" and various common commands such ref/label/footnote.
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
nmap <silent> <script> <plug> i
|
|
||||||
imap <silent> <script> <C-o><plug> <Nop>
|
|
||||||
|
|
||||||
if exists('s:lastElementsLocation') && g:Tex_ElementsMenuLocation == s:lastElementsLocation
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists('s:lastElementsLocation')
|
|
||||||
exe 'aunmenu '.s:lastElementsLocation.'Font.'
|
|
||||||
exe 'aunmenu '.s:lastElementsLocation.'Dimension.'
|
|
||||||
exe 'aunmenu '.s:lastElementsLocation.'Counters.'
|
|
||||||
exe 'aunmenu '.s:lastElementsLocation.'Various.'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:lastElementsLocation = g:Tex_ElementsMenuLocation
|
|
||||||
|
|
||||||
let s:fontMenuLoc = g:Tex_ElementsMenuLocation.'Font.'
|
|
||||||
let s:dimensionMenuLoc = g:Tex_ElementsMenuLocation.'Dimension.'
|
|
||||||
let s:counterMenuLoc = g:Tex_ElementsMenuLocation.'Counters.'
|
|
||||||
let s:variousMenuLoc = g:Tex_ElementsMenuLocation.'Various.'
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Set up the functions the first time.
|
|
||||||
" ==============================================================================
|
|
||||||
if !exists('s:definedFuncs') " {{{
|
|
||||||
let s:definedFuncs = 1
|
|
||||||
|
|
||||||
" Tex_RemoveElementMenus: remove the elements menu {{{
|
|
||||||
function! Tex_RemoveElementMenus()
|
|
||||||
exe 'silent! aunmenu '.s:lastElementsLocation.'Font.'
|
|
||||||
exe 'silent! aunmenu '.s:lastElementsLocation.'Dimension.'
|
|
||||||
exe 'silent! aunmenu '.s:lastElementsLocation.'Counters.'
|
|
||||||
exe 'silent! aunmenu '.s:lastElementsLocation.'Various.'
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_FontFamily: sets up font menus {{{
|
|
||||||
function! <SID>Tex_FontFamily(font,fam)
|
|
||||||
let vislhs = matchstr(tolower(a:font), '^.\zs.*')
|
|
||||||
|
|
||||||
" avoid redoing imaps and vmaps for every reconfiguration of menus.
|
|
||||||
if !exists('s:doneOnce') && g:Tex_FontMaps
|
|
||||||
exe "vnoremap <silent> ".g:Tex_Leader.vislhs.
|
|
||||||
\" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
|
|
||||||
exe 'call IMAP ("'.a:font.'", "\\text'.vislhs.'{<++>}<++>", "tex")'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" menu entry.
|
|
||||||
if g:Tex_Menus && g:Tex_FontMenus
|
|
||||||
let location = s:fontMenuLoc.substitute(a:fam, '^.', '\u&', '').'.'.vislhs.a:fam.'<tab>'.a:font.'\ ('.g:Tex_Leader.vislhs.')'
|
|
||||||
exe "amenu ".location.
|
|
||||||
\" <plug><C-r>=IMAP_PutTextWithMovement('\\text".vislhs."{<++>}<++>')<CR>"
|
|
||||||
exe "vmenu ".location.
|
|
||||||
\" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
|
|
||||||
endif
|
|
||||||
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_FontDiacritics: sets up menus for diacritics. {{{
|
|
||||||
function! <SID>Tex_FontDiacritics(name, rhs)
|
|
||||||
let location = s:fontMenuLoc.'&Diacritics.'.a:name.'<tab>'
|
|
||||||
exe 'amenu '.location.
|
|
||||||
\" <plug><C-r>=IMAP_PutTextWithMovement('\\".a:rhs."{<++>}<++>')<CR>"
|
|
||||||
exe 'vmenu '.location.
|
|
||||||
\" \<C-\\>\<C-n>:call VEnclose('\\".a:rhs."{', '}', '', '')<CR>"
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_FontSize: sets up size fonts {{{
|
|
||||||
function! <SID>Tex_FontSize(name)
|
|
||||||
let location = s:fontMenuLoc.'&Size.'.a:name.'<tab>'
|
|
||||||
exe 'amenu '.location." <plug>\\".a:name
|
|
||||||
exe 'vunmenu '.location
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_Fontfont: sets up the 'font' part of font menus {{{
|
|
||||||
function! <SID>Tex_Fontfont(desc, lhs)
|
|
||||||
let location = s:fontMenuLoc.'&font.'.a:desc.'<tab>'
|
|
||||||
exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
|
|
||||||
exe "vunmenu ".location
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_DimMenus: set up dimension menus {{{
|
|
||||||
function! <SID>Tex_DimMenus(submenu, rhs)
|
|
||||||
let location = s:dimensionMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
|
|
||||||
exe "amenu ".location." <plug>\\".a:rhs
|
|
||||||
exe "vunmenu ".location
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_CounterMenus: set up counters menus {{{
|
|
||||||
function! <SID>Tex_CounterMenus(submenu, rhs)
|
|
||||||
let location = s:counterMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
|
|
||||||
exe "amenu ".location." <plug>\\".a:rhs
|
|
||||||
exe "vunmenu ".location
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_VariousMenus: set up various menus {{{
|
|
||||||
function! <SID>Tex_VariousMenus(desc, lhs)
|
|
||||||
let location = s:variousMenuLoc.a:desc.'<tab>'
|
|
||||||
exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
|
|
||||||
exe "vunmenu ".location
|
|
||||||
endfunction " }}}
|
|
||||||
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Fonts
|
|
||||||
" ==============================================================================
|
|
||||||
" series/family/shape {{{
|
|
||||||
call <SID>Tex_FontFamily("FBF","series")
|
|
||||||
call <SID>Tex_FontFamily("FMD","series")
|
|
||||||
|
|
||||||
call <SID>Tex_FontFamily("FTT","family")
|
|
||||||
call <SID>Tex_FontFamily("FSF","family")
|
|
||||||
call <SID>Tex_FontFamily("FRM","family")
|
|
||||||
|
|
||||||
call <SID>Tex_FontFamily("FUP","shape")
|
|
||||||
call <SID>Tex_FontFamily("FSL","shape")
|
|
||||||
call <SID>Tex_FontFamily("FSC","shape")
|
|
||||||
call <SID>Tex_FontFamily("FIT","shape")
|
|
||||||
|
|
||||||
" the \emph is special.
|
|
||||||
if g:Tex_FontMaps | exe "vnoremap <silent> ".g:Tex_Leader."em \<C-\\>\<C-N>:call VEnclose('\\emph{', '}', '{\\em', '\\/}')<CR>" | endif
|
|
||||||
if g:Tex_FontMaps | exe 'call IMAP ("FEM", "\\emph{<++>}<++>", "tex")' | endif
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
if g:Tex_Menus && g:Tex_FontMenus
|
|
||||||
" {{{ diacritics
|
|
||||||
call <SID>Tex_FontDiacritics('Acute', '"')
|
|
||||||
call <SID>Tex_FontDiacritics('Breve', 'u')
|
|
||||||
call <SID>Tex_FontDiacritics('Circle', 'r')
|
|
||||||
call <SID>Tex_FontDiacritics('Circumflex', '^')
|
|
||||||
call <SID>Tex_FontDiacritics('Umlaut', '"')
|
|
||||||
call <SID>Tex_FontDiacritics('HUmlaut', 'H')
|
|
||||||
call <SID>Tex_FontDiacritics('Dot\ over', '.')
|
|
||||||
call <SID>Tex_FontDiacritics('Grave', '`')
|
|
||||||
call <SID>Tex_FontDiacritics('Hacek', 'v')
|
|
||||||
call <SID>Tex_FontDiacritics('Makron', '=')
|
|
||||||
call <SID>Tex_FontDiacritics('Tilde', '~')
|
|
||||||
call <SID>Tex_FontDiacritics('Underline', 'b')
|
|
||||||
call <SID>Tex_FontDiacritics('Cedille', 'c')
|
|
||||||
call <SID>Tex_FontDiacritics('Dot\ under', ' ')
|
|
||||||
call <SID>Tex_FontDiacritics('Ligature', 't')
|
|
||||||
" }}}
|
|
||||||
" {{{ Si&ze.
|
|
||||||
call <SID>Tex_FontSize('tiny')
|
|
||||||
call <SID>Tex_FontSize('scriptsize')
|
|
||||||
call <SID>Tex_FontSize('footnotesize')
|
|
||||||
call <SID>Tex_FontSize('small')
|
|
||||||
call <SID>Tex_FontSize('normalsize')
|
|
||||||
call <SID>Tex_FontSize('large')
|
|
||||||
call <SID>Tex_FontSize('Large')
|
|
||||||
call <SID>Tex_FontSize('LARGE')
|
|
||||||
call <SID>Tex_FontSize('huge')
|
|
||||||
call <SID>Tex_FontSize('Huge')
|
|
||||||
" }}}
|
|
||||||
" {{{ &font.
|
|
||||||
call s:Tex_Fontfont('fontencoding{}', '\fontencoding{<++>}<++>')
|
|
||||||
call s:Tex_Fontfont('fontfamily{qtm}', '\fontfamily{<++>}<++>')
|
|
||||||
call s:Tex_Fontfont('fontseries{m\ b\ bx\ sb\ c}', '\fontseries{<++>}<++>')
|
|
||||||
call s:Tex_Fontfont('fontshape{n\ it\ sl\ sc\ ui}', '\fontshape{<++>}<++>')
|
|
||||||
call s:Tex_Fontfont('fontsize{}{}', '\fontsize{<++>}{<++>}<++>')
|
|
||||||
call s:Tex_Fontfont('selectfont', '\selectfont ')
|
|
||||||
" }}}
|
|
||||||
endif
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Dimensions
|
|
||||||
" ==============================================================================
|
|
||||||
if g:Tex_Menus
|
|
||||||
" {{{ Static1
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'arraycolsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'arrayrulewidth')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'bibindent')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'columnsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'columnseprule')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'columnwidth')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'doublerulesep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'evensidemargin')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'fboxrule')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'fboxsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'footheight')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'footnotesep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'footskip')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'headheight')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'headsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'itemindent')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'labelsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'labelwidth')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmargin')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmargini')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmarginii')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmarginiii')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmarginiv')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmarginv')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'leftmarginvi')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'linewidth')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'listparindent')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'marginparpush')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'marginparsep')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'marginparwidth')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'mathindent')
|
|
||||||
call <SID>Tex_DimMenus('Static1', 'oddsidemargin')
|
|
||||||
" }}}
|
|
||||||
" {{{ Static2
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'paperheight')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'paperwidth')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'parindent')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'rightmargin')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'tabbingsep')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'tabcolsep')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'textheight')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'textwidth')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'topmargin')
|
|
||||||
call <SID>Tex_DimMenus('Static2', 'unitlength')
|
|
||||||
" }}}
|
|
||||||
" {{{ Dynamic
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'abovedisplayshortskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'abovedisplayskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'baselineskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'belowdisplayshortskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'belowdisplayskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'dblfloatsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'dbltextfloatsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'floatsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'intextsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'itemsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'parsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'parskip')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'partopsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'textfloatsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'topsep')
|
|
||||||
call <SID>Tex_DimMenus('Dynamic', 'topskip')
|
|
||||||
" }}}
|
|
||||||
" {{{ Change
|
|
||||||
call <SID>Tex_DimMenus('Change', 'setlength')
|
|
||||||
call <SID>Tex_DimMenus('Change', 'addtolength')
|
|
||||||
call <SID>Tex_DimMenus('Change', 'settoheight')
|
|
||||||
call <SID>Tex_DimMenus('Change', 'settowidth')
|
|
||||||
call <SID>Tex_DimMenus('Change', 'settolength')
|
|
||||||
" }}}
|
|
||||||
endif
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Counters
|
|
||||||
" ==============================================================================
|
|
||||||
if g:Tex_Menus
|
|
||||||
" Counters {{{
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'bottomnumber')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'chapter')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'dbltopnumber')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'enumi')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'enumii')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'enumiii')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'enumiv')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'equation')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'figure')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'footnote')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'mpfootnote')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'page')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'paragraph')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'part')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'secnumdepth')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'section')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'subparagraph')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'subsection')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'subsubsection')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'table')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'tocdepth')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'topnumber')
|
|
||||||
call <SID>Tex_CounterMenus('Counters', 'totalnumber')
|
|
||||||
" }}}
|
|
||||||
" theCounters {{{
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thebottomnumber')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thechapter')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thedbltopnumber')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theenumi')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theenumii')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theenumiii')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theenumiv')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theequation')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thefigure')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thefootnote')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thempfootnote')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thepage')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'theparagraph')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thepart')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thesecnumdepth')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thesection')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thesubparagraph')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thesubsection')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thesubsubsection')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thetable')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thetocdepth')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thetopnumber')
|
|
||||||
call <SID>Tex_CounterMenus('theCounters', 'thetotalnumber')
|
|
||||||
" }}}
|
|
||||||
" Type {{{
|
|
||||||
call <SID>Tex_CounterMenus('Type', 'alph')
|
|
||||||
call <SID>Tex_CounterMenus('Type', 'Alph')
|
|
||||||
call <SID>Tex_CounterMenus('Type', 'arabic')
|
|
||||||
call <SID>Tex_CounterMenus('Type', 'roman')
|
|
||||||
call <SID>Tex_CounterMenus('Type', 'Roman')
|
|
||||||
" }}}
|
|
||||||
endif
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Various
|
|
||||||
" ==============================================================================
|
|
||||||
if g:Tex_Menus
|
|
||||||
" Various {{{
|
|
||||||
call <SID>Tex_VariousMenus('ref{}' , '\ref{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('pageref{}' , '\pageref{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('label{}' , '\label{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('footnote{}' , '\footnote{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('footnotemark{}', '\footnotemark{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('footnotemark{}', '\footnotetext{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('cite{}' , '\cite{<++>}<++>')
|
|
||||||
call <SID>Tex_VariousMenus('nocite{}' , '\nocite{<++>}<++>')
|
|
||||||
" }}}
|
|
||||||
endif
|
|
||||||
|
|
||||||
if g:Tex_CatchVisMapErrors
|
|
||||||
exe "vnoremap ".g:Tex_Leader." :\<C-u>call ExecMap('".g:Tex_Leader."', 'v')\<CR>"
|
|
||||||
endif
|
|
||||||
" this is for avoiding reinclusion of imaps from next time on.
|
|
||||||
let s:doneOnce = 1
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,400 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: folding.vim
|
|
||||||
" Author: Srinath Avadhanula
|
|
||||||
" modifications/additions by Zhang Linbo
|
|
||||||
" Created: Tue Apr 23 05:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: functions to interact with Syntaxfolds.vim
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
nnoremap <unique> <Plug>Tex_RefreshFolds :call MakeTexFolds(1)<cr>
|
|
||||||
|
|
||||||
augroup LatexSuite
|
|
||||||
au LatexSuite User LatexSuiteFileType
|
|
||||||
\ call Tex_Debug('folding.vim: catching LatexSuiteFileType', 'fold') |
|
|
||||||
\ call Tex_SetFoldOptions()
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" Tex_SetFoldOptions: sets maps for every buffer {{{
|
|
||||||
" Description:
|
|
||||||
function! Tex_SetFoldOptions()
|
|
||||||
if exists('b:doneSetFoldOptions')
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let b:doneSetFoldOptions = 1
|
|
||||||
|
|
||||||
setlocal foldtext=TexFoldTextFunction()
|
|
||||||
|
|
||||||
if g:Tex_Folding && g:Tex_AutoFolding
|
|
||||||
call MakeTexFolds(0)
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:ml = '<Leader>'
|
|
||||||
|
|
||||||
call Tex_MakeMap(s:ml."rf", "<Plug>Tex_RefreshFolds", 'n', '<silent> <buffer>')
|
|
||||||
|
|
||||||
endfunction " }}}
|
|
||||||
" Tex_FoldSections: creates section folds {{{
|
|
||||||
" Author: Zhang Linbo
|
|
||||||
" Description:
|
|
||||||
" This function takes a comma seperated list of "sections" and creates fold
|
|
||||||
" definitions for them. The first item is supposed to be the "shallowest" field
|
|
||||||
" and the last is the "deepest". See g:Tex_FoldedSections for the default
|
|
||||||
" definition of the lst input argument.
|
|
||||||
"
|
|
||||||
" **works recursively**
|
|
||||||
function! Tex_FoldSections(lst, endpat)
|
|
||||||
let i = match(a:lst, ',')
|
|
||||||
if i > 0
|
|
||||||
let s = strpart(a:lst, 0, i)
|
|
||||||
else
|
|
||||||
let s = a:lst
|
|
||||||
endif
|
|
||||||
if s =~ '%%fakesection'
|
|
||||||
let s = '^\s*' . s
|
|
||||||
else
|
|
||||||
let pattern = ''
|
|
||||||
let prefix = ''
|
|
||||||
for label in split(s, "|")
|
|
||||||
let pattern .= prefix . '^\s*\\' . label . '\W\|^\s*%%fake' . label
|
|
||||||
let prefix = '\W\|'
|
|
||||||
endfor
|
|
||||||
let s = pattern
|
|
||||||
endif
|
|
||||||
let endpat = s . '\|' . a:endpat
|
|
||||||
if i > 0
|
|
||||||
call Tex_FoldSections(strpart(a:lst,i+1), endpat)
|
|
||||||
endif
|
|
||||||
let endpat = '^\s*\\appendix\W\|' . endpat
|
|
||||||
call AddSyntaxFoldItem(s, endpat, 0, -1)
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
" MakeTexFolds: function to create fold items for latex. {{{
|
|
||||||
"
|
|
||||||
" used in conjunction with MakeSyntaxFolds().
|
|
||||||
" see ../plugin/syntaxFolds.vim for documentation
|
|
||||||
function! MakeTexFolds(force)
|
|
||||||
if exists('g:Tex_Folding') && !g:Tex_Folding
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
if &ft != 'tex'
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
" Setup folded items lists g:Tex_Foldedxxxx
|
|
||||||
" 1. Use default value if g:Tex_Foldedxxxxxx is not defined
|
|
||||||
" 2. prepend default value to g:Tex_Foldedxxxxxx if it starts with ','
|
|
||||||
" 3. append default value to g:Tex_Foldedxxxxxx if it ends with ','
|
|
||||||
|
|
||||||
" Folding items which are not caught in any of the standard commands,
|
|
||||||
" environments or sections.
|
|
||||||
let s = 'item,slide,preamble,<<<'
|
|
||||||
if !exists('g:Tex_FoldedMisc')
|
|
||||||
let g:Tex_FoldedMisc = s
|
|
||||||
elseif g:Tex_FoldedMisc[0] == ','
|
|
||||||
let g:Tex_FoldedMisc = s . g:Tex_FoldedMisc
|
|
||||||
elseif g:Tex_FoldedMisc =~ ',$'
|
|
||||||
let g:Tex_FoldedMisc = g:Tex_FoldedMisc . s
|
|
||||||
endif
|
|
||||||
|
|
||||||
" By default do not fold any commands. It looks like trying to fold
|
|
||||||
" commands is a difficult problem since commands can be arbitrarily nested
|
|
||||||
" and the end patterns are not unique unlike the case of environments.
|
|
||||||
" For this to work well, we need a regexp which will match a line only if
|
|
||||||
" a command begins on that line but does not end on that line. This
|
|
||||||
" requires a regexp which will match unbalanced curly braces and that is
|
|
||||||
" apparently not doable with regexps.
|
|
||||||
let s = ''
|
|
||||||
if !exists('g:Tex_FoldedCommands')
|
|
||||||
let g:Tex_FoldedCommands = s
|
|
||||||
elseif g:Tex_FoldedCommands[0] == ','
|
|
||||||
let g:Tex_FoldedCommands = s . g:Tex_FoldedCommands
|
|
||||||
elseif g:Tex_FoldedCommands =~ ',$'
|
|
||||||
let g:Tex_FoldedCommands = g:Tex_FoldedCommands . s
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s = 'verbatim,comment,eq,gather,align,figure,table,thebibliography,'
|
|
||||||
\. 'keywords,abstract,titlepage'
|
|
||||||
if !exists('g:Tex_FoldedEnvironments')
|
|
||||||
let g:Tex_FoldedEnvironments = s
|
|
||||||
elseif g:Tex_FoldedEnvironments[0] == ','
|
|
||||||
let g:Tex_FoldedEnvironments = s . g:Tex_FoldedEnvironments
|
|
||||||
elseif g:Tex_FoldedEnvironments =~ ',$'
|
|
||||||
let g:Tex_FoldedEnvironments = g:Tex_FoldedEnvironments . s
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:Tex_FoldedSections')
|
|
||||||
let g:Tex_FoldedSections = 'part,chapter,section,'
|
|
||||||
\. 'subsection,subsubsection,paragraph'
|
|
||||||
endif
|
|
||||||
|
|
||||||
" the order in which these calls are made decides the nestedness. in
|
|
||||||
" latex, a table environment will always be embedded in either an item or
|
|
||||||
" a section etc. not the other way around. so we first fold up all the
|
|
||||||
" tables. and then proceed with the other regions.
|
|
||||||
|
|
||||||
let b:numFoldItems = 0
|
|
||||||
|
|
||||||
" ========================================================================
|
|
||||||
" How to add new folding items {{{
|
|
||||||
" ========================================================================
|
|
||||||
"
|
|
||||||
" Each of the following function calls defines a syntax fold region. Each
|
|
||||||
" definition consists of a call to the AddSyntaxFoldItem() function.
|
|
||||||
"
|
|
||||||
" The order in which the folds are defined is important. Juggling the
|
|
||||||
" order of the function calls will create havoc with folding. The
|
|
||||||
" "deepest" folding item needs to be called first. For example, if
|
|
||||||
" the \begin{table} environment is a subset (or lies within) the \section
|
|
||||||
" environment, then add the definition for the \table first.
|
|
||||||
"
|
|
||||||
" The AddSyntaxFoldItem() function takes either 4 or 6 arguments. When it
|
|
||||||
" is called with 4 arguments, it is equivalent to calling it with 6
|
|
||||||
" arguments with the last two left blank (i.e as empty strings)
|
|
||||||
"
|
|
||||||
" The explanation for each argument is as follows:
|
|
||||||
" startpat: a line matching this pattern defines the beginning of a fold.
|
|
||||||
" endpat : a line matching this pattern defines the end of a fold.
|
|
||||||
" startoff: this is the offset from the starting line at which folding will
|
|
||||||
" actually start
|
|
||||||
" endoff : like startoff, but gives the offset of the actual fold end from
|
|
||||||
" the line satisfying endpat.
|
|
||||||
" startoff and endoff are necessary when the folding region does
|
|
||||||
" not have a specific end pattern corresponding to a start
|
|
||||||
" pattern. for example in latex,
|
|
||||||
" \begin{section}
|
|
||||||
" defines the beginning of a section, but its not necessary to
|
|
||||||
" have a corresponding
|
|
||||||
" \end{section}
|
|
||||||
" the section is assumed to end 1 line _before_ another section
|
|
||||||
" starts.
|
|
||||||
" startskip: a pattern which defines the beginning of a "skipped" region.
|
|
||||||
"
|
|
||||||
" For example, suppose we define a \itemize fold as follows:
|
|
||||||
" startpat = '^\s*\\item',
|
|
||||||
" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
|
|
||||||
" startoff = 0,
|
|
||||||
" endoff = -1
|
|
||||||
"
|
|
||||||
" This defines a fold which starts with a line beginning with an
|
|
||||||
" \item and ending one line before a line beginning with an
|
|
||||||
" \item or \end{enumerate} etc.
|
|
||||||
"
|
|
||||||
" Then, as long as \item's are not nested things are fine.
|
|
||||||
" However, once items begin to nest, the fold started by one
|
|
||||||
" \item can end because of an \item in an \itemize
|
|
||||||
" environment within this \item. i.e, the following can happen:
|
|
||||||
"
|
|
||||||
" \begin{itemize}
|
|
||||||
" \item Some text <------- fold will start here
|
|
||||||
" This item will contain a nested item
|
|
||||||
" \begin{itemize} <----- fold will end here because next line contains \item...
|
|
||||||
" \item Hello
|
|
||||||
" \end{itemize} <----- ... instead of here.
|
|
||||||
" \item Next item of the parent itemize
|
|
||||||
" \end{itemize}
|
|
||||||
"
|
|
||||||
" Therefore, in order to completely define a folding item which
|
|
||||||
" allows nesting, we need to also define a "skip" pattern.
|
|
||||||
" startskip and end skip do that.
|
|
||||||
" Leave '' when there is no nesting.
|
|
||||||
" endskip: the pattern which defines the end of the "skip" pattern for
|
|
||||||
" nested folds.
|
|
||||||
"
|
|
||||||
" Example:
|
|
||||||
" 1. A syntax fold region for a latex section is
|
|
||||||
" startpat = "\\section{"
|
|
||||||
" endpat = "\\section{"
|
|
||||||
" startoff = 0
|
|
||||||
" endoff = -1
|
|
||||||
" startskip = ''
|
|
||||||
" endskip = ''
|
|
||||||
" Note that the start and end patterns are thus the same and endoff has a
|
|
||||||
" negative value to capture the effect of a section ending one line before
|
|
||||||
" the next starts.
|
|
||||||
" 2. A syntax fold region for the \itemize environment is:
|
|
||||||
" startpat = '^\s*\\item',
|
|
||||||
" endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
|
|
||||||
" startoff = 0,
|
|
||||||
" endoff = -1,
|
|
||||||
" startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
|
|
||||||
" endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
|
|
||||||
" Note the use of startskip and endskip to allow nesting.
|
|
||||||
"
|
|
||||||
"
|
|
||||||
" }}}
|
|
||||||
" ========================================================================
|
|
||||||
|
|
||||||
" {{{ comment lines
|
|
||||||
if g:Tex_FoldedMisc =~ '\<comments\>'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '^%\([^%]\|[^f]\|[^a]\|[^k]\|[^e]\)',
|
|
||||||
\ '^[^%]',
|
|
||||||
\ 0,
|
|
||||||
\ -1
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" {{{ items
|
|
||||||
if g:Tex_FoldedMisc =~ '\<item\>'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '^\s*\\item',
|
|
||||||
\ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
|
|
||||||
\ 0,
|
|
||||||
\ -1,
|
|
||||||
\ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
|
|
||||||
\ '^\s*\\end{\(enumerate\|itemize\|description\)}'
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" {{{ title
|
|
||||||
if g:Tex_FoldedMisc =~ '\<title\>'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '^\s*\\title\W',
|
|
||||||
\ '^\s*\\maketitle',
|
|
||||||
\ 0,
|
|
||||||
\ 0
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" Commands and Environments {{{
|
|
||||||
" Fold the commands and environments in 2 passes.
|
|
||||||
let pass = 0
|
|
||||||
while pass < 2
|
|
||||||
if pass == 0
|
|
||||||
let lst = g:Tex_FoldedCommands
|
|
||||||
else
|
|
||||||
let lst = g:Tex_FoldedEnvironments
|
|
||||||
endif
|
|
||||||
while lst != ''
|
|
||||||
let i = match(lst, ',')
|
|
||||||
if i > 0
|
|
||||||
let s = strpart(lst, 0, i)
|
|
||||||
let lst = strpart(lst, i+1)
|
|
||||||
else
|
|
||||||
let s = lst
|
|
||||||
let lst = ''
|
|
||||||
endif
|
|
||||||
if s != ''
|
|
||||||
if pass == 0
|
|
||||||
" NOTE: This pattern ensures that a command which is
|
|
||||||
" terminated on the same line will not start a fold.
|
|
||||||
" However, it will also refuse to fold certain commands
|
|
||||||
" which have not terminated. eg:
|
|
||||||
" \commandname{something \bf{text} and
|
|
||||||
" will _not_ start a fold.
|
|
||||||
" In other words, the pattern is safe, but not exact.
|
|
||||||
call AddSyntaxFoldItem('^\s*\\'.s.'{[^{}]*$','^[^}]*}',0,0)
|
|
||||||
else
|
|
||||||
call AddSyntaxFoldItem('^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s,0,0)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
let pass = pass + 1
|
|
||||||
endwhile
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" Sections {{{
|
|
||||||
if g:Tex_FoldedSections != ''
|
|
||||||
call Tex_FoldSections(g:Tex_FoldedSections,
|
|
||||||
\ '^\s*\\frontmatter\|^\s*\\mainmatter\|^\s*\\backmatter\|'
|
|
||||||
\. '^\s*\\begin{thebibliography\|>>>\|^\s*\\endinput\|'
|
|
||||||
\. '^\s*\\begin{slide\|^\s*\\end{document')
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" {{{ slide
|
|
||||||
if g:Tex_FoldedMisc =~ '\<slide\>'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '^\s*\\begin{slide',
|
|
||||||
\ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
|
|
||||||
\ 0,
|
|
||||||
\ 0
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" {{{ preamble
|
|
||||||
if g:Tex_FoldedMisc =~ '\<preamble\>'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '^\s*\\document\(class\|style\).*{',
|
|
||||||
\ '^\s*\\begin{document}',
|
|
||||||
\ 0,
|
|
||||||
\ -1
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" Manually folded regions {{{
|
|
||||||
if g:Tex_FoldedMisc =~ '\(^\|,\)<<<\(,\|$\)'
|
|
||||||
call AddSyntaxFoldItem (
|
|
||||||
\ '<<<',
|
|
||||||
\ '>>>',
|
|
||||||
\ 0,
|
|
||||||
\ 0
|
|
||||||
\ )
|
|
||||||
endif
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
call MakeSyntaxFolds(a:force)
|
|
||||||
normal! zv
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" TexFoldTextFunction: create fold text for folds {{{
|
|
||||||
function! TexFoldTextFunction()
|
|
||||||
let leadingSpace = matchstr(' ', ' \{,'.indent(v:foldstart).'}')
|
|
||||||
if getline(v:foldstart) =~ '^\s*\\begin{'
|
|
||||||
let header = matchstr(getline(v:foldstart),
|
|
||||||
\ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
|
|
||||||
let caption = ''
|
|
||||||
let label = ''
|
|
||||||
let i = v:foldstart
|
|
||||||
while i <= v:foldend
|
|
||||||
if getline(i) =~ '\\caption'
|
|
||||||
" distinguish between
|
|
||||||
" \caption{fulldesc} - fulldesc will be displayed
|
|
||||||
" \caption[shortdesc]{fulldesc} - shortdesc will be displayed
|
|
||||||
if getline(i) =~ '\\caption\['
|
|
||||||
let caption = matchstr(getline(i), '\\caption\[\zs[^\]]*')
|
|
||||||
let caption = substitute(caption, '\zs\]{.*}[^}]*$', '', '')
|
|
||||||
else
|
|
||||||
let caption = matchstr(getline(i), '\\caption{\zs.*')
|
|
||||||
let caption = substitute(caption, '\zs}[^}]*$', '', '')
|
|
||||||
end
|
|
||||||
elseif getline(i) =~ '\\label'
|
|
||||||
let label = matchstr(getline(i), '\\label{\zs.*')
|
|
||||||
" :FIXME: this does not work when \label contains a
|
|
||||||
" newline or a }-character
|
|
||||||
let label = substitute(label, '\([^}]*\)}.*$', '\1', '')
|
|
||||||
end
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
let ftxto = foldtext()
|
|
||||||
" if no caption found, then use the second line.
|
|
||||||
if caption == ''
|
|
||||||
let caption = getline(v:foldstart + 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
let retText = matchstr(ftxto, '^[^:]*').': '.header.
|
|
||||||
\ ' ('.label.'): '.caption
|
|
||||||
return leadingSpace.retText
|
|
||||||
|
|
||||||
elseif getline(v:foldstart) =~ '^%' && getline(v:foldstart) !~ '^%%fake'
|
|
||||||
let ftxto = foldtext()
|
|
||||||
return leadingSpace.substitute(ftxto, ':', ': % ', '')
|
|
||||||
elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
|
|
||||||
let ftxto = leadingSpace.foldtext()
|
|
||||||
return substitute(ftxto, ':', ': Preamble: ', '')
|
|
||||||
else
|
|
||||||
return leadingSpace.foldtext()
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,729 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: mathmacros.vim
|
|
||||||
" Author: Mikolaj Machowski
|
|
||||||
" Created: Tue Apr 23 06:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: macros for everything mathematical in latex.
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:MathMenuName = g:Tex_MenuPrefix.'Ma&th.'
|
|
||||||
|
|
||||||
function! Tex_MathMenuRemove()
|
|
||||||
exe 'silent! aunmenu '.s:MathMenuName
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let s:pA = 'amenu <silent> 85 '.s:MathMenuName
|
|
||||||
|
|
||||||
" brackets and dollars {{{
|
|
||||||
exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
|
|
||||||
exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
|
|
||||||
exe s:pA.'&$\ $ <plug>$$'
|
|
||||||
exe s:pA.'-sepmath1- :'
|
|
||||||
" }}}
|
|
||||||
" MATH arrows {{{
|
|
||||||
let s:pA1 = s:pA."&Arrows."
|
|
||||||
exe s:pA1.'Leftarrow<Tab>⇐ <plug>\Leftarrow '
|
|
||||||
exe s:pA1.'leftarrow<Tab>← <plug>\leftarrow'
|
|
||||||
exe s:pA1.'longleftarrow<Tab>← <plug>\longleftarrow '
|
|
||||||
exe s:pA1.'Longleftarrow<Tab>⇐ <plug>\Longleftarrow '
|
|
||||||
exe s:pA1.'rightarrow<Tab>→ <plug>\rightarrow '
|
|
||||||
exe s:pA1.'longrightarrow<Tab>→ <plug>\longrightarrow '
|
|
||||||
exe s:pA1.'Rightarrow<Tab>⇒ <plug>\Rightarrow '
|
|
||||||
exe s:pA1.'Longrightarrow<Tab>⇒ <plug>\Longrightarrow '
|
|
||||||
exe s:pA1.'leftrightarrow<Tab>⇆ <plug>\leftrightarrow '
|
|
||||||
exe s:pA1.'longleftrightarrow<Tab>↔ <plug>\longleftrightarrow '
|
|
||||||
exe s:pA1.'Leftrightarrow<Tab>⇔ <plug>\Leftrightarrow '
|
|
||||||
exe s:pA1.'Longleftrightarrow<Tab>⇔ <plug>\Longleftrightarrow '
|
|
||||||
exe s:pA1.'uparrow<Tab>↑ <plug>\uparrow '
|
|
||||||
exe s:pA1.'Uparrow<Tab>⇑ <plug>\Uparrow '
|
|
||||||
exe s:pA1.'downarrow<Tab>↓ <plug>\downarrow '
|
|
||||||
exe s:pA1.'Downarrow<Tab>⇓ <plug>\Downarrow '
|
|
||||||
exe s:pA1.'updownarrow<Tab>↕ <plug>\updownarrow '
|
|
||||||
exe s:pA1.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
|
|
||||||
exe s:pA1.'nearrow<Tab>↗ <plug>\nearrow '
|
|
||||||
exe s:pA1.'searrow<Tab>↘ <plug>\searrow '
|
|
||||||
exe s:pA1.'swarrow<Tab>↙ <plug>\swarrow '
|
|
||||||
exe s:pA1.'nwarrow<Tab>↖ <plug>\nwarrow '
|
|
||||||
exe s:pA1.'mapsto<Tab>↦ <plug>\mapsto '
|
|
||||||
exe s:pA1.'leadsto<Tab>↝ <plug>\leadsto '
|
|
||||||
exe s:pA1.'longmapsto<Tab>⇖ <plug>\longmapsto '
|
|
||||||
exe s:pA1.'hookleftarrow<Tab>↩ <plug>\hookleftarrow '
|
|
||||||
exe s:pA1.'hookrightarrow<Tab>↪ <plug>\hookrightarrow '
|
|
||||||
exe s:pA1.'leftharpoonup<Tab>↼ <plug>\leftharpoonup '
|
|
||||||
exe s:pA1.'leftharpoondown<Tab>↽ <plug>\leftharpoondown '
|
|
||||||
exe s:pA1.'rightharpoonup<Tab>⇀ <plug>\rightharpoonup '
|
|
||||||
exe s:pA1.'rightharpoondown<Tab>⇁ <plug>\rightharpoondown '
|
|
||||||
exe s:pA1.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
|
|
||||||
exe s:pA1.'overleftarrow<Tab> <plug>\overleftarrow '
|
|
||||||
exe s:pA1.'overrightarrow<Tab> <plug>\overrightarrow '
|
|
||||||
exe s:pA1.'overleftrightarrow<Tab> <plug>\overleftrightarrow '
|
|
||||||
exe s:pA1.'underleftarrow<Tab> <plug>\underleftarrow '
|
|
||||||
exe s:pA1.'underrightarrow<Tab> <plug>\underrightarrow '
|
|
||||||
exe s:pA1.'underleftrightarrow<Tab> <plug>\underleftrightarrow '
|
|
||||||
exe s:pA1.'xleftarrow<Tab> <plug>\xleftarrow '
|
|
||||||
exe s:pA1.'xrightarrow<Tab> <plug>\xrightarrow '
|
|
||||||
" }}}
|
|
||||||
" MATH Arrows2 {{{
|
|
||||||
let s:pA1a = s:pA."Arrows2."
|
|
||||||
exe s:pA1a.'dashleftarrow<Tab>⇠ <plug>\dashleftarrow '
|
|
||||||
exe s:pA1a.'leftleftarrows<Tab>⇇ <plug>\leftleftarrows '
|
|
||||||
exe s:pA1a.'leftrightarrows<Tab>⇆ <plug>\leftrightarrows '
|
|
||||||
exe s:pA1a.'Lleftarrow<Tab>⇚ <plug>\Lleftarrow '
|
|
||||||
exe s:pA1a.'twoheadleftarrow<Tab>↞ <plug>\twoheadleftarrow '
|
|
||||||
exe s:pA1a.'leftarrowtail<Tab>↢ <plug>\leftarrowtail '
|
|
||||||
exe s:pA1a.'leftrightharpoons<Tab>⇋ <plug>\leftrightharpoons '
|
|
||||||
exe s:pA1a.'Lsh<Tab>↰ <plug>\Lsh '
|
|
||||||
exe s:pA1a.'looparrowleft<Tab>↫ <plug>\looparrowleft '
|
|
||||||
exe s:pA1a.'curvearrowleft<Tab>↶ <plug>\curvearrowleft '
|
|
||||||
exe s:pA1a.'circlearrowleft<Tab>↺ <plug>\circlearrowleft '
|
|
||||||
exe s:pA1a.'dashrightarrow<Tab>⇢ <plug>\dashrightarrow '
|
|
||||||
exe s:pA1a.'rightrightarrows<Tab>⇉ <plug>\rightrightarrows '
|
|
||||||
exe s:pA1a.'rightleftarrows<Tab>⇄ <plug>\rightleftarrows '
|
|
||||||
exe s:pA1a.'Rrightarrow<Tab>⇛ <plug>\Rrightarrow '
|
|
||||||
exe s:pA1a.'twoheadrightarrow<Tab>↠ <plug>\twoheadrightarrow '
|
|
||||||
exe s:pA1a.'rightarrowtail<Tab>↣ <plug>\rightarrowtail '
|
|
||||||
exe s:pA1a.'rightleftharpoons<Tab>⇌ <plug>\rightleftharpoons '
|
|
||||||
exe s:pA1a.'Rsh<Tab>↱ <plug>\Rsh '
|
|
||||||
exe s:pA1a.'looparrowright<Tab>↬ <plug>\looparrowright '
|
|
||||||
exe s:pA1a.'curvearrowright<Tab>↷ <plug>\curvearrowright '
|
|
||||||
exe s:pA1a.'circlearrowright<Tab>↻ <plug>\circlearrowright '
|
|
||||||
exe s:pA1a.'multimap<Tab>⊸ <plug>\multimap '
|
|
||||||
exe s:pA1a.'upuparrows<Tab>⇈ <plug>\upuparrows '
|
|
||||||
exe s:pA1a.'downdownarrows<Tab>⇊ <plug>\downdownarrows '
|
|
||||||
exe s:pA1a.'upharpoonleft<Tab>↿ <plug>\upharpoonleft '
|
|
||||||
exe s:pA1a.'upharpoonright<Tab>↾ <plug>\upharpoonright '
|
|
||||||
exe s:pA1a.'downharpoonleft<Tab>⇃ <plug>\downharpoonleft '
|
|
||||||
exe s:pA1a.'downharpoonright<Tab>⇂ <plug>\downharpoonright '
|
|
||||||
exe s:pA1a.'rightsquigarrow<Tab>⇝ <plug>\rightsquigarrow '
|
|
||||||
exe s:pA1a.'leftrightsquigarrow<Tab>↭ <plug>\leftrightsquigarrow '
|
|
||||||
" }}}
|
|
||||||
" MATH nArrows {{{
|
|
||||||
let s:pA1b = s:pA."&nArrows."
|
|
||||||
exe s:pA1b.'nleftarrow<Tab>↚ <plug>\nleftarrow '
|
|
||||||
exe s:pA1b.'nLeftarrow<Tab>⇍ <plug>\nLeftarrow '
|
|
||||||
exe s:pA1b.'nleftrightarrow<Tab>↮ <plug>\nleftrightarrow '
|
|
||||||
exe s:pA1b.'nLeftrightarrow<Tab>⇎ <plug>\nleftrightarrow '
|
|
||||||
exe s:pA1b.'nrightarrow<Tab>↛ <plug>\nrightarrow '
|
|
||||||
exe s:pA1b.'nRightarrow<Tab>⇏ <plug>\nRightarrow '
|
|
||||||
" }}}
|
|
||||||
" MATH Fonts {{{
|
|
||||||
let s:pA2a = s:pA."&MathFonts."
|
|
||||||
exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
|
|
||||||
" }}}
|
|
||||||
" Greek Letters small {{{
|
|
||||||
let s:pA2 = s:pA."&Greek.&Small."
|
|
||||||
exe s:pA2.'alpha<Tab>`a\ \ α <plug>\alpha '
|
|
||||||
exe s:pA2.'beta<Tab>`b\ \ β <plug>\beta '
|
|
||||||
exe s:pA2.'gamma<Tab>`g\ \ γ <plug>\gamma '
|
|
||||||
exe s:pA2.'delta<Tab>`d\ \ δ <plug>\delta '
|
|
||||||
exe s:pA2.'epsilon<Tab>∊ <plug>\epsilon '
|
|
||||||
exe s:pA2.'varepsilon<Tab>`e\ \ ε <plug>\varepsilon '
|
|
||||||
exe s:pA2.'zeta<Tab>`z\ \ ζ <plug>\zeta '
|
|
||||||
exe s:pA2.'eta<Tab>`h\ \ η <plug>\eta '
|
|
||||||
exe s:pA2.'theta<Tab>`q\ \ θ <plug>\theta '
|
|
||||||
exe s:pA2.'vartheta<Tab>ϑ <plug>\vartheta '
|
|
||||||
exe s:pA2.'iota<Tab>`i\ \ ι <plug>\iota '
|
|
||||||
exe s:pA2.'kappa<Tab>`k\ \ κ <plug>\kappa '
|
|
||||||
exe s:pA2.'lambda<Tab>`l\ \ λ <plug>\lambda '
|
|
||||||
exe s:pA2.'mu<Tab>`m\ \ μ <plug>\mu '
|
|
||||||
exe s:pA2.'nu<Tab>`n\ \ ν <plug>\nu '
|
|
||||||
exe s:pA2.'xi<Tab>`x\ \ ξ <plug>\xi '
|
|
||||||
exe s:pA2.'pi<Tab>`p\ \ π <plug>\pi '
|
|
||||||
exe s:pA2.'varpi<Tab>ϖ <plug>\varpi '
|
|
||||||
exe s:pA2.'rho<Tab>`r\ \ ρ <plug>\rho '
|
|
||||||
exe s:pA2.'varrho<Tab>ϱ <plug>\varrho '
|
|
||||||
exe s:pA2.'sigma<Tab>`s\ \ σ <plug>\sigma '
|
|
||||||
exe s:pA2.'varsigma<Tab>`v\ \ ς <plug>\varsigma '
|
|
||||||
exe s:pA2.'tau<Tab>`t\ \ τ <plug>\tau '
|
|
||||||
exe s:pA2.'upsilon<Tab>`u\ \ υ <plug>\upsilon '
|
|
||||||
exe s:pA2.'phi<Tab>φ <plug>\phi '
|
|
||||||
exe s:pA2.'varphi<Tab>`f\ \ ϕ <plug>\varphi '
|
|
||||||
exe s:pA2.'chi<Tab>`c\ \ χ <plug>\chi '
|
|
||||||
exe s:pA2.'psi<Tab>`y\ \ ψ <plug>\psi '
|
|
||||||
exe s:pA2.'omega<Tab>`w\ \ ω <plug>\omega '
|
|
||||||
" }}}
|
|
||||||
" Greek Letters big {{{
|
|
||||||
let s:pA3 = s:pA.'&Greek.&Big.'
|
|
||||||
exe s:pA3.'Alpha<Tab>`A\ \ A <plug>\Alpha '
|
|
||||||
exe s:pA3.'Beta<Tab>`B\ \ B <plug>\Beta '
|
|
||||||
exe s:pA3.'Gamma<Tab>`G\ \ Γ <plug>\Gamma '
|
|
||||||
exe s:pA3.'Delta<Tab>`D\ \ Δ <plug>\Delta '
|
|
||||||
exe s:pA3.'Epsilon<Tab>`E\ \ E <plug>\Epsilon '
|
|
||||||
exe s:pA3.'Zeta<Tab>`Z\ \ Z <plug>\mathrm{Z} '
|
|
||||||
exe s:pA3.'Eta<Tab>`H\ \ H <plug>\Eta '
|
|
||||||
exe s:pA3.'Theta<Tab>Θ <plug>\Theta '
|
|
||||||
exe s:pA3.'Iota<Tab>I <plug>\mathrm{I} '
|
|
||||||
exe s:pA3.'Kappa<Tab>`K\ \ K <plug>\Kappa '
|
|
||||||
exe s:pA3.'Lambda<Tab>`L\ \ Λ <plug>\Lambda '
|
|
||||||
exe s:pA3.'Mu<Tab>`M\ \ M <plug>\Mu '
|
|
||||||
exe s:pA3.'Nu<Tab>`N\ \ N <plug>\Nu '
|
|
||||||
exe s:pA3.'Xi<Tab>`X\ \ Ξ <plug>\Xi '
|
|
||||||
exe s:pA3.'Pi<Tab>`P\ \ Π <plug>\Pi '
|
|
||||||
exe s:pA3.'Rho<Tab>`R\ \ P <plug>\Rho '
|
|
||||||
exe s:pA3.'Sigma<Tab>`S\ \ Σ <plug>\Sigma '
|
|
||||||
exe s:pA3.'Tau<Tab>`T\ \ T <plug>\Tau '
|
|
||||||
exe s:pA3.'Upsilon<Tab>`U\ \ Y <plug>\Upsilon '
|
|
||||||
exe s:pA3.'Phi<Tab>Φ <plug>\Phi '
|
|
||||||
exe s:pA3.'Chi<Tab>`C\ \ X <plug>\Chi '
|
|
||||||
exe s:pA3.'Psi<Tab>`Y\ \ Ψ <plug>\Psi '
|
|
||||||
exe s:pA3.'Omega<Tab>`W\ \ Ω <plug>\Omega '
|
|
||||||
" }}}
|
|
||||||
" BinaryRel1 {{{
|
|
||||||
let s:pA4 = s:pA."&BinaryRel1."
|
|
||||||
exe s:pA4.'ll<Tab>≪ <plug>\ll '
|
|
||||||
exe s:pA4.'lll<Tab>⋘ <plug>\lll '
|
|
||||||
exe s:pA4.'leqslant<Tab>≤ <plug>\leqslant '
|
|
||||||
exe s:pA4.'leq<Tab>≤ <plug>\leq '
|
|
||||||
exe s:pA4.'leqq<Tab>≦ <plug>\leqq '
|
|
||||||
exe s:pA4.'eqslantless<Tab>⋜ <plug>\eqslantless '
|
|
||||||
exe s:pA4.'lessdot<Tab>⋖ <plug>\lessdot '
|
|
||||||
exe s:pA4.'prec<Tab>≺ <plug>\prec '
|
|
||||||
exe s:pA4.'preceq<Tab>≼ <plug>\preceq '
|
|
||||||
exe s:pA4.'preccurlyeq<Tab>≼ <plug>\preccurlyeq '
|
|
||||||
exe s:pA4.'curlyeqprec<Tab>⋞ <plug>\curlyeqprec '
|
|
||||||
exe s:pA4.'lesssim<Tab>≲ <plug>\lesssim '
|
|
||||||
exe s:pA4.'lessapprox<Tab> <plug>\lessapprox '
|
|
||||||
exe s:pA4.'precsim<Tab>≾ <plug>\precsim '
|
|
||||||
exe s:pA4.'precapprox<Tab> <plug>\precapprox '
|
|
||||||
exe s:pA4.'in<Tab>∈ <plug>\in '
|
|
||||||
exe s:pA4.'subset<Tab>`(\ \ ⊂ <plug>\subset '
|
|
||||||
exe s:pA4.'Subset<Tab>`)\ \ ⋐ <plug>\Subset '
|
|
||||||
exe s:pA4.'subseteq<Tab>⊆ <plug>\subseteq '
|
|
||||||
exe s:pA4.'subseteqq<Tab> <plug>\subseteqq '
|
|
||||||
exe s:pA4.'sqsubset<Tab>⊏ <plug>\sqsubset '
|
|
||||||
exe s:pA4.'sqsubseteq<Tab>⊑ <plug>\sqsubseteq '
|
|
||||||
exe s:pA4.'smile<Tab>⌣ <plug>\smile '
|
|
||||||
exe s:pA4.'smallsmile<Tab>⌣ <plug>\smallsmile '
|
|
||||||
exe s:pA4.'parallel<Tab>∥ <plug>\parallel '
|
|
||||||
exe s:pA4.'shortparallel<Tab>∥ <plug>\shortparallel '
|
|
||||||
exe s:pA4.'dashv<Tab>⊣ <plug>\dashv '
|
|
||||||
exe s:pA4.'vdash<Tab>⊢ <plug>\vdash '
|
|
||||||
exe s:pA4.'vDash<Tab>⊨ <plug>\vDash '
|
|
||||||
exe s:pA4.'models<Tab>⊨ <plug>\models '
|
|
||||||
exe s:pA4.'therefore<Tab>∴ <plug>\therefore '
|
|
||||||
exe s:pA4.'backepsilon<Tab>∍ <plug>\backepsilon '
|
|
||||||
" }}}
|
|
||||||
" nBinaryRel1 {{{
|
|
||||||
let s:pA4a = s:pA."&nBinaryRel1."
|
|
||||||
exe s:pA4a.'nless<Tab>≮ <plug>\nless '
|
|
||||||
exe s:pA4a.'nleqslant<Tab>≰ <plug>\nleqslant '
|
|
||||||
exe s:pA4a.'nleq<Tab> <plug>\nleq '
|
|
||||||
exe s:pA4a.'lneq<Tab> <plug>\lneq '
|
|
||||||
exe s:pA4a.'nleqq<Tab> <plug>\nleqq '
|
|
||||||
exe s:pA4a.'lneqq<Tab>≨ <plug>\lneqq '
|
|
||||||
exe s:pA4a.'lvertneqq<Tab> <plug>\lvertneqq '
|
|
||||||
exe s:pA4a.'nprec<Tab>⊀ <plug>\nprec '
|
|
||||||
exe s:pA4a.'npreceq<Tab>⋠ <plug>\npreceq '
|
|
||||||
exe s:pA4a.'precneqq<Tab> <plug>\precneqq '
|
|
||||||
exe s:pA4a.'lnsim<Tab>⋦ <plug>\lnsim '
|
|
||||||
exe s:pA4a.'lnapprox<Tab> <plug>\lnapprox '
|
|
||||||
exe s:pA4a.'precnsim<Tab>⋨ <plug>\precnsim '
|
|
||||||
exe s:pA4a.'precnapprox<Tab> <plug>\precnapprox '
|
|
||||||
exe s:pA4a.'notin<Tab>∉ <plug>\notin '
|
|
||||||
exe s:pA4a.'nsubseteq<Tab>⊈ <plug>\nsubseteq '
|
|
||||||
exe s:pA4a.'varsubsetneq<Tab> <plug>\varsubsetneq '
|
|
||||||
exe s:pA4a.'subsetneq<Tab>⊊ <plug>\subsetneq '
|
|
||||||
exe s:pA4a.'nsubseteqq<Tab> <plug>\nsubseteqq '
|
|
||||||
exe s:pA4a.'varsubsetneqq<Tab> <plug>\varsubsetneqq '
|
|
||||||
exe s:pA4a.'subsetneqq<Tab>⊈ <plug>\subsetneqq '
|
|
||||||
exe s:pA4a.'nparallel<Tab>∦ <plug>\nparallel '
|
|
||||||
exe s:pA4a.'nshortparallel<Tab> <plug>\nshortparallel '
|
|
||||||
exe s:pA4a.'nvdash<Tab>⊬ <plug>\nvdash '
|
|
||||||
exe s:pA4a.'nvDash<Tab>⊭ <plug>\nvDash '
|
|
||||||
" }}}
|
|
||||||
" BinaryRel2 {{{
|
|
||||||
let s:pA5 = s:pA."&BinaryRel2."
|
|
||||||
exe s:pA5.'gg<Tab>≫ <plug>\gg '
|
|
||||||
exe s:pA5.'ggg<Tab>⋙ <plug>\ggg '
|
|
||||||
exe s:pA5.'gggtr<Tab>⋙ <plug>\gggtr '
|
|
||||||
exe s:pA5.'geqslant<Tab> <plug>\geqslant '
|
|
||||||
exe s:pA5.'geq<Tab>≥ <plug>\geq '
|
|
||||||
exe s:pA5.'geqq<Tab>≧ <plug>\geqq '
|
|
||||||
exe s:pA5.'eqslantgtr<Tab> <plug>\eqslantgtr '
|
|
||||||
exe s:pA5.'gtrdot<Tab>⋗ <plug>\gtrdot '
|
|
||||||
exe s:pA5.'succ<Tab>≻ <plug>\succ '
|
|
||||||
exe s:pA5.'succeq<Tab>≽ <plug>\succeq '
|
|
||||||
exe s:pA5.'succcurlyeq<Tab>≽ <plug>\succcurlyeq '
|
|
||||||
exe s:pA5.'curlyeqsucc<Tab>⋟ <plug>\curlyeqsucc '
|
|
||||||
exe s:pA5.'gtrsim<Tab>≳ <plug>\gtrsim '
|
|
||||||
exe s:pA5.'gtrapprox<Tab> <plug>\gtrapprox '
|
|
||||||
exe s:pA5.'succsim<Tab>≿ <plug>\succsim '
|
|
||||||
exe s:pA5.'succapprox<Tab> <plug>\succapprox '
|
|
||||||
exe s:pA5.'ni<Tab>∋ <plug>\ni '
|
|
||||||
exe s:pA5.'owns<Tab> <plug>\owns '
|
|
||||||
exe s:pA5.'supset<Tab>⊃ <plug>\supset '
|
|
||||||
exe s:pA5.'Supset<Tab>⋑ <plug>\Supset '
|
|
||||||
exe s:pA5.'supseteq<Tab>⊇ <plug>\supseteq '
|
|
||||||
exe s:pA5.'supseteqq<Tab> <plug>\supseteqq '
|
|
||||||
exe s:pA5.'sqsupset<Tab>⊐ <plug>\sqsupset '
|
|
||||||
exe s:pA5.'sqsupseteq<Tab>⊒ <plug>\sqsupseteq '
|
|
||||||
exe s:pA5.'frown<Tab>⌢ <plug>\frown '
|
|
||||||
exe s:pA5.'smallfrown<Tab>⌢ <plug>\smallfrown '
|
|
||||||
exe s:pA5.'mid<Tab>∣ <plug>\mid '
|
|
||||||
exe s:pA5.'shortmid<Tab> <plug>\shortmid '
|
|
||||||
exe s:pA5.'between<Tab>≬ <plug>\between '
|
|
||||||
exe s:pA5.'Vdash<Tab>⊩ <plug>\Vdash '
|
|
||||||
exe s:pA5.'bowtie<Tab>⋈ <plug>\bowtie '
|
|
||||||
exe s:pA5.'Join<Tab>⋈ <plug>\Join '
|
|
||||||
exe s:pA5.'pitchfork<Tab>⋔ <plug>\pitchfork '
|
|
||||||
" }}}
|
|
||||||
" {{{ nBinaryRel2
|
|
||||||
let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiæ logarytmy
|
|
||||||
exe s:pA5a.'ngtr<Tab>≯ <plug>\ngtr '
|
|
||||||
exe s:pA5a.'ngeqslant<Tab>≱ <plug>\ngeqslant '
|
|
||||||
exe s:pA5a.'ngeq<Tab> <plug>\ngeq '
|
|
||||||
exe s:pA5a.'gneq<Tab> <plug>\gneq '
|
|
||||||
exe s:pA5a.'ngeqq<Tab> <plug>\ngeqq '
|
|
||||||
exe s:pA5a.'gneqq<Tab>≩ <plug>\gneqq '
|
|
||||||
exe s:pA5a.'nsucc<Tab>⊁ <plug>\nsucc '
|
|
||||||
exe s:pA5a.'nsucceq<Tab>⋡ <plug>\nsucceq '
|
|
||||||
exe s:pA5a.'succneqq<Tab> <plug>\succneqq '
|
|
||||||
exe s:pA5a.'gnsim<Tab>⋧ <plug>\gnsim '
|
|
||||||
exe s:pA5a.'gnapprox<Tab> <plug>\gnapprox '
|
|
||||||
exe s:pA5a.'succnsim<Tab>⋩ <plug>\succnsim '
|
|
||||||
exe s:pA5a.'succnapprox<Tab> <plug>\succnapprox '
|
|
||||||
exe s:pA5a.'nsupseteq<Tab>⊉ <plug>\nsupseteq '
|
|
||||||
exe s:pA5a.'varsupsetneq<Tab> <plug>\varsupsetneq '
|
|
||||||
exe s:pA5a.'supsetneq<Tab>⊋ <plug>\supsetneq '
|
|
||||||
exe s:pA5a.'nsupseteqq<Tab> <plug>\nsupseteqq '
|
|
||||||
exe s:pA5a.'varsupsetneqq<Tab> <plug>\varsupsetneqq '
|
|
||||||
exe s:pA5a.'supsetneqq<Tab> <plug>\supsetneqq '
|
|
||||||
exe s:pA5a.'nmid<Tab>∤ <plug>\nmid '
|
|
||||||
exe s:pA5a.'nshortmid<Tab> <plug>\nshortmid '
|
|
||||||
exe s:pA5a.'nVdash<Tab>⊮ <plug>\nVdash '
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryRel3
|
|
||||||
let s:pA6 = s:pA."&BinaryRel3."
|
|
||||||
exe s:pA6.'doteq<Tab>≐ <plug>\doteq '
|
|
||||||
exe s:pA6.'circeq<Tab>≗ <plug>\circeq '
|
|
||||||
exe s:pA6.'eqcirc<Tab>≖ <plug>\eqcirc '
|
|
||||||
exe s:pA6.'risingdotseq<Tab>≓ <plug>\risingdotseq '
|
|
||||||
exe s:pA6.'doteqdot<Tab>≑ <plug>\doteqdot '
|
|
||||||
exe s:pA6.'Doteq<Tab>≑ <plug>\Doteq '
|
|
||||||
exe s:pA6.'fallingdotseq<Tab>≒ <plug>\fallingdotseq '
|
|
||||||
exe s:pA6.'triangleq<Tab>≜ <plug>\triangleq '
|
|
||||||
exe s:pA6.'bumpeq<Tab>≏ <plug>\bumpeq '
|
|
||||||
exe s:pA6.'Bumpeq<Tab>≎ <plug>\Bumpeq '
|
|
||||||
exe s:pA6.'equiv<Tab>`=\ \ ≡ <plug>\equiv '
|
|
||||||
exe s:pA6.'sim<Tab>∼ <plug>\sim '
|
|
||||||
exe s:pA6.'thicksim<Tab>∼ <plug>\thicksim '
|
|
||||||
exe s:pA6.'backsim<Tab>∽ <plug>\backsim '
|
|
||||||
exe s:pA6.'simeq<Tab>≃ <plug>\simeq '
|
|
||||||
exe s:pA6.'backsimeq<Tab>⋍ <plug>\backsimeq '
|
|
||||||
exe s:pA6.'cong<Tab>≅ <plug>\cong '
|
|
||||||
exe s:pA6.'approx<tab>=~\ \ ≈ <plug>\approx '
|
|
||||||
exe s:pA6.'thickapprox<Tab>≈ <plug>\thickapprox '
|
|
||||||
exe s:pA6.'approxeq<Tab>≊ <plug>\approxeq '
|
|
||||||
exe s:pA6.'blacktriangleleft<Tab>◀ <plug>\blacktriangleleft '
|
|
||||||
exe s:pA6.'vartriangleleft<Tab>⊲ <plug>\vartriangleleft '
|
|
||||||
exe s:pA6.'trianglelefteq<Tab>⊴ <plug>\trianglelefteq '
|
|
||||||
exe s:pA6.'blacktriangleright<Tab>▶ <plug>\blacktriangleright '
|
|
||||||
exe s:pA6.'vartriangleright<Tab>⊳ <plug>\vartriangleright '
|
|
||||||
exe s:pA6.'trianglerighteq<Tab>⊵ <plug>\trianglerighteq '
|
|
||||||
exe s:pA6.'perp<Tab>⊥ <plug>\perp '
|
|
||||||
exe s:pA6.'asymp<Tab>≍ <plug>\asymp '
|
|
||||||
exe s:pA6.'Vvdash<Tab>⊪ <plug>\Vvdash '
|
|
||||||
exe s:pA6.'propto<Tab>∝ <plug>\propto '
|
|
||||||
exe s:pA6.'varpropto<Tab>∝ <plug>\varpropto '
|
|
||||||
exe s:pA6.'because<Tab>∵ <plug>\because '
|
|
||||||
" }}}
|
|
||||||
" {{{ nBinaryRel3
|
|
||||||
let s:pA6a = s:pA."&nBinaryRel3."
|
|
||||||
exe s:pA6a.'neq<Tab>≠ <plug>\neq '
|
|
||||||
exe s:pA6a.'nsim<Tab>≁ <plug>\nsim '
|
|
||||||
exe s:pA6a.'ncong<Tab>≆ <plug>\ncong '
|
|
||||||
exe s:pA6a.'ntriangleleft<Tab>⋪ <plug>\ntriangleleft '
|
|
||||||
exe s:pA6a.'ntrianglelefteq<Tab>⋬ <plug>\ntrianglelefteq '
|
|
||||||
exe s:pA6a.'ntriangleright<Tab>⋫ <plug>\ntriangleright '
|
|
||||||
exe s:pA6a.'ntrianglerighteq<Tab>⋭ <plug>\ntrianglerighteq '
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryRel4
|
|
||||||
let s:pA7 = s:pA."&BinaryRel4."
|
|
||||||
exe s:pA7.'lessgtr<Tab>≶ <plug>\lessgtr '
|
|
||||||
exe s:pA7.'gtrless<Tab>≷ <plug>\gtrless '
|
|
||||||
exe s:pA7.'lesseqgtr<Tab>⋚ <plug>\lesseqgtr '
|
|
||||||
exe s:pA7.'gtreqless<Tab>⋛ <plug>\gtreqless '
|
|
||||||
exe s:pA7.'lesseqqgtr<Tab> <plug>\lesseqqgtr '
|
|
||||||
exe s:pA7.'gtreqqless<Tab> <plug>\gtreqqless '
|
|
||||||
" }}}
|
|
||||||
" {{{ BigOp
|
|
||||||
let s:pA8a = s:pA."&BigOp."
|
|
||||||
exe s:pA8a.'limits<Tab> <plug>\limits'
|
|
||||||
exe s:pA8a.'nolimits<Tab> <plug>\nolimits'
|
|
||||||
exe s:pA8a.'displaylimits<Tab> <plug>\displaylimits'
|
|
||||||
exe s:pA8a.'-seplimits- :'
|
|
||||||
exe s:pA8a.'bigcap<Tab>`-\ \ ⋂ <plug>\bigcap'
|
|
||||||
exe s:pA8a.'bigcup<Tab>`+\ \ ⋃ <plug>\bigcup'
|
|
||||||
exe s:pA8a.'bigodot<Tab>⊙ <plug>\bigodot'
|
|
||||||
exe s:pA8a.'bigoplus<Tab>⊕ <plug>\bigoplus'
|
|
||||||
exe s:pA8a.'bigotimes<Tab>⊗ <plug>\bigotimes'
|
|
||||||
exe s:pA8a.'bigsqcup<Tab>⊔ <plug>\bigsqcup'
|
|
||||||
exe s:pA8a.'biguplus<Tab>⊎ <plug>\biguplus'
|
|
||||||
exe s:pA8a.'bigvee<Tab>⋁ <plug>\bigvee'
|
|
||||||
exe s:pA8a.'bigwedge<Tab>⋀ <plug>\bigwedge'
|
|
||||||
exe s:pA8a.'coprod<Tab>∐ <plug>\coprod'
|
|
||||||
exe s:pA8a.'int<Tab>∫ <plug>\int'
|
|
||||||
exe s:pA8a.'iint<Tab>∬ <plug>\int'
|
|
||||||
exe s:pA8a.'iiint<Tab>∭ <plug>\int'
|
|
||||||
exe s:pA8a.'oint<Tab>∮ <plug>\oint'
|
|
||||||
exe s:pA8a.'prod<Tab>∏ <plug>\prod'
|
|
||||||
exe s:pA8a.'sum<Tab>∑ <plug>\sum'
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryOp
|
|
||||||
let s:pA8 = s:pA."&BinaryOp."
|
|
||||||
exe s:pA8.'pm<Tab>± <plug>\pm '
|
|
||||||
exe s:pA8.'mp<Tab>∓ <plug>\mp '
|
|
||||||
exe s:pA8.'dotplus<Tab>∔ <plug>\dotplus '
|
|
||||||
exe s:pA8.'cdot<Tab>`.\ \ ⋅ <plug>\cdot '
|
|
||||||
exe s:pA8.'centerdot<Tab>⋅ <plug>\centerdot '
|
|
||||||
exe s:pA8.'times<Tab>`*\ \ × <plug>\times '
|
|
||||||
exe s:pA8.'ltimes<Tab>⋉ <plug>\ltimes '
|
|
||||||
exe s:pA8.'rtimes<Tab>⋊ <plug>\rtimes '
|
|
||||||
exe s:pA8.'leftthreetimes<Tab>⋋ <plug>\leftthreetimes '
|
|
||||||
exe s:pA8.'rightthreetimes<Tab>⋌ <plug>\rightthreetimes '
|
|
||||||
exe s:pA8.'div<Tab>÷ <plug>\div '
|
|
||||||
exe s:pA8.'divideontimes<Tab>⋇ <plug>\divideontimes '
|
|
||||||
exe s:pA8.'bmod<Tab> <plug>\bmod '
|
|
||||||
exe s:pA8.'ast<Tab>∗ <plug>\ast '
|
|
||||||
exe s:pA8.'star<Tab>⋆ <plug>\star '
|
|
||||||
exe s:pA8.'setminus<Tab>`\\\ \ ∖ <plug>\setminus '
|
|
||||||
exe s:pA8.'smallsetminus<Tab>∖ <plug>\smallsetminus '
|
|
||||||
exe s:pA8.'diamond<Tab>⋄ <plug>\diamond '
|
|
||||||
exe s:pA8.'wr<Tab>≀ <plug>\wr '
|
|
||||||
exe s:pA8.'intercal<Tab>⊺ <plug>\intercal '
|
|
||||||
exe s:pA8.'circ<Tab>`@\ \ ∘ <plug>\circ '
|
|
||||||
exe s:pA8.'bigcirc<Tab>○ <plug>\bigcirc '
|
|
||||||
exe s:pA8.'bullet<Tab>∙ <plug>\bullet '
|
|
||||||
exe s:pA8.'cap<Tab>∩ <plug>\cap '
|
|
||||||
exe s:pA8.'Cap<Tab>⋒ <plug>\Cap '
|
|
||||||
exe s:pA8.'cup<Tab>∪ <plug>\cup '
|
|
||||||
exe s:pA8.'Cup<Tab>⋓ <plug>\Cup '
|
|
||||||
exe s:pA8.'sqcap<Tab>⊓ <plug>\sqcap '
|
|
||||||
exe s:pA8.'sqcup<Tab>⊔ <plug>\sqcup'
|
|
||||||
exe s:pA8.'amalg<Tab> <plug>\amalg '
|
|
||||||
exe s:pA8.'uplus<Tab>⊎ <plug>\uplus '
|
|
||||||
exe s:pA8.'triangleleft<Tab>◁ <plug>\triangleleft '
|
|
||||||
exe s:pA8.'triangleright<Tab>▷ <plug>\triangleright '
|
|
||||||
exe s:pA8.'bigtriangleup<Tab>△ <plug>\bigtriangleup '
|
|
||||||
exe s:pA8.'bigtriangledown<Tab>▽ <plug>\bigtriangledown '
|
|
||||||
exe s:pA8.'vee<Tab>∨ <plug>\vee '
|
|
||||||
exe s:pA8.'veebar<Tab>⊻ <plug>\veebar '
|
|
||||||
exe s:pA8.'curlyvee<Tab>⋎ <plug>\curlyvee '
|
|
||||||
exe s:pA8.'wedge<Tab>`&\ \ ∧ <plug>\wedge '
|
|
||||||
exe s:pA8.'barwedge<Tab>⊼ <plug>\barwedge '
|
|
||||||
exe s:pA8.'doublebarwedge<Tab>⌆ <plug>\doublebarwedge '
|
|
||||||
exe s:pA8.'curlywedge<Tab>⋏ <plug>\curlywedge '
|
|
||||||
exe s:pA8.'oplus<Tab>⊕ <plug>\oplus '
|
|
||||||
exe s:pA8.'ominus<Tab>⊖ <plug>\ominus '
|
|
||||||
exe s:pA8.'otimes<Tab>⊗ <plug>\otimes '
|
|
||||||
exe s:pA8.'oslash<Tab>⊘ <plug>\oslash '
|
|
||||||
exe s:pA8.'boxplus<Tab>⊞ <plug>\boxplus '
|
|
||||||
exe s:pA8.'boxminus<Tab>⊟ <plug>\boxminus '
|
|
||||||
exe s:pA8.'boxtimes<Tab>⊠ <plug>\boxtimes '
|
|
||||||
exe s:pA8.'boxdot<Tab>⊡ <plug>\boxdot '
|
|
||||||
exe s:pA8.'odot<Tab>⊙ <plug>\odot '
|
|
||||||
exe s:pA8.'circledast<Tab>⊛ <plug>\circledast '
|
|
||||||
exe s:pA8.'circleddash<Tab>⊝ <plug>\circleddash '
|
|
||||||
exe s:pA8.'circledcirc<Tab>⊚ <plug>\circledcirc '
|
|
||||||
exe s:pA8.'dagger<Tab>† <plug>\dagger '
|
|
||||||
exe s:pA8.'ddagger<Tab>‡ <plug>\ddagger '
|
|
||||||
exe s:pA8.'lhd<Tab>⊲ <plug>\lhd '
|
|
||||||
exe s:pA8.'unlhd<Tab>⊴ <plug>\unlhd '
|
|
||||||
exe s:pA8.'rhd<Tab>⊳ <plug>\rhd '
|
|
||||||
exe s:pA8.'unrhd<Tab>⊵ <plug>\unrhd '
|
|
||||||
" }}}
|
|
||||||
" {{{ Other1
|
|
||||||
let s:pA9 = s:pA."&Other1."
|
|
||||||
exe s:pA9.'hat<Tab>â <plug>\hat '
|
|
||||||
exe s:pA9.'check<Tab>ǎ <plug>\check '
|
|
||||||
exe s:pA9.'grave<Tab>à <plug>\grave '
|
|
||||||
exe s:pA9.'acute<Tab>á <plug>\acute '
|
|
||||||
exe s:pA9.'dot<Tab>ȧ <plug>\dot '
|
|
||||||
exe s:pA9.'ddot<Tab>ä <plug>\ddot '
|
|
||||||
exe s:pA9.'tilde<Tab>`,\ \ ã <plug>\tilde '
|
|
||||||
exe s:pA9.'breve<Tab>ă <plug>\breve '
|
|
||||||
exe s:pA9.'bar<Tab>ā <plug>\bar '
|
|
||||||
exe s:pA9.'vec<Tab>a⃗ <plug>\vec '
|
|
||||||
exe s:pA9.'aleph<Tab>א <plug>\aleph '
|
|
||||||
exe s:pA9.'hbar<Tab>ℏ <plug>\hbar '
|
|
||||||
exe s:pA9.'imath<Tab> <plug>\imath '
|
|
||||||
exe s:pA9.'jmath<Tab> <plug>\jmath '
|
|
||||||
exe s:pA9.'ell<Tab>ℓ <plug>\ell '
|
|
||||||
exe s:pA9.'wp<Tab>℘ <plug>\wp '
|
|
||||||
exe s:pA9.'Re<Tab>ℜ <plug>\Re '
|
|
||||||
exe s:pA9.'Im<Tab>ℑ <plug>\Im '
|
|
||||||
exe s:pA9.'partial<Tab>∂ <plug>\partial '
|
|
||||||
exe s:pA9.'infty<Tab>`8\ \ ∞ <plug>\infty '
|
|
||||||
exe s:pA9.'prime<Tab>′ <plug>\prime '
|
|
||||||
exe s:pA9.'emptyset<Tab>∅ <plug>\emptyset '
|
|
||||||
exe s:pA9.'nabla<Tab>∇ <plug>\nabla '
|
|
||||||
exe s:pA9.'surd<Tab>√ <plug>\surd '
|
|
||||||
exe s:pA9.'top<Tab>⊤ <plug>\top '
|
|
||||||
exe s:pA9.'bot<Tab>⊥ <plug>\bot '
|
|
||||||
exe s:pA9.'angle<Tab>∠ <plug>\angle '
|
|
||||||
exe s:pA9.'triangle<Tab>△ <plug>\triangle '
|
|
||||||
exe s:pA9.'backslash<Tab>\\ <plug>\backslash '
|
|
||||||
exe s:pA9.'forall<Tab>∀ <plug>\forall '
|
|
||||||
exe s:pA9.'exists<Tab>∃ <plug>\exists '
|
|
||||||
exe s:pA9.'neg<Tab>¬ <plug>\neg '
|
|
||||||
exe s:pA9.'flat<Tab>♭ <plug>\flat '
|
|
||||||
exe s:pA9.'natural<Tab>♮ <plug>\natural '
|
|
||||||
exe s:pA9.'sharp<Tab>♯ <plug>\sharp '
|
|
||||||
exe s:pA9.'clubsuit<Tab>♣ <plug>\clubsuit '
|
|
||||||
exe s:pA9.'diamondsuit<Tab>♢ <plug>\diamondsuit '
|
|
||||||
exe s:pA9.'heartsuit<Tab>♡ <plug>\heartsuit '
|
|
||||||
exe s:pA9.'spadesuit<Tab>♠ <plug>\spadesuit '
|
|
||||||
exe s:pA9.'S<Tab>§ <plug>\S '
|
|
||||||
exe s:pA9.'P<Tab>¶ <plug>\P'
|
|
||||||
" }}}
|
|
||||||
" {{{ MathCreating
|
|
||||||
let s:pA10 = s:pA."&MathCreating."
|
|
||||||
exe s:pA10.'not<Tab> <plug>\not'
|
|
||||||
exe s:pA10.'mkern<Tab> <plug>\mkern'
|
|
||||||
exe s:pA10.'mathbin<Tab> <plug>\mathbin'
|
|
||||||
exe s:pA10.'mathrel<Tab> <plug>\mathrel'
|
|
||||||
exe s:pA10.'stackrel<Tab> <plug>\stackrel'
|
|
||||||
exe s:pA10.'mathord<Tab> <plug>\mathord'
|
|
||||||
" }}}
|
|
||||||
" {{{ Styles
|
|
||||||
let s:pA11 = s:pA."&Styles."
|
|
||||||
exe s:pA11.'displaystyle<Tab> <plug>\displaystyle'
|
|
||||||
exe s:pA11.'textstyle<Tab> <plug>\textstyle'
|
|
||||||
exe s:pA11.'scritpstyle<Tab> <plug>\scritpstyle'
|
|
||||||
exe s:pA11.'scriptscriptstyle<Tab> <plug>\scriptscriptstyle'
|
|
||||||
" }}}
|
|
||||||
" {{{ MathDiacritics
|
|
||||||
let s:pA12 = s:pA."&MathDiacritics."
|
|
||||||
exe s:pA12.'acute{}<Tab>á <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'bar{}<Tab>`_\ \ ā <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'breve{}<Tab>ă <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'check{}<Tab>ǎ <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'ddot{}<Tab>`:\ \ ä <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'dot{}<Tab>`;\ \ ȧ <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'grave{}<Tab>à <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'hat{}<Tab>`^\ \ â <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'tilde{}<tab>`~\ \ ã <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'vec{}<Tab>a⃗ <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'widehat{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'widetilde{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'imath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
|
|
||||||
exe s:pA12.'jmath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
|
|
||||||
" }}}
|
|
||||||
" {{{ OverlineAndCo
|
|
||||||
let s:pA13 = s:pA."&OverlineAndCo."
|
|
||||||
exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
|
|
||||||
exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
|
|
||||||
exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
|
|
||||||
exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
|
|
||||||
exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
|
|
||||||
exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols1
|
|
||||||
let s:pA14a = s:pA."&Symbols1."
|
|
||||||
exe s:pA14a.'forall<Tab>∀ <plug>\forall '
|
|
||||||
exe s:pA14a.'exists<Tab>∃ <plug>\exists '
|
|
||||||
exe s:pA14a.'nexists<Tab>∄ <plug>\nexists '
|
|
||||||
exe s:pA14a.'neg<Tab>¬ <plug>\neg '
|
|
||||||
exe s:pA14a.'top<Tab>⊤ <plug>\top '
|
|
||||||
exe s:pA14a.'bot<Tab>⊥ <plug>\bot '
|
|
||||||
exe s:pA14a.'emptyset<Tab>∅ <plug>\emptyset '
|
|
||||||
exe s:pA14a.'varnothing<Tab>⌀ <plug>\varnothing '
|
|
||||||
exe s:pA14a.'infty<Tab>∞ <plug>\infty '
|
|
||||||
exe s:pA14a.'aleph<Tab>א <plug>\aleph '
|
|
||||||
exe s:pA14a.'beth<Tab>ב <plug>\beth '
|
|
||||||
exe s:pA14a.'gimel<Tab>ג <plug>\gimel '
|
|
||||||
exe s:pA14a.'daleth<Tab>ד <plug>\daleth '
|
|
||||||
exe s:pA14a.'hbar<Tab> <plug>\hbar '
|
|
||||||
exe s:pA14a.'hslash<Tab>ℏ <plug>\hslash '
|
|
||||||
exe s:pA14a.'diagup<Tab>⁄ <plug>\diagup '
|
|
||||||
exe s:pA14a.'vert<Tab>\| <plug>\vert '
|
|
||||||
exe s:pA14a.'Vert<Tab>∥ <plug>\Vert '
|
|
||||||
exe s:pA14a.'backslash<Tab>\\ <plug>\backslash '
|
|
||||||
exe s:pA14a.'diagdown<Tab> <plug>\diagdown '
|
|
||||||
exe s:pA14a.'Bbbk<Tab>ᵕ <plug>\Bbbk '
|
|
||||||
exe s:pA14a.'P<Tab>¶ <plug>\P '
|
|
||||||
exe s:pA14a.'S<Tab>§ <plug>\S '
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols2
|
|
||||||
let s:pA14b = s:pA."&Symbols2."
|
|
||||||
exe s:pA14b.'# <plug>\# '
|
|
||||||
exe s:pA14b.'% <plug>\% '
|
|
||||||
exe s:pA14b.'_<Tab> <plug>\_ '
|
|
||||||
exe s:pA14b.'$ <plug>\$ '
|
|
||||||
exe s:pA14b.'& <plug>\& '
|
|
||||||
exe s:pA14b.'imath<Tab> <plug>\imath '
|
|
||||||
exe s:pA14b.'jmath<Tab> <plug>\jmath '
|
|
||||||
exe s:pA14b.'ell<Tab>ℓ <plug>\ell '
|
|
||||||
exe s:pA14b.'wp<Tab>℘ <plug>\wp '
|
|
||||||
exe s:pA14b.'Re<Tab>ℜ <plug>\Re '
|
|
||||||
exe s:pA14b.'Im<Tab>ℑ <plug>\Im '
|
|
||||||
exe s:pA14b.'prime<Tab>′ <plug>\prime '
|
|
||||||
exe s:pA14b.'backprime<Tab>‵ <plug>\backprime '
|
|
||||||
exe s:pA14b.'nabla<Tab>∇ <plug>\nabla '
|
|
||||||
exe s:pA14b.'surd<Tab>√ <plug>\surd '
|
|
||||||
exe s:pA14b.'flat<Tab>♭ <plug>\flat '
|
|
||||||
exe s:pA14b.'sharp<Tab>♯ <plug>\sharp '
|
|
||||||
exe s:pA14b.'natural<Tab>♮ <plug>\natural '
|
|
||||||
exe s:pA14b.'eth<Tab>ð <plug>\eth '
|
|
||||||
exe s:pA14b.'bigstar<Tab>★ <plug>\bigstar '
|
|
||||||
exe s:pA14b.'circledS<Tab>Ⓢ <plug>\circledS '
|
|
||||||
exe s:pA14b.'Finv<Tab>Ⅎ <plug>\Finv '
|
|
||||||
exe s:pA14b.'dag<Tab>† <plug>\dag '
|
|
||||||
exe s:pA14b.'ddag<Tab>‡ <plug>\ddag '
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols3
|
|
||||||
let s:pA14c = s:pA."&Symbols3."
|
|
||||||
exe s:pA14c.'angle<Tab>∠ <plug>\angle '
|
|
||||||
exe s:pA14c.'measuredangle<Tab>∡ <plug>\measuredangle '
|
|
||||||
exe s:pA14c.'sphericalangle<Tab>∢ <plug>\sphericalangle '
|
|
||||||
exe s:pA14c.'spadesuit<Tab>♠ <plug>\spadesuit '
|
|
||||||
exe s:pA14c.'heartsuit<Tab>♡ <plug>\heartsuit '
|
|
||||||
exe s:pA14c.'diamondsuit<Tab>♢ <plug>\diamondsuit '
|
|
||||||
exe s:pA14c.'clubsuit<Tab>♣ <plug>\clubsuit '
|
|
||||||
exe s:pA14c.'lozenge<Tab>◊ <plug>\lozenge '
|
|
||||||
exe s:pA14c.'blacklozenge<Tab>◆ <plug>\blacklozenge '
|
|
||||||
exe s:pA14c.'Diamond<Tab>◇ <plug>\Diamond '
|
|
||||||
exe s:pA14c.'triangle<Tab>△ <plug>\triangle '
|
|
||||||
exe s:pA14c.'vartriangle<Tab>△ <plug>\vartriangle '
|
|
||||||
exe s:pA14c.'blacktriangle<Tab>▲ <plug>\blacktriangle '
|
|
||||||
exe s:pA14c.'triangledown<Tab>▽ <plug>\triangledown '
|
|
||||||
exe s:pA14c.'blacktriangledown<Tab>▼ <plug>\blacktriangledown '
|
|
||||||
exe s:pA14c.'Box<Tab>□ <plug>\Box '
|
|
||||||
exe s:pA14c.'square<Tab>□ <plug>\square '
|
|
||||||
exe s:pA14c.'blacksquare<Tab>■ <plug>\blacksquare '
|
|
||||||
exe s:pA14c.'complement<Tab>∁ <plug>\complement '
|
|
||||||
exe s:pA14c.'mho<Tab>℧ <plug>\mho '
|
|
||||||
exe s:pA14c.'Game<Tab>⅁ <plug>\Game '
|
|
||||||
exe s:pA14c.'partial<Tab>`6\ \ ∂ <plug>\partial '
|
|
||||||
exe s:pA14c.'smallint<Tab>∫ <plug>\smallint '
|
|
||||||
" }}}
|
|
||||||
" {{{ Logic
|
|
||||||
let s:pA15 = s:pA."&Logic."
|
|
||||||
exe s:pA15.'lnot<Tab>¬ <plug>\lnot '
|
|
||||||
exe s:pA15.'lor<Tab>∨ <plug>\lor '
|
|
||||||
exe s:pA15.'land<Tab>∧ <plug>\land '
|
|
||||||
" }}}
|
|
||||||
" {{{ Limits1
|
|
||||||
let s:pA16 = s:pA."&Limits1."
|
|
||||||
exe s:pA16.'left<Tab>( <plug>\left'
|
|
||||||
exe s:pA16.'right<Tab>) <plug>\right'
|
|
||||||
exe s:pA16.'-sepbigl- :'
|
|
||||||
exe s:pA16.'bigl<Tab> <plug>\bigl'
|
|
||||||
exe s:pA16.'Bigl<Tab> <plug>\Bigl'
|
|
||||||
exe s:pA16.'biggl<Tab> <plug>\biggl'
|
|
||||||
exe s:pA16.'Biggl<Tab> <plug>\Biggl'
|
|
||||||
exe s:pA16.'-sepbigr- :'
|
|
||||||
exe s:pA16.'bigr<Tab> <plug>\bigr'
|
|
||||||
exe s:pA16.'Bigr<Tab> <plug>\Bigr'
|
|
||||||
exe s:pA16.'biggr<Tab> <plug>\biggr'
|
|
||||||
exe s:pA16.'Biggr<Tab> <plug>\Biggr'
|
|
||||||
exe s:pA16.'-sepbig- :'
|
|
||||||
exe s:pA16.'big<Tab> <plug>\big'
|
|
||||||
exe s:pA16.'bigm<Tab> <plug>\bigm'
|
|
||||||
exe s:pA16.'-sepfloor- :'
|
|
||||||
exe s:pA16.'lfloor<Tab>⌊ <plug>\lfloor '
|
|
||||||
exe s:pA16.'lceil<Tab>⌈ <plug>\lceil '
|
|
||||||
exe s:pA16.'rfloor<Tab>⌋ <plug>\rfloor '
|
|
||||||
exe s:pA16.'rceil<Tab>⌉ <plug>\rceil '
|
|
||||||
exe s:pA16.'-sepangle- :'
|
|
||||||
exe s:pA16.'langle<Tab>〈 <plug>\langle '
|
|
||||||
exe s:pA16.'rangle<Tab>〉 <plug>\rangle '
|
|
||||||
" }}}
|
|
||||||
" {{{ Limits2
|
|
||||||
let s:pA16a = s:pA."&Limits2."
|
|
||||||
exe s:pA16a.'ulcorner<Tab>⌜ <plug>\ulcorner '
|
|
||||||
exe s:pA16a.'urcorner<Tab>⌝ <plug>\urcorner '
|
|
||||||
exe s:pA16a.'llcorner<Tab>⌞ <plug>\llcorner '
|
|
||||||
exe s:pA16a.'rlcorner<Tab>⌟ <plug>\rlcorner '
|
|
||||||
exe s:pA16a.'-sepcorner- :'
|
|
||||||
exe s:pA16a.'vert<Tab>\| <plug>\vert '
|
|
||||||
exe s:pA16a.'Vert<Tab>∥ <plug>\Vert '
|
|
||||||
exe s:pA16a.'lvert<Tab> <plug>\lvert '
|
|
||||||
exe s:pA16a.'lVert<Tab> <plug>\lVert '
|
|
||||||
exe s:pA16a.'rvert<Tab> <plug>\rvert '
|
|
||||||
exe s:pA16a.'rVert<Tab> <plug>\rVert '
|
|
||||||
exe s:pA16a.'uparrow<Tab>↑ <plug>\uparrow '
|
|
||||||
exe s:pA16a.'Uparrow<Tab>⇑ <plug>\Uparrow '
|
|
||||||
exe s:pA16a.'downarrow<Tab>↓ <plug>\downarrow '
|
|
||||||
exe s:pA16a.'Downarrow<Tab>⇓ <plug>\Downarrow '
|
|
||||||
exe s:pA16a.'updownarrow<Tab>↕ <plug>\updownarrow '
|
|
||||||
exe s:pA16a.'Updownarrow<Tab>⇕ <plug>\Updownarrow '
|
|
||||||
exe s:pA16a.'lgroup<Tab> <plug>\lgroup '
|
|
||||||
exe s:pA16a.'rgroup<Tab> <plug>\rgroup '
|
|
||||||
exe s:pA16a.'lmoustache<Tab>∫ <plug>\lmoustache '
|
|
||||||
exe s:pA16a.'rmoustache<Tab> <plug>\rmoustache '
|
|
||||||
exe s:pA16a.'arrowvert<Tab> <plug>\arrowvert '
|
|
||||||
exe s:pA16a.'Arrowvert<Tab> <plug>\Arrowvert '
|
|
||||||
exe s:pA16a.'bracevert<Tab> <plug>\bracevert '
|
|
||||||
" }}}
|
|
||||||
" {{{ Log-likes
|
|
||||||
let s:pA17 = s:pA."Lo&g-likes."
|
|
||||||
exe s:pA17.'arccos<Tab> <plug>\arccos '
|
|
||||||
exe s:pA17.'arcsin<Tab> <plug>\arcsin '
|
|
||||||
exe s:pA17.'arctan<Tab> <plug>\arctan '
|
|
||||||
exe s:pA17.'arg<Tab> <plug>\arg '
|
|
||||||
exe s:pA17.'cos<Tab> <plug>\cos '
|
|
||||||
exe s:pA17.'cosh<Tab> <plug>\cosh '
|
|
||||||
exe s:pA17.'cot<Tab> <plug>\cot '
|
|
||||||
exe s:pA17.'coth<Tab> <plug>\coth '
|
|
||||||
exe s:pA17.'csc<Tab> <plug>\csc '
|
|
||||||
exe s:pA17.'deg<Tab> <plug>\deg '
|
|
||||||
exe s:pA17.'det<Tab> <plug>\det '
|
|
||||||
exe s:pA17.'dim<Tab> <plug>\dim '
|
|
||||||
exe s:pA17.'exp<Tab> <plug>\exp '
|
|
||||||
exe s:pA17.'gcd<Tab> <plug>\gcd '
|
|
||||||
exe s:pA17.'hom<Tab> <plug>\hom '
|
|
||||||
exe s:pA17.'inf<Tab> <plug>\inf '
|
|
||||||
exe s:pA17.'injlim<Tab> <plug>\injlim '
|
|
||||||
exe s:pA17.'ker<Tab> <plug>\ker '
|
|
||||||
exe s:pA17.'lg<Tab> <plug>\lg '
|
|
||||||
exe s:pA17.'lim<Tab> <plug>\lim '
|
|
||||||
exe s:pA17.'liminf<Tab> <plug>\liminf '
|
|
||||||
exe s:pA17.'limsup<Tab> <plug>\limsup '
|
|
||||||
exe s:pA17.'ln<Tab> <plug>\ln '
|
|
||||||
exe s:pA17.'log<Tab> <plug>\log '
|
|
||||||
exe s:pA17.'max<Tab> <plug>\max '
|
|
||||||
exe s:pA17.'min<Tab> <plug>\min '
|
|
||||||
exe s:pA17.'Pr<Tab> <plug>\Pr '
|
|
||||||
exe s:pA17.'projlim<Tab> <plug>\projlim '
|
|
||||||
exe s:pA17.'sec<Tab> <plug>\sec '
|
|
||||||
exe s:pA17.'sin<Tab> <plug>\sin '
|
|
||||||
exe s:pA17.'sinh<Tab> <plug>\sinh '
|
|
||||||
exe s:pA17.'sup<Tab> <plug>\sup '
|
|
||||||
exe s:pA17.'tan<Tab> <plug>\tan '
|
|
||||||
exe s:pA17.'tanh<Tab> <plug>\tanh '
|
|
||||||
exe s:pA17.'varlimsup<Tab> <plug>\varlimsup '
|
|
||||||
exe s:pA17.'varliminf<Tab> <plug>\varliminf '
|
|
||||||
exe s:pA17.'varinjlim<Tab> <plug>\varinjlim '
|
|
||||||
exe s:pA17.'varprojlim<Tab> <plug>\varprojlim '
|
|
||||||
" }}}
|
|
||||||
" {{{ MathSpacing
|
|
||||||
let s:pA18 = s:pA."MathSpacing."
|
|
||||||
exe s:pA18.', <plug>\, '
|
|
||||||
exe s:pA18.': <plug>\: '
|
|
||||||
exe s:pA18.'; <plug>\; '
|
|
||||||
exe s:pA18.'[space] <plug>\ '
|
|
||||||
exe s:pA18.'quad<Tab> <plug>\quad '
|
|
||||||
exe s:pA18.'qquad<Tab> <plug>\qquad '
|
|
||||||
exe s:pA18.'! <plug>\! '
|
|
||||||
exe s:pA18.'thinspace<Tab> <plug>\thinspace '
|
|
||||||
exe s:pA18.'medspace<Tab> <plug>\medspace '
|
|
||||||
exe s:pA18.'thickspace<Tab> <plug>\thickspace '
|
|
||||||
exe s:pA18.'negthinspace<Tab> <plug>\negthinspace '
|
|
||||||
exe s:pA18.'negmedspace<Tab> <plug>\negmedspace '
|
|
||||||
exe s:pA18.'negthickspace<Tab> <plug>\negthickspace '
|
|
||||||
" 1}}}
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:fenc=utf-8
|
|
||||||
@@ -1,730 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: mathmacros.vim
|
|
||||||
" Author: Mikolaj Machowski
|
|
||||||
" Created: Tue Apr 23 06:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: macros for everything mathematical in latex.
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:MathMenuName = g:Tex_MenuPrefix.'&Math.'
|
|
||||||
|
|
||||||
function! Tex_MathMenuRemove()
|
|
||||||
exe 'silent! aunmenu '.s:MathMenuName
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let s:pA = 'amenu <silent> '.g:Tex_NextMenuLocation.' '.s:MathMenuName
|
|
||||||
let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
|
|
||||||
|
|
||||||
" brackets and dollars {{{
|
|
||||||
exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
|
|
||||||
exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
|
|
||||||
exe s:pA.'&$\ $ <plug>$$'
|
|
||||||
exe s:pA.'-sepmath1- :'
|
|
||||||
" }}}
|
|
||||||
" MATH arrows {{{
|
|
||||||
let s:pA1 = s:pA."&Arrows."
|
|
||||||
exe s:pA1.'Leftarrow <plug>\leftarrow '
|
|
||||||
exe s:pA1.'leftarrow <plug>\leftarrow'
|
|
||||||
exe s:pA1.'longleftarrow <plug>\longleftarrow '
|
|
||||||
exe s:pA1.'Leftarrow <plug>\Leftarrow '
|
|
||||||
exe s:pA1.'Longleftarrow <plug>\Longleftarrow '
|
|
||||||
exe s:pA1.'rightarrow <plug>\rightarrow '
|
|
||||||
exe s:pA1.'longrightarrow <plug>\longrightarrow '
|
|
||||||
exe s:pA1.'Rightarrow <plug>\Rightarrow '
|
|
||||||
exe s:pA1.'Longrightarrow <plug>\Longrightarrow '
|
|
||||||
exe s:pA1.'leftrightarrow <plug>\leftrightarrow '
|
|
||||||
exe s:pA1.'longleftrightarrow <plug>\longleftrightarrow '
|
|
||||||
exe s:pA1.'Leftrightarrow <plug>\Leftrightarrow '
|
|
||||||
exe s:pA1.'Longleftrightarrow <plug>\Longleftrightarrow '
|
|
||||||
exe s:pA1.'uparrow <plug>\uparrow '
|
|
||||||
exe s:pA1.'Uparrow <plug>\Uparrow '
|
|
||||||
exe s:pA1.'downarrow <plug>\downarrow '
|
|
||||||
exe s:pA1.'Downarrow <plug>\Downarrow '
|
|
||||||
exe s:pA1.'updownarrow <plug>\updownarrow '
|
|
||||||
exe s:pA1.'Updownarrow <plug>\Updownarrow '
|
|
||||||
exe s:pA1.'nearrow <plug>\nearrow '
|
|
||||||
exe s:pA1.'searrow <plug>\searrow '
|
|
||||||
exe s:pA1.'swarrow <plug>\swarrow '
|
|
||||||
exe s:pA1.'nwarrow <plug>\nwarrow '
|
|
||||||
exe s:pA1.'mapsto <plug>\mapsto '
|
|
||||||
exe s:pA1.'leadsto <plug>\leadsto '
|
|
||||||
exe s:pA1.'longmapsto <plug>\longmapsto '
|
|
||||||
exe s:pA1.'hookleftarrow <plug>\hookleftarrow '
|
|
||||||
exe s:pA1.'hookrightarrow <plug>\hookrightarrow '
|
|
||||||
exe s:pA1.'leftharpoonup <plug>\leftharpoonup '
|
|
||||||
exe s:pA1.'leftharpoondown <plug>\leftharpoondown '
|
|
||||||
exe s:pA1.'rightharpoonup <plug>\rightharpoonup '
|
|
||||||
exe s:pA1.'rightharpoondown <plug>\rightharpoondown '
|
|
||||||
exe s:pA1.'rightleftharpoons <plug>\rightleftharpoons '
|
|
||||||
exe s:pA1.'overleftarrow <plug>\overleftarrow '
|
|
||||||
exe s:pA1.'overrightarrow <plug>\overrightarrow '
|
|
||||||
exe s:pA1.'overleftrightarrow <plug>\overleftrightarrow '
|
|
||||||
exe s:pA1.'underleftarrow <plug>\underleftarrow '
|
|
||||||
exe s:pA1.'underrightarrow <plug>\underrightarrow '
|
|
||||||
exe s:pA1.'underleftrightarrow <plug>\underleftrightarrow '
|
|
||||||
exe s:pA1.'xleftarrow <plug>\xleftarrow '
|
|
||||||
exe s:pA1.'xrightarrow <plug>\xrightarrow '
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
|
|
||||||
" MATH nArrows {{{
|
|
||||||
let s:pA1a = s:pA."&nArrows."
|
|
||||||
exe s:pA1a.'nleftarrow <plug>\nleftarrow '
|
|
||||||
exe s:pA1a.'nLeftarrow <plug>\nLeftarrow '
|
|
||||||
exe s:pA1a.'nleftrightarrow <plug>\nleftrightarrow '
|
|
||||||
exe s:pA1a.'nrightarrow <plug>\nrightarrow '
|
|
||||||
exe s:pA1a.'nRightarrow <plug>\nRightarrow '
|
|
||||||
" }}}
|
|
||||||
" MATH Arrows2 {{{
|
|
||||||
let s:pA1a = s:pA."Arrows2."
|
|
||||||
exe s:pA1a.'dashleftarrow <plug>\dashleftarrow '
|
|
||||||
exe s:pA1a.'leftleftarrows <plug>\leftleftarrows '
|
|
||||||
exe s:pA1a.'leftrightarrows <plug>\leftrightarrows '
|
|
||||||
exe s:pA1a.'Lleftarrow <plug>\Lleftarrow '
|
|
||||||
exe s:pA1a.'twoheadleftarrow <plug>\twoheadleftarrow '
|
|
||||||
exe s:pA1a.'leftarrowtail <plug>\leftarrowtail '
|
|
||||||
exe s:pA1a.'leftrightharpoons <plug>\leftrightharpoons '
|
|
||||||
exe s:pA1a.'Lsh <plug>\Lsh '
|
|
||||||
exe s:pA1a.'looparrowleft <plug>\looparrowleft '
|
|
||||||
exe s:pA1a.'curvearrowleft <plug>\curvearrowleft '
|
|
||||||
exe s:pA1a.'circlearrowleft <plug>\circlearrowleft '
|
|
||||||
exe s:pA1a.'dashrightarrow <plug>\dashrightarrow '
|
|
||||||
exe s:pA1a.'rightrightarrows <plug>\rightrightarrows '
|
|
||||||
exe s:pA1a.'rightleftarrows <plug>\rightleftarrows '
|
|
||||||
exe s:pA1a.'Rrightarrow <plug>\Rrightarrow '
|
|
||||||
exe s:pA1a.'twoheadrightarrow <plug>\twoheadrightarrow '
|
|
||||||
exe s:pA1a.'rightarrowtail <plug>\rightarrowtail '
|
|
||||||
exe s:pA1a.'rightleftharpoons <plug>\rightleftharpoons '
|
|
||||||
exe s:pA1a.'Rsh <plug>\Rsh '
|
|
||||||
exe s:pA1a.'looparrowright <plug>\looparrowright '
|
|
||||||
exe s:pA1a.'curvearrowright <plug>\curvearrowright '
|
|
||||||
exe s:pA1a.'circlearrowright <plug>\circlearrowright '
|
|
||||||
exe s:pA1a.'multimap <plug>\multimap '
|
|
||||||
exe s:pA1a.'upuparrows <plug>\upuparrows '
|
|
||||||
exe s:pA1a.'downdownarrows <plug>\downdownarrows '
|
|
||||||
exe s:pA1a.'upharpoonleft <plug>\upharpoonleft '
|
|
||||||
exe s:pA1a.'upharpoonright <plug>\upharpoonright '
|
|
||||||
exe s:pA1a.'downharpoonleft <plug>\downharpoonleft '
|
|
||||||
exe s:pA1a.'downharpoonright <plug>\downharpoonright '
|
|
||||||
exe s:pA1a.'rightsquigarrow <plug>\rightsquigarrow '
|
|
||||||
exe s:pA1a.'leftrightsquigarrow <plug>\leftrightsquigarrow '
|
|
||||||
" }}}
|
|
||||||
" MATH Fonts {{{
|
|
||||||
let s:pA2a = s:pA."&MathFonts."
|
|
||||||
exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
|
|
||||||
exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
|
|
||||||
" }}}
|
|
||||||
" Greek Letters small {{{
|
|
||||||
let s:pA2 = s:pA."&Greek.&Small."
|
|
||||||
exe s:pA2.'alpha<Tab>`a <plug>\alpha '
|
|
||||||
exe s:pA2.'beta<Tab>`b <plug>\beta '
|
|
||||||
exe s:pA2.'gamma<Tab>`g <plug>\gamma '
|
|
||||||
exe s:pA2.'delta<Tab>`d <plug>\delta '
|
|
||||||
exe s:pA2.'epsilon <plug>\epsilon '
|
|
||||||
exe s:pA2.'varepsilon<Tab>`e <plug>\varepsilon '
|
|
||||||
exe s:pA2.'zeta<Tab>`z <plug>\zeta '
|
|
||||||
exe s:pA2.'eta<Tab>`h <plug>\eta '
|
|
||||||
exe s:pA2.'theta<Tab>`q <plug>\theta '
|
|
||||||
exe s:pA2.'vartheta <plug>\vartheta '
|
|
||||||
exe s:pA2.'iota<Tab>`i <plug>\iota '
|
|
||||||
exe s:pA2.'kappa<Tab>`k <plug>\kappa '
|
|
||||||
exe s:pA2.'lambda<Tab>`l <plug>\lambda '
|
|
||||||
exe s:pA2.'mu<Tab>`m <plug>\mu '
|
|
||||||
exe s:pA2.'nu<Tab>`n <plug>\nu '
|
|
||||||
exe s:pA2.'xi<Tab>`x <plug>\xi '
|
|
||||||
exe s:pA2.'pi<Tab>`p <plug>\pi '
|
|
||||||
exe s:pA2.'varpi <plug>\varpi '
|
|
||||||
exe s:pA2.'rho<Tab>`r <plug>\rho '
|
|
||||||
exe s:pA2.'varrho <plug>\varrho '
|
|
||||||
exe s:pA2.'sigma<Tab>`s <plug>\sigma '
|
|
||||||
exe s:pA2.'varsigma<Tab>`v <plug>\varsigma '
|
|
||||||
exe s:pA2.'tau<Tab>`t <plug>\tau '
|
|
||||||
exe s:pA2.'upsilon<Tab>`u <plug>\upsilon '
|
|
||||||
exe s:pA2.'phi <plug>\phi '
|
|
||||||
exe s:pA2.'varphi<Tab>`f <plug>\varphi '
|
|
||||||
exe s:pA2.'chi<Tab>`c <plug>\chi '
|
|
||||||
exe s:pA2.'psi<Tab>`y <plug>\psi '
|
|
||||||
exe s:pA2.'omega<Tab>`w <plug>\omega '
|
|
||||||
" }}}
|
|
||||||
" Greek Letters big {{{
|
|
||||||
let s:pA3 = s:pA.'&Greek.&Big.'
|
|
||||||
exe s:pA3.'Alpha<Tab>`A <plug>\Alpha '
|
|
||||||
exe s:pA3.'Beta<Tab>`B <plug>\Beta '
|
|
||||||
exe s:pA3.'Gamma<Tab>`G <plug>\Gamma '
|
|
||||||
exe s:pA3.'Delta<Tab>`D <plug>\Delta '
|
|
||||||
exe s:pA3.'Epsilon<Tab>`E <plug>\Epsilon '
|
|
||||||
exe s:pA3.'Zeta<Tab>`Z <plug>\mathrm{Z} '
|
|
||||||
exe s:pA3.'Eta<Tab>`H <plug>\Eta '
|
|
||||||
exe s:pA3.'Theta <plug>\Theta '
|
|
||||||
exe s:pA3.'Iota <plug>\mathrm{I} '
|
|
||||||
exe s:pA3.'Kappa<Tab>`K <plug>\Kappa '
|
|
||||||
exe s:pA3.'Lambda<Tab>`L <plug>\Lambda '
|
|
||||||
exe s:pA3.'Mu<Tab>`M <plug>\Mu '
|
|
||||||
exe s:pA3.'Nu<Tab>`N <plug>\Nu '
|
|
||||||
exe s:pA3.'Xi<Tab>`X <plug>\Xi '
|
|
||||||
exe s:pA3.'Pi<Tab>`P <plug>\Pi '
|
|
||||||
exe s:pA3.'Rho<Tab>`R <plug>\Rho '
|
|
||||||
exe s:pA3.'Sigma<Tab>`S <plug>\Sigma '
|
|
||||||
exe s:pA3.'Tau<Tab>`T <plug>\Tau '
|
|
||||||
exe s:pA3.'Upsilon<Tab>`U <plug>\Upsilon '
|
|
||||||
exe s:pA3.'Phi <plug>\Phi '
|
|
||||||
exe s:pA3.'Chi<Tab>`C <plug>\Chi '
|
|
||||||
exe s:pA3.'Psi<Tab>`Y <plug>\Psi '
|
|
||||||
exe s:pA3.'Omega<Tab>`W <plug>\Omega '
|
|
||||||
" }}}
|
|
||||||
" BinaryRel1 {{{
|
|
||||||
let s:pA4 = s:pA."&BinaryRel1."
|
|
||||||
exe s:pA4.'ll <plug>\ll '
|
|
||||||
exe s:pA4.'lll <plug>\lll '
|
|
||||||
exe s:pA4.'leqslant <plug>\leqslant '
|
|
||||||
exe s:pA4.'leq <plug>\leq '
|
|
||||||
exe s:pA4.'leqq <plug>\leqq '
|
|
||||||
exe s:pA4.'eqslantless <plug>\eqslantless '
|
|
||||||
exe s:pA4.'lessdot <plug>\lessdot '
|
|
||||||
exe s:pA4.'prec <plug>\prec '
|
|
||||||
exe s:pA4.'preceq <plug>\preceq '
|
|
||||||
exe s:pA4.'preccurlyeq <plug>\preccurlyeq '
|
|
||||||
exe s:pA4.'curlyeqprec <plug>\curlyeqprec '
|
|
||||||
exe s:pA4.'lesssim <plug>\lesssim '
|
|
||||||
exe s:pA4.'lessapprox <plug>\lessapprox '
|
|
||||||
exe s:pA4.'precsim <plug>\precsim '
|
|
||||||
exe s:pA4.'precapprox <plug>\precapprox '
|
|
||||||
exe s:pA4.'in <plug>\in '
|
|
||||||
exe s:pA4.'subset<Tab>`( <plug>\subset '
|
|
||||||
exe s:pA4.'Subset<Tab>`) <plug>\Subset '
|
|
||||||
exe s:pA4.'subseteq <plug>\subseteq '
|
|
||||||
exe s:pA4.'subseteqq <plug>\subseteqq '
|
|
||||||
exe s:pA4.'sqsubset <plug>\sqsubset '
|
|
||||||
exe s:pA4.'sqsubseteq <plug>\sqsubseteq '
|
|
||||||
exe s:pA4.'smile <plug>\smile '
|
|
||||||
exe s:pA4.'smallsmile <plug>\smallsmile '
|
|
||||||
exe s:pA4.'parallel <plug>\parallel '
|
|
||||||
exe s:pA4.'shortparallel <plug>\shortparallel '
|
|
||||||
exe s:pA4.'dashv <plug>\dashv '
|
|
||||||
exe s:pA4.'vdash <plug>\vdash '
|
|
||||||
exe s:pA4.'vDash <plug>\vDash '
|
|
||||||
exe s:pA4.'models <plug>\models '
|
|
||||||
exe s:pA4.'therefore <plug>\therefore '
|
|
||||||
exe s:pA4.'backepsilon <plug>\backepsilon '
|
|
||||||
" }}}
|
|
||||||
" nBinaryRel1 {{{
|
|
||||||
let s:pA4a = s:pA."&nBinaryRel1."
|
|
||||||
exe s:pA4a.'nless <plug>\nless '
|
|
||||||
exe s:pA4a.'nleqslant <plug>\nleqslant '
|
|
||||||
exe s:pA4a.'nleq <plug>\nleq '
|
|
||||||
exe s:pA4a.'lneq <plug>\lneq '
|
|
||||||
exe s:pA4a.'nleqq <plug>\nleqq '
|
|
||||||
exe s:pA4a.'lneqq <plug>\lneqq '
|
|
||||||
exe s:pA4a.'lvertneqq <plug>\lvertneqq '
|
|
||||||
exe s:pA4a.'nprec <plug>\nprec '
|
|
||||||
exe s:pA4a.'npreceq <plug>\npreceq '
|
|
||||||
exe s:pA4a.'precneqq <plug>\precneqq '
|
|
||||||
exe s:pA4a.'lnsim <plug>\lnsim '
|
|
||||||
exe s:pA4a.'lnapprox <plug>\lnapprox '
|
|
||||||
exe s:pA4a.'precnsim <plug>\precnsim '
|
|
||||||
exe s:pA4a.'precnapprox <plug>\precnapprox '
|
|
||||||
exe s:pA4a.'notin <plug>\notin '
|
|
||||||
exe s:pA4a.'nsubseteq <plug>\nsubseteq '
|
|
||||||
exe s:pA4a.'varsubsetneq <plug>\varsubsetneq '
|
|
||||||
exe s:pA4a.'subsetneq <plug>\subsetneq '
|
|
||||||
exe s:pA4a.'nsubseteqq <plug>\nsubseteqq '
|
|
||||||
exe s:pA4a.'varsubsetneqq <plug>\varsubsetneqq '
|
|
||||||
exe s:pA4a.'subsetneqq <plug>\subsetneqq '
|
|
||||||
exe s:pA4a.'nparallel <plug>\nparallel '
|
|
||||||
exe s:pA4a.'nshortparallel <plug>\nshortparallel '
|
|
||||||
exe s:pA4a.'nvdash <plug>\nvdash '
|
|
||||||
exe s:pA4a.'nvDash <plug>\nvDash '
|
|
||||||
" }}}
|
|
||||||
" BinaryRel2 {{{
|
|
||||||
let s:pA5 = s:pA."&BinaryRel2."
|
|
||||||
exe s:pA5.'gg <plug>\gg '
|
|
||||||
exe s:pA5.'ggg <plug>\ggg '
|
|
||||||
exe s:pA5.'gggtr <plug>\gggtr '
|
|
||||||
exe s:pA5.'geqslant <plug>\geqslant '
|
|
||||||
exe s:pA5.'geq <plug>\geq '
|
|
||||||
exe s:pA5.'geqq <plug>\geqq '
|
|
||||||
exe s:pA5.'eqslantgtr <plug>\eqslantgtr '
|
|
||||||
exe s:pA5.'gtrdot <plug>\gtrdot '
|
|
||||||
exe s:pA5.'succ <plug>\succ '
|
|
||||||
exe s:pA5.'succeq <plug>\succeq '
|
|
||||||
exe s:pA5.'succcurlyeq <plug>\succcurlyeq '
|
|
||||||
exe s:pA5.'curlyeqsucc <plug>\curlyeqsucc '
|
|
||||||
exe s:pA5.'gtrsim <plug>\gtrsim '
|
|
||||||
exe s:pA5.'gtrapprox <plug>\gtrapprox '
|
|
||||||
exe s:pA5.'succsim <plug>\succsim '
|
|
||||||
exe s:pA5.'succapprox <plug>\succapprox '
|
|
||||||
exe s:pA5.'ni <plug>\ni '
|
|
||||||
exe s:pA5.'owns <plug>\owns '
|
|
||||||
exe s:pA5.'supset <plug>\supset '
|
|
||||||
exe s:pA5.'Supset <plug>\Supset '
|
|
||||||
exe s:pA5.'supseteq <plug>\supseteq '
|
|
||||||
exe s:pA5.'supseteqq <plug>\supseteqq '
|
|
||||||
exe s:pA5.'sqsupset <plug>\sqsupset '
|
|
||||||
exe s:pA5.'sqsupseteq <plug>\sqsupseteq '
|
|
||||||
exe s:pA5.'frown <plug>\frown '
|
|
||||||
exe s:pA5.'smallfrown <plug>\smallfrown '
|
|
||||||
exe s:pA5.'mid <plug>\mid '
|
|
||||||
exe s:pA5.'shortmid <plug>\shortmid '
|
|
||||||
exe s:pA5.'between <plug>\between '
|
|
||||||
exe s:pA5.'Vdash <plug>\Vdash '
|
|
||||||
exe s:pA5.'bowtie <plug>\bowtie '
|
|
||||||
exe s:pA5.'Join <plug>\Join '
|
|
||||||
exe s:pA5.'pitchfork <plug>\pitchfork '
|
|
||||||
" }}}
|
|
||||||
" {{{ nBinaryRel2
|
|
||||||
let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobi<62> logarytmy
|
|
||||||
exe s:pA5a.'ngtr <plug>\ngtr '
|
|
||||||
exe s:pA5a.'ngeqslant <plug>\ngeqslant '
|
|
||||||
exe s:pA5a.'ngeq <plug>\ngeq '
|
|
||||||
exe s:pA5a.'gneq <plug>\gneq '
|
|
||||||
exe s:pA5a.'ngeqq <plug>\ngeqq '
|
|
||||||
exe s:pA5a.'gneqq <plug>\gneqq '
|
|
||||||
exe s:pA5a.'nsucc <plug>\nsucc '
|
|
||||||
exe s:pA5a.'nsucceq <plug>\nsucceq '
|
|
||||||
exe s:pA5a.'succneqq <plug>\succneqq '
|
|
||||||
exe s:pA5a.'gnsim <plug>\gnsim '
|
|
||||||
exe s:pA5a.'gnapprox <plug>\gnapprox '
|
|
||||||
exe s:pA5a.'succnsim <plug>\succnsim '
|
|
||||||
exe s:pA5a.'succnapprox <plug>\succnapprox '
|
|
||||||
exe s:pA5a.'nsupseteq <plug>\nsupseteq '
|
|
||||||
exe s:pA5a.'varsupsetneq <plug>\varsupsetneq '
|
|
||||||
exe s:pA5a.'supsetneq <plug>\supsetneq '
|
|
||||||
exe s:pA5a.'nsupseteqq <plug>\nsupseteqq '
|
|
||||||
exe s:pA5a.'varsupsetneqq <plug>\varsupsetneqq '
|
|
||||||
exe s:pA5a.'supsetneqq <plug>\supsetneqq '
|
|
||||||
exe s:pA5a.'nmid <plug>\nmid '
|
|
||||||
exe s:pA5a.'nshortmid <plug>\nshortmid '
|
|
||||||
exe s:pA5a.'nVdash <plug>\nVdash '
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryRel3
|
|
||||||
let s:pA6 = s:pA."&BinaryRel3."
|
|
||||||
exe s:pA6.'doteq <plug>\doteq '
|
|
||||||
exe s:pA6.'circeq <plug>\circeq '
|
|
||||||
exe s:pA6.'eqcirc <plug>\eqcirc '
|
|
||||||
exe s:pA6.'risingdotseq <plug>\risingdotseq '
|
|
||||||
exe s:pA6.'doteqdot <plug>\doteqdot '
|
|
||||||
exe s:pA6.'Doteq <plug>\Doteq '
|
|
||||||
exe s:pA6.'fallingdotseq <plug>\fallingdotseq '
|
|
||||||
exe s:pA6.'triangleq <plug>\triangleq '
|
|
||||||
exe s:pA6.'bumpeq <plug>\bumpeq '
|
|
||||||
exe s:pA6.'Bumpeq <plug>\Bumpeq '
|
|
||||||
exe s:pA6.'equiv<Tab>`= <plug>\equiv '
|
|
||||||
exe s:pA6.'sim <plug>\sim '
|
|
||||||
exe s:pA6.'thicksim <plug>\thicksim '
|
|
||||||
exe s:pA6.'backsim <plug>\backsim '
|
|
||||||
exe s:pA6.'simeq <plug>\simeq '
|
|
||||||
exe s:pA6.'backsimeq <plug>\backsimeq '
|
|
||||||
exe s:pA6.'cong <plug>\cong '
|
|
||||||
exe s:pA6.'approx<tab>=~ <plug>\approx '
|
|
||||||
exe s:pA6.'thickapprox <plug>\thickapprox '
|
|
||||||
exe s:pA6.'approxeq <plug>\approxeq '
|
|
||||||
exe s:pA6.'blacktriangleleft <plug>\blacktriangleleft '
|
|
||||||
exe s:pA6.'vartriangleleft <plug>\vartriangleleft '
|
|
||||||
exe s:pA6.'trianglelefteq <plug>\trianglelefteq '
|
|
||||||
exe s:pA6.'blacktriangleright <plug>\blacktriangleright '
|
|
||||||
exe s:pA6.'vartriangleright <plug>\vartriangleright '
|
|
||||||
exe s:pA6.'trianglerighteq <plug>\trianglerighteq '
|
|
||||||
exe s:pA6.'perp <plug>\perp '
|
|
||||||
exe s:pA6.'asymp <plug>\asymp '
|
|
||||||
exe s:pA6.'Vvdash <plug>\Vvdash '
|
|
||||||
exe s:pA6.'propto <plug>\propto '
|
|
||||||
exe s:pA6.'varpropto <plug>\varpropto '
|
|
||||||
exe s:pA6.'because <plug>\because '
|
|
||||||
" }}}
|
|
||||||
" {{{ nBinaryRel3
|
|
||||||
let s:pA6a = s:pA."&nBinaryRel3."
|
|
||||||
exe s:pA6a.'neq <plug>\neq '
|
|
||||||
exe s:pA6a.'nsim <plug>\nsim '
|
|
||||||
exe s:pA6a.'ncong <plug>\ncong '
|
|
||||||
exe s:pA6a.'ntriangleleft <plug>\ntriangleleft '
|
|
||||||
exe s:pA6a.'ntrianglelefteq <plug>\ntrianglelefteq '
|
|
||||||
exe s:pA6a.'ntriangleright <plug>\ntriangleright '
|
|
||||||
exe s:pA6a.'ntrianglerighteq <plug>\ntrianglerighteq '
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryRel4
|
|
||||||
let s:pA7 = s:pA."&BinaryRel4."
|
|
||||||
exe s:pA7.'lessgtr <plug>\lessgtr '
|
|
||||||
exe s:pA7.'gtrless <plug>\gtrless '
|
|
||||||
exe s:pA7.'lesseqgtr <plug>\lesseqgtr '
|
|
||||||
exe s:pA7.'gtreqless <plug>\gtreqless '
|
|
||||||
exe s:pA7.'lesseqqgtr <plug>\lesseqqgtr '
|
|
||||||
exe s:pA7.'gtreqqless <plug>\gtreqqless '
|
|
||||||
" }}}
|
|
||||||
" {{{ BigOp
|
|
||||||
let s:pA8a = s:pA."&BigOp."
|
|
||||||
exe s:pA8a.'limits <plug>\limits'
|
|
||||||
exe s:pA8a.'nolimits <plug>\nolimits'
|
|
||||||
exe s:pA8a.'displaylimits <plug>\displaylimits'
|
|
||||||
exe s:pA8a.'-seplimits- :'
|
|
||||||
exe s:pA8a.'bigcap<Tab>`- <plug>\bigcap'
|
|
||||||
exe s:pA8a.'bigcup<Tab>`+ <plug>\bigcup'
|
|
||||||
exe s:pA8a.'bigodot <plug>\bigodot'
|
|
||||||
exe s:pA8a.'bigoplus <plug>\bigoplus'
|
|
||||||
exe s:pA8a.'bigotimes <plug>\bigotimes'
|
|
||||||
exe s:pA8a.'bigsqcup <plug>\bigsqcup'
|
|
||||||
exe s:pA8a.'biguplus <plug>\biguplus'
|
|
||||||
exe s:pA8a.'bigvee <plug>\bigvee'
|
|
||||||
exe s:pA8a.'bigwedge <plug>\bigwedge'
|
|
||||||
exe s:pA8a.'coprod <plug>\coprod'
|
|
||||||
exe s:pA8a.'int <plug>\int'
|
|
||||||
exe s:pA8a.'oint <plug>\oint'
|
|
||||||
exe s:pA8a.'prod <plug>\prod'
|
|
||||||
exe s:pA8a.'sum <plug>\sum'
|
|
||||||
" }}}
|
|
||||||
" {{{ BinaryOp
|
|
||||||
let s:pA8 = s:pA."&BinaryOp."
|
|
||||||
exe s:pA8.'pm <plug>\pm '
|
|
||||||
exe s:pA8.'mp <plug>\mp '
|
|
||||||
exe s:pA8.'dotplus <plug>\dotplus '
|
|
||||||
exe s:pA8.'cdot<Tab>`. <plug>\cdot '
|
|
||||||
exe s:pA8.'centerdot <plug>\centerdot '
|
|
||||||
exe s:pA8.'times<Tab>`* <plug>\times '
|
|
||||||
exe s:pA8.'ltimes <plug>\ltimes '
|
|
||||||
exe s:pA8.'rtimes <plug>\rtimes '
|
|
||||||
exe s:pA8.'leftthreetimes <plug>\leftthreetimes '
|
|
||||||
exe s:pA8.'rightthreetimes <plug>\rightthreetimes '
|
|
||||||
exe s:pA8.'div <plug>\div '
|
|
||||||
exe s:pA8.'divideontimes <plug>\divideontimes '
|
|
||||||
exe s:pA8.'bmod <plug>\bmod '
|
|
||||||
exe s:pA8.'ast <plug>\ast '
|
|
||||||
exe s:pA8.'star <plug>\star '
|
|
||||||
exe s:pA8.'setminus<Tab>`\\ <plug>\setminus '
|
|
||||||
exe s:pA8.'smallsetminus <plug>\smallsetminus '
|
|
||||||
exe s:pA8.'diamond <plug>\diamond '
|
|
||||||
exe s:pA8.'wr <plug>\wr '
|
|
||||||
exe s:pA8.'intercal <plug>\intercal '
|
|
||||||
exe s:pA8.'circ<Tab>`@ <plug>\circ '
|
|
||||||
exe s:pA8.'bigcirc <plug>\bigcirc '
|
|
||||||
exe s:pA8.'bullet <plug>\bullet '
|
|
||||||
exe s:pA8.'cap <plug>\cap '
|
|
||||||
exe s:pA8.'Cap <plug>\Cap '
|
|
||||||
exe s:pA8.'cup <plug>\cup '
|
|
||||||
exe s:pA8.'Cup <plug>\Cup '
|
|
||||||
exe s:pA8.'sqcap <plug>\sqcap '
|
|
||||||
exe s:pA8.'sqcup <plug>\sqcup'
|
|
||||||
exe s:pA8.'amalg <plug>\amalg '
|
|
||||||
exe s:pA8.'uplus <plug>\uplus '
|
|
||||||
exe s:pA8.'triangleleft <plug>\triangleleft '
|
|
||||||
exe s:pA8.'triangleright <plug>\triangleright '
|
|
||||||
exe s:pA8.'bigtriangleup <plug>\bigtriangleup '
|
|
||||||
exe s:pA8.'bigtriangledown <plug>\bigtriangledown '
|
|
||||||
exe s:pA8.'vee <plug>\vee '
|
|
||||||
exe s:pA8.'veebar <plug>\veebar '
|
|
||||||
exe s:pA8.'curlyvee <plug>\curlyvee '
|
|
||||||
exe s:pA8.'wedge<Tab>`& <plug>\wedge '
|
|
||||||
exe s:pA8.'barwedge <plug>\barwedge '
|
|
||||||
exe s:pA8.'doublebarwedge <plug>\doublebarwedge '
|
|
||||||
exe s:pA8.'curlywedge <plug>\curlywedge '
|
|
||||||
exe s:pA8.'oplus <plug>\oplus '
|
|
||||||
exe s:pA8.'ominus <plug>\ominus '
|
|
||||||
exe s:pA8.'otimes <plug>\otimes '
|
|
||||||
exe s:pA8.'oslash <plug>\oslash '
|
|
||||||
exe s:pA8.'boxplus <plug>\boxplus '
|
|
||||||
exe s:pA8.'boxminus <plug>\boxminus '
|
|
||||||
exe s:pA8.'boxtimes <plug>\boxtimes '
|
|
||||||
exe s:pA8.'boxdot <plug>\boxdot '
|
|
||||||
exe s:pA8.'odot <plug>\odot '
|
|
||||||
exe s:pA8.'circledast <plug>\circledast '
|
|
||||||
exe s:pA8.'circleddash <plug>\circleddash '
|
|
||||||
exe s:pA8.'circledcirc <plug>\circledcirc '
|
|
||||||
exe s:pA8.'dagger <plug>\dagger '
|
|
||||||
exe s:pA8.'ddagger <plug>\ddagger '
|
|
||||||
exe s:pA8.'lhd <plug>\lhd '
|
|
||||||
exe s:pA8.'unlhd <plug>\unlhd '
|
|
||||||
exe s:pA8.'rhd <plug>\rhd '
|
|
||||||
exe s:pA8.'unrhd <plug>\unrhd '
|
|
||||||
" }}}
|
|
||||||
" {{{ Other1
|
|
||||||
let s:pA9 = s:pA."&Other1."
|
|
||||||
exe s:pA9.'hat <plug>\hat '
|
|
||||||
exe s:pA9.'check <plug>\check '
|
|
||||||
exe s:pA9.'grave <plug>\grave '
|
|
||||||
exe s:pA9.'acute <plug>\acute '
|
|
||||||
exe s:pA9.'dot <plug>\dot '
|
|
||||||
exe s:pA9.'ddot <plug>\ddot '
|
|
||||||
exe s:pA9.'tilde<Tab>`, <plug>\tilde '
|
|
||||||
exe s:pA9.'breve <plug>\breve '
|
|
||||||
exe s:pA9.'bar <plug>\bar '
|
|
||||||
exe s:pA9.'vec <plug>\vec '
|
|
||||||
exe s:pA9.'aleph <plug>\aleph '
|
|
||||||
exe s:pA9.'hbar <plug>\hbar '
|
|
||||||
exe s:pA9.'imath <plug>\imath '
|
|
||||||
exe s:pA9.'jmath <plug>\jmath '
|
|
||||||
exe s:pA9.'ell <plug>\ell '
|
|
||||||
exe s:pA9.'wp <plug>\wp '
|
|
||||||
exe s:pA9.'Re <plug>\Re '
|
|
||||||
exe s:pA9.'Im <plug>\Im '
|
|
||||||
exe s:pA9.'partial <plug>\partial '
|
|
||||||
exe s:pA9.'infty<Tab>`8 <plug>\infty '
|
|
||||||
exe s:pA9.'prime <plug>\prime '
|
|
||||||
exe s:pA9.'emptyset <plug>\emptyset '
|
|
||||||
exe s:pA9.'nabla <plug>\nabla '
|
|
||||||
exe s:pA9.'surd <plug>\surd '
|
|
||||||
exe s:pA9.'top <plug>\top '
|
|
||||||
exe s:pA9.'bot <plug>\bot '
|
|
||||||
exe s:pA9.'angle <plug>\angle '
|
|
||||||
exe s:pA9.'triangle <plug>\triangle '
|
|
||||||
exe s:pA9.'backslash <plug>\backslash '
|
|
||||||
exe s:pA9.'forall <plug>\forall '
|
|
||||||
exe s:pA9.'exists <plug>\exists '
|
|
||||||
exe s:pA9.'neg <plug>\neg '
|
|
||||||
exe s:pA9.'flat <plug>\flat '
|
|
||||||
exe s:pA9.'natural <plug>\natural '
|
|
||||||
exe s:pA9.'sharp <plug>\sharp '
|
|
||||||
exe s:pA9.'clubsuit <plug>\clubsuit '
|
|
||||||
exe s:pA9.'diamondsuit <plug>\diamondsuit '
|
|
||||||
exe s:pA9.'heartsuit <plug>\heartsuit '
|
|
||||||
exe s:pA9.'spadesuit <plug>\spadesuit '
|
|
||||||
exe s:pA9.'S <plug>\S '
|
|
||||||
exe s:pA9.'P <plug>\P'
|
|
||||||
" }}}
|
|
||||||
" {{{ MathCreating
|
|
||||||
let s:pA10 = s:pA."&MathCreating."
|
|
||||||
exe s:pA10.'not <plug>\not'
|
|
||||||
exe s:pA10.'mkern <plug>\mkern'
|
|
||||||
exe s:pA10.'mathbin <plug>\mathbin'
|
|
||||||
exe s:pA10.'mathrel <plug>\mathrel'
|
|
||||||
exe s:pA10.'stackrel <plug>\stackrel'
|
|
||||||
exe s:pA10.'mathord <plug>\mathord'
|
|
||||||
" }}}
|
|
||||||
" {{{ Styles
|
|
||||||
let s:pA11 = s:pA."&Styles."
|
|
||||||
exe s:pA11.'displaystyle <plug>\displaystyle'
|
|
||||||
exe s:pA11.'textstyle <plug>\textstyle'
|
|
||||||
exe s:pA11.'scritpstyle <plug>\scritpstyle'
|
|
||||||
exe s:pA11.'scriptscriptstyle <plug>\scriptscriptstyle'
|
|
||||||
" }}}
|
|
||||||
" {{{ MathDiacritics
|
|
||||||
let s:pA12 = s:pA."&MathDiacritics."
|
|
||||||
exe s:pA12.'acute{} <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'bar{}<Tab>`_ <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'breve{} <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'check{} <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'ddot{}<Tab>`: <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'dot{}<Tab>`; <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'grave{} <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'hat{}<Tab>`^ <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'tilde{}<tab>`~ <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'vec{} <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'widehat{} <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'widetilde{} <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
|
|
||||||
exe s:pA12.'imath <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
|
|
||||||
exe s:pA12.'jmath <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
|
|
||||||
" }}}
|
|
||||||
" {{{ OverlineAndCo
|
|
||||||
let s:pA13 = s:pA."&OverlineAndCo."
|
|
||||||
exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
|
|
||||||
exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
|
|
||||||
exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
|
|
||||||
exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
|
|
||||||
exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
|
|
||||||
exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols1
|
|
||||||
let s:pA14a = s:pA."&Symbols1."
|
|
||||||
exe s:pA14a.'forall <plug>\forall '
|
|
||||||
exe s:pA14a.'exists <plug>\exists '
|
|
||||||
exe s:pA14a.'nexists <plug>\nexists '
|
|
||||||
exe s:pA14a.'neg <plug>\neg '
|
|
||||||
exe s:pA14a.'top <plug>\top '
|
|
||||||
exe s:pA14a.'bot <plug>\bot '
|
|
||||||
exe s:pA14a.'emptyset <plug>\emptyset '
|
|
||||||
exe s:pA14a.'varnothing <plug>\varnothing '
|
|
||||||
exe s:pA14a.'infty <plug>\infty '
|
|
||||||
exe s:pA14a.'aleph <plug>\aleph '
|
|
||||||
exe s:pA14a.'beth <plug>\beth '
|
|
||||||
exe s:pA14a.'gimel <plug>\gimel '
|
|
||||||
exe s:pA14a.'daleth <plug>\daleth '
|
|
||||||
exe s:pA14a.'hbar <plug>\hbar '
|
|
||||||
exe s:pA14a.'hslash <plug>\hslash '
|
|
||||||
exe s:pA14a.'diagup <plug>\diagup '
|
|
||||||
exe s:pA14a.'vert <plug>\vert '
|
|
||||||
exe s:pA14a.'Vert <plug>\Vert '
|
|
||||||
exe s:pA14a.'backslash <plug>\backslash '
|
|
||||||
exe s:pA14a.'diagdown <plug>\diagdown '
|
|
||||||
exe s:pA14a.'Bbbk <plug>\Bbbk '
|
|
||||||
exe s:pA14a.'P <plug>\P '
|
|
||||||
exe s:pA14a.'S <plug>\S '
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols2
|
|
||||||
let s:pA14b = s:pA."&Symbols2."
|
|
||||||
exe s:pA14b.'# <plug>\# '
|
|
||||||
exe s:pA14b.'% <plug>\% '
|
|
||||||
exe s:pA14b.'_ <plug>\_ '
|
|
||||||
exe s:pA14b.'$ <plug>\$ '
|
|
||||||
exe s:pA14b.'& <plug>\& '
|
|
||||||
exe s:pA14b.'imath <plug>\imath '
|
|
||||||
exe s:pA14b.'jmath <plug>\jmath '
|
|
||||||
exe s:pA14b.'ell <plug>\ell '
|
|
||||||
exe s:pA14b.'wp <plug>\wp '
|
|
||||||
exe s:pA14b.'Re <plug>\Re '
|
|
||||||
exe s:pA14b.'Im <plug>\Im '
|
|
||||||
exe s:pA14b.'prime <plug>\prime '
|
|
||||||
exe s:pA14b.'backprime <plug>\backprime '
|
|
||||||
exe s:pA14b.'nabla <plug>\nabla '
|
|
||||||
exe s:pA14b.'surd <plug>\surd '
|
|
||||||
exe s:pA14b.'flat <plug>\flat '
|
|
||||||
exe s:pA14b.'sharp <plug>\sharp '
|
|
||||||
exe s:pA14b.'natural <plug>\natural '
|
|
||||||
exe s:pA14b.'eth <plug>\eth '
|
|
||||||
exe s:pA14b.'bigstar <plug>\bigstar '
|
|
||||||
exe s:pA14b.'circledS <plug>\circledS '
|
|
||||||
exe s:pA14b.'Finv <plug>\Finv '
|
|
||||||
exe s:pA14b.'dag <plug>\dag '
|
|
||||||
exe s:pA14b.'ddag <plug>\ddag '
|
|
||||||
" }}}
|
|
||||||
" {{{ Symbols3
|
|
||||||
let s:pA14c = s:pA."&Symbols3."
|
|
||||||
exe s:pA14c.'angle <plug>\angle '
|
|
||||||
exe s:pA14c.'measuredangle <plug>\measuredangle '
|
|
||||||
exe s:pA14c.'sphericalangle <plug>\sphericalangle '
|
|
||||||
exe s:pA14c.'spadesuit <plug>\spadesuit '
|
|
||||||
exe s:pA14c.'heartsuit <plug>\heartsuit '
|
|
||||||
exe s:pA14c.'diamondsuit <plug>\diamondsuit '
|
|
||||||
exe s:pA14c.'clubsuit <plug>\clubsuit '
|
|
||||||
exe s:pA14c.'lozenge <plug>\lozenge '
|
|
||||||
exe s:pA14c.'blacklozenge <plug>\blacklozenge '
|
|
||||||
exe s:pA14c.'Diamond <plug>\Diamond '
|
|
||||||
exe s:pA14c.'triangle <plug>\triangle '
|
|
||||||
exe s:pA14c.'vartriangle <plug>\vartriangle '
|
|
||||||
exe s:pA14c.'blacktriangle <plug>\blacktriangle '
|
|
||||||
exe s:pA14c.'triangledown <plug>\triangledown '
|
|
||||||
exe s:pA14c.'blacktriangledown <plug>\blacktriangledown '
|
|
||||||
exe s:pA14c.'Box <plug>\Box '
|
|
||||||
exe s:pA14c.'square <plug>\square '
|
|
||||||
exe s:pA14c.'blacksquare <plug>\blacksquare '
|
|
||||||
exe s:pA14c.'complement <plug>\complement '
|
|
||||||
exe s:pA14c.'mho <plug>\mho '
|
|
||||||
exe s:pA14c.'Game <plug>\Game '
|
|
||||||
exe s:pA14c.'partial<Tab>`6 <plug>\partial '
|
|
||||||
exe s:pA14c.'smallint <plug>\smallint '
|
|
||||||
" }}}
|
|
||||||
" {{{ Logic
|
|
||||||
let s:pA15 = s:pA."&Logic."
|
|
||||||
exe s:pA15.'lnot <plug>\lnot '
|
|
||||||
exe s:pA15.'lor <plug>\lor '
|
|
||||||
exe s:pA15.'land <plug>\land '
|
|
||||||
" }}}
|
|
||||||
" {{{ Limits1
|
|
||||||
let s:pA16 = s:pA."&Limits1."
|
|
||||||
exe s:pA16.'left <plug>\left'
|
|
||||||
exe s:pA16.'right <plug>\right'
|
|
||||||
exe s:pA16.'-sepbigl- :'
|
|
||||||
exe s:pA16.'bigl <plug>\bigl'
|
|
||||||
exe s:pA16.'Bigl <plug>\Bigl'
|
|
||||||
exe s:pA16.'biggl <plug>\biggl'
|
|
||||||
exe s:pA16.'Biggl <plug>\Biggl'
|
|
||||||
exe s:pA16.'-sepbigr- :'
|
|
||||||
exe s:pA16.'bigr <plug>\bigr'
|
|
||||||
exe s:pA16.'Bigr <plug>\Bigr'
|
|
||||||
exe s:pA16.'biggr <plug>\biggr'
|
|
||||||
exe s:pA16.'Biggr <plug>\Biggr'
|
|
||||||
exe s:pA16.'-sepbig- :'
|
|
||||||
exe s:pA16.'big <plug>\big'
|
|
||||||
exe s:pA16.'bigm <plug>\bigm'
|
|
||||||
exe s:pA16.'-sepfloor- :'
|
|
||||||
exe s:pA16.'lfloor <plug>\lfloor '
|
|
||||||
exe s:pA16.'lceil <plug>\lceil '
|
|
||||||
exe s:pA16.'rfloor <plug>\rfloor '
|
|
||||||
exe s:pA16.'rceil <plug>\rceil '
|
|
||||||
exe s:pA16.'-sepangle- :'
|
|
||||||
exe s:pA16.'langle <plug>\langle '
|
|
||||||
exe s:pA16.'rangle <plug>\rangle '
|
|
||||||
" }}}
|
|
||||||
" {{{ Limits2
|
|
||||||
let s:pA16a = s:pA."&Limits2."
|
|
||||||
exe s:pA16a.'ulcorner <plug>\ulcorner '
|
|
||||||
exe s:pA16a.'urcorner <plug>\urcorner '
|
|
||||||
exe s:pA16a.'llcorner <plug>\llcorner '
|
|
||||||
exe s:pA16a.'rlcorner <plug>\rlcorner '
|
|
||||||
exe s:pA16a.'-sepcorner- :'
|
|
||||||
exe s:pA16a.'vert <plug>\vert '
|
|
||||||
exe s:pA16a.'Vert <plug>\Vert '
|
|
||||||
exe s:pA16a.'lvert <plug>\lvert '
|
|
||||||
exe s:pA16a.'lVert <plug>\lVert '
|
|
||||||
exe s:pA16a.'rvert <plug>\rvert '
|
|
||||||
exe s:pA16a.'rVert <plug>\rVert '
|
|
||||||
exe s:pA16a.'uparrow <plug>\uparrow '
|
|
||||||
exe s:pA16a.'Uparrow <plug>\Uparrow '
|
|
||||||
exe s:pA16a.'downarrow <plug>\downarrow '
|
|
||||||
exe s:pA16a.'Downarrow <plug>\Downarrow '
|
|
||||||
exe s:pA16a.'updownarrow <plug>\updownarrow '
|
|
||||||
exe s:pA16a.'Updownarrow <plug>\Updownarrow '
|
|
||||||
exe s:pA16a.'lgroup <plug>\lgroup '
|
|
||||||
exe s:pA16a.'rgroup <plug>\rgroup '
|
|
||||||
exe s:pA16a.'lmoustache <plug>\lmoustache '
|
|
||||||
exe s:pA16a.'rmoustache <plug>\rmoustache '
|
|
||||||
exe s:pA16a.'arrowvert <plug>\arrowvert '
|
|
||||||
exe s:pA16a.'Arrowvert <plug>\Arrowvert '
|
|
||||||
exe s:pA16a.'bracevert <plug>\bracevert '
|
|
||||||
" }}}
|
|
||||||
" {{{ Log-likes
|
|
||||||
let s:pA17 = s:pA."Lo&g-likes."
|
|
||||||
exe s:pA17.'arccos <plug>\arccos '
|
|
||||||
exe s:pA17.'arcsin <plug>\arcsin '
|
|
||||||
exe s:pA17.'arctan <plug>\arctan '
|
|
||||||
exe s:pA17.'arg <plug>\arg '
|
|
||||||
exe s:pA17.'cos <plug>\cos '
|
|
||||||
exe s:pA17.'cosh <plug>\cosh '
|
|
||||||
exe s:pA17.'cot <plug>\cot '
|
|
||||||
exe s:pA17.'coth <plug>\coth '
|
|
||||||
exe s:pA17.'csc <plug>\csc '
|
|
||||||
exe s:pA17.'deg <plug>\deg '
|
|
||||||
exe s:pA17.'det <plug>\det '
|
|
||||||
exe s:pA17.'dim <plug>\dim '
|
|
||||||
exe s:pA17.'exp <plug>\exp '
|
|
||||||
exe s:pA17.'gcd <plug>\gcd '
|
|
||||||
exe s:pA17.'hom <plug>\hom '
|
|
||||||
exe s:pA17.'inf <plug>\inf '
|
|
||||||
exe s:pA17.'injlim <plug>\injlim '
|
|
||||||
exe s:pA17.'ker <plug>\ker '
|
|
||||||
exe s:pA17.'lg <plug>\lg '
|
|
||||||
exe s:pA17.'lim <plug>\lim '
|
|
||||||
exe s:pA17.'liminf <plug>\liminf '
|
|
||||||
exe s:pA17.'limsup <plug>\limsup '
|
|
||||||
exe s:pA17.'ln <plug>\ln '
|
|
||||||
exe s:pA17.'log <plug>\log '
|
|
||||||
exe s:pA17.'max <plug>\max '
|
|
||||||
exe s:pA17.'min <plug>\min '
|
|
||||||
exe s:pA17.'Pr <plug>\Pr '
|
|
||||||
exe s:pA17.'projlim <plug>\projlim '
|
|
||||||
exe s:pA17.'sec <plug>\sec '
|
|
||||||
exe s:pA17.'sin <plug>\sin '
|
|
||||||
exe s:pA17.'sinh <plug>\sinh '
|
|
||||||
exe s:pA17.'sup <plug>\sup '
|
|
||||||
exe s:pA17.'tan <plug>\tan '
|
|
||||||
exe s:pA17.'tanh <plug>\tanh '
|
|
||||||
exe s:pA17.'varlimsup <plug>\varlimsup '
|
|
||||||
exe s:pA17.'varliminf <plug>\varliminf '
|
|
||||||
exe s:pA17.'varinjlim <plug>\varinjlim '
|
|
||||||
exe s:pA17.'varprojlim <plug>\varprojlim '
|
|
||||||
" }}}
|
|
||||||
" {{{ MathSpacing
|
|
||||||
let s:pA18 = s:pA."MathSpacing."
|
|
||||||
exe s:pA18.', <plug>\, '
|
|
||||||
exe s:pA18.': <plug>\: '
|
|
||||||
exe s:pA18.'; <plug>\; '
|
|
||||||
exe s:pA18.'[space] <plug>\ '
|
|
||||||
exe s:pA18.'quad <plug>\quad '
|
|
||||||
exe s:pA18.'qquad <plug>\qquad '
|
|
||||||
exe s:pA18.'! <plug>\! '
|
|
||||||
exe s:pA18.'thinspace <plug>\thinspace '
|
|
||||||
exe s:pA18.'medspace <plug>\medspace '
|
|
||||||
exe s:pA18.'thickspace <plug>\thickspace '
|
|
||||||
exe s:pA18.'negthinspace <plug>\negthinspace '
|
|
||||||
exe s:pA18.'negmedspace <plug>\negmedspace '
|
|
||||||
exe s:pA18.'negthickspace <plug>\negthickspace '
|
|
||||||
" 1}}}
|
|
||||||
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
" ============================================================================
|
|
||||||
" File: multicompile.vim
|
|
||||||
" Author: Srinath Avadhanula
|
|
||||||
" Created: Sat Jul 05 03:00 PM 2003
|
|
||||||
" Description: compile a .tex file multiple times to get cross references
|
|
||||||
" right.
|
|
||||||
" License: Vim Charityware License
|
|
||||||
" Part of vim-latexSuite: http://vim-latex.sourceforge.net
|
|
||||||
" ============================================================================
|
|
||||||
|
|
||||||
" The contents of this file have been moved to compiler.vim, the file which
|
|
||||||
" contains all functions relevant to compiling and viewing.
|
|
||||||
" This file is kept empty on purpose so that it will over-write previous
|
|
||||||
" versions of multicompile.vim, therby preventing conflicts.
|
|
||||||
|
|
||||||
" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4
|
|
||||||
@@ -1,676 +0,0 @@
|
|||||||
"=============================================================================
|
|
||||||
" File: packages.vim
|
|
||||||
" Author: Mikolaj Machowski
|
|
||||||
" Created: Tue Apr 23 06:00 PM 2002 PST
|
|
||||||
"
|
|
||||||
" Description: handling packages from within vim
|
|
||||||
"=============================================================================
|
|
||||||
|
|
||||||
" avoid reinclusion.
|
|
||||||
if !g:Tex_PackagesMenu || exists('s:doneOnce')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let s:doneOnce = 1
|
|
||||||
|
|
||||||
let s:path = fnameescape(expand("<sfile>:p:h"))
|
|
||||||
|
|
||||||
let s:menu_div = 20
|
|
||||||
|
|
||||||
com! -nargs=0 TPackageUpdate :silent! call Tex_pack_updateall(1)
|
|
||||||
com! -nargs=0 TPackageUpdateAll :silent! call Tex_pack_updateall(1)
|
|
||||||
|
|
||||||
" Custom command-line completion of Tcommands is very useful but this feature
|
|
||||||
" is available only in Vim 6.2 and above. Check number of version and choose
|
|
||||||
" proper command and function.
|
|
||||||
if v:version >= 602
|
|
||||||
com! -complete=custom,Tex_CompletePackageName -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
|
|
||||||
|
|
||||||
" Tex_CompletePackageName: for completing names in TPackage command {{{
|
|
||||||
" Description: get list of package names with globpath(), remove full path
|
|
||||||
" and return list of names separated with newlines.
|
|
||||||
"
|
|
||||||
function! Tex_CompletePackageName(A,P,L)
|
|
||||||
" Get name of packages from all runtimepath directories
|
|
||||||
let packnames = Tex_FindInRtp('', 'packages')
|
|
||||||
let packnames = substitute(packnames, '^,', '', 'e')
|
|
||||||
" Separate names with \n not ,
|
|
||||||
let packnames = substitute(packnames,',','\n','g')
|
|
||||||
return packnames
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
else
|
|
||||||
com! -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
imap <silent> <plug> <Nop>
|
|
||||||
nmap <silent> <plug> i
|
|
||||||
|
|
||||||
let g:Tex_package_supported = ''
|
|
||||||
let g:Tex_package_detected = ''
|
|
||||||
" Remember the defaults because we want g:Tex_PromptedEnvironments to contain
|
|
||||||
" in addition to the default, \newenvironments, and the \newenvironments might
|
|
||||||
" change...
|
|
||||||
let g:Tex_PromptedEnvironmentsDefault = g:Tex_PromptedEnvironments
|
|
||||||
let g:Tex_PromptedCommandsDefault = g:Tex_PromptedCommands
|
|
||||||
|
|
||||||
|
|
||||||
" Tex_pack_check: creates the package menu and adds to 'dict' setting. {{{
|
|
||||||
"
|
|
||||||
function! Tex_pack_check(package)
|
|
||||||
" Use Tex_FindInRtp() function to get first name from packages list in all
|
|
||||||
" rtp directories conforming with latex-suite directories hierarchy
|
|
||||||
" Store names in variables to process functions only once.
|
|
||||||
let packname = Tex_FindInRtp(a:package, 'packages')
|
|
||||||
if packname != ''
|
|
||||||
exe 'runtime! ftplugin/latex-suite/packages/' . a:package
|
|
||||||
if has("gui_running")
|
|
||||||
call Tex_pack(a:package)
|
|
||||||
endif
|
|
||||||
if g:Tex_package_supported !~ a:package
|
|
||||||
let g:Tex_package_supported = g:Tex_package_supported.','.a:package
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
" Return full list of dictionaries (separated with ,) for package in &rtp
|
|
||||||
call Tex_Debug("Tex_pack_check: searching for ".a:package." in dictionaries/ in &rtp", "pack")
|
|
||||||
let dictname = Tex_FindInRtp(a:package, 'dictionaries', ':p')
|
|
||||||
if dictname != ''
|
|
||||||
exe 'setlocal dict^=' . dictname
|
|
||||||
call Tex_Debug('Tex_pack_check: setlocal dict^=' . dictname, 'pack')
|
|
||||||
if g:Tex_package_supported !~ a:package
|
|
||||||
let g:Tex_package_supported = g:Tex_package_supported.','.a:package
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if g:Tex_package_detected !~ '\<'.a:package.'\>'
|
|
||||||
let g:Tex_package_detected = g:Tex_package_detected.','.a:package
|
|
||||||
endif
|
|
||||||
let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
|
|
||||||
let g:Tex_package_supported = substitute(g:Tex_package_supported, '^,', '', '')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_pack_uncheck: removes package from menu and 'dict' settings. {{{
|
|
||||||
function! Tex_pack_uncheck(package)
|
|
||||||
if has("gui_running") && Tex_FindInRtp(a:package, 'packages') != ''
|
|
||||||
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.'-sep'.a:package.'-'
|
|
||||||
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Options'
|
|
||||||
exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Commands'
|
|
||||||
endif
|
|
||||||
if Tex_FindInRtp(a:package, 'dictionaries') != ''
|
|
||||||
exe 'setlocal dict-='.Tex_FindInRtp(a:package, 'dictionaries')
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_pack_updateall: updates the TeX-Packages menu {{{
|
|
||||||
" Description:
|
|
||||||
" This function first calls Tex_pack_all to scan for \usepackage's etc if
|
|
||||||
" necessary. After that, it 'supports' and 'unsupports' packages as needed
|
|
||||||
" in such a way as to not repeat work.
|
|
||||||
function! Tex_pack_updateall(force)
|
|
||||||
call Tex_Debug('+Tex_pack_updateall', 'pack')
|
|
||||||
|
|
||||||
" Find out which file we need to scan.
|
|
||||||
let fname = Tex_GetMainFileName(':p')
|
|
||||||
|
|
||||||
" If this is the same as last time, don't repeat.
|
|
||||||
if !a:force && exists('s:lastScannedFile') &&
|
|
||||||
\ s:lastScannedFile == fname
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
" Remember which file we scanned for next time.
|
|
||||||
let s:lastScannedFile = fname
|
|
||||||
|
|
||||||
" Remember which packages we detected last time.
|
|
||||||
if exists('g:Tex_package_detected')
|
|
||||||
let oldpackages = g:Tex_package_detected
|
|
||||||
else
|
|
||||||
let oldpackages = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
" This sets up a global variable of all detected packages.
|
|
||||||
let g:Tex_package_detected = ''
|
|
||||||
" reset the environments and commands.
|
|
||||||
let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironmentsDefault
|
|
||||||
let g:Tex_PromptedCommands = g:Tex_PromptedCommandsDefault
|
|
||||||
|
|
||||||
if expand('%:p') != fname
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: sview '.Tex_EscapeSpaces(fname), 'pack')
|
|
||||||
exe 'sview '.Tex_EscapeSpaces(fname)
|
|
||||||
else
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: split', 'pack')
|
|
||||||
split
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_ScanForPackages()
|
|
||||||
q
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: detected ['.g:Tex_package_detected.'] in first run', 'pack')
|
|
||||||
|
|
||||||
" Now for each package find out if this is a custom package and if so,
|
|
||||||
" scan that as well. We will use the ':find' command in vim to let vim
|
|
||||||
" search through the file paths for us.
|
|
||||||
"
|
|
||||||
" NOTE: This while loop will also take into account packages included
|
|
||||||
" within packages to any level of recursion as long as
|
|
||||||
" g:Tex_package_detected is always padded with new package names
|
|
||||||
" from the end.
|
|
||||||
"
|
|
||||||
" First set the &path setting to the user's TEXINPUTS setting.
|
|
||||||
let _path = &path
|
|
||||||
let _suffixesadd = &suffixesadd
|
|
||||||
|
|
||||||
let &path = '.,'.g:Tex_TEXINPUTS
|
|
||||||
let &suffixesadd = '.sty,.tex'
|
|
||||||
|
|
||||||
let scannedPackages = ''
|
|
||||||
|
|
||||||
let i = 1
|
|
||||||
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
while packname != ''
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: scanning package '.packname, 'pack')
|
|
||||||
|
|
||||||
" Scan this package only if we have not scanned it before in this
|
|
||||||
" run.
|
|
||||||
if scannedPackages =~ '\<'.packname.'\>'
|
|
||||||
let i = i + 1
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: '.packname.' already scanned', 'pack')
|
|
||||||
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Split this window in two. The packages/files being found will open
|
|
||||||
" in this new window and we also need not bother with files being
|
|
||||||
" modified etc.
|
|
||||||
split
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: silent! find '.Tex_EscapeSpaces(packname).'.sty', 'pack')
|
|
||||||
let thisbufnum = bufnr('%')
|
|
||||||
exec 'silent! find '.Tex_EscapeSpaces(packname).'.sty'
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: present file = '.bufname('%'), 'pack')
|
|
||||||
|
|
||||||
" If this file was not found, assume that it means its not a
|
|
||||||
" custom package and mark it "scanned".
|
|
||||||
" A package is not found if we stay in the same buffer as before and
|
|
||||||
" its not the one where we want to go.
|
|
||||||
if bufnr('%') == thisbufnum && bufnr('%') != bufnr(packname.'.sty')
|
|
||||||
let scannedPackages = scannedPackages.','.packname
|
|
||||||
q
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: '.packname.' not found anywhere', 'pack')
|
|
||||||
let i = i + 1
|
|
||||||
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
" otherwise we are presently editing a custom package, scan it for
|
|
||||||
" more \usepackage lines from the first line to the last.
|
|
||||||
let packpath = expand('%:p')
|
|
||||||
let &complete = &complete.'s'.packpath
|
|
||||||
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: found custom package '.packpath, 'pack')
|
|
||||||
call Tex_ScanForPackages(line('$'), line('$'))
|
|
||||||
call Tex_Debug(':Tex_pack_updateall: After scanning, g:Tex_package_detected = '.g:Tex_package_detected, 'pack')
|
|
||||||
|
|
||||||
let scannedPackages = scannedPackages.','.packname
|
|
||||||
" Do not use bwipe, but that leads to excessive buffer number
|
|
||||||
" consumption. Besides, its intuitive for a custom package to remain
|
|
||||||
" on the buffer list.
|
|
||||||
q
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
let &path = _path
|
|
||||||
let &suffixesadd = _suffixesadd
|
|
||||||
|
|
||||||
" Now only support packages we didn't last time.
|
|
||||||
" First remove packages which were used last time but are no longer used.
|
|
||||||
let i = 1
|
|
||||||
let oldPackName = Tex_Strntok(oldpackages, ',', i)
|
|
||||||
while oldPackName != ''
|
|
||||||
if g:Tex_package_detected !~ oldPackName
|
|
||||||
call Tex_pack_uncheck(oldPackName)
|
|
||||||
endif
|
|
||||||
let i = i + 1
|
|
||||||
let oldPackName = Tex_Strntok(oldpackages, ',', i)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" Then support packages which are used this time but weren't used last
|
|
||||||
" time.
|
|
||||||
let i = 1
|
|
||||||
let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
while newPackName != ''
|
|
||||||
if oldpackages !~ newPackName
|
|
||||||
call Tex_pack_one(newPackName)
|
|
||||||
endif
|
|
||||||
let i = i + 1
|
|
||||||
let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" Throw an event that we are done scanning packages. Some packages might
|
|
||||||
" use this to change behavior based on which options have been used etc.
|
|
||||||
call Tex_Debug(":Tex_pack_updateall: throwing LatexSuiteScannedPackages event", "pack")
|
|
||||||
silent! do LatexSuite User LatexSuiteScannedPackages
|
|
||||||
|
|
||||||
call Tex_Debug("-Tex_pack_updateall", "pack")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_pack_one: supports each package in the argument list.{{{
|
|
||||||
" Description:
|
|
||||||
" If no arguments are supplied, then the user is asked to choose from the
|
|
||||||
" packages found in the packages/ directory
|
|
||||||
function! Tex_pack_one(...)
|
|
||||||
if a:0 == 0 || (a:0 > 0 && a:1 == '')
|
|
||||||
let packlist = Tex_FindInRtp('', 'packages')
|
|
||||||
let packname = Tex_ChooseFromPrompt(
|
|
||||||
\ "Choose a package: \n" .
|
|
||||||
\ Tex_CreatePrompt(packlist, '3', ',') .
|
|
||||||
\ "\nEnter number or filename :",
|
|
||||||
\ packlist, ',')
|
|
||||||
if packname != ''
|
|
||||||
return Tex_pack_one(packname)
|
|
||||||
else
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
" Support the packages supplied. This function can be called with
|
|
||||||
" multiple arguments in which case, support each of them in turn.
|
|
||||||
let retVal = ''
|
|
||||||
let omega = 1
|
|
||||||
while omega <= a:0
|
|
||||||
let packname = a:{omega}
|
|
||||||
if Tex_FindInRtp(packname, 'packages') != ''
|
|
||||||
call Tex_pack_check(packname)
|
|
||||||
if exists('g:TeX_package_option_'.packname)
|
|
||||||
\ && g:TeX_package_option_{packname} != ''
|
|
||||||
let retVal = retVal.'\usepackage[<++>]{'.packname.'}<++>'
|
|
||||||
else
|
|
||||||
let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
|
|
||||||
endif
|
|
||||||
let omega = omega + 1
|
|
||||||
endwhile
|
|
||||||
return IMAP_PutTextWithMovement(substitute(retVal, "\<CR>$", '', ''), '<+', '+>')
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
" Tex_ScanForPackages: scans the current file for \usepackage{} lines {{{
|
|
||||||
" and if supported, loads the options and commands found in the
|
|
||||||
" corresponding package file. Also scans for \newenvironment and
|
|
||||||
" \newcommand lines and adds names to g:Tex_Prompted variables, they can be
|
|
||||||
" easy available through <F5> and <F7> shortcuts
|
|
||||||
function! Tex_ScanForPackages(...)
|
|
||||||
call Tex_Debug("+Tex_ScanForPackages", "pack")
|
|
||||||
|
|
||||||
let pos = Tex_GetPos()
|
|
||||||
|
|
||||||
" For package files without \begin and \end{document}, we might be told to
|
|
||||||
" search from beginning to end.
|
|
||||||
if a:0 < 2
|
|
||||||
0
|
|
||||||
let beginline = search('\\begin{document}', 'W')
|
|
||||||
let endline = search('\\end{document}', 'W')
|
|
||||||
0
|
|
||||||
else
|
|
||||||
let beginline = a:1
|
|
||||||
let endline = a:2
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: Begining scans in [".bufname('%')."], beginline = ".beginline, "pack")
|
|
||||||
|
|
||||||
|
|
||||||
" Scan the file. First open up all the folds, because the command
|
|
||||||
" /somepattern
|
|
||||||
" issued in a closed fold _always_ goes to the first match.
|
|
||||||
let erm = v:errmsg
|
|
||||||
silent! normal! ggVGzO
|
|
||||||
let v:errmsg = erm
|
|
||||||
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: beginning scan for \\usepackage lines", "pack")
|
|
||||||
" The wrap trick enables us to match \usepackage on the first line as
|
|
||||||
" well.
|
|
||||||
let wrap = 'w'
|
|
||||||
while search('^\s*\\usepackage\_.\{-}{\_.\+}', wrap)
|
|
||||||
let wrap = 'W'
|
|
||||||
|
|
||||||
if line('.') > beginline
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let saveUnnamed = @"
|
|
||||||
let saveA = @a
|
|
||||||
|
|
||||||
" If there are options, then find those.
|
|
||||||
if getline('.') =~ '\\usepackage\[.\{-}\]'
|
|
||||||
let options = matchstr(getline('.'), '\\usepackage\[\zs.\{-}\ze\]')
|
|
||||||
elseif getline('.') =~ '\\usepackage\['
|
|
||||||
" Entering here means that the user has split the \usepackage
|
|
||||||
" across newlines. Therefore, use yank.
|
|
||||||
exec "normal! /{\<CR>\"ayi}"
|
|
||||||
let options = @a
|
|
||||||
else
|
|
||||||
let options = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The following statement puts the stuff between the { }'s of a
|
|
||||||
" \usepackage{stuff,foo} into @a. Do not use matchstr() and the like
|
|
||||||
" because we can have things split across lines and such.
|
|
||||||
exec "normal! /{\<CR>\"ay/}\<CR>"
|
|
||||||
|
|
||||||
" now remove all whitespace from @a. We need to remove \n and \r
|
|
||||||
" because we can encounter stuff like
|
|
||||||
" \usepackage{pack1,
|
|
||||||
" newpackonanotherline}
|
|
||||||
let @a = substitute(@a, "[ \t\n\r]", '', 'g')
|
|
||||||
|
|
||||||
" Now we have something like pack1,pack2,pack3 with possibly commas
|
|
||||||
" and stuff before the first package and after the last package name.
|
|
||||||
" Remove those.
|
|
||||||
let @a = substitute(@a, '\(^\W*\|\W*$\)', '', 'g')
|
|
||||||
|
|
||||||
" This gets us a string like 'pack1,pack2,pack3'
|
|
||||||
" TODO: This will contain duplicates if the user has duplicates.
|
|
||||||
" Should we bother taking care of this?
|
|
||||||
let g:Tex_package_detected = g:Tex_package_detected.','.@a
|
|
||||||
|
|
||||||
" For each package found, form a global variable of the form
|
|
||||||
" g:Tex_{packagename}_options
|
|
||||||
" which contains a list of the options.
|
|
||||||
let j = 1
|
|
||||||
while Tex_Strntok(@a, ',', j) != ''
|
|
||||||
let g:Tex_{Tex_Strntok(@a, ',', j)}_options = options
|
|
||||||
let j = j + 1
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" Finally convert @a into something like '"pack1","pack2"'
|
|
||||||
let @a = substitute(@a, '^\|$', '"', 'g')
|
|
||||||
let @a = substitute(@a, ',', '","', 'g')
|
|
||||||
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: found package(s) [".@a."] on line ".line('.'), "pack")
|
|
||||||
|
|
||||||
" restore @a
|
|
||||||
let @a = saveA
|
|
||||||
let @" = saveUnnamed
|
|
||||||
endwhile
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: End scan \\usepackage, detected packages = ".g:Tex_package_detected, "pack")
|
|
||||||
|
|
||||||
" TODO: This needs to be changed. In the future, we might have
|
|
||||||
" functionality to remember the fold-state before opening up all the folds
|
|
||||||
" and then re-creating them. Use mkview.vim.
|
|
||||||
let erm = v:errmsg
|
|
||||||
silent! normal! ggVGzC
|
|
||||||
let v:errmsg = erm
|
|
||||||
|
|
||||||
" Because creating list of detected packages gives string
|
|
||||||
" ',pack1,pack2,pack3' remove leading ,
|
|
||||||
let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
|
|
||||||
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newcommand's", "pack")
|
|
||||||
" Scans whole file (up to \end{document}) for \newcommand and adds this
|
|
||||||
" commands to g:Tex_PromptedCommands variable, it is easily available
|
|
||||||
" through <F7>
|
|
||||||
0
|
|
||||||
while search('^\s*\\newcommand\*\?{.\{-}}', 'W')
|
|
||||||
|
|
||||||
if line('.') > endline
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let newcommand = matchstr(getline('.'), '\\newcommand\*\?{\\\zs.\{-}\ze}')
|
|
||||||
let g:Tex_PromptedCommands = g:Tex_PromptedCommands . ',' . newcommand
|
|
||||||
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
" Scans whole file (up to \end{document}) for \newenvironment and adds this
|
|
||||||
" environments to g:Tex_PromptedEnvironments variable, it is easily available
|
|
||||||
" through <F5>
|
|
||||||
0
|
|
||||||
call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newenvironment's", 'pack')
|
|
||||||
|
|
||||||
while search('^\s*\\newenvironment\*\?{.\{-}}', 'W')
|
|
||||||
call Tex_Debug('found newenvironment on '.line('.'), 'pack')
|
|
||||||
|
|
||||||
if line('.') > endline
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
|
|
||||||
let newenvironment = matchstr(getline('.'), '\\newenvironment\*\?{\zs.\{-}\ze}')
|
|
||||||
let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironments . ',' . newenvironment
|
|
||||||
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
call Tex_SetPos(pos)
|
|
||||||
" first make a random search so that we push at least one item onto the
|
|
||||||
" search history. Since vim puts only one item in the history per function
|
|
||||||
" call, this way we make sure that one and only item is put into the
|
|
||||||
" search history.
|
|
||||||
normal! /^<CR>
|
|
||||||
" now delete it...
|
|
||||||
call histdel('/', -1)
|
|
||||||
|
|
||||||
call Tex_Debug("-Tex_ScanForPackages", "pack")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_pack_supp_menu: sets up a menu for package files {{{
|
|
||||||
" found in the packages directory groups the packages thus found into groups
|
|
||||||
" of 20...
|
|
||||||
function! Tex_pack_supp_menu()
|
|
||||||
let suplist = Tex_FindInRtp('', 'packages')
|
|
||||||
|
|
||||||
call Tex_MakeSubmenu(suplist, g:Tex_PackagesMenuLocation.'Supported.',
|
|
||||||
\ '<plug><C-r>=Tex_pack_one("', '")<CR>')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" Tex_pack: loads the options (and commands) for the given package {{{
|
|
||||||
function! Tex_pack(pack)
|
|
||||||
if exists('g:TeX_package_'.a:pack)
|
|
||||||
|
|
||||||
let optionList = g:TeX_package_option_{a:pack}.','
|
|
||||||
let commandList = g:TeX_package_{a:pack}.','
|
|
||||||
|
|
||||||
" Don't create separator if in package file are only Vim commands.
|
|
||||||
" Rare but possible.
|
|
||||||
if !(commandList == ',' && optionList == ',')
|
|
||||||
exec 'amenu '.g:Tex_PackagesMenuLocation.'-sep'.a:pack.'- <Nop>'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if optionList != ''
|
|
||||||
|
|
||||||
let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Options.'
|
|
||||||
call s:GroupPackageMenuItems(optionList, mainMenuName,
|
|
||||||
\ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>')
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
if commandList != ''
|
|
||||||
|
|
||||||
let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Commands.'
|
|
||||||
call s:GroupPackageMenuItems(commandList, mainMenuName,
|
|
||||||
\ '<plug><C-r>=Tex_ProcessPackageCommand("', '")<CR>',
|
|
||||||
\ '<SID>FilterPackageMenuLHS')
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
|
|
||||||
" ==============================================================================
|
|
||||||
" Menu Functions
|
|
||||||
" Creating menu items for the all the package files found in the packages/
|
|
||||||
" directory as well as creating menus for each supported package found in the
|
|
||||||
" preamble.
|
|
||||||
" ==============================================================================
|
|
||||||
" Tex_MakeSubmenu: makes a submenu given a list of items {{{
|
|
||||||
" Description:
|
|
||||||
" This function takes a comma seperated list of menu items and creates a
|
|
||||||
" 'grouped' menu. i.e, it groups the items into s:menu_div items each and
|
|
||||||
" puts them in submenus of the given mainMenu.
|
|
||||||
" Each menu item is linked to the HandlerFunc.
|
|
||||||
" If an additional argument is supplied, then it is used to filter each of
|
|
||||||
" the menu items to generate better names for the menu display.
|
|
||||||
"
|
|
||||||
function! Tex_MakeSubmenu(menuList, mainMenuName,
|
|
||||||
\ handlerFuncLHS, handlerFuncRHS, ...)
|
|
||||||
|
|
||||||
let extractFunction = (a:0 > 0 ? a:1 : '' )
|
|
||||||
let menuList = substitute(a:menuList, '[^,]$', ',', '')
|
|
||||||
|
|
||||||
let doneMenuSubmenu = 0
|
|
||||||
|
|
||||||
while menuList != ''
|
|
||||||
|
|
||||||
" Extract upto s:menu_div menus at once.
|
|
||||||
let menuBunch = matchstr(menuList, '\v(.{-},){,'.s:menu_div.'}')
|
|
||||||
|
|
||||||
" The remaining menus go into the list.
|
|
||||||
let menuList = strpart(menuList, strlen(menuBunch))
|
|
||||||
|
|
||||||
let submenu = ''
|
|
||||||
" If there is something remaining, then we got s:menu_div items.
|
|
||||||
" therefore put these menu items into a submenu.
|
|
||||||
if strlen(menuList) || doneMenuSubmenu
|
|
||||||
exec 'let firstMenu = '.extractFunction."(matchstr(menuBunch, '\\v^.{-}\\ze,'))"
|
|
||||||
exec 'let lastMenu = '.extractFunction."(matchstr(menuBunch, '\\v[^,]{-}\\ze,$'))"
|
|
||||||
|
|
||||||
let submenu = firstMenu.'\ \-\ '.lastMenu.'.'
|
|
||||||
|
|
||||||
let doneMenuSubmenu = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Now for each menu create a menu under the submenu
|
|
||||||
let i = 1
|
|
||||||
let menuName = Tex_Strntok(menuBunch, ',', i)
|
|
||||||
while menuName != ''
|
|
||||||
exec 'let menuItem = '.extractFunction.'(menuName)'
|
|
||||||
execute 'amenu '.a:mainMenuName.submenu.menuItem
|
|
||||||
\ ' '.a:handlerFuncLHS.menuName.a:handlerFuncRHS
|
|
||||||
|
|
||||||
let i = i + 1
|
|
||||||
let menuName = Tex_Strntok(menuBunch, ',', i)
|
|
||||||
endwhile
|
|
||||||
endwhile
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}
|
|
||||||
" GroupPackageMenuItems: uses the sbr: to split menus into groups {{{
|
|
||||||
" Description:
|
|
||||||
" This function first splits up the menuList into groups based on the
|
|
||||||
" special sbr: tag and then calls Tex_MakeSubmenu
|
|
||||||
"
|
|
||||||
function! <SID>GroupPackageMenuItems(menuList, menuName,
|
|
||||||
\ handlerFuncLHS, handlerFuncRHS,...)
|
|
||||||
|
|
||||||
if a:0 > 0
|
|
||||||
let extractFunction = a:1
|
|
||||||
else
|
|
||||||
let extractFunction = ''
|
|
||||||
endif
|
|
||||||
let menuList = a:menuList
|
|
||||||
|
|
||||||
while matchstr(menuList, 'sbr:') != ''
|
|
||||||
let groupName = matchstr(menuList, '\v^sbr:\zs.{-}\ze,')
|
|
||||||
let menuList = strpart(menuList, strlen('sbr:'.groupName.','))
|
|
||||||
if matchstr(menuList, 'sbr:') != ''
|
|
||||||
let menuGroup = matchstr(menuList, '\v^.{-},\zesbr:')
|
|
||||||
else
|
|
||||||
let menuGroup = menuList
|
|
||||||
endif
|
|
||||||
|
|
||||||
call Tex_MakeSubmenu(menuGroup, a:menuName.groupName.'.',
|
|
||||||
\ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
|
|
||||||
|
|
||||||
let menuList = strpart(menuList, strlen(menuGroup))
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
call Tex_MakeSubmenu(menuList, a:menuName,
|
|
||||||
\ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
|
|
||||||
|
|
||||||
endfunction " }}}
|
|
||||||
" Definition of what to do for various package commands {{{
|
|
||||||
let s:CommandSpec_brs = '\<+replace+><++>'
|
|
||||||
let s:CommandSpec_bra = '\<+replace+>{<++>}<++>'
|
|
||||||
let s:CommandSpec_brd = '\<+replace+>{<++>}{<++>}<++>'
|
|
||||||
|
|
||||||
let s:CommandSpec_nor = '\<+replace+>'
|
|
||||||
let s:CommandSpec_noo = '\<+replace+>[<++>]'
|
|
||||||
let s:CommandSpec_nob = '\<+replace+>[<++>]{<++>}{<++>}<++>'
|
|
||||||
|
|
||||||
let s:CommandSpec_env = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
|
|
||||||
let s:CommandSpec_ens = '\begin{<+replace+>}<+extra+>'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
|
|
||||||
let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'
|
|
||||||
|
|
||||||
let s:CommandSpec_spe = '<+replace+>'
|
|
||||||
let s:CommandSpec_ = '\<+replace+>'
|
|
||||||
|
|
||||||
let s:MenuLHS_bra = '\\&<+replace+>{}'
|
|
||||||
let s:MenuLHS_brs = '\\&<+replace+>{}'
|
|
||||||
let s:MenuLHS_brd = '\\&<+replace+>{}{}'
|
|
||||||
let s:MenuLHS_env = '&<+replace+>\ (E)'
|
|
||||||
let s:MenuLHS_ens = '&<+replace+>\ (E)'
|
|
||||||
let s:MenuLHS_eno = '&<+replace+>\ (E)'
|
|
||||||
let s:MenuLHS_nor = '\\&<+replace+>'
|
|
||||||
let s:MenuLHS_noo = '\\&<+replace+>[]'
|
|
||||||
let s:MenuLHS_nob = '\\&<+replace+>[]{}{}'
|
|
||||||
let s:MenuLHS_spe = '&<+replace+>'
|
|
||||||
let s:MenuLHS_sep = '-sep<+replace+>-'
|
|
||||||
let s:MenuLHS_ = '\\&<+replace+>'
|
|
||||||
" }}}
|
|
||||||
" Tex_ProcessPackageCommand: processes a command from the package menu {{{
|
|
||||||
" Description:
|
|
||||||
function! Tex_ProcessPackageCommand(command)
|
|
||||||
if a:command =~ ':'
|
|
||||||
let commandType = matchstr(a:command, '^\w\+\ze:')
|
|
||||||
let commandName = matchstr(a:command, '^\w\+:\zs[^:]\+\ze:\?')
|
|
||||||
let extrapart = strpart(a:command, strlen(commandType.':'.commandName.':'))
|
|
||||||
else
|
|
||||||
let commandType = ''
|
|
||||||
let commandName = a:command
|
|
||||||
let extrapart = ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
let command = s:CommandSpec_{commandType}
|
|
||||||
let command = substitute(command, '<+replace+>', commandName, 'g')
|
|
||||||
let command = substitute(command, '<+extra+>', extrapart, 'g')
|
|
||||||
return IMAP_PutTextWithMovement(command)
|
|
||||||
endfunction
|
|
||||||
" }}}
|
|
||||||
" FilterPackageMenuLHS: filters the command description to provide a better menu item {{{
|
|
||||||
" Description:
|
|
||||||
function! <SID>FilterPackageMenuLHS(command)
|
|
||||||
let commandType = matchstr(a:command, '^\w\+\ze:')
|
|
||||||
if commandType != ''
|
|
||||||
let commandName = strpart(a:command, strlen(commandType.':'))
|
|
||||||
else
|
|
||||||
let commandName = a:command
|
|
||||||
endif
|
|
||||||
|
|
||||||
return substitute(s:MenuLHS_{commandType}, '<+replace+>', commandName, 'g')
|
|
||||||
endfunction " }}}
|
|
||||||
|
|
||||||
if g:Tex_Menus
|
|
||||||
exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdatePackage :call Tex_pack(expand("<cword>"))<cr>'
|
|
||||||
exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdateAll :call Tex_pack_updateall(1)<cr>'
|
|
||||||
|
|
||||||
call Tex_pack_supp_menu()
|
|
||||||
endif
|
|
||||||
|
|
||||||
augroup LatexSuite
|
|
||||||
au LatexSuite User LatexSuiteFileType
|
|
||||||
\ call Tex_Debug('packages.vim: Catching LatexSuiteFileType event', 'pack') |
|
|
||||||
\ let s:save_clipboard = &clipboard |
|
|
||||||
\ set clipboard= |
|
|
||||||
\ call Tex_pack_updateall(0) |
|
|
||||||
\ let &clipboard=s:save_clipboard
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" vim:fdm=marker:ts=4:sw=4:noet:ff=unix
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
" Project name
|
|
||||||
" let g:projName = ''
|
|
||||||
"
|
|
||||||
" Project files
|
|
||||||
" let g:projFiles = ''
|
|
||||||
|
|
||||||
|
|
||||||
" Vim settings/maps/abbrs specific for this project
|
|
||||||
|
|
||||||
" Modeline for this file
|
|
||||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:ft=vim
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user