mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
752a647be1 | ||
|
|
97a0bdcef6 | ||
|
|
58f119c57f | ||
|
|
0ac0389039 | ||
|
|
4bf3f6c300 | ||
|
|
4a80e945ad | ||
|
|
27f22774b1 | ||
|
|
f6be1d3d13 | ||
|
|
77f091c8c7 | ||
|
|
17149b4657 | ||
|
|
271c88a356 | ||
|
|
b86a0cd422 | ||
|
|
06c80c676e | ||
|
|
b061a2d995 | ||
|
|
e59b949def | ||
|
|
f0d869aea7 | ||
|
|
96e9c416ae | ||
|
|
d888bc4422 | ||
|
|
b4425d2c39 | ||
|
|
1ef902d053 | ||
|
|
ea97d9a230 | ||
|
|
db99bf52d3 | ||
|
|
bbe1308b2f | ||
|
|
8b5607d0f7 | ||
|
|
303837b5be | ||
|
|
3e9a36e388 | ||
|
|
6c99830e5a | ||
|
|
c4af23e3f8 | ||
|
|
57aeb5fdf5 | ||
|
|
184a9122c1 | ||
|
|
a0644d9c80 |
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
|
||||
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
|
||||
91
README.md
91
README.md
@@ -1,12 +1,18 @@
|
||||
# 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.
|
||||
|
||||
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.
|
||||
- Language packs are merged, not submoduled. It significantly speeds up installation time.
|
||||
- No support for esoteric languages (there is for modern ones like `slim` though).
|
||||
- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.
|
||||
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).
|
||||
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.
|
||||
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).
|
||||
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -17,42 +23,49 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
||||
|
||||
## Language packs
|
||||
|
||||
- [arduino](https://github.com/sudar/vim-arduino-syntax)
|
||||
- [bundler](https://github.com/tpope/vim-bundler)
|
||||
- [clojure](https://github.com/guns/vim-clojure-static)
|
||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script)
|
||||
- [csv](https://github.com/chrisbra/csv.vim)
|
||||
- [cucumber](https://github.com/tpope/vim-cucumber)
|
||||
- [elixir](https://github.com/elixir-lang/vim-elixir)
|
||||
- [erlang](https://github.com/jimenezrick/vimerl)
|
||||
- [git](https://github.com/tpope/vim-git)
|
||||
- [haml](https://github.com/tpope/vim-haml)
|
||||
- [handlebars](https://github.com/nono/vim-handlebars)
|
||||
- [hasksyn](https://github.com/travitch/hasksyn)
|
||||
- [javascript](https://github.com/pangloss/vim-javascript)
|
||||
- [json](https://github.com/leshill/vim-json)
|
||||
- [jst](https://github.com/briancollins/vim-jst)
|
||||
- [less](https://github.com/groenewege/vim-less)
|
||||
- [markdown](https://github.com/tpope/vim-markdown)
|
||||
- [nginx](https://github.com/mutewinter/nginx.vim)
|
||||
- [ocaml](https://github.com/jrk/vim-ocaml)
|
||||
- [octave](https://github.com/vim-scripts/octave.vim--)
|
||||
- [php](https://github.com/spf13/PIV)
|
||||
- [puppet](https://github.com/ajf/puppet-vim)
|
||||
- [python](https://github.com/vim-scripts/python.vim--Vasiliev)
|
||||
- [rspec](https://github.com/skwp/vim-rspec)
|
||||
- [ruby](https://github.com/vim-ruby/vim-ruby)
|
||||
- [sbt](https://github.com/derekwyatt/vim-sbt)
|
||||
- [scala](https://github.com/derekwyatt/vim-scala)
|
||||
- [scss-syntax](https://github.com/cakebaker/scss-syntax.vim)
|
||||
- [slim](https://github.com/slim-template/vim-slim)
|
||||
- [stylus](https://github.com/wavded/vim-stylus)
|
||||
- [textile](https://github.com/timcharper/textile.vim)
|
||||
- [tmux](https://github.com/acustodioo/vim-tmux)
|
||||
- [tomdoc](https://github.com/mutewinter/tomdoc.vim)
|
||||
- [twig](https://github.com/beyondwords/vim-twig)
|
||||
- [vim-golang](https://github.com/jnwhiteh/vim-golang)
|
||||
- [xls](https://github.com/vim-scripts/XSLT-syntax)
|
||||
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, ftdetect)
|
||||
- [bundler](https://github.com/tpope/vim-bundler) (compiler)
|
||||
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
||||
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
|
||||
- [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)
|
||||
- [css-color](https://github.com/ap/vim-css-color) (syntax)
|
||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
||||
- [cucumber](https://github.com/tpope/vim-cucumber) (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)
|
||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
|
||||
- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, autoload, ftplugin, ftdetect)
|
||||
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||
- [handlebars](https://github.com/nono/vim-handlebars) (syntax, ftplugin, ftdetect)
|
||||
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
|
||||
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload)
|
||||
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
|
||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
|
||||
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
|
||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
||||
- [latex](https://github.com/jcf/vim-latex) (indent, compiler, ftplugin)
|
||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
||||
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
||||
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
|
||||
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
||||
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
|
||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
||||
- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect)
|
||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
||||
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)
|
||||
- [rspec](https://github.com/skwp/vim-rspec) (syntax)
|
||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
|
||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
||||
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
||||
- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)
|
||||
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
|
||||
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
|
||||
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
|
||||
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
|
||||
|
||||
## Contributing
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
if !exists("g:DisableAutoPHPFolding")
|
||||
let g:DisableAutoPHPFolding = 0
|
||||
endif
|
||||
|
||||
if !g:DisableAutoPHPFolding
|
||||
" Don't use the PHP syntax folding
|
||||
setlocal foldmethod=manual
|
||||
" Turn on PHP fast folds
|
||||
EnableFastPHPFolds
|
||||
endif
|
||||
|
||||
" Fix matchpairs for PHP (for matchit.vim plugin)
|
||||
if exists("loaded_matchit")
|
||||
let b:match_skip = 's:comment\|string'
|
||||
let b:match_words = '<?\(php\)\?:?>,\<switch\>:\<endswitch\>,' .
|
||||
\ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
|
||||
\ '\<while\>:\<endwhile\>,\<do\>:\<while\>,' .
|
||||
\ '\<for\>:\<endfor\>,\<foreach\>:\<endforeach\>' .
|
||||
\ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
|
||||
\ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
|
||||
\ '<\@<=\([^/?][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>,' .
|
||||
\ '<:>,(:),{:},[:]'
|
||||
endif
|
||||
@@ -5,8 +5,7 @@
|
||||
"
|
||||
|
||||
syn keyword tomdocKeywords Returns containedin=coffeeComment contained
|
||||
syn keyword tomdocKeywords Yields containedin=coffeeComment contained
|
||||
syn keyword tomdocKeywords Raises containedin=coffeeComment contained
|
||||
syn keyword tomdocKeywords Throws containedin=coffeeComment contained
|
||||
syn keyword tomdocKeywords Examples containedin=coffeeComment contained
|
||||
syn keyword tomdocKeywords Signature containedin=coffeeComment contained
|
||||
|
||||
@@ -16,6 +15,6 @@ syn match tomdocDescriptions +\s*Public:+he=e-1 containedin=coffeeComment contai
|
||||
syn match tomdocDescriptions +\s*Internal:+he=e-1 containedin=coffeeComment contained
|
||||
syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=coffeeComment contained
|
||||
|
||||
hi default link tomdocDescriptions TODO
|
||||
hi default link tomdocKeywords TODO
|
||||
hi default link tomdocDescriptions String
|
||||
hi default link tomdocKeywords String
|
||||
hi default link tomdocArguments HELP
|
||||
|
||||
1139
after/syntax/cpp.vim
Normal file
1139
after/syntax/cpp.vim
Normal file
File diff suppressed because it is too large
Load Diff
500
after/syntax/css.vim
Normal file
500
after/syntax/css.vim
Normal file
@@ -0,0 +1,500 @@
|
||||
" Language: Colorful CSS Color Preview
|
||||
" 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={}
|
||||
for i in range(0, 255)
|
||||
let s:hex[ printf( '%02x', i ) ] = i
|
||||
endfor
|
||||
|
||||
let s:black = '#000000'
|
||||
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
|
||||
@@ -15,6 +15,6 @@ syn match tomdocDescriptions +\s*Public:+he=e-1 containedin=rubyComment containe
|
||||
syn match tomdocDescriptions +\s*Internal:+he=e-1 containedin=rubyComment contained
|
||||
syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=rubyComment contained
|
||||
|
||||
hi default link tomdocDescriptions TODO
|
||||
hi default link tomdocKeywords TODO
|
||||
hi default link tomdocDescriptions String
|
||||
hi default link tomdocKeywords String
|
||||
hi default link tomdocArguments HELP
|
||||
|
||||
1
after/syntax/sass.vim
Normal file
1
after/syntax/sass.vim
Normal file
@@ -0,0 +1 @@
|
||||
syn cluster sassCssAttributes add=@cssColors
|
||||
1
after/syntax/stylus.vim
Normal file
1
after/syntax/stylus.vim
Normal file
@@ -0,0 +1 @@
|
||||
syn cluster stylusCssAttributes add=@cssColors
|
||||
861
autoload/htmlcomplete.vim
Normal file
861
autoload/htmlcomplete.vim
Normal file
@@ -0,0 +1,861 @@
|
||||
" Vim completion script
|
||||
" Language: HTML and XHTML
|
||||
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
|
||||
" Last Change: 2006 Oct 19
|
||||
" Modified: othree <othree@gmail.com>
|
||||
" Changes: Add HTML5, WAI-ARIA support
|
||||
" Last Change: 2010 Sep 25
|
||||
|
||||
if !exists('g:aria_attributes_complete')
|
||||
let g:aria_attributes_complete = 1
|
||||
endif
|
||||
|
||||
function! htmlcomplete#CompleteTags(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
let line = getline('.')
|
||||
let start = col('.') - 1
|
||||
let curline = line('.')
|
||||
let compl_begin = col('.') - 2
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|[!:.-]\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
" Handling of entities {{{
|
||||
if start >= 0 && line[start - 1] =~ '&'
|
||||
let b:entitiescompl = 1
|
||||
let b:compl_context = ''
|
||||
return start
|
||||
endif
|
||||
" }}}
|
||||
" Handling of <style> tag {{{
|
||||
let stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
|
||||
let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
|
||||
if stylestart != 0 && styleend != 0
|
||||
if stylestart <= curline && styleend >= curline
|
||||
let start = col('.') - 1
|
||||
let b:csscompl = 1
|
||||
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
" Handling of <script> tag {{{
|
||||
let scriptstart = searchpair('<script\>', '', '<\/script\>', "bnW")
|
||||
let scriptend = searchpair('<script\>', '', '<\/script\>', "nW")
|
||||
if scriptstart != 0 && scriptend != 0
|
||||
if scriptstart <= curline && scriptend >= curline
|
||||
let start = col('.') - 1
|
||||
let b:jscompl = 1
|
||||
let b:jsrange = [scriptstart, scriptend]
|
||||
while start >= 0 && line[start - 1] =~ '\k'
|
||||
let start -= 1
|
||||
endwhile
|
||||
" We are inside of <script> tag. But we should also get contents
|
||||
" of all linked external files and (secondary, less probably) other <script> tags
|
||||
" This logic could possible be done in separate function - may be
|
||||
" reused in events scripting (also with option could be reused for
|
||||
" CSS
|
||||
let b:js_extfiles = []
|
||||
let l = line('.')
|
||||
let c = col('.')
|
||||
call cursor(1,1)
|
||||
while search('<\@<=script\>', 'W') && line('.') <= l
|
||||
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
|
||||
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
|
||||
if filereadable(sname)
|
||||
let b:js_extfiles += readfile(sname)
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
call cursor(1,1)
|
||||
let js_scripttags = []
|
||||
while search('<script\>', 'W') && line('.') < l
|
||||
if matchstr(getline('.'), '<script[^>]*src') == ''
|
||||
let js_scripttag = getline(line('.'), search('</script>', 'W'))
|
||||
let js_scripttags += js_scripttag
|
||||
endif
|
||||
endwhile
|
||||
let b:js_extfiles += js_scripttags
|
||||
call cursor(l,c)
|
||||
unlet! l c
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
if !exists("b:csscompl") && !exists("b:jscompl")
|
||||
let b:compl_context = getline('.')[0:(compl_begin)]
|
||||
if b:compl_context !~ '<[^>]*$'
|
||||
" Look like we may have broken tag. Check previous lines.
|
||||
let i = 1
|
||||
while 1
|
||||
let context_line = getline(curline-i)
|
||||
if context_line =~ '<[^>]*$'
|
||||
" Yep, this is this line
|
||||
let context_lines = getline(curline-i, curline-1) + [b:compl_context]
|
||||
let b:compl_context = join(context_lines, ' ')
|
||||
break
|
||||
elseif context_line =~ '>[^<]*$' || i == curline
|
||||
" We are in normal tag line, no need for completion at all
|
||||
" OR reached first line without tag at all
|
||||
let b:compl_context = ''
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
" Make sure we don't have counter
|
||||
unlet! i
|
||||
endif
|
||||
let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
|
||||
|
||||
" Return proper start for on-events. Without that beginning of
|
||||
" completion will be badly reported
|
||||
if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
|
||||
let start = col('.') - 1
|
||||
while start >= 0 && line[start - 1] =~ '\k'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
" If b:compl_context begins with <? we are inside of PHP code. It
|
||||
" wasn't closed so PHP completion passed it to HTML
|
||||
if &filetype =~? 'php' && b:compl_context =~ '^<?'
|
||||
let b:phpcompl = 1
|
||||
let start = col('.') - 1
|
||||
while start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]'
|
||||
let start -= 1
|
||||
endwhile
|
||||
endif
|
||||
else
|
||||
let b:compl_context = getline('.')[0:compl_begin]
|
||||
endif
|
||||
return start
|
||||
else
|
||||
" Initialize base return lists
|
||||
let res = []
|
||||
let res2 = []
|
||||
" a:base is very short - we need context
|
||||
let context = b:compl_context
|
||||
" Check if we should do CSS completion inside of <style> tag
|
||||
" or JS completion inside of <script> tag or PHP completion in case of <?
|
||||
" tag AND &ft==php
|
||||
if exists("b:csscompl")
|
||||
unlet! b:csscompl
|
||||
let context = b:compl_context
|
||||
unlet! b:compl_context
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
elseif exists("b:jscompl")
|
||||
unlet! b:jscompl
|
||||
return javascriptcomplete#CompleteJS(0, a:base)
|
||||
elseif exists("b:phpcompl")
|
||||
unlet! b:phpcompl
|
||||
let context = b:compl_context
|
||||
return phpcomplete#CompletePHP(0, a:base)
|
||||
else
|
||||
if len(b:compl_context) == 0 && !exists("b:entitiescompl")
|
||||
return []
|
||||
endif
|
||||
let context = matchstr(b:compl_context, '.\zs.*')
|
||||
endif
|
||||
unlet! b:compl_context
|
||||
" Entities completion {{{
|
||||
if exists("b:entitiescompl")
|
||||
unlet! b:entitiescompl
|
||||
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
|
||||
let entities = b:html_omni['vimxmlentities']
|
||||
|
||||
if len(a:base) == 1
|
||||
for m in entities
|
||||
if m =~ '^'.a:base
|
||||
call add(res, m.';')
|
||||
endif
|
||||
endfor
|
||||
return res
|
||||
else
|
||||
for m in entities
|
||||
if m =~? '^'.a:base
|
||||
call add(res, m.';')
|
||||
elseif m =~? a:base
|
||||
call add(res2, m.';')
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
endif
|
||||
|
||||
|
||||
endif
|
||||
" }}}
|
||||
if context =~ '>'
|
||||
" Generally if context contains > it means we are outside of tag and
|
||||
" should abandon action - with one exception: <style> span { bo
|
||||
if context =~ 'style[^>]\{-}>[^<]\{-}$'
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
elseif context =~ 'script[^>]\{-}>[^<]\{-}$'
|
||||
let b:jsrange = [line('.'), search('<\/script\>', 'nW')]
|
||||
return javascriptcomplete#CompleteJS(0, context)
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
|
||||
" If context contains > it means we are already outside of tag and we
|
||||
" should abandon action
|
||||
" If context contains white space it is attribute.
|
||||
" It can be also value of attribute.
|
||||
" We have to get first word to offer proper completions
|
||||
if context == ''
|
||||
let tag = ''
|
||||
else
|
||||
let tag = split(context)[0]
|
||||
" Detect if tag is uppercase to return in proper case,
|
||||
" we need to make it lowercase for processing
|
||||
if tag =~ '^\u*$'
|
||||
let uppercase_tag = 1
|
||||
let tag = tolower(tag)
|
||||
else
|
||||
let uppercase_tag = 0
|
||||
endif
|
||||
endif
|
||||
" Get last word, it should be attr name
|
||||
let attr = matchstr(context, '\S\+="[^"]*$')
|
||||
if attr == ''
|
||||
let attr = matchstr(context, '.*\s\zs.*')
|
||||
endif
|
||||
" Possible situations where any prediction would be difficult:
|
||||
" 1. Events attributes
|
||||
if context =~ '\s'
|
||||
" Sort out style, class, and on* cases
|
||||
if context =~? "\\s\\(on[a-z]+\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
|
||||
" Id, class completion {{{
|
||||
if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
if context =~? "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
let search_for = "class"
|
||||
elseif context =~? "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
|
||||
let search_for = "id"
|
||||
endif
|
||||
" Handle class name completion
|
||||
" 1. Find lines of <link stylesheet>
|
||||
" 1a. Check file for @import
|
||||
" 2. Extract filename(s?) of stylesheet,
|
||||
call cursor(1,1)
|
||||
let head = getline(search('<head\>'), search('<\/head>'))
|
||||
let headjoined = join(copy(head), ' ')
|
||||
if headjoined =~ '<style'
|
||||
" Remove possibly confusing CSS operators
|
||||
let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
|
||||
if search_for == 'class'
|
||||
let styleheadlines = split(stylehead)
|
||||
let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
|
||||
else
|
||||
let stylesheet = split(headjoined, '[{}]')
|
||||
" Get all lines which fit id syntax
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out possible color definitions
|
||||
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out complex border definitions
|
||||
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
let templines = join(classlines, ' ')
|
||||
let headclasslines = split(templines)
|
||||
call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
endif
|
||||
let internal = 1
|
||||
else
|
||||
let internal = 0
|
||||
endif
|
||||
let styletable = []
|
||||
let secimportfiles = []
|
||||
let filestable = filter(copy(head), "v:val =~ '\\(@import\\|link.*stylesheet\\)'")
|
||||
for line in filestable
|
||||
if line =~ "@import"
|
||||
let styletable += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")]
|
||||
elseif line =~ "<link"
|
||||
let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
|
||||
endif
|
||||
endfor
|
||||
for file in styletable
|
||||
if filereadable(file)
|
||||
let stylesheet = readfile(file)
|
||||
let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
|
||||
if len(secimport) > 0
|
||||
for line in secimport
|
||||
let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")
|
||||
let secfile = fnamemodify(file, ":p:h").'/'.secfile
|
||||
let secimportfiles += [secfile]
|
||||
endfor
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
let cssfiles = styletable + secimportfiles
|
||||
let classes = []
|
||||
for file in cssfiles
|
||||
if filereadable(file)
|
||||
let stylesheet = readfile(file)
|
||||
let stylefile = join(stylesheet, ' ')
|
||||
let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
|
||||
if search_for == 'class'
|
||||
let stylesheet = split(stylefile)
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
|
||||
else
|
||||
let stylesheet = split(stylefile, '[{}]')
|
||||
" Get all lines which fit id syntax
|
||||
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out possible color definitions
|
||||
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
" Filter out complex border definitions
|
||||
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
|
||||
let templines = join(classlines, ' ')
|
||||
let stylelines = split(templines)
|
||||
let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
|
||||
|
||||
endif
|
||||
" We gathered classes definitions from all external files
|
||||
let classes += classlines
|
||||
endif
|
||||
endfor
|
||||
if internal == 1
|
||||
let classes += headclasslines
|
||||
endif
|
||||
|
||||
if search_for == 'class'
|
||||
let elements = {}
|
||||
for element in classes
|
||||
if element =~ '^\.'
|
||||
let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
|
||||
let class = substitute(class, ':.*', '', '')
|
||||
if has_key(elements, 'common')
|
||||
let elements['common'] .= ' '.class
|
||||
else
|
||||
let elements['common'] = class
|
||||
endif
|
||||
else
|
||||
let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
|
||||
let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
|
||||
if tagname != ''
|
||||
if has_key(elements, tagname)
|
||||
let elements[tagname] .= ' '.class
|
||||
else
|
||||
let elements[tagname] = class
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
if has_key(elements, tag) && has_key(elements, 'common')
|
||||
let values = split(elements[tag]." ".elements['common'])
|
||||
elseif has_key(elements, tag) && !has_key(elements, 'common')
|
||||
let values = split(elements[tag])
|
||||
elseif !has_key(elements, tag) && has_key(elements, 'common')
|
||||
let values = split(elements['common'])
|
||||
else
|
||||
return []
|
||||
endif
|
||||
|
||||
elseif search_for == 'id'
|
||||
" Find used IDs
|
||||
" 1. Catch whole file
|
||||
let filelines = getline(1, line('$'))
|
||||
" 2. Find lines with possible id
|
||||
let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"')
|
||||
" 3a. Join all filtered lines
|
||||
let id_string = join(used_id_lines, ' ')
|
||||
" 3b. And split them to be sure each id is in separate item
|
||||
let id_list = split(id_string, 'id\s*=\s*')
|
||||
" 4. Extract id values
|
||||
let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")')
|
||||
let joined_used_id = ','.join(used_id, ',').','
|
||||
|
||||
let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")')
|
||||
|
||||
let values = []
|
||||
|
||||
for element in classes
|
||||
if joined_used_id !~ ','.element.','
|
||||
let values += [element]
|
||||
endif
|
||||
|
||||
endfor
|
||||
|
||||
endif
|
||||
|
||||
" We need special version of sbase
|
||||
let classbase = matchstr(context, ".*[\"']")
|
||||
let classquote = matchstr(classbase, '.$')
|
||||
|
||||
let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
|
||||
|
||||
for m in sort(values)
|
||||
if m =~? '^'.entered_class
|
||||
call add(res, m . classquote)
|
||||
elseif m =~? entered_class
|
||||
call add(res2, m . classquote)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
elseif context =~? "style\\s*=\\s*[\"'][^\"']*$"
|
||||
return csscomplete#CompleteCSS(0, context)
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Complete on-events {{{
|
||||
if context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
|
||||
" We have to:
|
||||
" 1. Find external files
|
||||
let b:js_extfiles = []
|
||||
let l = line('.')
|
||||
let c = col('.')
|
||||
call cursor(1,1)
|
||||
while search('<\@<=script\>', 'W') && line('.') <= l
|
||||
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
|
||||
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
|
||||
if filereadable(sname)
|
||||
let b:js_extfiles += readfile(sname)
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
" 2. Find at least one <script> tag
|
||||
call cursor(1,1)
|
||||
let js_scripttags = []
|
||||
while search('<script\>', 'W') && line('.') < l
|
||||
if matchstr(getline('.'), '<script[^>]*src') == ''
|
||||
let js_scripttag = getline(line('.'), search('</script>', 'W'))
|
||||
let js_scripttags += js_scripttag
|
||||
endif
|
||||
endwhile
|
||||
let b:js_extfiles += js_scripttags
|
||||
|
||||
" 3. Proper call for javascriptcomplete#CompleteJS
|
||||
call cursor(l,c)
|
||||
let js_context = matchstr(a:base, '\k\+$')
|
||||
let js_shortcontext = substitute(a:base, js_context.'$', '', '')
|
||||
let b:compl_context = context
|
||||
let b:jsrange = [l, l]
|
||||
unlet! l c
|
||||
return javascriptcomplete#CompleteJS(0, js_context)
|
||||
|
||||
endif
|
||||
|
||||
" }}}
|
||||
let stripbase = matchstr(context, ".*\\(on[a-zA-Z]*\\|style\\|class\\)\\s*=\\s*[\"']\\zs.*")
|
||||
" Now we have context stripped from all chars up to style/class.
|
||||
" It may fail with some strange style value combinations.
|
||||
if stripbase !~ "[\"']"
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
" Value of attribute completion {{{
|
||||
" If attr contains =\s*[\"'] we catched value of attribute
|
||||
if attr =~ "=\s*[\"']" || attr =~ "=\s*$"
|
||||
" Let do attribute specific completion
|
||||
let attrname = matchstr(attr, '.*\ze\s*=')
|
||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
||||
let values = []
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
if attrname == 'href'
|
||||
" Now we are looking for local anchors defined by name or id
|
||||
if entered_value =~ '^#'
|
||||
let file = join(getline(1, line('$')), ' ')
|
||||
" Split it be sure there will be one id/name element in
|
||||
" item, it will be also first word [a-zA-Z0-9_-] in element
|
||||
let oneelement = split(file, "\\(meta \\)\\@<!\\(name\\|id\\)\\s*=\\s*[\"']")
|
||||
for i in oneelement
|
||||
let values += ['#'.matchstr(i, "^[a-zA-Z][a-zA-Z0-9%_-]*")]
|
||||
endfor
|
||||
endif
|
||||
else
|
||||
if has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname)
|
||||
let values = b:html_omni[tag][1][attrname]
|
||||
elseif attrname =~ '^aria-' && exists("b:aria_omni") && has_key(b:aria_omni['aria_attributes'], attrname)
|
||||
let values = b:aria_omni['aria_attributes'][attrname]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
|
||||
if len(values) == 0
|
||||
return []
|
||||
endif
|
||||
|
||||
" We need special version of sbase
|
||||
let attrbase = matchstr(context, ".*[\"']")
|
||||
let attrquote = matchstr(attrbase, '.$')
|
||||
if attrquote !~ "['\"]"
|
||||
let attrquoteopen = '"'
|
||||
let attrquote = '"'
|
||||
else
|
||||
let attrquoteopen = ''
|
||||
endif
|
||||
" Multi value attributes don't need ending quote
|
||||
let info = ''
|
||||
if has_key(b:html_omni['vimxmlattrinfo'], attrname)
|
||||
let info = b:html_omni['vimxmlattrinfo'][attrname][0]
|
||||
elseif exists("b:aria_omni") && has_key(b:aria_omni['vimariaattrinfo'], attrname)
|
||||
let info = b:aria_omni['vimariaattrinfo'][attrname][0]
|
||||
endif
|
||||
if info =~ "^\\*"
|
||||
let attrquote = ''
|
||||
endif
|
||||
|
||||
if len(entered_value) > 0
|
||||
if entered_value =~ "\\s$"
|
||||
let entered_value = ''
|
||||
else
|
||||
let entered_value = split(entered_value)[-1]
|
||||
endif
|
||||
endif
|
||||
for m in values
|
||||
" This if is needed to not offer all completions as-is
|
||||
" alphabetically but sort them. Those beginning with entered
|
||||
" part will be as first choices
|
||||
if m =~ '^'.entered_value
|
||||
call add(res, attrquoteopen . m . attrquote)
|
||||
elseif m =~ entered_value
|
||||
call add(res2, attrquoteopen . m . attrquote)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return res + res2
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Attribute completion {{{
|
||||
" Shorten context to not include last word
|
||||
let sbase = matchstr(context, '.*\ze\s.*')
|
||||
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
|
||||
if has_key(b:html_omni, tag)
|
||||
let attrs = keys(b:html_omni[tag][1])
|
||||
else
|
||||
return []
|
||||
endif
|
||||
if exists("b:aria_omni")
|
||||
let roles = []
|
||||
if has_key(b:aria_omni['default_role'], tag)
|
||||
let roles = [b:aria_omni['default_role'][tag]]
|
||||
endif
|
||||
if context =~ 'role='
|
||||
let start = matchend(context, "role=['\"]")
|
||||
let end = matchend(context, "[a-z ]\\+['\"]", start)
|
||||
if start != -1 && end != -1
|
||||
let roles = split(strpart(context, start, end-start-1), " ")
|
||||
endif
|
||||
endif
|
||||
for i in range(len(roles))
|
||||
let role = roles[i]
|
||||
if has_key(b:aria_omni['role_attributes'], role)
|
||||
let attrs = extend(attrs, b:aria_omni['role_attributes'][role])
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
for m in sort(attrs)
|
||||
if m =~ '^'.attr
|
||||
call add(res, m)
|
||||
elseif m =~ attr
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
"let menu = res + res2
|
||||
let menu = res
|
||||
if has_key(b:html_omni, 'vimxmlattrinfo') || (exists("b:aria_omni") && has_key(b:aria_omni, 'vimariaattrinfo'))
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(b:html_omni['vimxmlattrinfo'], item)
|
||||
let m_menu = b:html_omni['vimxmlattrinfo'][item][0]
|
||||
let m_info = b:html_omni['vimxmlattrinfo'][item][1]
|
||||
elseif exists("b:aria_omni") && has_key(b:aria_omni['vimariaattrinfo'], item)
|
||||
let m_menu = b:aria_omni['vimariaattrinfo'][item][0]
|
||||
let m_info = b:aria_omni['vimariaattrinfo'][item][1]
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
endif
|
||||
if item =~ '^aria-' && exists("b:aria_omni")
|
||||
if len(b:aria_omni['aria_attributes'][item]) > 0 && b:aria_omni['aria_attributes'][item][0] =~ '^\(BOOL\|'.item.'\)$'
|
||||
let item = item
|
||||
let m_menu = 'Bool'
|
||||
else
|
||||
let item .= '="'
|
||||
endif
|
||||
else
|
||||
if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
|
||||
let item = item
|
||||
let m_menu = 'Bool'
|
||||
else
|
||||
let item .= '="'
|
||||
endif
|
||||
endif
|
||||
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
|
||||
let item = item
|
||||
else
|
||||
let item .= '="'
|
||||
endif
|
||||
let final_menu += [item]
|
||||
endfor
|
||||
return final_menu
|
||||
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
endif
|
||||
" }}}
|
||||
" Close tag {{{
|
||||
let b:unaryTagsStack = "area base br col command embed hr img input keygen link meta param source track wbr"
|
||||
if context =~ '^\/'
|
||||
if context =~ '^\/.'
|
||||
return []
|
||||
else
|
||||
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
|
||||
return [opentag.">"]
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
" Tag completion {{{
|
||||
" Deal with tag completion.
|
||||
let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack"))
|
||||
" MM: TODO: GLOT works always the same but with some weird situation it
|
||||
" behaves as intended in HTML but screws in PHP
|
||||
if opentag == '' || &filetype == 'php' && !has_key(b:html_omni, opentag)
|
||||
" Hack for sometimes failing GetLastOpenTag.
|
||||
" As far as I tested fail isn't GLOT fault but problem
|
||||
" of invalid document - not properly closed tags and other mish-mash.
|
||||
" Also when document is empty. Return list of *all* tags.
|
||||
let tags = keys(b:html_omni)
|
||||
call filter(tags, 'v:val !~ "^vimxml"')
|
||||
else
|
||||
if has_key(b:html_omni, opentag)
|
||||
let tags = b:html_omni[opentag][0]
|
||||
else
|
||||
return []
|
||||
endif
|
||||
endif
|
||||
" }}}
|
||||
|
||||
if exists("uppercase_tag") && uppercase_tag == 1
|
||||
let context = tolower(context)
|
||||
endif
|
||||
" Handle XML keywords: DOCTYPE
|
||||
if opentag == ''
|
||||
let tags = [
|
||||
\ '!DOCTYPE html>',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
|
||||
\ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/1999/xhtml">'
|
||||
\ ] + sort(tags)
|
||||
endif
|
||||
|
||||
"for m in sort(tags)
|
||||
for m in tags
|
||||
if m =~ '^'.context
|
||||
call add(res, m)
|
||||
elseif m =~ context
|
||||
call add(res2, m)
|
||||
endif
|
||||
endfor
|
||||
let menu = res + res2
|
||||
if has_key(b:html_omni, 'vimxmltaginfo')
|
||||
let final_menu = []
|
||||
for i in range(len(menu))
|
||||
let item = menu[i]
|
||||
if has_key(b:html_omni['vimxmltaginfo'], item)
|
||||
let m_menu = b:html_omni['vimxmltaginfo'][item][0]
|
||||
let m_info = b:html_omni['vimxmltaginfo'][item][1]
|
||||
else
|
||||
let m_menu = ''
|
||||
let m_info = ''
|
||||
endif
|
||||
if &filetype == 'html' && exists("uppercase_tag") && uppercase_tag == 1 && item !~ 'DOCTYPE'
|
||||
let item = toupper(item)
|
||||
endif
|
||||
if item =~ 'DOCTYPE'
|
||||
if item =~ 'DTD'
|
||||
let abbr = 'DOCTYPE '.matchstr(item, 'DTD \zsX\?HTML .\{-}\ze\/\/')
|
||||
else
|
||||
let abbr = 'DOCTYPE HTML 5'
|
||||
endif
|
||||
else
|
||||
let abbr = item
|
||||
endif
|
||||
let final_menu += [{'abbr':abbr, 'word':item, 'menu':m_menu, 'info':m_info}]
|
||||
endfor
|
||||
else
|
||||
let final_menu = menu
|
||||
endif
|
||||
return final_menu
|
||||
|
||||
" }}}
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! htmlcomplete#LoadAria() " {{{
|
||||
runtime! autoload/xml/aria.vim
|
||||
if exists("g:xmldata_aria")
|
||||
\ && has_key(g:xmldata_aria, 'default_role')
|
||||
\ && has_key(g:xmldata_aria, 'role_attributes')
|
||||
\ && has_key(g:xmldata_aria, 'vimariaattrinfo')
|
||||
\ && has_key(g:xmldata_aria, 'aria_attributes')
|
||||
let b:aria_omni = g:xmldata_aria
|
||||
else
|
||||
let g:aria_attributes_complete = 0
|
||||
endif
|
||||
endfunction
|
||||
" }}}
|
||||
function! htmlcomplete#LoadData() " {{{
|
||||
if !exists("b:html_omni_flavor")
|
||||
if &filetype == 'html'
|
||||
let b:html_omni_flavor = 'html401t'
|
||||
else
|
||||
let b:html_omni_flavor = 'xhtml10s'
|
||||
endif
|
||||
endif
|
||||
" With that if we still have bloated memory but create new buffer
|
||||
" variables only by linking to existing g:variable, not sourcing whole
|
||||
" file.
|
||||
if exists('g:xmldata_'.b:html_omni_flavor)
|
||||
exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
|
||||
else
|
||||
exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
|
||||
exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
|
||||
endif
|
||||
endfunction
|
||||
" }}}
|
||||
function! htmlcomplete#CheckDoctype() " {{{
|
||||
if exists('b:html_omni_flavor')
|
||||
let old_flavor = b:html_omni_flavor
|
||||
else
|
||||
let old_flavor = ''
|
||||
endif
|
||||
let i = 1
|
||||
while i < 10 && i < line("$")
|
||||
let line = getline(i)
|
||||
if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
|
||||
let b:html_omni_flavor = 'html32'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
|
||||
let b:html_omni_flavor = 'html40t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
|
||||
let b:html_omni_flavor = 'html40f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
|
||||
let b:html_omni_flavor = 'html40s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
|
||||
let b:html_omni_flavor = 'html401t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
|
||||
let b:html_omni_flavor = 'html401f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
|
||||
let b:html_omni_flavor = 'html401s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
|
||||
let b:html_omni_flavor = 'xhtml10t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
|
||||
let b:html_omni_flavor = 'xhtml10f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
|
||||
let b:html_omni_flavor = 'xhtml10s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
|
||||
let b:html_omni_flavor = 'xhtml11'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE html'
|
||||
let b:html_omni_flavor = 'html5'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
if !exists("b:html_doctype")
|
||||
return
|
||||
else
|
||||
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
||||
" once, not every time per buffer.
|
||||
if old_flavor == b:html_omni_flavor
|
||||
return
|
||||
else
|
||||
if exists('g:xmldata_'.b:html_omni_flavor)
|
||||
exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
|
||||
else
|
||||
exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
|
||||
exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
|
||||
endif
|
||||
return
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
" }}}
|
||||
" vim:set foldmethod=marker:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,37 +0,0 @@
|
||||
" usage:
|
||||
" set indentexpr=scss_indent#GetIndent(v:lnum)
|
||||
fun! scss_indent#GetIndent(lnum)
|
||||
" { -> increase indent
|
||||
" } -> decrease indent
|
||||
if a:lnum == 1
|
||||
" start at 0 indentation
|
||||
return 0
|
||||
endif
|
||||
|
||||
" try to find last line ending with { or }
|
||||
" ignoring // comments
|
||||
let regex = '\([{}]\)\%(\/\/.*\)\?$'
|
||||
let nr = search(regex, 'bnW')
|
||||
if nr > 0
|
||||
let last = indent(nr)
|
||||
let m = matchlist(getline(nr), regex)
|
||||
let m_curr = matchlist(getline(a:lnum), regex)
|
||||
echoe string(m).string(m_curr)
|
||||
if !empty(m_curr) && m_curr[1] == '}' && m[1] == '{'
|
||||
" last was open, current is close, use same indent
|
||||
return last
|
||||
elseif !empty(m_curr) && m_curr[1] == '}' && m[1] == '}'
|
||||
" } line and last line was }: decrease
|
||||
return last - &sw
|
||||
endif
|
||||
if m[1] == '{'
|
||||
" line after {: increase indent
|
||||
return last + &sw
|
||||
else
|
||||
" line after } or { - same indent
|
||||
return last
|
||||
endif
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
endfun
|
||||
232
autoload/xml/aria.vim
Normal file
232
autoload/xml/aria.vim
Normal file
@@ -0,0 +1,232 @@
|
||||
" Vim completion for WAI-ARIA data file
|
||||
" Language: HTML + WAI-ARIA
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" Last Change: 2010 Sep 09
|
||||
|
||||
" WAI_ARIA: {{{
|
||||
" Ref: http://www.w3.org/TR/wai-aria/
|
||||
" Version: Draft 15 December 2009
|
||||
|
||||
let abstract_role = {}
|
||||
let role_attributes = {}
|
||||
let default_role = {}
|
||||
|
||||
" Ref: http://www.w3.org/TR/wai-aria/roles
|
||||
" Version: Draft 15 December 2009
|
||||
let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']
|
||||
let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']
|
||||
let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']
|
||||
let role = extend(widget_role, document_structure)
|
||||
let role = extend(role, landmark_role)
|
||||
|
||||
" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_taxonomy
|
||||
"let global_states_and_properties = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-controls': [], 'aria-describedby': [], 'aria-disabled': ['true', 'false'], 'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-flowto': [], 'aria-grabbed': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-labelledby': [], 'aria-live': ['off', 'polite', 'assertive'], 'aria-owns': [], 'aria-relevant': ['additions', 'removals', 'text', 'all']}
|
||||
let widget_attributes = {'aria-autocomplete': ['inline', 'list', 'both', 'none'], 'aria-checked': ['true', 'false', 'mixed', 'undefined'], 'aria-disabled': ['true', 'false'], 'aria-expanded': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-level': [], 'aria-multiline': ['true', 'false'], 'aria-multiselectable': ['true', 'false'], 'aria-orientation': ['horizontal', 'vertical'], 'aria-pressed': ['true', 'false', 'mixed', 'undefined'], 'aria-readonly': ['true', 'false'], 'aria-required': ['true', 'false'], 'aria-selected': ['true', 'false', 'undefined'], 'aria-sort': ['ascending', 'descending', 'none', 'other'], 'aria-valuemax': [], 'aria-valuemin': [], 'aria-valuenow': [], 'aria-valuetext': []}
|
||||
let live_region_attributes = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-live': ['off', 'polite', 'assertive'], 'aria-relevant': ['additions', 'removals', 'text', 'all', 'additions text']}
|
||||
let drag_and_drop_attributes = {'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-grabbed': ['true', 'false', 'undefined']}
|
||||
let relationship_attributes = {'aria-activedescendant': [], 'aria-controls': [], 'aria-describedby': [], 'aria-flowto': [], 'aria-labelledby': [], 'aria-owns': [], 'aria-posinset': [], 'aria-setsize': []}
|
||||
let aria_attributes = widget_attributes
|
||||
let aria_attributes = extend(aria_attributes, live_region_attributes)
|
||||
let aria_attributes = extend(aria_attributes, drag_and_drop_attributes)
|
||||
let aria_attributes = extend(aria_attributes, relationship_attributes)
|
||||
|
||||
" Abstract Roles
|
||||
let abstract_role['roletype'] = ['aria-atomic', 'aria-busy', 'aria-controls', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant']
|
||||
let role_attributes['default'] = abstract_role['roletype']
|
||||
let abstract_role['structure'] = abstract_role['roletype']
|
||||
let abstract_role['widget'] = abstract_role['roletype']
|
||||
let abstract_role['window'] = abstract_role['roletype'] + ['aria-expanded']
|
||||
let abstract_role['composite'] = abstract_role['widget'] + ['aria-activedescendant']
|
||||
let abstract_role['input'] = abstract_role['widget']
|
||||
let abstract_role['section'] = abstract_role['structure'] + ['aria-expanded']
|
||||
let abstract_role['sectionhead'] = abstract_role['structure'] + ['aria-expanded']
|
||||
|
||||
let role_attributes['group'] = abstract_role['section']
|
||||
let abstract_role['select'] = abstract_role['composite'] + role_attributes['group'] + abstract_role['input']
|
||||
|
||||
let abstract_role['range'] = abstract_role['input'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']
|
||||
|
||||
let role_attributes['region'] = abstract_role['section']
|
||||
let abstract_role['landmark'] = role_attributes['region']
|
||||
|
||||
" Widget Roles
|
||||
let role_attributes['list'] = role_attributes['region']
|
||||
let role_attributes['listitem'] = abstract_role['section']
|
||||
|
||||
let role_attributes['dialog'] = abstract_role['window']
|
||||
let role_attributes['menuitem'] = abstract_role['input']
|
||||
let role_attributes['checkbox'] = abstract_role['input'] + ['aria-checked']
|
||||
let role_attributes['menuitemcheckbox'] = role_attributes['menuitem'] + role_attributes['checkbox']
|
||||
let role_attributes['option'] = abstract_role['input'] + ['aria-checked', 'aria-posinset', 'aria-selected', 'aria-setsize']
|
||||
let role_attributes['radio'] = role_attributes['checkbox'] + role_attributes['option']
|
||||
|
||||
let role_attributes['directory'] = role_attributes['list']
|
||||
|
||||
let role_attributes['alert'] = role_attributes['region']
|
||||
let role_attributes['alertdialog'] = role_attributes['alert'] + role_attributes['dialog']
|
||||
let role_attributes['button'] = role_attributes['region'] + role_attributes['menuitemcheckbox']
|
||||
let role_attributes['combobox'] = abstract_role['select'] + ['aria-expanded', 'aria-required']
|
||||
let role_attributes['gridcell'] = abstract_role['section'] + abstract_role['widget']
|
||||
let role_attributes['link'] = abstract_role['widget']
|
||||
let role_attributes['log'] = role_attributes['region']
|
||||
let role_attributes['marquee'] = role_attributes['region']
|
||||
let role_attributes['menuitemradio'] = role_attributes['menuitemcheckbox'] + role_attributes['radio']
|
||||
let role_attributes['progressbar'] = abstract_role['widget'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']
|
||||
let role_attributes['radiogroup'] = abstract_role['select'] + ['aria-required']
|
||||
let role_attributes['scrollbar'] = abstract_role['range'] + ['aria-controls', 'aria-orientation', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow']
|
||||
let role_attributes['slider'] = abstract_role['range'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow']
|
||||
let role_attributes['spinbutton'] = abstract_role['composite'] + abstract_role['range'] + ['aria-required']
|
||||
let role_attributes['status'] = abstract_role['composite'] + role_attributes['region']
|
||||
let role_attributes['tab'] = abstract_role['sectionhead'] + abstract_role['widget'] + ['aria-selected']
|
||||
let role_attributes['tabpanel'] = role_attributes['region']
|
||||
let role_attributes['textbox'] = abstract_role['input'] + ['aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required']
|
||||
let role_attributes['timer'] = role_attributes['status']
|
||||
let role_attributes['tooltip'] = abstract_role['section']
|
||||
let role_attributes['treeitem'] = role_attributes['listitem'] + role_attributes['option']
|
||||
|
||||
let role_attributes['grid'] = abstract_role['composite'] + role_attributes['region'] + ['aria-level', 'aria-multiselectable', 'aria-readonly']
|
||||
let role_attributes['listbox'] = role_attributes['list'] + abstract_role['select'] + ['aria-multiselectable', 'aria-required']
|
||||
let role_attributes['menu'] = role_attributes['list'] + abstract_role['select']
|
||||
let role_attributes['menubar'] = role_attributes['menu']
|
||||
let role_attributes['tablist'] = abstract_role['composite'] + role_attributes['directory']
|
||||
let role_attributes['toolbar'] = role_attributes['group']
|
||||
let role_attributes['tree'] = abstract_role['select'] + ['aria-multiselectable', 'aria-required']
|
||||
let role_attributes['treegrid'] = role_attributes['grid'] + role_attributes['tree']
|
||||
|
||||
" Document Structure
|
||||
let role_attributes['document'] = abstract_role['structure'] + ['aria-expanded']
|
||||
|
||||
let role_attributes['article'] = role_attributes['document'] + role_attributes['region']
|
||||
let role_attributes['columnheader'] = role_attributes['gridcell'] + abstract_role['sectionhead'] + ['aria-sort']
|
||||
let role_attributes['definition'] = abstract_role['section']
|
||||
let role_attributes['heading'] = abstract_role['sectionhead'] + ['aria-level']
|
||||
let role_attributes['img'] = abstract_role['section']
|
||||
let role_attributes['math'] = abstract_role['section']
|
||||
let role_attributes['note'] = abstract_role['section']
|
||||
let role_attributes['presentation'] = abstract_role['structure']
|
||||
let role_attributes['row'] = role_attributes['group'] + ['aria-level', 'aria-selected']
|
||||
let role_attributes['rowheader'] = role_attributes['gridcell'] + abstract_role['sectionhead']
|
||||
let role_attributes['separator'] = abstract_role['structure'] + ['aria-expanded']
|
||||
|
||||
" Landmark Roles
|
||||
let role_attributes['application'] = abstract_role['landmark']
|
||||
let role_attributes['banner'] = abstract_role['landmark']
|
||||
let role_attributes['complementary'] = abstract_role['landmark']
|
||||
let role_attributes['contentinfo'] = abstract_role['landmark']
|
||||
let role_attributes['form'] = abstract_role['landmark']
|
||||
let role_attributes['main'] = abstract_role['landmark']
|
||||
let role_attributes['navigation'] = abstract_role['landmark']
|
||||
let role_attributes['search'] = abstract_role['landmark']
|
||||
|
||||
" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_def
|
||||
let aria_attributes_value = {
|
||||
\ 'aria-autocomplete': ['ID', ''],
|
||||
\ 'aria-checked': ['Token', ''],
|
||||
\ 'aria-disabled': ['true/false', ''],
|
||||
\ 'aria-expanded': ['Token', ''],
|
||||
\ 'aria-haspopup': ['true/false', ''],
|
||||
\ 'aria-hidden': ['true/false', ''],
|
||||
\ 'aria-invalid': ['Token', ''],
|
||||
\ 'aria-label': ['String', ''],
|
||||
\ 'aria-level': ['Int', ''],
|
||||
\ 'aria-multiline': ['true/false', ''],
|
||||
\ 'aria-multiselectable': ['true/false', ''],
|
||||
\ 'aria-orientation': ['Token', ''],
|
||||
\ 'aria-pressed': ['Token', ''],
|
||||
\ 'aria-readonly': ['true/false', ''],
|
||||
\ 'aria-required': ['true/false', ''],
|
||||
\ 'aria-selected': ['Token', ''],
|
||||
\ 'aria-sort': ['Token', ''],
|
||||
\ 'aria-valuemax': ['Number', ''],
|
||||
\ 'aria-valuemin': ['Number', ''],
|
||||
\ 'aria-valuenow': ['Number', ''],
|
||||
\ 'aria-valuetext': ['String', ''],
|
||||
\ 'aria-atomic': ['true/false', ''],
|
||||
\ 'aria-busy': ['true/false', ''],
|
||||
\ 'aria-live': ['Token', ''],
|
||||
\ 'aria-relevant': ['*Token', ''],
|
||||
\ 'aria-dropeffect': ['*Token', ''],
|
||||
\ 'aria-grabbed': ['Token', ''],
|
||||
\ 'aria-activedescendant': ['ID', ''],
|
||||
\ 'aria-controls': ['*ID', ''],
|
||||
\ 'aria-describedby': ['*ID', ''],
|
||||
\ 'aria-flowto': ['*ID', ''],
|
||||
\ 'aria-labelledby': ['*ID', ''],
|
||||
\ 'aria-owns': ['*ID', ''],
|
||||
\ 'aria-posinset': ['Int', ''],
|
||||
\ 'aria-setsize': ['Int', '']
|
||||
\ }
|
||||
|
||||
" http://dev.w3.org/html5/spec/content-models.html#annotations-for-assistive-technology-products-aria
|
||||
let default_role = {
|
||||
\ 'a': 'link',
|
||||
\ 'area': 'link',
|
||||
\ 'body': 'document',
|
||||
\ 'button': 'button',
|
||||
\ 'datalist': 'listbox',
|
||||
\ 'h1': 'heading',
|
||||
\ 'h2': 'heading',
|
||||
\ 'h3': 'heading',
|
||||
\ 'h4': 'heading',
|
||||
\ 'h5': 'heading',
|
||||
\ 'h6': 'heading',
|
||||
\ 'hgroup': 'heading',
|
||||
\ 'hr': 'separator',
|
||||
\ 'img[alt=]': 'presentation',
|
||||
\ 'input[type=button]': 'button',
|
||||
\ 'input[type=email]': 'textbox',
|
||||
\ 'input[type=image]': 'button',
|
||||
\ 'input[type=number]': 'spinbutton',
|
||||
\ 'input[type=password]': 'textbox',
|
||||
\ 'input[type=range]': 'slider',
|
||||
\ 'input[type=reset]': 'button',
|
||||
\ 'input[type=search]': 'textbox',
|
||||
\ 'input[type=submit]': 'button',
|
||||
\ 'input[type=tel]': 'textbox',
|
||||
\ 'input[type=text]': 'textbox',
|
||||
\ 'input[list]': 'combobox',
|
||||
\ 'input[type=url]': 'textbox',
|
||||
\ 'input': 'textbox',
|
||||
\ 'keygen': 'default',
|
||||
\ 'label': 'default',
|
||||
\ 'menu[type=list]': 'menu',
|
||||
\ 'menu[type=toolbar]': 'toolbar',
|
||||
\ 'menu': 'default',
|
||||
\ 'link': 'link',
|
||||
\ 'nav': 'navigation',
|
||||
\ 'optgroup': 'default',
|
||||
\ 'option': 'option',
|
||||
\ 'progress': 'progressbar',
|
||||
\ 'select': 'listbox',
|
||||
\ 'summary': 'heading',
|
||||
\ 'tbody': 'rowgroup',
|
||||
\ 'td': 'gridcell',
|
||||
\ 'textarea': 'textbox',
|
||||
\ 'tfoot': 'rowgroup',
|
||||
\ 'th[scope=col]': 'columnheader',
|
||||
\ 'th[scope=row]': 'rowheader',
|
||||
\ 'tr': 'row',
|
||||
\ 'address': 'default',
|
||||
\ 'article': 'article',
|
||||
\ 'aside': 'note',
|
||||
\ 'footer': 'default',
|
||||
\ 'header': 'default',
|
||||
\ 'details': 'group',
|
||||
\ 'img': 'img',
|
||||
\ 'input[type=checkbox]': 'checkbox',
|
||||
\ 'input[type=radio]': 'radio',
|
||||
\ 'li': 'listitem',
|
||||
\ 'ol': 'list',
|
||||
\ 'output': 'status',
|
||||
\ 'section': 'region',
|
||||
\ 'table': 'grid',
|
||||
\ 'ul': 'list',
|
||||
\ }
|
||||
" }}}
|
||||
|
||||
let g:xmldata_aria = {
|
||||
\ 'aria_attributes': aria_attributes,
|
||||
\ 'role_attributes': role_attributes,
|
||||
\ 'default_role': default_role,
|
||||
\ 'vimariaattrinfo': aria_attributes_value
|
||||
\ }
|
||||
803
autoload/xml/html5.vim
Normal file
803
autoload/xml/html5.vim
Normal file
@@ -0,0 +1,803 @@
|
||||
" Vim completion for HTML5 data file
|
||||
" Language: HTML5
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" Last Change: 2011 Apr 9
|
||||
|
||||
|
||||
" Lang Tag: {{{
|
||||
" Ref: http://www.iana.org/assignments/language-subtag-registry
|
||||
" Version: 2010/09/07
|
||||
" Description: only get two-letter language tag
|
||||
let lang_tag = [
|
||||
\ 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm',
|
||||
\ 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee',
|
||||
\ 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu',
|
||||
\ 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io',
|
||||
\ 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr',
|
||||
\ 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk',
|
||||
\ 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny',
|
||||
\ 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc',
|
||||
\ 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta',
|
||||
\ 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've',
|
||||
\ 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'zh-CN', 'zh-TW']
|
||||
" }}}
|
||||
|
||||
" Charset: {{{
|
||||
" Ref: http://www.iana.org/assignments/character-sets
|
||||
" Version: 2010/09/07
|
||||
let charset = [
|
||||
\ 'ANSI_X3.4-1968', 'ISO_8859-1:1987', 'ISO_8859-2:1987', 'ISO_8859-3:1988', 'ISO_8859-4:1988', 'ISO_8859-5:1988',
|
||||
\ 'ISO_8859-6:1987', 'ISO_8859-7:1987', 'ISO_8859-8:1988', 'ISO_8859-9:1989', 'ISO-8859-10', 'ISO_6937-2-add', 'JIS_X0201',
|
||||
\ 'JIS_Encoding', 'Shift_JIS', 'Extended_UNIX_Code_Packed_Format_for_Japanese', 'Extended_UNIX_Code_Fixed_Width_for_Japanese',
|
||||
\ 'BS_4730', 'SEN_850200_C', 'IT', 'ES', 'DIN_66003', 'NS_4551-1', 'NF_Z_62-010', 'ISO-10646-UTF-1', 'ISO_646.basic:1983',
|
||||
\ 'INVARIANT', 'ISO_646.irv:1983', 'NATS-SEFI', 'NATS-SEFI-ADD', 'NATS-DANO', 'NATS-DANO-ADD', 'SEN_850200_B', 'KS_C_5601-1987',
|
||||
\ 'ISO-2022-KR', 'EUC-KR', 'ISO-2022-JP', 'ISO-2022-JP-2', 'JIS_C6220-1969-jp', 'JIS_C6220-1969-ro', 'PT', 'greek7-old',
|
||||
\ 'latin-greek', 'NF_Z_62-010_(1973)', 'Latin-greek-1', 'ISO_5427', 'JIS_C6226-1978', 'BS_viewdata', 'INIS', 'INIS-8',
|
||||
\ 'INIS-cyrillic', 'ISO_5427:1981', 'ISO_5428:1980', 'GB_1988-80', 'GB_2312-80', 'NS_4551-2', 'videotex-suppl', 'PT2',
|
||||
\ 'ES2', 'MSZ_7795.3', 'JIS_C6226-1983', 'greek7', 'ASMO_449', 'iso-ir-90', 'JIS_C6229-1984-a', 'JIS_C6229-1984-b',
|
||||
\ 'JIS_C6229-1984-b-add', 'JIS_C6229-1984-hand', 'JIS_C6229-1984-hand-add', 'JIS_C6229-1984-kana', 'ISO_2033-1983',
|
||||
\ 'ANSI_X3.110-1983', 'T.61-7bit', 'T.61-8bit', 'ECMA-cyrillic', 'CSA_Z243.4-1985-1', 'CSA_Z243.4-1985-2', 'CSA_Z243.4-1985-gr',
|
||||
\ 'ISO_8859-6-E', 'ISO_8859-6-I', 'T.101-G2', 'ISO_8859-8-E', 'ISO_8859-8-I', 'CSN_369103', 'JUS_I.B1.002', 'IEC_P27-1',
|
||||
\ 'JUS_I.B1.003-serb', 'JUS_I.B1.003-mac', 'greek-ccitt', 'NC_NC00-10:81', 'ISO_6937-2-25', 'GOST_19768-74', 'ISO_8859-supp',
|
||||
\ 'ISO_10367-box', 'latin-lap', 'JIS_X0212-1990', 'DS_2089', 'us-dk', 'dk-us', 'KSC5636', 'UNICODE-1-1-UTF-7', 'ISO-2022-CN',
|
||||
\ 'ISO-2022-CN-EXT', 'UTF-8', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16', 'GBK', 'GB18030', 'OSD_EBCDIC_DF04_15',
|
||||
\ 'OSD_EBCDIC_DF03_IRV', 'OSD_EBCDIC_DF04_1', 'ISO-11548-1', 'KZ-1048', 'ISO-10646-UCS-2', 'ISO-10646-UCS-4', 'ISO-10646-UCS-Basic',
|
||||
\ 'ISO-10646-Unicode-Latin1', 'ISO-10646-J-1', 'ISO-Unicode-IBM-1261', 'ISO-Unicode-IBM-1268', 'ISO-Unicode-IBM-1276',
|
||||
\ 'ISO-Unicode-IBM-1264', 'ISO-Unicode-IBM-1265', 'UNICODE-1-1', 'SCSU', 'UTF-7', 'UTF-16BE', 'UTF-16LE', 'UTF-16', 'CESU-8',
|
||||
\ 'UTF-32', 'UTF-32BE', 'UTF-32LE', 'BOCU-1', 'ISO-8859-1-Windows-3.0-Latin-1', 'ISO-8859-1-Windows-3.1-Latin-1',
|
||||
\ 'ISO-8859-2-Windows-Latin-2', 'ISO-8859-9-Windows-Latin-5', 'hp-roman8', 'Adobe-Standard-Encoding', 'Ventura-US',
|
||||
\ 'Ventura-International', 'DEC-MCS', 'IBM850', 'PC8-Danish-Norwegian', 'IBM862', 'PC8-Turkish', 'IBM-Symbols', 'IBM-Thai',
|
||||
\ 'HP-Legal', 'HP-Pi-font', 'HP-Math8', 'Adobe-Symbol-Encoding', 'HP-DeskTop', 'Ventura-Math', 'Microsoft-Publishing',
|
||||
\ 'Windows-31J', 'GB2312', 'Big5', 'macintosh', 'IBM037', 'IBM038', 'IBM273', 'IBM274', 'IBM275', 'IBM277', 'IBM278',
|
||||
\ 'IBM280', 'IBM281', 'IBM284', 'IBM285', 'IBM290', 'IBM297', 'IBM420', 'IBM423', 'IBM424', 'IBM437', 'IBM500', 'IBM851',
|
||||
\ 'IBM852', 'IBM855', 'IBM857', 'IBM860', 'IBM861', 'IBM863', 'IBM864', 'IBM865', 'IBM868', 'IBM869', 'IBM870', 'IBM871',
|
||||
\ 'IBM880', 'IBM891', 'IBM903', 'IBM904', 'IBM905', 'IBM918', 'IBM1026', 'EBCDIC-AT-DE', 'EBCDIC-AT-DE-A', 'EBCDIC-CA-FR',
|
||||
\ 'EBCDIC-DK-NO', 'EBCDIC-DK-NO-A', 'EBCDIC-FI-SE', 'EBCDIC-FI-SE-A', 'EBCDIC-FR', 'EBCDIC-IT', 'EBCDIC-PT', 'EBCDIC-ES',
|
||||
\ 'EBCDIC-ES-A', 'EBCDIC-ES-S', 'EBCDIC-UK', 'EBCDIC-US', 'UNKNOWN-8BIT', 'MNEMONIC', 'MNEM', 'VISCII', 'VIQR', 'KOI8-R',
|
||||
\ 'HZ-GB-2312', 'IBM866', 'IBM775', 'KOI8-U', 'IBM00858', 'IBM00924', 'IBM01140', 'IBM01141', 'IBM01142', 'IBM01143',
|
||||
\ 'IBM01144', 'IBM01145', 'IBM01146', 'IBM01147', 'IBM01148', 'IBM01149', 'Big5-HKSCS', 'IBM1047', 'PTCP154', 'Amiga-1251',
|
||||
\ 'KOI7-switched', 'BRF', 'TSCII', 'windows-1250', 'windows-1251', 'windows-1252', 'windows-1253', 'windows-1254', 'windows-1255',
|
||||
\ 'windows-1256', 'windows-1257', 'windows-1258', 'TIS-620', ]
|
||||
" }}}
|
||||
|
||||
" 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 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 global_attributes = extend(core_attributes, xml_attributes)
|
||||
if !exists('g:html5_event_handler_attributes_complete')
|
||||
let g:html5_event_handler_attributes_complete = 1
|
||||
endif
|
||||
|
||||
" http://dev.w3.org/html5/spec/Overview.html#attributes-1
|
||||
let attributes_value = {
|
||||
\ 'accept': ['MIME', ''],
|
||||
\ 'accept-charset': ['Charset', ''],
|
||||
\ 'accesskey': ['Character', ''],
|
||||
\ 'action': ['URL', ''],
|
||||
\ 'alt': ['Text', ''],
|
||||
\ 'async': ['Bool', ''],
|
||||
\ 'autocomplete': ['on/off', ''],
|
||||
\ 'autofocus': ['Bool', ''],
|
||||
\ 'autoplay': ['Bool', ''],
|
||||
\ 'border': ['1', ''],
|
||||
\ 'challenge': ['Text', ''],
|
||||
\ 'charset': ['Charset', ''],
|
||||
\ 'checked': ['Bool', ''],
|
||||
\ 'cite': ['URL', ''],
|
||||
\ 'class': ['*Token', ''],
|
||||
\ 'cols': ['Int', ''],
|
||||
\ 'colspan': ['Int', ''],
|
||||
\ 'content': ['Text', ''],
|
||||
\ 'contenteditable': ['true/false', ''],
|
||||
\ 'contextmenu': ['ID', ''],
|
||||
\ 'controls': ['Bool', ''],
|
||||
\ 'coords': ['*Int', ''],
|
||||
\ 'data': ['URL', ''],
|
||||
\ 'datetime': ['Datetime', ''],
|
||||
\ 'defer': ['Bool', ''],
|
||||
\ 'dir': ['ltr/rtl', ''],
|
||||
\ 'disabled': ['Bool', ''],
|
||||
\ 'draggable': ['true/false', ''],
|
||||
\ 'enctype': ['Token', ''],
|
||||
\ 'for': ['ID', ''],
|
||||
\ 'form': ['ID', ''],
|
||||
\ 'formaction': ['URL', ''],
|
||||
\ 'formenctype': ['Token', ''],
|
||||
\ 'formmethod': ['HTTP Method', ''],
|
||||
\ 'formnovalidate': ['Bool', ''],
|
||||
\ 'formtarget': ['Name', ''],
|
||||
\ 'headers': ['*ID', ''],
|
||||
\ 'height': ['Int', ''],
|
||||
\ 'hidden': ['Bool', ''],
|
||||
\ 'high': ['Number', ''],
|
||||
\ 'href': ['URL', ''],
|
||||
\ 'hreflang': ['Lang Tag', ''],
|
||||
\ 'http-equiv': ['Text', ''],
|
||||
\ 'icon': ['URL', ''],
|
||||
\ 'id': ['Text', ''],
|
||||
\ 'ismap': ['Bool', ''],
|
||||
\ 'keytype': ['Text', ''],
|
||||
\ 'label': ['Text', ''],
|
||||
\ 'lang': ['Lang Tag', ''],
|
||||
\ 'list': ['ID', ''],
|
||||
\ 'loop': ['Bool', ''],
|
||||
\ 'low': ['Number', ''],
|
||||
\ 'manifest': ['URL', ''],
|
||||
\ 'max': ['Number', ''],
|
||||
\ 'maxlength': ['Int', ''],
|
||||
\ 'media': ['Text', ''],
|
||||
\ 'method': ['HTTP Method', ''],
|
||||
\ 'min': ['Number', ''],
|
||||
\ 'multiple': ['Bool', ''],
|
||||
\ 'name': ['Text', ''],
|
||||
\ 'novalidate': ['Bool', ''],
|
||||
\ 'open': ['Bool', ''],
|
||||
\ 'optimum': ['Number', ''],
|
||||
\ 'pattern': ['Pattern', ''],
|
||||
\ 'placeholder': ['Text', ''],
|
||||
\ 'poster': ['URL', ''],
|
||||
\ 'preload': ['Token', ''],
|
||||
\ 'pubdate': ['Bool', ''],
|
||||
\ 'radiogroup': ['Text', ''],
|
||||
\ 'readonly': ['Bool', ''],
|
||||
\ 'rel': ['*Token', ''],
|
||||
\ 'required': ['Bool', ''],
|
||||
\ 'reversed': ['Bool', ''],
|
||||
\ 'rows': ['Int', ''],
|
||||
\ 'rowspan': ['Int', ''],
|
||||
\ 'sandbox': ['*Token', ''],
|
||||
\ 'spellcheck': ['true/false', ''],
|
||||
\ 'scope': ['Token', ''],
|
||||
\ 'scoped': ['Bool', ''],
|
||||
\ 'seamless': ['Bool', ''],
|
||||
\ 'selected': ['Bool', ''],
|
||||
\ 'shape': ['Token', ''],
|
||||
\ 'size': ['Int', ''],
|
||||
\ 'sizes': ['*Token', ''],
|
||||
\ 'span': ['Int', ''],
|
||||
\ 'src': ['Int', ''],
|
||||
\ 'srcdoc': ['Document', ''],
|
||||
\ 'start': ['Int', ''],
|
||||
\ 'step': ['Int', ''],
|
||||
\ 'style': ['Style', ''],
|
||||
\ 'summary': ['Text', ''],
|
||||
\ 'tabindex': ['Int', ''],
|
||||
\ 'target': ['Name', ''],
|
||||
\ 'title': ['Text', ''],
|
||||
\ 'type': ['Token', ''],
|
||||
\ 'usemap': ['Name', ''],
|
||||
\ 'value': ['Text', ''],
|
||||
\ 'width': ['Int', ''],
|
||||
\ 'wrap': ['soft/hard', ''],
|
||||
\ 'xml:lang': ['Lang tag', ''],
|
||||
\ 'xml:base': ['*URI', ''],
|
||||
\ 'xml:space': ['preserve', ''],
|
||||
\ 'xmlns': ['URI', ''],
|
||||
\ 'version': ['HTML+RDFa 1.1', ''],
|
||||
\ 'role': ['*Token', '']
|
||||
\ }
|
||||
|
||||
if g:html5_event_handler_attributes_complete == 1
|
||||
let event_handler_attributes = {'onabort': [], 'onblur': [], 'oncanplay': [], 'oncanplaythrough': [], 'onchange': [], 'onclick': [], 'oncontextmenu': [], 'ondblclick': [], 'ondrag': [], 'ondragend': [], 'ondragenter': [], 'ondragleave': [], 'ondragover': [], 'ondragstart': [], 'ondrop': [], 'ondurationchange': [], 'onemptied': [], 'onended': [], 'onerror': [], 'onfocus': [], 'onformchange': [], 'onforminput': [], 'oninput': [], 'oninvalid': [], 'onkeydown': [], 'onkeypress': [], 'onkeyup': [], 'onload': [], 'onloadeddata': [], 'onloadedmetadata': [], 'onloadstart': [], 'onmousedown': [], 'onmousemove': [], 'onmouseout': [], 'onmouseover': [], 'onmouseup': [], 'onmousewheel': [], 'onpause': [], 'onplay': [], 'onplaying': [], 'onprogress': [], 'onratechange': [], 'onreadystatechange': [], 'onscroll': [], 'onseeked': [], 'onseeking': [], 'onselect': [], 'onshow': [], 'onstalled': [], 'onsubmit': [], 'onsuspend': [], 'ontimeupdate': [], 'onvolumechange': [], 'onwaiting': []}
|
||||
let global_attributes = extend(global_attributes, event_handler_attributes)
|
||||
|
||||
let body_attributes = {'onafterprint': [], 'onbeforeprint': [], 'onbeforeunload': [], 'onblur': [], 'onerror': [], 'onfocus': [], 'onhashchange': [], 'onload': [], 'onmessage': [], 'onoffline': [], 'ononline': [], 'onpopstate': [], 'onredo': [], 'onresize': [], 'onstorage': [], 'onundo': [], 'onunload': []}
|
||||
|
||||
let event_attributes_value = {
|
||||
\ 'onabort': ['Script', ''],
|
||||
\ 'onafterprint': ['Script', ''],
|
||||
\ 'onbeforeprint': ['Script', ''],
|
||||
\ 'onbeforeunload': ['Script', ''],
|
||||
\ 'onblur': ['Script', ''],
|
||||
\ 'oncanplay': ['Script', ''],
|
||||
\ 'oncanplaythrough': ['Script', ''],
|
||||
\ 'onchange': ['Script', ''],
|
||||
\ 'onclick': ['Script', ''],
|
||||
\ 'oncontextmenu': ['Script', ''],
|
||||
\ 'ondblclick': ['Script', ''],
|
||||
\ 'ondrag': ['Script', ''],
|
||||
\ 'ondragend': ['Script', ''],
|
||||
\ 'ondragenter': ['Script', ''],
|
||||
\ 'ondragleave': ['Script', ''],
|
||||
\ 'ondragover': ['Script', ''],
|
||||
\ 'ondragstart': ['Script', ''],
|
||||
\ 'ondrop': ['Script', ''],
|
||||
\ 'ondurationchange': ['Script', ''],
|
||||
\ 'onemptied': ['Script', ''],
|
||||
\ 'onended': ['Script', ''],
|
||||
\ 'onerror': ['Script', ''],
|
||||
\ 'onfocus': ['Script', ''],
|
||||
\ 'onformchange': ['Script', ''],
|
||||
\ 'onforminput': ['Script', ''],
|
||||
\ 'onhashchange': ['Script', ''],
|
||||
\ 'oninput': ['Script', ''],
|
||||
\ 'oninvalid': ['Script', ''],
|
||||
\ 'onkeydown': ['Script', ''],
|
||||
\ 'onkeypress': ['Script', ''],
|
||||
\ 'onkeyup': ['Script', ''],
|
||||
\ 'onload': ['Script', ''],
|
||||
\ 'onloadeddata': ['Script', ''],
|
||||
\ 'onloadedmetadata': ['Script', ''],
|
||||
\ 'onloadstart': ['Script', ''],
|
||||
\ 'onmessage': ['Script', ''],
|
||||
\ 'onmousedown': ['Script', ''],
|
||||
\ 'onmousemove': ['Script', ''],
|
||||
\ 'onmouseout': ['Script', ''],
|
||||
\ 'onmouseover': ['Script', ''],
|
||||
\ 'onmouseup': ['Script', ''],
|
||||
\ 'onmousewheel': ['Script', ''],
|
||||
\ 'onoffline': ['Script', ''],
|
||||
\ 'ononline': ['Script', ''],
|
||||
\ 'onpagehide': ['Script', ''],
|
||||
\ 'onpageshow': ['Script', ''],
|
||||
\ 'onpause': ['Script', ''],
|
||||
\ 'onplay': ['Script', ''],
|
||||
\ 'onplaying': ['Script', ''],
|
||||
\ 'onpopstate': ['Script', ''],
|
||||
\ 'onprogress': ['Script', ''],
|
||||
\ 'onratechange': ['Script', ''],
|
||||
\ 'onreadystatechange': ['Script', ''],
|
||||
\ 'onredo': ['Script', ''],
|
||||
\ 'onresize': ['Script', ''],
|
||||
\ 'onscroll': ['Script', ''],
|
||||
\ 'onseeked': ['Script', ''],
|
||||
\ 'onseeking': ['Script', ''],
|
||||
\ 'onselect': ['Script', ''],
|
||||
\ 'onshow': ['Script', ''],
|
||||
\ 'onstalled': ['Script', ''],
|
||||
\ 'onstorage': ['Script', ''],
|
||||
\ 'onsubmit': ['Script', ''],
|
||||
\ 'onsuspend': ['Script', ''],
|
||||
\ 'ontimeupdate': ['Script', ''],
|
||||
\ 'onundo': ['Script', ''],
|
||||
\ 'onunload': ['Script', ''],
|
||||
\ 'onvolumechange': ['Script', ''],
|
||||
\ 'onwaiting': ['Script', '']
|
||||
\ }
|
||||
|
||||
let attributes_value = extend(attributes_value, event_attributes_value)
|
||||
endif
|
||||
if !exists('g:html5_rdfa_attributes_complete')
|
||||
let g:html5_rdfa_attributes_complete = 1
|
||||
endif
|
||||
if g:html5_rdfa_attributes_complete == 1
|
||||
" http://www.w3.org/TR/rdfa-syntax/#s_metaAttributes
|
||||
" http://www.w3.org/TR/rdfa-core/#s_syntax
|
||||
let relrev = ['chapter', 'contents', 'copyright', 'first', 'glossary', 'help', 'icon', 'index', 'last', 'license', 'meta', 'next', 'p3pv1', 'prev', 'role', 'section', 'stylesheet', 'subsection', 'start', 'top', 'up']
|
||||
let rdfa_attributes = {'about': [], 'content': [], 'datatype': [], 'prefix': [], 'profile': [], 'property': [], 'resource': [], 'rel': relrev, 'rev': relrev, 'typeof': [], 'vocab': []}
|
||||
let global_attributes = extend(global_attributes, rdfa_attributes)
|
||||
|
||||
let rdfa_attributes_value = {
|
||||
\ 'about': ['SafeCURIEorCURIEorURI', ''],
|
||||
\ 'content': ['CDATA String', ''],
|
||||
\ 'datatype': ['CURIE', ''],
|
||||
\ 'prefix': ['*Prefix', ''],
|
||||
\ 'profile': ['String', ''],
|
||||
\ 'property': ['*TERMorCURIEorAbsURIs', ''],
|
||||
\ 'resource': ['URIorSafeCURIE', ''],
|
||||
\ 'rel': ['*TERMorCURIEorAbsURIs', ''],
|
||||
\ 'rev': ['*TERMorCURIEorAbsURIs', ''],
|
||||
\ 'typeof': ['*TERMorCURIEorAbsURIs', ''],
|
||||
\ 'vocab': ['URI', '']
|
||||
\ }
|
||||
let attributes_value = extend(attributes_value, rdfa_attributes_value)
|
||||
endif
|
||||
if !exists('g:html5_microdata_attributes_complete')
|
||||
let g:html5_microdata_attributes_complete = 1
|
||||
endif
|
||||
if g:html5_microdata_attributes_complete == 1
|
||||
let microdata_attributes = {'itemid': [], 'itemscope': ['itemscope', ''], 'itemtype': [], 'itemprop': [], 'itemref': []}
|
||||
let global_attributes = extend(global_attributes, microdata_attributes)
|
||||
|
||||
let microdata_attributes_value = {
|
||||
\ 'itemid': ['URI', ''],
|
||||
\ 'itemscope': ['Bool', ''],
|
||||
\ 'itemtype': ['URI', ''],
|
||||
\ 'itemprop': ['String', ''],
|
||||
\ 'itemref': ['*ID', '']
|
||||
\ }
|
||||
let attributes_value = extend(attributes_value, microdata_attributes_value)
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" WAI_ARIA: {{{
|
||||
" Ref: http://www.w3.org/TR/wai-aria/
|
||||
" Version: Draft 15 December 2009
|
||||
if !exists('g:html5_aria_attributes_complete')
|
||||
let g:html5_aria_attributes_complete = 1
|
||||
endif
|
||||
if g:html5_aria_attributes_complete == 1
|
||||
" Ref: http://www.w3.org/TR/wai-aria/roles
|
||||
" Version: Draft 15 December 2009
|
||||
let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']
|
||||
let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']
|
||||
let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']
|
||||
let role = extend(widget_role, document_structure)
|
||||
let role = extend(role, landmark_role)
|
||||
let global_attributes = extend(global_attributes, {'role': role})
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" Ref: http://dev.w3.org/html5/markup/
|
||||
" 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 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']
|
||||
|
||||
" 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']
|
||||
" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
|
||||
let linkreltypes = linktypes + ['canonical']
|
||||
|
||||
" 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 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'],
|
||||
\ 'vimxmlroot': ['html'],
|
||||
\ 'a': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
||||
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
||||
\ ],
|
||||
\ 'abbr': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'address': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ 'address\\|nav\\|article\\|header\\|footer\\|section\\|aside\\|h1\\|h2\\|h3\\|h4\\|h5\\|h6')"),
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'area': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'alt': [], 'href': [], 'target': [], 'rel': linktypes, 'media': [], 'hreflang': lang_tag, 'type': [], 'shape': ['rect', 'circle', 'poly', 'default'], 'coords': []})
|
||||
\ ],
|
||||
\ 'article': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'aside': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'audio': [
|
||||
\ flow_elements + ['source', 'track'],
|
||||
\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'src': []})
|
||||
\ ],
|
||||
\ 'b': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'base': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'href': [], 'target': []})
|
||||
\ ],
|
||||
\ 'bdo': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'bdi': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'blockquote': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'cite': []})
|
||||
\ ],
|
||||
\ 'body': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), body_attributes)
|
||||
\ ],
|
||||
\ 'br': [
|
||||
\ [],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'button': [
|
||||
\ filter(copy(phrasing_elements), "!(v:val =~ '". abutton_dec ."')"),
|
||||
\ extend(copy(global_attributes), {'type': ['submit', 'reset', 'button'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'value': [], 'formaction': [], 'autofocus': ['autofocus', ''], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||
\ ],
|
||||
\ 'canvas': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'height': [], 'width': []})
|
||||
\ ],
|
||||
\ 'caption': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ 'table')"),
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'cite': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'code': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'col': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'span': []})
|
||||
\ ],
|
||||
\ 'colgroup': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'span': []})
|
||||
\ ],
|
||||
\ 'command': [
|
||||
\ ['col'],
|
||||
\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})
|
||||
\ ],
|
||||
\ 'datalist': [
|
||||
\ phrasing_elements + ['option'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'dd': [
|
||||
\ flow_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'del': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'cite': [], 'datetime': []})
|
||||
\ ],
|
||||
\ 'details': [
|
||||
\ flow_elements + ['summary'],
|
||||
\ extend(copy(global_attributes), {'open': ['open', '']})
|
||||
\ ],
|
||||
\ 'dfn': [
|
||||
\ filter(copy(phrasing_elements), "!(v:val =~ 'dfn')"),
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'div': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'dl': [
|
||||
\ ['dt', 'dd'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'dt': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'em': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'embed': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'src': [], 'type': [], 'height': [], 'width': []})
|
||||
\ ],
|
||||
\ 'fieldset': [
|
||||
\ flow_elements + ['legend'],
|
||||
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': []})
|
||||
\ ],
|
||||
\ 'figcaption': [
|
||||
\ flow_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'figure': [
|
||||
\ flow_elements + ['figcaption'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'footer': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ 'address\\|header\\|footer')"),
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'form': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'name': [], 'action': [], 'enctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'method': ['get', 'post', 'put', 'delete'], 'target': [], 'novalidate': ['novalidate', ''], 'accept-charset': charset, 'autocomplete': ['on', 'off']})
|
||||
\ ],
|
||||
\ 'h1': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'h2': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'h3': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'h4': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'h5': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'h6': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'head': [
|
||||
\ metadata_elements + ['title', 'base'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'header': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ 'address\\|header\\|footer')"),
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'hgroup': [
|
||||
\ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'hr': [
|
||||
\ [],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'html': [
|
||||
\ ['head', 'body'],
|
||||
\ extend(copy(global_attributes), {'manifest': [], 'version': ['HTML+RDFa 1.1']})
|
||||
\ ],
|
||||
\ 'i': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'iframe': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'src': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', '']})
|
||||
\ ],
|
||||
\ 'img': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'usemap': [], 'ismap': ['ismap', '']})
|
||||
\ ],
|
||||
\ 'input': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||
\ ],
|
||||
\ 'ins': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'cite': [], 'datetime': []})
|
||||
\ ],
|
||||
\ 'kbd': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'keygen': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'challenge': [], 'keytype': ['rsa'], 'autofocus': ['autofocus', ''], 'name': [], 'disabled': ['disabled', ''], 'form': []})
|
||||
\ ],
|
||||
\ 'label': [
|
||||
\ filter(copy(phrasing_elements), "!(v:val =~ 'label')"),
|
||||
\ extend(copy(global_attributes), {'for': [], 'form': []})
|
||||
\ ],
|
||||
\ 'legend': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'li': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'value': []})
|
||||
\ ],
|
||||
\ 'link': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any']})
|
||||
\ ],
|
||||
\ 'main': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'map': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'name': []})
|
||||
\ ],
|
||||
\ 'mark': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'menu': [
|
||||
\ flow_elements + ['li'],
|
||||
\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': []})
|
||||
\ ],
|
||||
\ 'meta': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'name': [], 'http-equiv': ['refresh', 'default-style', 'content-type'], 'content': [], 'charset': charset})
|
||||
\ ],
|
||||
\ 'meter': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'value': [], 'min': [], 'low': [], 'high': [], 'max': [], 'optimum': []})
|
||||
\ ],
|
||||
\ 'nav': [
|
||||
\ flow_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'noscript': [
|
||||
\ flow_elements + ['link', 'meta', 'style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'object': [
|
||||
\ flow_elements + ['param'],
|
||||
\ extend(copy(global_attributes), {'data': [], 'type': [], 'height': [], 'width': [], 'usemap': [], 'name': [], 'form': []})
|
||||
\ ],
|
||||
\ 'ol': [
|
||||
\ ['li'],
|
||||
\ extend(copy(global_attributes), {'start': [], 'reversed': ['reversed', '']})
|
||||
\ ],
|
||||
\ 'optgroup': [
|
||||
\ ['option'],
|
||||
\ extend(copy(global_attributes), {'label': [], 'disabled': ['disabled', '']})
|
||||
\ ],
|
||||
\ 'option': [
|
||||
\ [''],
|
||||
\ extend(copy(global_attributes), {'disabled': ['disabled', ''], 'selected': ['selected', ''], 'label': [], 'value': []})
|
||||
\ ],
|
||||
\ 'output': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'name': [], 'form': [], 'for': []})
|
||||
\ ],
|
||||
\ 'p': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'param': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'name': [], 'value': []})
|
||||
\ ],
|
||||
\ 'pre': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'progress': [
|
||||
\ filter(copy(phrasing_elements), "!(v:val =~ 'progress')"),
|
||||
\ extend(copy(global_attributes), {'value': [], 'max': []})
|
||||
\ ],
|
||||
\ 'q': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'cite': []})
|
||||
\ ],
|
||||
\ 'rp': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'rt': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'ruby': [
|
||||
\ phrasing_elements + ['rp', 'rt'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'samp': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'script': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'src': [], 'defer': ['defer', ''], 'async': ['async', ''], 'type': [], 'charset': charset})
|
||||
\ ],
|
||||
\ 'section': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'select': [
|
||||
\ ['optgroup', 'option'],
|
||||
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})
|
||||
\ ],
|
||||
\ 'small': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'source': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': []})
|
||||
\ ],
|
||||
\ 'span': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'strong': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'style': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'type': [], 'media': [], 'scoped': ['scoped', '']})
|
||||
\ ],
|
||||
\ 'sub': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'summary': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'sup': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'table': [
|
||||
\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'],
|
||||
\ extend(copy(global_attributes), {'border': []})
|
||||
\ ],
|
||||
\ 'tbody': [
|
||||
\ ['tr'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'td': [
|
||||
\ flow_elements,
|
||||
\ extend(copy(global_attributes), {'colspan': [], 'rowspan': [], 'headers': []})
|
||||
\ ],
|
||||
\ 'template': [
|
||||
\ flow_elements + ['style'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'textarea': [
|
||||
\ [''],
|
||||
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'readonly': ['readonly', ''], 'maxlength': [], 'autofocus': ['autofocus', ''], 'required': ['required', ''], 'placeholder': [], 'rows': [], 'wrap': ['hard', 'soft'], 'cols': []})
|
||||
\ ],
|
||||
\ 'tfoot': [
|
||||
\ ['tr'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'th': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'colspan': [], 'rowspan': [], 'headers': []})
|
||||
\ ],
|
||||
\ 'thead': [
|
||||
\ ['tr'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'time': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'datetime': [], 'pubdate': ['pubdate', '']})
|
||||
\ ],
|
||||
\ 'data': [
|
||||
\ phrasing_elements,
|
||||
\ extend(copy(global_attributes), {'value': []})
|
||||
\ ],
|
||||
\ 'title': [
|
||||
\ [''],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'tr': [
|
||||
\ ['th', 'td'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'track': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'kind': ['subtitles', 'captions', 'descriptions', 'chapters', 'metadata'], 'src': [], 'charset': charset, 'srclang': lang_tag, 'label': []})
|
||||
\ ],
|
||||
\ 'u': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'ul': [
|
||||
\ ['li'],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'var': [
|
||||
\ phrasing_elements,
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'video': [
|
||||
\ flow_elements + ['source', 'track'],
|
||||
\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'poster': [], 'height': [], 'width': [], 'src': []})
|
||||
\ ],
|
||||
\ 'wbr': [
|
||||
\ [],
|
||||
\ global_attributes
|
||||
\ ],
|
||||
\ 'vimxmlattrinfo' : attributes_value,
|
||||
\ 'vimxmltaginfo': {
|
||||
\ 'area': ['/>', ''],
|
||||
\ 'base': ['/>', ''],
|
||||
\ 'br': ['/>', ''],
|
||||
\ 'col': ['/>', ''],
|
||||
\ 'command': ['/>', ''],
|
||||
\ 'embed': ['/>', ''],
|
||||
\ 'hr': ['/>', ''],
|
||||
\ 'img': ['/>', ''],
|
||||
\ 'input': ['/>', ''],
|
||||
\ 'keygen': ['/>', ''],
|
||||
\ 'link': ['/>', ''],
|
||||
\ 'meta': ['/>', ''],
|
||||
\ 'param': ['/>', ''],
|
||||
\ 'source': ['/>', ''],
|
||||
\ 'track': ['/>', ''],
|
||||
\ 'wbr': ['/>', ''],
|
||||
\ },
|
||||
\ }
|
||||
154
build
154
build
@@ -1,77 +1,107 @@
|
||||
#!/usr/bin/env zsh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -E
|
||||
setopt extended_glob
|
||||
|
||||
DIRS=(
|
||||
syntax indent ftplugin ftdetect autoload compiler
|
||||
after/syntax after/indent after/ftplugin after/ftdetect
|
||||
)
|
||||
|
||||
copy_dir() {
|
||||
if [ -d "$1/$2" ]; then
|
||||
for file in $(find "$1/$2" -name '*.vim'); do
|
||||
file_path="$(dirname "${file##$1/}")"
|
||||
mkdir -p "$file_path"
|
||||
cp $file $file_path/
|
||||
done
|
||||
fi
|
||||
}
|
||||
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
||||
|
||||
# Fetches syntax files from given Github repo
|
||||
syntax() {
|
||||
dir="tmp/$(echo "$1" | cut -d '/' -f 2)"
|
||||
echo "- [$1](https://github.com/$1)"
|
||||
rm -rf "$dir"
|
||||
git clone -q --recursive "https://github.com/$1.git" "$dir"
|
||||
# which tree > /dev/null && tree tmp
|
||||
|
||||
for subdir in $DIRS; do
|
||||
copy_dir "$dir" "$subdir"
|
||||
download() {
|
||||
for pack in $1; do
|
||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||
rm -rf "$dir"
|
||||
(git clone -q --recursive "https://github.com/$path.git" "$dir" && printf '.') &
|
||||
done
|
||||
|
||||
wait
|
||||
}
|
||||
|
||||
extract() {
|
||||
printf "\n"
|
||||
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)"
|
||||
printf -- "- [$name](https://github.com/$path) ("
|
||||
|
||||
# which tree > /dev/null && tree tmp
|
||||
subdirs=""
|
||||
for subdir in $DIRS; do
|
||||
if [ -d "$dir/$subdir" ]; then
|
||||
base="$(basename "$subdir")"
|
||||
if [[ "$subdirs" != *"$base"* ]]; then
|
||||
subdirs="$subdirs, $base"
|
||||
fi
|
||||
|
||||
copy_dir "$dir" "$subdir"
|
||||
fi
|
||||
done
|
||||
|
||||
printf "${subdirs##, })\n"
|
||||
done
|
||||
}
|
||||
|
||||
copy_dir() {
|
||||
for file in $(find "$1/$2" -name '*.vim'); do
|
||||
file_path="$(dirname "${file##$1/}")"
|
||||
mkdir -p "$file_path"
|
||||
cp $file $file_path/
|
||||
done
|
||||
}
|
||||
|
||||
PACKS="
|
||||
arduino:sudar/vim-arduino-syntax
|
||||
bundler:tpope/vim-bundler
|
||||
c++11:octol/vim-cpp-enhanced-highlight
|
||||
c/c++:vim-jp/cpp-vim
|
||||
clojure:guns/vim-clojure-static
|
||||
coffee-script:kchmck/vim-coffee-script
|
||||
css-color:ap/vim-css-color
|
||||
csv:chrisbra/csv.vim
|
||||
cucumber:tpope/vim-cucumber
|
||||
elixir:elixir-lang/vim-elixir
|
||||
erlang:jimenezrick/vimerl
|
||||
git:tpope/vim-git
|
||||
go:jnwhiteh/vim-golang
|
||||
haml:tpope/vim-haml
|
||||
handlebars:nono/vim-handlebars
|
||||
haskell:travitch/hasksyn
|
||||
html5:othree/html5.vim
|
||||
jade:digitaltoad/vim-jade
|
||||
javascript:pangloss/vim-javascript
|
||||
json:leshill/vim-json
|
||||
jst:briancollins/vim-jst
|
||||
latex:jcf/vim-latex
|
||||
less:groenewege/vim-less
|
||||
markdown:tpope/vim-markdown
|
||||
nginx:mutewinter/nginx.vim
|
||||
ocaml:jrk/vim-ocaml
|
||||
octave:vim-scripts/octave.vim--
|
||||
php:StanAngeloff/php.vim
|
||||
puppet:ajf/puppet-vim
|
||||
protobuf:uarun/vim-protobuf
|
||||
python:vim-scripts/python.vim--Vasiliev
|
||||
rspec:skwp/vim-rspec
|
||||
ruby:vim-ruby/vim-ruby
|
||||
sbt:derekwyatt/vim-sbt
|
||||
scala:derekwyatt/vim-scala
|
||||
slim:slim-template/vim-slim
|
||||
stylus:wavded/vim-stylus
|
||||
textile:timcharper/textile.vim
|
||||
tmux:acustodioo/vim-tmux
|
||||
tomdoc:duwanis/tomdoc.vim
|
||||
vbnet:vim-scripts/vbnet.vim
|
||||
twig:beyondwords/vim-twig
|
||||
xls:vim-scripts/XSLT-syntax
|
||||
"
|
||||
|
||||
rm -rf tmp
|
||||
rm -rf $DIRS
|
||||
mkdir -p tmp
|
||||
|
||||
syntax 'vim-ruby/vim-ruby' &
|
||||
syntax 'kchmck/vim-coffee-script' &
|
||||
syntax 'tpope/vim-haml' &
|
||||
syntax 'tpope/vim-bundler' &
|
||||
syntax 'pangloss/vim-javascript' &
|
||||
syntax 'leshill/vim-json' &
|
||||
syntax 'mutewinter/tomdoc.vim' &
|
||||
syntax 'mutewinter/nginx.vim' &
|
||||
syntax 'timcharper/textile.vim' &
|
||||
syntax 'tpope/vim-markdown' &
|
||||
syntax 'nono/vim-handlebars' &
|
||||
syntax 'acustodioo/vim-tmux' &
|
||||
syntax 'groenewege/vim-less' &
|
||||
syntax 'wavded/vim-stylus' &
|
||||
syntax 'tpope/vim-cucumber' &
|
||||
syntax 'jrk/vim-ocaml' &
|
||||
syntax 'slim-template/vim-slim' &
|
||||
syntax 'vim-scripts/XSLT-syntax' &
|
||||
syntax 'vim-scripts/python.vim--Vasiliev' &
|
||||
syntax 'vim-scripts/octave.vim--' &
|
||||
syntax 'jnwhiteh/vim-golang' &
|
||||
syntax 'spf13/PIV' &
|
||||
syntax 'briancollins/vim-jst' &
|
||||
syntax 'derekwyatt/vim-scala' &
|
||||
syntax 'derekwyatt/vim-sbt' &
|
||||
syntax 'travitch/hasksyn' &
|
||||
syntax 'ajf/puppet-vim' &
|
||||
syntax 'beyondwords/vim-twig' &
|
||||
syntax 'sudar/vim-arduino-syntax' &
|
||||
syntax 'guns/vim-clojure-static' &
|
||||
syntax 'chrisbra/csv.vim' &
|
||||
syntax 'elixir-lang/vim-elixir' &
|
||||
syntax 'jimenezrick/vimerl' &
|
||||
syntax 'tpope/vim-git' &
|
||||
syntax 'skwp/vim-rspec' &
|
||||
syntax 'cakebaker/scss-syntax.vim' &
|
||||
|
||||
wait
|
||||
printf "Downloading packs..."
|
||||
download "$PACKS"
|
||||
extract "$PACKS"
|
||||
|
||||
rm -rf tmp
|
||||
|
||||
298
compiler/tex.vim
Normal file
298
compiler/tex.vim
Normal file
@@ -0,0 +1,298 @@
|
||||
" 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
|
||||
2
ftdetect/jade.vim
Normal file
2
ftdetect/jade.vim
Normal file
@@ -0,0 +1,2 @@
|
||||
" Jade
|
||||
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
||||
1
ftdetect/proto.vim
Normal file
1
ftdetect/proto.vim
Normal file
@@ -0,0 +1 @@
|
||||
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
||||
@@ -1 +0,0 @@
|
||||
au BufRead,BufNewFile *.scss set filetype=scss.css
|
||||
15
ftplugin/bib_latexSuite.vim
Normal file
15
ftplugin/bib_latexSuite.vim
Normal file
@@ -0,0 +1,15 @@
|
||||
" 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
|
||||
53
ftplugin/jade.vim
Normal file
53
ftplugin/jade.vim
Normal file
@@ -0,0 +1,53 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Jade
|
||||
" Maintainer: Joshua Borton
|
||||
" Credits: Tim Pope
|
||||
|
||||
" Only do this when not done yet for this buffer
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" Define some defaults in case the included ftplugins don't set them.
|
||||
let s:undo_ftplugin = ""
|
||||
let s:browsefilter = "All Files (*.*)\t*.*\n"
|
||||
let s:match_words = ""
|
||||
|
||||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||
unlet! b:did_ftplugin
|
||||
|
||||
" Override our defaults if these were set by an included ftplugin.
|
||||
if exists("b:undo_ftplugin")
|
||||
let s:undo_ftplugin = b:undo_ftplugin
|
||||
unlet b:undo_ftplugin
|
||||
endif
|
||||
if exists("b:browsefilter")
|
||||
let s:browsefilter = b:browsefilter
|
||||
unlet b:browsefilter
|
||||
endif
|
||||
if exists("b:match_words")
|
||||
let s:match_words = b:match_words
|
||||
unlet b:match_words
|
||||
endif
|
||||
|
||||
" Change the browse dialog on Win32 to show mainly Haml-related files
|
||||
if has("gui_win32")
|
||||
let b:browsefilter="Jade Files (*.jade)\t*.jade\n" . s:browsefilter
|
||||
endif
|
||||
|
||||
" Load the combined list of match_words for matchit.vim
|
||||
if exists("loaded_matchit")
|
||||
let b:match_words = s:match_words
|
||||
endif
|
||||
|
||||
setlocal comments=://-,:// commentstring=//\ %s
|
||||
|
||||
let b:undo_ftplugin = "setl cms< com< "
|
||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
|
||||
" vim:set sw=2:
|
||||
265
ftplugin/latex-suite/bibtex.vim
Normal file
265
ftplugin/latex-suite/bibtex.vim
Normal file
@@ -0,0 +1,265 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
144
ftplugin/latex-suite/brackets.vim
Normal file
144
ftplugin/latex-suite/brackets.vim
Normal file
@@ -0,0 +1,144 @@
|
||||
" ==============================================================================
|
||||
" 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
|
||||
874
ftplugin/latex-suite/compiler.vim
Normal file
874
ftplugin/latex-suite/compiler.vim
Normal file
@@ -0,0 +1,874 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
255
ftplugin/latex-suite/custommacros.vim
Normal file
255
ftplugin/latex-suite/custommacros.vim
Normal file
@@ -0,0 +1,255 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
124
ftplugin/latex-suite/diacritics.vim
Normal file
124
ftplugin/latex-suite/diacritics.vim
Normal file
@@ -0,0 +1,124 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
330
ftplugin/latex-suite/elementmacros.vim
Normal file
330
ftplugin/latex-suite/elementmacros.vim
Normal file
@@ -0,0 +1,330 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
1166
ftplugin/latex-suite/envmacros.vim
Normal file
1166
ftplugin/latex-suite/envmacros.vim
Normal file
File diff suppressed because it is too large
Load Diff
400
ftplugin/latex-suite/folding.vim
Normal file
400
ftplugin/latex-suite/folding.vim
Normal file
@@ -0,0 +1,400 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
1042
ftplugin/latex-suite/main.vim
Normal file
1042
ftplugin/latex-suite/main.vim
Normal file
File diff suppressed because it is too large
Load Diff
729
ftplugin/latex-suite/mathmacros-utf.vim
Normal file
729
ftplugin/latex-suite/mathmacros-utf.vim
Normal file
@@ -0,0 +1,729 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
730
ftplugin/latex-suite/mathmacros.vim
Normal file
730
ftplugin/latex-suite/mathmacros.vim
Normal file
@@ -0,0 +1,730 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
16
ftplugin/latex-suite/multicompile.vim
Normal file
16
ftplugin/latex-suite/multicompile.vim
Normal file
@@ -0,0 +1,16 @@
|
||||
" ============================================================================
|
||||
" 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
|
||||
676
ftplugin/latex-suite/packages.vim
Normal file
676
ftplugin/latex-suite/packages.vim
Normal file
@@ -0,0 +1,676 @@
|
||||
"=============================================================================
|
||||
" 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
|
||||
11
ftplugin/latex-suite/projecttemplate.vim
Normal file
11
ftplugin/latex-suite/projecttemplate.vim
Normal file
@@ -0,0 +1,11 @@
|
||||
" 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
|
||||
102
ftplugin/latex-suite/smartspace.vim
Normal file
102
ftplugin/latex-suite/smartspace.vim
Normal file
@@ -0,0 +1,102 @@
|
||||
"=============================================================================
|
||||
" File: smartspace.vim
|
||||
" Author: Carl Muller
|
||||
" Created: Fri Dec 06 12:00 AM 2002 PST
|
||||
"
|
||||
" Description:
|
||||
" Maps the <space> key in insert mode so that mathematical formulaes are
|
||||
" always kept on the same line. i.e, $$'s dont get broken across multiple
|
||||
" lines.
|
||||
"=============================================================================
|
||||
|
||||
" Avoid reinclusion or if the user doesn't want us.
|
||||
if exists('b:done_smartspace')
|
||||
\ || (exists('g:Tex_SmartKeySpace') && !g:Tex_SmartKeySpace)
|
||||
finish
|
||||
endif
|
||||
let b:done_smartspace = 1
|
||||
|
||||
" Smart space relies on taking over vim's insertion of carriage returns in
|
||||
" order to keep $$'s on the same line. The only way to get vim not to break
|
||||
" lines is to set tw=0.
|
||||
"
|
||||
" NOTE: setting tw != 0 will break smartspace
|
||||
" the user's 'tw' setting is still respected in the insert mode.
|
||||
" However, normal mode actions which rely on 'tw' such as gqap will be
|
||||
" broken because of the faulty 'tw' setting.
|
||||
let b:tw = &l:tw
|
||||
setlocal tw=0
|
||||
|
||||
inoremap <buffer> <silent> <Space> <Space><Esc>:call <SID>TexFill(b:tw)<CR>a
|
||||
|
||||
" Do not redefine the function.
|
||||
if exists('*s:TexFill')
|
||||
finish
|
||||
endif
|
||||
|
||||
" TexFormatLine: format line retaining $$'s on the same line. {{{
|
||||
function! s:TexFill(width)
|
||||
if a:width != 0 && col(".") > a:width
|
||||
" For future use, record the current line and the number of the current column
|
||||
let current_line = getline(".")
|
||||
let current_column = col(".")
|
||||
exe "normal! a##\<Esc>"
|
||||
call <SID>TexFormatLine(a:width,current_line,current_column)
|
||||
exe "normal! ?##\<CR>2s\<Esc>"
|
||||
" Remove ## from the search history.
|
||||
call histdel("/", -1)|let @/=histget("/", -1)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
function! s:TexFormatLine(width, current_line, current_column) " {{{
|
||||
" get the first non-blank character.
|
||||
let first = matchstr(getline('.'), '\S')
|
||||
normal! $
|
||||
let length = col('.')
|
||||
let go = 1
|
||||
while length > a:width+2 && go
|
||||
let between = 0
|
||||
let string = strpart(getline('.'), 0, a:width)
|
||||
" Count the dollar signs
|
||||
let number_of_dollars = 0
|
||||
let evendollars = 1
|
||||
let counter = 0
|
||||
while counter <= a:width-1
|
||||
" Pay attention to '$$'.
|
||||
if string[counter] == '$' && string[counter-1] != '$'
|
||||
let evendollars = 1 - evendollars
|
||||
let number_of_dollars = number_of_dollars + 1
|
||||
endif
|
||||
let counter = counter + 1
|
||||
endwhile
|
||||
" Get ready to split the line.
|
||||
exe 'normal! ' . (a:width + 1) . '|'
|
||||
if evendollars
|
||||
" Then you are not between dollars.
|
||||
exe "normal! ?\\$\\+\\| \<CR>W"
|
||||
else
|
||||
" Then you are between dollars.
|
||||
normal! F$
|
||||
if col(".") == 1 || getline('.')[col(".")-1] != "$"
|
||||
let go = 0
|
||||
endif
|
||||
endif
|
||||
if first == '$' && number_of_dollars == 1
|
||||
let go = 0
|
||||
else
|
||||
exe "normal! i\<CR>\<Esc>$"
|
||||
" get the first non-blank character.
|
||||
let first = matchstr(getline('.'), '\S')
|
||||
endif
|
||||
let length = col(".")
|
||||
endwhile
|
||||
if go == 0 && strpart(a:current_line, 0, a:current_column) =~ '.*\$.*\$.*'
|
||||
exe "normal! ^f$a\<CR>\<Esc>"
|
||||
call <SID>TexFormatLine(a:width, a:current_line, a:current_column)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" vim:fdm=marker:ts=4:sw=4:noet
|
||||
148
ftplugin/latex-suite/templates.vim
Normal file
148
ftplugin/latex-suite/templates.vim
Normal file
@@ -0,0 +1,148 @@
|
||||
"=============================================================================
|
||||
" File: templates.vim
|
||||
" Author: Gergely Kontra
|
||||
" (minor modifications by Srinath Avadhanula)
|
||||
" (plus other modifications by Mikolaj Machowski)
|
||||
" Version: 1.0
|
||||
" Created: Tue Apr 23 05:00 PM 2002 PST
|
||||
"
|
||||
" Description: functions for handling templates in latex-suite/templates
|
||||
" directory.
|
||||
"=============================================================================
|
||||
|
||||
let s:path = fnameescape(expand("<sfile>:p:h"))
|
||||
|
||||
" SetTemplateMenu: sets up the menu for templates {{{
|
||||
function! <SID>SetTemplateMenu()
|
||||
let flist = Tex_FindInRtp('', 'templates')
|
||||
let i = 1
|
||||
while 1
|
||||
let fname = Tex_Strntok(flist, ',', i)
|
||||
if fname == ''
|
||||
break
|
||||
endif
|
||||
exe "amenu ".g:Tex_TemplatesMenuLocation."&".i.":<Tab>".fname." ".
|
||||
\":call <SID>ReadTemplate('".fname."')<CR>"
|
||||
let i = i + 1
|
||||
endwhile
|
||||
endfunction
|
||||
|
||||
if g:Tex_Menus
|
||||
call <SID>SetTemplateMenu()
|
||||
endif
|
||||
|
||||
" }}}
|
||||
" ReadTemplate: reads in the template file from the template directory. {{{
|
||||
function! <SID>ReadTemplate(...)
|
||||
if a:0 > 0
|
||||
let filename = a:1
|
||||
else
|
||||
let filelist = Tex_FindInRtp('', 'templates')
|
||||
let filename =
|
||||
\ Tex_ChooseFromPrompt("Choose a template file:\n" .
|
||||
\ Tex_CreatePrompt(filelist, 2, ',') .
|
||||
\ "\nEnter number or name of file :",
|
||||
\ filelist, ',')
|
||||
endif
|
||||
|
||||
let fname = Tex_FindInRtp(filename.'.tex', 'templates', ':p')
|
||||
call Tex_Debug("0read ".fname, 'templates')
|
||||
|
||||
silent! exe "0read ".fname
|
||||
|
||||
" The first line of the file contains the specifications of what the
|
||||
" placeholder characters and the other special characters are.
|
||||
let pattern = '\v(\S+)\t(\S+)\t(\S+)\t(\S+)'
|
||||
|
||||
let s:phsTemp = substitute(getline(1), pattern, '\1', '')
|
||||
let s:pheTemp = substitute(getline(1), pattern, '\2', '')
|
||||
let s:exeTemp = substitute(getline(1), pattern, '\3', '')
|
||||
let s:comTemp = substitute(getline(1), pattern, '\4', '')
|
||||
|
||||
0 d_
|
||||
|
||||
call s:ProcessTemplate()
|
||||
call Tex_pack_updateall(1)
|
||||
|
||||
" Do not handle the placeholders here. Let IMAP_PutTextWithMovement do it
|
||||
" because it handles UTF-8 character substitutions etc. Therefore delete
|
||||
" the text into @a and paste it using IMAP_PutTextWithMovement().
|
||||
let _a = @a
|
||||
normal! ggVG"ax
|
||||
|
||||
let _fo = &fo
|
||||
" Since IMAP_PutTextWithMovement simulates the key-presses, leading
|
||||
" indendatation can get duplicated in strange ways if ``fo`` is non-empty.
|
||||
" NOTE: the indentexpr thingie is still respected with an empty fo so that
|
||||
" environments etc are properly indented.
|
||||
set fo=
|
||||
|
||||
call Tex_Debug("normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>", 'templates')
|
||||
exec "normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>"
|
||||
|
||||
let &fo = _fo
|
||||
let @a = _a
|
||||
|
||||
call Tex_Debug('phs = '.s:phsTemp.', phe = '.s:pheTemp.', exe = '.s:exeTemp.', com = '.s:comTemp, 'templates')
|
||||
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" ProcessTemplate: processes the special characters in template file. {{{
|
||||
" This implementation follows from Gergely Kontra's
|
||||
" mu-template.vim
|
||||
" http://vim.sourceforge.net/scripts/script.php?script_id=222
|
||||
function! <SID>ProcessTemplate()
|
||||
if exists('s:phsTemp') && s:phsTemp != ''
|
||||
|
||||
exec 'silent! %s/^'.s:comTemp.'\(\_.\{-}\)'.s:comTemp.'$/\=<SID>Compute(submatch(1))/ge'
|
||||
exec 'silent! %s/'.s:exeTemp.'\(.\{-}\)'.s:exeTemp.'/\=<SID>Exec(submatch(1))/ge'
|
||||
exec 'silent! g/'.s:comTemp.s:comTemp.'/d'
|
||||
|
||||
" A function only puts one item into the search history...
|
||||
call Tex_CleanSearchHistory()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! <SID>Exec(what)
|
||||
exec 'return '.a:what
|
||||
endfunction
|
||||
|
||||
" Back-Door to trojans !!!
|
||||
function! <SID>Compute(what)
|
||||
exe a:what
|
||||
if exists('s:comTemp')
|
||||
return s:comTemp.s:comTemp
|
||||
else
|
||||
return ''
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" Command definitions {{{
|
||||
if v:version >= 602
|
||||
com! -complete=custom,Tex_CompleteTemplateName -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
|
||||
\| :startinsert
|
||||
|
||||
" Tex_CompleteTemplateName: for completing names in TTemplate command {{{
|
||||
" Description: get list of template names with Tex_FindInRtp(), remove full path
|
||||
" and return list of names separated with newlines.
|
||||
"
|
||||
function! Tex_CompleteTemplateName(A,P,L)
|
||||
" Get name of macros from all runtimepath directories
|
||||
let tmplnames = Tex_FindInRtp('', 'templates')
|
||||
" Separate names with \n not ,
|
||||
let tmplnames = substitute(tmplnames,',','\n','g')
|
||||
return tmplnames
|
||||
endfunction
|
||||
" }}}
|
||||
|
||||
else
|
||||
com! -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
|
||||
\| :startinsert
|
||||
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||
130
ftplugin/latex-suite/texmenuconf.vim
Normal file
130
ftplugin/latex-suite/texmenuconf.vim
Normal file
@@ -0,0 +1,130 @@
|
||||
"=============================================================================
|
||||
" File: texmenuconf.vim
|
||||
" Author: Srinath Avadhanula
|
||||
" Copyright: Vim charityware license. :help license
|
||||
" Description:
|
||||
"
|
||||
"=============================================================================
|
||||
|
||||
" Paths, crucial for functions
|
||||
let s:path = fnameescape(expand("<sfile>:p:h"))
|
||||
let s:up_path = fnameescape(expand("<sfile>:p:h:h"))
|
||||
let s:mainmenuname = g:Tex_MenuPrefix.'S&uite.'
|
||||
let s:mapleader = exists('mapleader') ? mapleader : "\\"
|
||||
|
||||
" This glboal variable is incremented each time a top-level latex-suite menu
|
||||
" is created. We should always use this variable for setting the locations of
|
||||
" newly created top-level menus.
|
||||
let g:Tex_NextMenuLocation = g:Tex_MainMenuLocation
|
||||
|
||||
" The templates and macros menus are always nested within the main latex-suit
|
||||
" menu.
|
||||
let g:Tex_TemplatesMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Templates.'
|
||||
let g:Tex_MacrosMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Macros.'
|
||||
|
||||
" The packages menu can either be a child of the main menu or be a top-level
|
||||
" menu by itself.
|
||||
if g:Tex_NestPackagesMenu
|
||||
let g:Tex_PackagesMenuLocation = (g:Tex_MainMenuLocation).'.10 '.s:mainmenuname.'&Packages.'
|
||||
else
|
||||
let g:Tex_PackagesMenuLocation = (g:Tex_NextMenuLocation).'.10 '.g:Tex_MenuPrefix.'Packages.'
|
||||
let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
|
||||
endif
|
||||
|
||||
" Environments are always a top-level menu.
|
||||
let g:Tex_EnvMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&nvironments.'
|
||||
let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
|
||||
|
||||
" Elements are always a top-level menu.
|
||||
" If we choose to nest elements, then the top-level &TeX-Elements menu
|
||||
" contains <Fonts / Counters / Dimensions>
|
||||
" otherwise, the Fonts, Counters and Dimensions menus become top-level menus.
|
||||
if g:Tex_NestElementMenus
|
||||
let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&lements.'
|
||||
else
|
||||
let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix
|
||||
endif
|
||||
let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
|
||||
|
||||
|
||||
" Set up the compiler/viewer menus. {{{
|
||||
"
|
||||
if has('gui_running') && g:Tex_Menus
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.25 '. s:mainmenuname.'-sepsuite0- :'
|
||||
|
||||
" menus for compiling / viewing etc.
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.30 '.s:mainmenuname.'&Compile<tab>'.s:mapleader.'ll'.
|
||||
\' :silent! call Tex_RunLaTeX()<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.40 '.s:mainmenuname.'&View<tab>'.s:mapleader.'lv'.
|
||||
\' :silent! call Tex_ViewLaTeX()<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.50 '.s:mainmenuname.'&Search<tab>'.s:mapleader.'ls'.
|
||||
\' :silent! call ForwardSearchLaTeX()<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.60 '.s:mainmenuname.'&Target\ Format<tab>:TTarget'.
|
||||
\' :call SetTeXTarget()<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.70 '.s:mainmenuname.'&Compiler\ Target<tab>:TCTarget'.
|
||||
\' :call Tex_SetTeXCompilerTarget("Compile", "")<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.80 '.s:mainmenuname.'&Viewer\ Target<tab>:TVTarget'.
|
||||
\' :call Tex_SetTeXCompilerTarget("View", "")<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.90 '.s:mainmenuname.'Set\ &Ignore\ Level<tab>:TCLevel'.
|
||||
\' :TCLevel<CR>'
|
||||
exec 'imenu '.g:Tex_MainMenuLocation.'.100 '.s:mainmenuname.'C&omplete\ Ref/Cite'.
|
||||
\' <Plug>Tex_Completion'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.110 '.s:mainmenuname.'-sepsuite1- :'
|
||||
" refreshing folds
|
||||
if g:Tex_Folding
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.120 '.s:mainmenuname.'&Refresh\ Folds<tab>'.s:mapleader.'rf'.
|
||||
\' :call MakeTexFolds(1)<CR>'
|
||||
exec 'anoremenu '.g:Tex_MainMenuLocation.'.130 '.s:mainmenuname.'-sepsuite2- :'
|
||||
endif
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" ==============================================================================
|
||||
" MenuConf: configure the menus as compact/extended, with/without math
|
||||
" ==============================================================================
|
||||
function! Tex_MenuConfigure(type, action) " {{{
|
||||
let menuloc = s:mainmenuname.'Configure\ Menu.'
|
||||
if a:type == 'math'
|
||||
if a:action == 1
|
||||
let g:Tex_MathMenus = 1
|
||||
exe 'source '.s:path.'/mathmacros.vim'
|
||||
exe 'amenu disable '.menuloc.'Add\ Math\ Menu'
|
||||
exe 'amenu enable '.menuloc.'Remove\ Math\ Menu'
|
||||
elseif a:action == 0
|
||||
call Tex_MathMenuRemove()
|
||||
exe 'amenu enable '.menuloc.'Add\ Math\ Menu'
|
||||
exe 'amenu disable '.menuloc.'Remove\ Math\ Menu'
|
||||
endif
|
||||
elseif a:type == 'elements'
|
||||
if a:action == 'expand'
|
||||
let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix
|
||||
exe 'amenu disable '.menuloc.'Expand\ Elements'
|
||||
exe 'amenu enable '.menuloc.'Compress\ Elements'
|
||||
elseif a:action == 'nest'
|
||||
let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix.'Elements.'
|
||||
exe 'amenu enable '.menuloc.'Expand\ Elements'
|
||||
exe 'amenu disable '.menuloc.'Compress\ Elements'
|
||||
endif
|
||||
exe 'source '.fnameescape(s:path.'/elementmacros.vim')
|
||||
elseif a:type == 'packages'
|
||||
if a:action == 1
|
||||
let g:Tex_PackagesMenu = 1
|
||||
exe 'source '.s:path.'/packages.vim'
|
||||
exe 'amenu disable '.menuloc.'Load\ Packages\ Menu'
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" configuration menu.
|
||||
if g:Tex_Menus
|
||||
exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Add\ Math\ Menu :call Tex_MenuConfigure("math", 1)<cr>'
|
||||
exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Remove\ Math\ Menu :call Tex_MenuConfigure("math", 0)<cr>'
|
||||
exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Expand\ Elements :call Tex_MenuConfigure("elements", "expand")<cr>'
|
||||
exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Compress\ Elements :call Tex_MenuConfigure("elements", "nest")<cr>'
|
||||
exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Load\ Packages\ Menu :call Tex_MenuConfigure("packages", 1)<cr>'
|
||||
endif
|
||||
|
||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||
54
ftplugin/latex-suite/texproject.vim
Normal file
54
ftplugin/latex-suite/texproject.vim
Normal file
@@ -0,0 +1,54 @@
|
||||
"=============================================================================
|
||||
" File: texproject.vim
|
||||
" Author: Mikolaj Machowski
|
||||
" Version: 1.0
|
||||
" Created: Wen Apr 16 05:00 PM 2003
|
||||
"
|
||||
" Description: Handling tex projects.
|
||||
"=============================================================================
|
||||
|
||||
let s:path = fnameescape(expand("<sfile>:p:h"))
|
||||
|
||||
command! -nargs=0 TProjectEdit :call <SID>Tex_ProjectEdit()
|
||||
|
||||
" Tex_ProjectEdit: Edit project file " {{{
|
||||
" Description: If project file exists (*.latexmain) open it in window created
|
||||
" with ':split', if no create ':new' window and read there
|
||||
" project template
|
||||
"
|
||||
function! s:Tex_ProjectEdit()
|
||||
|
||||
let file = expand("%:p")
|
||||
let mainfname = Tex_GetMainFileName()
|
||||
if glob(mainfname.'.latexmain') != ''
|
||||
exec 'split '.fnameescape(mainfname.'.latexmain')
|
||||
else
|
||||
echohl WarningMsg
|
||||
echomsg "Master file not found."
|
||||
echomsg " :help latex-master-file"
|
||||
echomsg "for more information"
|
||||
echohl None
|
||||
endif
|
||||
|
||||
endfunction " }}}
|
||||
" Tex_ProjectLoad: loads the .latexmain file {{{
|
||||
" Description: If a *.latexmain file exists, then sources it
|
||||
function! Tex_ProjectLoad()
|
||||
let s:origdir = fnameescape(getcwd())
|
||||
exe 'cd '.fnameescape(expand('%:p:h'))
|
||||
|
||||
if glob(Tex_GetMainFileName(':p').'.latexmain') != ''
|
||||
call Tex_Debug("Tex_ProjectLoad: sourcing [".Tex_GetMainFileName().".latexmain]", "proj")
|
||||
exec 'source '.fnameescape(Tex_GetMainFileName().'.latexmain')
|
||||
endif
|
||||
|
||||
exe 'cd '.s:origdir
|
||||
endfunction " }}}
|
||||
|
||||
augroup LatexSuite
|
||||
au LatexSuite User LatexSuiteFileType
|
||||
\ call Tex_Debug("texproject.vim: catching LatexSuiteFileType event", "proj") |
|
||||
\ call Tex_ProjectLoad()
|
||||
augroup END
|
||||
|
||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||
1070
ftplugin/latex-suite/texviewer.vim
Normal file
1070
ftplugin/latex-suite/texviewer.vim
Normal file
File diff suppressed because it is too large
Load Diff
30
ftplugin/latex-suite/version.vim
Normal file
30
ftplugin/latex-suite/version.vim
Normal file
@@ -0,0 +1,30 @@
|
||||
" Tex_Version: returns a string which gives the current version number of latex-suite
|
||||
" Description:
|
||||
" Each time a bug fix/addition is done in any source file in latex-suite,
|
||||
" not just this file, the number below has to be incremented by the author.
|
||||
" This will ensure that there is a single 'global' version number for all of
|
||||
" latex-suite.
|
||||
"
|
||||
" If a change is done in the doc/ directory, i.e an addition/change in the
|
||||
" documentation, then this number should NOT be incremented.
|
||||
"
|
||||
" Latex-suite will follow a 3-tier system of versioning just as Vim. A
|
||||
" version number will be of the form:
|
||||
"
|
||||
" X.Y.ZZ
|
||||
"
|
||||
" 'X' will only be incremented for a major over-haul or feature addition.
|
||||
" 'Y' will be incremented for significant changes which do not qualify
|
||||
" as major.
|
||||
" 'ZZ' will be incremented for bug-fixes and very trivial additions such
|
||||
" as adding an option etc. Once ZZ reaches 50, then Y will be
|
||||
" incremented and ZZ will be reset to 01. Each time we have a
|
||||
" version number of the form X.Y.01, then we'll make a release on
|
||||
" vim.sf.net and also create a cvs tag at that point. We'll try to
|
||||
" "stabilize" that version by releasing a few pre-releases and then
|
||||
" keep that as a stable point.
|
||||
function! Tex_Version()
|
||||
return "Latex-Suite: version 1.8.23"
|
||||
endfunction
|
||||
|
||||
com! -nargs=0 TVersion echo Tex_Version()
|
||||
376
ftplugin/latex-suite/wizardfuncs.vim
Normal file
376
ftplugin/latex-suite/wizardfuncs.vim
Normal file
@@ -0,0 +1,376 @@
|
||||
" File: wizardfuncs.vim
|
||||
" Author: Mikolaj Machowski <mikmach@wp.pl>
|
||||
" Description:
|
||||
"
|
||||
" Installation:
|
||||
" History: pluginized by Srinath Avadhanula
|
||||
"=============================================================================
|
||||
|
||||
if exists('s:doneOnce')
|
||||
finish
|
||||
endif
|
||||
let s:doneOnce = 1
|
||||
|
||||
let s:mapleader = exists('mapleader') ? mapleader : "\\"
|
||||
" ==============================================================================
|
||||
" Specialized functions for handling sections from command line
|
||||
" ==============================================================================
|
||||
|
||||
com! -nargs=? TSection call Tex_section(<f-args>)
|
||||
com! -nargs=? TSectionAdvanced call Tex_section_adv(<f-args>)
|
||||
|
||||
" Tex_VisSecAdv: handles visual selection for sections {{{
|
||||
function! Tex_VisSecAdv(section)
|
||||
let shorttitle = input("Short title? ")
|
||||
let toc = input("Include in table of contents [y]/n ? ")
|
||||
let sstructure = "\\".a:section
|
||||
if ( toc == "" || toc == "y" )
|
||||
let toc = ""
|
||||
else
|
||||
let toc = "*"
|
||||
endif
|
||||
if shorttitle != ""
|
||||
let shorttitle = '['.shorttitle.']'
|
||||
endif
|
||||
exe "normal `>a}\<cr>\<esc>`<i".sstructure.toc.shorttitle."{"
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" Tex_InsSecAdv: section wizard in insert mode {{{
|
||||
function! Tex_InsSecAdv(structure)
|
||||
let ttitle = input("Title? ")
|
||||
let shorttitle = input("Short title? ")
|
||||
let toc = input("Include in table of contents [y]/n ? ")
|
||||
"Structure
|
||||
let sstructure = "\\".a:structure
|
||||
"TOC
|
||||
if ( toc == "" || toc == "y" )
|
||||
let toc = ""
|
||||
else
|
||||
let toc = "*"
|
||||
endif
|
||||
"Shorttitle
|
||||
if shorttitle != ""
|
||||
let shorttitle = '['.shorttitle.']'
|
||||
endif
|
||||
"Title
|
||||
let ttitle = '{'.ttitle.'}'
|
||||
"Happy end?
|
||||
return sstructure.toc.shorttitle.ttitle
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
function! Tex_section(...) "{{{
|
||||
silent let pos = Tex_GetPos()
|
||||
silent let last_section_value = s:Tex_section_detection()
|
||||
if a:0 == 0
|
||||
silent let last_section_name = s:Tex_section_name(last_section_value)
|
||||
silent call s:Tex_section_call(last_section_name)
|
||||
elseif a:1 =~ "[+=\-]"
|
||||
silent let sec_arg = a:1
|
||||
silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
|
||||
silent let curr_section_name = s:Tex_section_name(curr_section_value)
|
||||
silent call s:Tex_section_call(curr_section_name)
|
||||
elseif a:1 == "?"
|
||||
echo s:last_section_line
|
||||
else
|
||||
silent let curr_section_value = s:Tex_section_curr_value(a:1)
|
||||
silent let curr_section_name = s:Tex_section_name(curr_section_value)
|
||||
silent call s:Tex_section_call(curr_section_name)
|
||||
endif
|
||||
silent call Tex_SetPos(pos)
|
||||
endfunction "}}}
|
||||
function! Tex_section_adv(...) "{{{
|
||||
let pos = Tex_GetPos()
|
||||
silent let last_section_value = s:Tex_section_detection()
|
||||
if a:0 == 0
|
||||
silent let last_section_name = s:Tex_section_name(last_section_value)
|
||||
let section = Tex_InsSecAdv(last_section_name)
|
||||
elseif a:1 =~ "[+=\-]"
|
||||
silent let sec_arg = a:1
|
||||
silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
|
||||
silent let curr_section_name = s:Tex_section_name(curr_section_value)
|
||||
let section = Tex_InsSecAdv(curr_section_name)
|
||||
else
|
||||
silent let curr_section_value = s:Tex_section_curr_value(a:1)
|
||||
silent let curr_section_name = s:Tex_section_name(curr_section_value)
|
||||
silent call s:Tex_section_call(curr_section_name)
|
||||
let section = Tex_InsSecAdv(curr_section_name)
|
||||
endif
|
||||
exe "normal i".section
|
||||
call Tex_SetPos(pos)
|
||||
endfunction "}}}
|
||||
function! s:Tex_section_detection() "{{{
|
||||
let pos = Tex_GetPos()
|
||||
let last_section1 = search("\\\\\subparagraph\\|\\\\paragraph\\|\\\\subsubsection\\|\\\\subsection\\|\\\\section\\|\\\\chapter\\|\\\part\)", "b")
|
||||
call Tex_SetPos(pos)
|
||||
let last_section2 = search("\\\\\part\\|\\\\chapter\\|\\\\section\\|\\\\subsection\\|\\\\subsubsection\\|\\\\paragraph\\|\\\subparagraph\)", "b")
|
||||
if last_section1 > last_section2
|
||||
let last_section = last_section1
|
||||
else
|
||||
let last_section = last_section2
|
||||
endif
|
||||
if last_section != 0
|
||||
exe last_section
|
||||
if getline(".") =~ "\\\\part"
|
||||
let last_section_value = 0
|
||||
elseif getline(".") =~ "\\\\chapter"
|
||||
let last_section_value = 1
|
||||
elseif getline(".") =~ "\\\\section"
|
||||
let last_section_value = 2
|
||||
elseif getline(".") =~ "\\\\subsection"
|
||||
let last_section_value = 3
|
||||
elseif getline(".") =~ "\\\\subsubsection"
|
||||
let last_section_value = 4
|
||||
elseif getline(".") =~ "\\\\paragraph"
|
||||
let last_section_value = 5
|
||||
elseif getline(".") =~ "\\\\subparagraph"
|
||||
let last_section_value = 6
|
||||
endif
|
||||
let s:last_section_line = getline(".")
|
||||
else
|
||||
let last_section_value = 0
|
||||
endif
|
||||
call Tex_SetPos(pos)
|
||||
return last_section_value
|
||||
endfunction "}}}
|
||||
function! s:Tex_section_curr_value(sec_arg) "{{{
|
||||
if a:sec_arg == "pa" || a:sec_arg == "0" || a:sec_arg == "part"
|
||||
let curr_section_value = 0
|
||||
elseif a:sec_arg == "ch" || a:sec_arg == "1" || a:sec_arg == "chapter"
|
||||
let curr_section_value = 1
|
||||
elseif a:sec_arg == "se" || a:sec_arg == "2" || a:sec_arg == "section"
|
||||
let curr_section_value = 2
|
||||
elseif a:sec_arg == "ss" || a:sec_arg == "3" || a:sec_arg == "subsection"
|
||||
let curr_section_value = 3
|
||||
elseif a:sec_arg == "s2" || a:sec_arg == "4" || a:sec_arg == "subsubsection"
|
||||
let curr_section_value = 4
|
||||
elseif a:sec_arg == "pr" || a:sec_arg == "5" || a:sec_arg == "paragraph"
|
||||
let curr_section_value = 5
|
||||
elseif a:sec_arg == "sp" || a:sec_arg == "6" || a:sec_arg == "subparagraph"
|
||||
let curr_section_value = 6
|
||||
endif
|
||||
return curr_section_value
|
||||
endfunction "}}}
|
||||
function! s:Tex_section_curr_rel_value(sec_arg, last_section_value) "{{{
|
||||
let last_section_value = a:last_section_value
|
||||
if a:sec_arg == "+" || a:sec_arg == "+1"
|
||||
let curr_section_value = last_section_value + 1
|
||||
elseif a:sec_arg == "++" || a:sec_arg == "+2"
|
||||
let curr_section_value = last_section_value + 2
|
||||
elseif a:sec_arg == "-" || a:sec_arg == "-1"
|
||||
let curr_section_value = last_section_value - 1
|
||||
elseif a:sec_arg == "--" || a:sec_arg == "-2"
|
||||
let curr_section_value = last_section_value - 2
|
||||
elseif a:sec_arg == "="
|
||||
let curr_section_value = last_section_value
|
||||
else
|
||||
exe "let curr_section_value = last_section_value".a:sec_arg
|
||||
endif
|
||||
if curr_section_value < 0
|
||||
let curr_section_value = 0
|
||||
elseif curr_section_value > 6
|
||||
let curr_section_value = 6
|
||||
endif
|
||||
return curr_section_value
|
||||
endfunction "}}}
|
||||
function! s:Tex_section_name(section_value) "{{{
|
||||
if a:section_value == 0
|
||||
let section_name = "part"
|
||||
elseif a:section_value == 1
|
||||
let section_name = "chapter"
|
||||
elseif a:section_value == 2
|
||||
let section_name = "section"
|
||||
elseif a:section_value == 3
|
||||
let section_name = "subsection"
|
||||
elseif a:section_value == 4
|
||||
let section_name = "subsubsection"
|
||||
elseif a:section_value == 5
|
||||
let section_name = "paragraph"
|
||||
elseif a:section_value == 6
|
||||
let section_name = "subparagraph"
|
||||
endif
|
||||
return section_name
|
||||
endfunction "}}}
|
||||
function! s:Tex_section_call(section_name) "{{{
|
||||
exe "normal! i\\".a:section_name."{<++>}<++>\<Esc>0\<C-j>"
|
||||
" let ret_section = "\\".a:section_name."{<++>}<++>"
|
||||
" exe "normal! i\<C-r>=IMAP_PutTextWithMovement(ret_section)\<CR>"
|
||||
" normal f}i
|
||||
endfunction "}}}
|
||||
|
||||
" ==============================================================================
|
||||
" Add looking help into latexhelp.txt
|
||||
" ==============================================================================
|
||||
|
||||
inoremap <silent> <Plug>Tex_Help <C-o>:call <SID>TexHelp()<CR>
|
||||
nnoremap <silent> <Plug>Tex_Help :call <SID>TexHelp()<CR>
|
||||
command! -nargs=0 THelp call <SID>TexHelp()
|
||||
call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'i', '')
|
||||
call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'n', '')
|
||||
|
||||
" TexHelp: Cursor being on LaTeX item check if exists help tag about it " {{{
|
||||
function! s:TexHelp()
|
||||
let syntax_item = synIDattr(synID(line('.'),col('.')-1,0),"name")
|
||||
if syntax_item =~ '^tex'
|
||||
setlocal isk+=\
|
||||
let curword = expand('<cword>')
|
||||
setlocal isk-=\
|
||||
let v:errmsg = ''
|
||||
if curword =~ "^\\" || syntax_item == 'texSectionName'
|
||||
exe 'silent! help '.curword
|
||||
if v:errmsg =~ '^E149:'
|
||||
echohl ErrorMsg
|
||||
exe "echomsg 'Sorry, no help for LaTeX: ".curword."'"
|
||||
echohl None
|
||||
let v:errmsg = ''
|
||||
endif
|
||||
else
|
||||
help
|
||||
endif
|
||||
else
|
||||
help
|
||||
endif
|
||||
endfunction " }}}
|
||||
|
||||
" ==============================================================================
|
||||
" Tables of shortcuts
|
||||
" ==============================================================================
|
||||
"
|
||||
command! -nargs=? Tshortcuts call Tex_shortcuts(<f-args>)<CR>
|
||||
|
||||
" Tex_shortcuts: Show shortcuts in terminal after : command {{{
|
||||
function! Tex_shortcuts(...)
|
||||
if a:0 == 0
|
||||
let shorts = input(" Allowed arguments are:"
|
||||
\."\n g General"
|
||||
\."\n e Environments"
|
||||
\."\n f Fonts"
|
||||
\."\n s Sections"
|
||||
\."\n m Math"
|
||||
\."\n a All"
|
||||
\."\n Enter your choice (<Enter> quits) : ")
|
||||
call Tex_shortcuts(shorts)
|
||||
elseif a:1 == 'g'
|
||||
echo g:generalshortcuts
|
||||
elseif a:1 == 'e'
|
||||
echo g:environmentshortcuts
|
||||
elseif a:1 == 'f'
|
||||
echo g:fontshortcuts
|
||||
elseif a:1 == 's'
|
||||
echo g:sectionshortcuts
|
||||
elseif a:1 == 'm'
|
||||
echo g:mathshortcuts
|
||||
elseif a:1 == 'a'
|
||||
echo g:generalshortcuts
|
||||
echo g:environmentshortcuts
|
||||
echo g:fontshortcuts
|
||||
echo g:sectionshortcuts
|
||||
echo g:mathshortcuts
|
||||
endif
|
||||
|
||||
endfunction
|
||||
" }}}
|
||||
|
||||
" General shortcuts {{{
|
||||
let g:generalshortcuts = ''
|
||||
\."\n General shortcuts"
|
||||
\."\n <mapleader> is a value of <Leader>"
|
||||
\."\n ".s:mapleader.'ll compile whole document'
|
||||
\."\n ".s:mapleader.'lv view compiled document'
|
||||
\."\n ".s:mapleader.'ls forward searching (if possible)'
|
||||
\."\n ".s:mapleader.'rf refresh folds'
|
||||
" }}}
|
||||
" Environment shortcuts {{{
|
||||
let g:environmentshortcuts = ''
|
||||
\."\n Environment shortcuts"
|
||||
\."\n <mapleader> is a value of g:Tex_Leader2"
|
||||
\."\n I v&V I v&V"
|
||||
\."\n ELI ".g:Tex_Leader2."li list EQN ".g:Tex_Leader2."qn quotation"
|
||||
\."\n EDE ".g:Tex_Leader2."de description ESP ".g:Tex_Leader2."sb sloppypar"
|
||||
\."\n EEN ".g:Tex_Leader2."en enumerate ETI ".g:Tex_Leader2."ti theindex"
|
||||
\."\n EIT ".g:Tex_Leader2."it itemize ETP ".g:Tex_Leader2."tp titlepage"
|
||||
\."\n ETI ".g:Tex_Leader2."ti theindex EVM ".g:Tex_Leader2."vm verbatim"
|
||||
\."\n ETL ".g:Tex_Leader2."tl trivlist EVE ".g:Tex_Leader2."ve verse"
|
||||
\."\n ETE ".g:Tex_Leader2."te table ETB ".g:Tex_Leader2."tb thebibliography"
|
||||
\."\n ETG ".g:Tex_Leader2."tg tabbing ENO ".g:Tex_Leader2."no note"
|
||||
\."\n ETR ".g:Tex_Leader2."tr tabular EOV ".g:Tex_Leader2."ov overlay"
|
||||
\."\n EAR ".g:Tex_Leader2."ar array ESL ".g:Tex_Leader2."sl slide"
|
||||
\."\n EDM ".g:Tex_Leader2."dm displaymath EAB ".g:Tex_Leader2."ab abstract"
|
||||
\."\n EEA ".g:Tex_Leader2."ea eqnarray EAP ".g:Tex_Leader2."ap appendix"
|
||||
\."\n EEQ ".g:Tex_Leader2."eq equation ECE ".g:Tex_Leader2."ce center"
|
||||
\."\n EDO ".g:Tex_Leader2."do document EFI ".g:Tex_Leader2."fi figure"
|
||||
\."\n EFC ".g:Tex_Leader2."fc filecontents ELR ".g:Tex_Leader2."lr lrbox"
|
||||
\."\n EFL ".g:Tex_Leader2."fl flushleft EMP ".g:Tex_Leader2."mp minipage"
|
||||
\."\n EFR ".g:Tex_Leader2."fr flushright EPI ".g:Tex_Leader2."pi picture"
|
||||
\."\n EMA ".g:Tex_Leader2."ma math EQE ".g:Tex_Leader2."qe quote"
|
||||
" }}}
|
||||
" Font shortcuts {{{
|
||||
let g:fontshortcuts = ''
|
||||
\."\n Font shortcuts"
|
||||
\."\n <mapleader> is a value of g:Tex_Leader"
|
||||
\."\n Shortcuts Effects"
|
||||
\."\n I v&V I&v V"
|
||||
\."\n FBF ".g:Tex_Leader."bf \\textbf{} {\\bfseries }"
|
||||
\."\n FMD ".g:Tex_Leader."md \\textmd{} {\\mdseries }"
|
||||
\."\n"
|
||||
\."\n FTT ".g:Tex_Leader."tt \\texttt{} {\\ttfamily }"
|
||||
\."\n FSF ".g:Tex_Leader."sf \\textsf{} {\\sffamily }"
|
||||
\."\n FRM ".g:Tex_Leader."rm \\textrm{} {\\rmfamily }"
|
||||
\."\n"
|
||||
\."\n FUP ".g:Tex_Leader."up \\textup{} {\\upshape }"
|
||||
\."\n FSL ".g:Tex_Leader."sl \\textsl{} {\\slshape }"
|
||||
\."\n FSC ".g:Tex_Leader."sc \\textsc{} {\\scshape }"
|
||||
\."\n FIT ".g:Tex_Leader."it \\textit{} {\\itshape }"
|
||||
" }}}
|
||||
" Section shortcuts {{{
|
||||
let g:sectionshortcuts = ''
|
||||
\."\n Section shortcuts"
|
||||
\."\n <mapleader> is a value of g:Tex_Leader2"
|
||||
\."\n I v&V"
|
||||
\."\n SPA ".g:Tex_Leader2."pa part"
|
||||
\."\n SCH ".g:Tex_Leader2."ch chapter"
|
||||
\."\n SSE ".g:Tex_Leader2."se section"
|
||||
\."\n SSS ".g:Tex_Leader2."ss subsection"
|
||||
\."\n SS2 ".g:Tex_Leader2."s2 subsubsection"
|
||||
\."\n SPG ".g:Tex_Leader2."pg paragraph"
|
||||
\."\n SSP ".g:Tex_Leader2."sp subparagraph"
|
||||
" }}}
|
||||
" Math shortcuts {{{
|
||||
let g:mathshortcuts = ''
|
||||
\."\n Math shortcuts - Insert mode"
|
||||
\."\n `a \\alpha `b \\beta"
|
||||
\."\n `g \\gamma `d \\delta"
|
||||
\."\n `e \\varepsilon `z \\zeta"
|
||||
\."\n `h \\eta `q \\theta"
|
||||
\."\n `i \\iota `k \\kappa"
|
||||
\."\n `l \\lambda `m \\mu"
|
||||
\."\n `n \\nu `x \\xi"
|
||||
\."\n `p \\pi `r \\rho"
|
||||
\."\n `s \\sigma `v \\varsigma"
|
||||
\."\n `t \\tau `u \\upsilon"
|
||||
\."\n `f \\varphi `c \\chi"
|
||||
\."\n `y \\psi `w \\omega"
|
||||
\."\n `A \\Alpha `B \\Beta"
|
||||
\."\n `G \\Gamma `D \\Delta"
|
||||
\."\n `E \\Epsilon `Z \\mathrm{Z}"
|
||||
\."\n `H \\Eta `K \\Kappa"
|
||||
\."\n `L \\Lambda `M \\Mu"
|
||||
\."\n `N \\Nu `X \\Xi"
|
||||
\."\n `P \\Pi `R \\Rho"
|
||||
\."\n `S \\Sigma `T \\Tau"
|
||||
\."\n `U \\Upsilon `C \\Chi"
|
||||
\."\n `Y \\Psi `W \\Omega"
|
||||
\."\n `( \\subset `) \\Subset"
|
||||
\."\n `= \\equiv =~ \\approx"
|
||||
\."\n `- \\bigcap `+ \\bigcup"
|
||||
\."\n `. \\cdot `* \\times"
|
||||
\."\n `\\ \\setminus `@ \\circ"
|
||||
\."\n `& \\wedge `, \\nonumber"
|
||||
\."\n `8 \\infty `_ \\bar{}"
|
||||
\."\n `: \\ddot{} `; \\dot{}"
|
||||
\."\n `^ \\hat{} `~ \\tilde{}"
|
||||
\."\n `6 \\partial"
|
||||
" }}}
|
||||
|
||||
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
|
||||
202
ftplugin/php.vim
202
ftplugin/php.vim
@@ -1,202 +0,0 @@
|
||||
" File: php.vim
|
||||
" Description: PHP Integration for VIM plugin
|
||||
" This file is a considerable fork of the original
|
||||
" PDV written by Tobias Schlitt <toby@php.net>.
|
||||
" Maintainer: Steve Francia <piv@spf13.com> <http://spf13.com>
|
||||
" Version: 0.9
|
||||
" Last Change: 7th January 2012
|
||||
"
|
||||
"
|
||||
" Section: script init stuff {{{1
|
||||
if exists("loaded_piv")
|
||||
finish
|
||||
endif
|
||||
let loaded_piv = 1
|
||||
|
||||
"
|
||||
" Function: s:InitVariable() function {{{2
|
||||
" This function is used to initialise a given variable to a given value. The
|
||||
" variable is only initialised if it does not exist prior
|
||||
"
|
||||
" Args:
|
||||
" -var: the name of the var to be initialised
|
||||
" -value: the value to initialise var to
|
||||
"
|
||||
" Returns:
|
||||
" 1 if the var is set, 0 otherwise
|
||||
function s:InitVariable(var, value)
|
||||
if !exists(a:var)
|
||||
exec 'let ' . a:var . ' = ' . "'" . a:value . "'"
|
||||
return 1
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
|
||||
" {{{ Settings
|
||||
" First the global PHP configuration
|
||||
let php_sql_query=1 " to highlight SQL syntax in strings
|
||||
let php_htmlInStrings=1 " to highlight HTML in string
|
||||
let php_noShortTags = 1 " to disable short tags
|
||||
let php_folding = 1 "to enable folding for classes and functions
|
||||
let PHP_autoformatcomment = 1
|
||||
let php_sync_method = -1
|
||||
|
||||
" Section: variable init calls {{{2
|
||||
call s:InitVariable("g:load_doxygen_syntax", 1)
|
||||
call s:InitVariable("g:syntax_extra_php", 'doxygen')
|
||||
call s:InitVariable("g:syntax_extra_inc", 'doxygen')
|
||||
call s:InitVariable("g:PIVCreateDefaultMappings", 1)
|
||||
call s:InitVariable("g:PIVPearStyle", 0)
|
||||
call s:InitVariable("g:PIVAutoClose", 0)
|
||||
|
||||
" Auto expand tabs to spaces
|
||||
setlocal expandtab
|
||||
setlocal autoindent " Auto indent after a {
|
||||
setlocal smartindent
|
||||
|
||||
" Linewidth to 79, because of the formatoptions this is only valid for
|
||||
" comments
|
||||
setlocal textwidth=79
|
||||
|
||||
setlocal nowrap " Do not wrap lines automatically
|
||||
|
||||
" Correct indentation after opening a phpdocblock and automatic * on every
|
||||
" line
|
||||
setlocal formatoptions=qroct
|
||||
|
||||
" Use php syntax check when doing :make
|
||||
setlocal makeprg=php\ -l\ %
|
||||
|
||||
" Use errorformat for parsing PHP error output
|
||||
setlocal errorformat=%m\ in\ %f\ on\ line\ %l
|
||||
|
||||
" Switch syntax highlighting on, if it was not
|
||||
if !exists("g:syntax_on") | syntax on | endif
|
||||
|
||||
"setlocal keywordprg=pman " Use pman for manual pages
|
||||
|
||||
" }}} Settings
|
||||
|
||||
" {{{ Command mappings
|
||||
nnoremap <silent> <plug>PIVphpDocSingle :call PhpDocSingle()<CR>
|
||||
vnoremap <silent> <plug>PIVphpDocRange :call PhpDocRange()<CR>
|
||||
vnoremap <silent> <plug>PIVphpAlign :call PhpAlign()<CR>
|
||||
"inoremap <buffer> <leader>d :call PhpDocSingle()<CR>i
|
||||
|
||||
" Map ; to "add ; to the end of the line, when missing"
|
||||
"noremap <buffer> ; :s/\([^;]\)$/\1;/<cr>
|
||||
|
||||
" Map <ctrl>+p to single line mode documentation (in insert and command mode)
|
||||
"inoremap <buffer> <leader>d :call PhpDocSingle()<CR>i
|
||||
"nnoremap <buffer> <leader>d :call PhpDocSingle()<CR>
|
||||
" Map <ctrl>+p to multi line mode documentation (in visual mode)
|
||||
"vnoremap <buffer> <leader>d :call PhpDocRange()<CR>
|
||||
|
||||
" Map <CTRL>-H to search phpm for the function name currently under the cursor (insert mode only)
|
||||
inoremap <buffer> <C-H> <ESC>:!phpm <C-R>=expand("<cword>")<CR><CR>
|
||||
|
||||
" }}}
|
||||
|
||||
" {{{ Automatic close char mapping
|
||||
if g:PIVAutoClose
|
||||
if g:PIVPearStyle
|
||||
inoremap <buffer> { {<CR>}<C-O>O
|
||||
inoremap <buffer> ( ( )<LEFT><LEFT>
|
||||
else
|
||||
inoremap { {<CR>}<C-O>O
|
||||
inoremap ( ()<LEFT>
|
||||
endif
|
||||
|
||||
inoremap <buffer> [ []<LEFT>
|
||||
inoremap <buffer> " ""<LEFT>
|
||||
inoremap <buffer> ' ''<LEFT>
|
||||
endif
|
||||
" }}} Automatic close char mapping
|
||||
|
||||
|
||||
" {{{ Wrap visual selections with chars
|
||||
|
||||
vnoremap <buffer> ( "zdi(<C-R>z)<ESC>
|
||||
vnoremap <buffer> { "zdi{<C-R>z}<ESC>
|
||||
vnoremap <buffer> [ "zdi[<C-R>z]<ESC>
|
||||
vnoremap <buffer> ' "zdi'<C-R>z'<ESC>
|
||||
" Removed in favor of register addressing
|
||||
" :vnoremap " "zdi"<C-R>z"<ESC>
|
||||
|
||||
" }}} Wrap visual selections with chars
|
||||
|
||||
" {{{ Dictionary completion
|
||||
setlocal dictionary-=$VIMRUNTIME/bundle/PIV/misc/funclist.txt dictionary+=$VIMRUNTIME/bundle/PIV/misc/funclist.txt
|
||||
|
||||
" Use the dictionary completion
|
||||
setlocal complete-=k complete+=k
|
||||
|
||||
" }}} Dictionary completion
|
||||
|
||||
" {{{ Alignment
|
||||
|
||||
func! PhpAlign() range
|
||||
let l:paste = &g:paste
|
||||
let &g:paste = 0
|
||||
|
||||
let l:line = a:firstline
|
||||
let l:endline = a:lastline
|
||||
let l:maxlength = 0
|
||||
while l:line <= l:endline
|
||||
" Skip comment lines
|
||||
if getline (l:line) =~ '^\s*\/\/.*$'
|
||||
let l:line = l:line + 1
|
||||
continue
|
||||
endif
|
||||
" \{-\} matches ungreed *
|
||||
let l:index = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\S\{0,1}=\S\{0,1\}\s.*$', '\1', "")
|
||||
let l:indexlength = strlen (l:index)
|
||||
let l:maxlength = l:indexlength > l:maxlength ? l:indexlength : l:maxlength
|
||||
let l:line = l:line + 1
|
||||
endwhile
|
||||
|
||||
let l:line = a:firstline
|
||||
let l:format = "%s%-" . l:maxlength . "s %s %s"
|
||||
|
||||
while l:line <= l:endline
|
||||
if getline (l:line) =~ '^\s*\/\/.*$'
|
||||
let l:line = l:line + 1
|
||||
continue
|
||||
endif
|
||||
let l:linestart = substitute (getline (l:line), '^\(\s*\).*', '\1', "")
|
||||
let l:linekey = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\1', "")
|
||||
let l:linesep = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\2', "")
|
||||
let l:linevalue = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\3', "")
|
||||
|
||||
let l:newline = printf (l:format, l:linestart, l:linekey, l:linesep, l:linevalue)
|
||||
call setline (l:line, l:newline)
|
||||
let l:line = l:line + 1
|
||||
endwhile
|
||||
let &g:paste = l:paste
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
|
||||
function! s:CreateNMap(target, combo)
|
||||
if !hasmapto(a:target, 'n')
|
||||
exec 'nmap ' . a:combo . ' ' . a:target
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:CreateVMap(target, combo)
|
||||
if !hasmapto(a:target, 'v')
|
||||
exec 'vmap ' . a:combo . ' ' . a:target
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:CreateMaps(target, combo)
|
||||
call s:CreateNMap(a:target,a:combo)
|
||||
call s:CreateVMap(a:target,a:combo)
|
||||
endfunction
|
||||
|
||||
if g:PIVCreateDefaultMappings
|
||||
call s:CreateNMap('<plug>PIVphpDocSingle', ',pd')
|
||||
call s:CreateVMap('<plug>PIVphpDocRange', ',pd')
|
||||
call s:CreateMaps('<plug>PIVphpAlign ', ',pa')
|
||||
endif
|
||||
@@ -1,547 +0,0 @@
|
||||
" PDV (phpDocumentor for Vim)
|
||||
" ===========================
|
||||
"
|
||||
" Version: 1.1.3
|
||||
"
|
||||
" Copyright 2005 by Tobias Schlitt <toby@php.net>
|
||||
" Inspired by phpDoc script for Vim by Vidyut Luther (http://www.phpcult.com/).
|
||||
"
|
||||
|
||||
" modified by kevin olson (acidjazz@gmail.com) - 03/19/2009
|
||||
" - added folding support
|
||||
"
|
||||
" Provided under the GPL (http://www.gnu.org/copyleft/gpl.html).
|
||||
"
|
||||
" This script provides functions to generate phpDocumentor conform
|
||||
" documentation blocks for your PHP code. The script currently
|
||||
" documents:
|
||||
"
|
||||
" - Classes
|
||||
" - Methods/Functions
|
||||
" - Attributes
|
||||
"
|
||||
" All of those supporting all PHP 4 and 5 syntax elements.
|
||||
"
|
||||
" Beside that it allows you to define default values for phpDocumentor tags
|
||||
" like @version (I use $id$ here), @author, @license and so on.
|
||||
"
|
||||
" For function/method parameters and attributes, the script tries to guess the
|
||||
" type as good as possible from PHP5 type hints or default values (array, bool,
|
||||
" int, string...).
|
||||
"
|
||||
" You can use this script by mapping the function PhpDoc() to any
|
||||
" key combination. Hit this on the line where the element to document
|
||||
" resides and the doc block will be created directly above that line.
|
||||
"
|
||||
" Installation
|
||||
" ============
|
||||
"
|
||||
" For example include into your .vimrc:
|
||||
"
|
||||
" source ~/.vim/php-doc.vim
|
||||
" imap <C-o> :set paste<CR>:call PhpDoc()<CR>:set nopaste<CR>i
|
||||
"
|
||||
" This includes the script and maps the combination <ctrl>+o (only in
|
||||
" insert mode) to the doc function.
|
||||
"
|
||||
" Changelog
|
||||
" =========
|
||||
"
|
||||
" Version 1.0.0
|
||||
" -------------
|
||||
"
|
||||
" * Created the initial version of this script while playing around with VIM
|
||||
" scripting the first time and trying to fix Vidyut's solution, which
|
||||
" resulted in a complete rewrite.
|
||||
"
|
||||
" Version 1.0.1
|
||||
" -------------
|
||||
" * Fixed issues when using tabs instead of spaces.
|
||||
" * Fixed some parsing bugs when using a different coding style.
|
||||
" * Fixed bug with call-by-reference parameters.
|
||||
" * ATTENTION: This version already has code for the next version 1.1.0,
|
||||
" which is propably not working!
|
||||
"
|
||||
" Version 1.1.0 (preview)
|
||||
" -------------
|
||||
" * Added foldmarker generation.
|
||||
"
|
||||
|
||||
" Version 1.1.2
|
||||
" -------------
|
||||
" * Completed foldmarker commenting for functions
|
||||
"
|
||||
|
||||
|
||||
|
||||
if has ("user_commands")
|
||||
|
||||
" {{{ Globals
|
||||
|
||||
" After phpDoc standard
|
||||
let g:pdv_cfg_CommentHead = "/**"
|
||||
let g:pdv_cfg_Comment1 = " * "
|
||||
let g:pdv_cfg_Commentn = " * "
|
||||
let g:pdv_cfg_CommentTail = " */"
|
||||
let g:pdv_cfg_CommentEnd = "/* }}} */"
|
||||
let g:pdv_cfg_CommentSingle = "//"
|
||||
|
||||
" Default values
|
||||
let g:pdv_cfg_Type = "mixed"
|
||||
" let g:pdv_cfg_Package = "Framework"
|
||||
let g:pdv_cfg_Package = "Webdav"
|
||||
let g:pdv_cfg_Version = "//autogen//"
|
||||
let g:pdv_cfg_Author = ""
|
||||
let g:pdv_cfg_Copyright = "Copyright (c) 2010 All rights reserved."
|
||||
let g:pdv_cfg_License = "PHP Version 3.0 {@link http://www.php.net/license/3_0.txt}"
|
||||
|
||||
let g:pdv_cfg_ReturnVal = "void"
|
||||
|
||||
" Whether to create @uses tags for implementation of interfaces and inheritance
|
||||
let g:pdv_cfg_Uses = 1
|
||||
|
||||
" Options
|
||||
" :set paste before documenting (1|0)? Recommended.
|
||||
let g:pdv_cfg_paste = 1
|
||||
|
||||
" Whether for PHP5 code PHP4 tags should be set, like @access,... (1|0)?
|
||||
let g:pdv_cfg_php4always = 1
|
||||
|
||||
" Whether to guess scopes after PEAR coding standards:
|
||||
" $_foo/_bar() == <private|protected> (1|0)?
|
||||
let g:pdv_cfg_php4guess = 1
|
||||
|
||||
" If you selected 1 for the last value, this scope identifier will be used for
|
||||
" the identifiers having an _ in the first place.
|
||||
let g:pdv_cfg_php4guessval = "protected"
|
||||
|
||||
"
|
||||
" Regular expressions
|
||||
"
|
||||
|
||||
let g:pdv_re_comment = ' *\*/ *'
|
||||
|
||||
" (private|protected|public)
|
||||
let g:pdv_re_scope = '\(private\|protected\|public\)'
|
||||
" (static)
|
||||
let g:pdv_re_static = '\(static\)'
|
||||
" (abstract)
|
||||
let g:pdv_re_abstract = '\(abstract\)'
|
||||
" (final)
|
||||
let g:pdv_re_final = '\(final\)'
|
||||
|
||||
" [:space:]*(private|protected|public|static|abstract)*[:space:]+[:identifier:]+\([:params:]\)
|
||||
let g:pdv_re_func = '^\s*\([a-zA-Z ]*\)function\s\+\([^ (]\+\)\s*(\s*\(.*\)\s*)\s*[{;]\?$'
|
||||
let g:pdv_re_funcend = '^\s*}$'
|
||||
" [:typehint:]*[:space:]*$[:identifier]\([:space:]*=[:space:]*[:value:]\)?
|
||||
let g:pdv_re_param = ' *\([^ &]*\) *&\?\$\([A-Za-z_][A-Za-z0-9_]*\) *=\? *\(.*\)\?$'
|
||||
|
||||
" [:space:]*(private|protected|public\)[:space:]*$[:identifier:]+\([:space:]*=[:space:]*[:value:]+\)*;
|
||||
let g:pdv_re_attribute = '^\s*\(\(private\|public\|protected\|var\|static\)\+\)\s*\$\([^ ;=]\+\)[ =]*\(.*\);\?$'
|
||||
|
||||
" [:spacce:]*(abstract|final|)[:space:]*(class|interface)+[:space:]+\(extends ([:identifier:])\)?[:space:]*\(implements ([:identifier:][, ]*)+\)?
|
||||
let g:pdv_re_class = '^\s*\([a-zA-Z]*\)\s*\(interface\|class\)\s*\([^ ]\+\)\s*\(extends\)\?\s*\([a-zA-Z0-9]*\)\?\s*\(implements*\)\? *\([a-zA-Z0-9_ ,]*\)\?.*$'
|
||||
|
||||
let g:pdv_re_array = "^array *(.*"
|
||||
let g:pdv_re_float = '^[0-9.]\+'
|
||||
let g:pdv_re_int = '^[0-9]\+$'
|
||||
let g:pdv_re_string = "['\"].*"
|
||||
let g:pdv_re_bool = "[true false]"
|
||||
|
||||
let g:pdv_re_indent = '^\s*'
|
||||
|
||||
" Shortcuts for editing the text:
|
||||
let g:pdv_cfg_BOL = "norm! o"
|
||||
let g:pdv_cfg_EOL = ""
|
||||
|
||||
" }}}
|
||||
|
||||
" {{{ PhpDocSingle()
|
||||
" Document a single line of code ( does not check if doc block already exists )
|
||||
|
||||
func! PhpDocSingle()
|
||||
let l:endline = line(".") + 1
|
||||
call PhpDoc()
|
||||
exe "norm! " . l:endline . "G$"
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocRange()
|
||||
" Documents a whole range of code lines ( does not add defualt doc block to
|
||||
" unknown types of lines ). Skips elements where a docblock is already
|
||||
" present.
|
||||
func! PhpDocRange() range
|
||||
let l:line = a:firstline
|
||||
let l:endLine = a:lastline
|
||||
let l:elementName = ""
|
||||
while l:line <= l:endLine
|
||||
" TODO: Replace regex check for existing doc with check more lines
|
||||
" above...
|
||||
if (getline(l:line) =~ g:pdv_re_func || getline(l:line) =~ g:pdv_re_attribute || getline(l:line) =~ g:pdv_re_class) && getline(l:line - 1) !~ g:pdv_re_comment
|
||||
let l:docLines = 0
|
||||
" Ensure we are on the correct line to run PhpDoc()
|
||||
exe "norm! " . l:line . "G$"
|
||||
" No matter what, this returns the element name
|
||||
let l:elementName = PhpDoc()
|
||||
let l:endLine = l:endLine + (line(".") - l:line) + 1
|
||||
let l:line = line(".") + 1
|
||||
endif
|
||||
let l:line = l:line + 1
|
||||
endwhile
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocFold()
|
||||
|
||||
" func! PhpDocFold(name)
|
||||
" let l:startline = line(".")
|
||||
" let l:currentLine = l:startLine
|
||||
" let l:commentHead = escape(g:pdv_cfg_CommentHead, "*.");
|
||||
" let l:txtBOL = g:pdv_cfg_BOL . matchstr(l:name, '^\s*')
|
||||
" " Search above for comment start
|
||||
" while (l:currentLine > 1)
|
||||
" if (matchstr(l:commentHead, getline(l:currentLine)))
|
||||
" break;
|
||||
" endif
|
||||
" let l:currentLine = l:currentLine + 1
|
||||
" endwhile
|
||||
" " Goto 1 line above and open a newline
|
||||
" exe "norm! " . (l:currentLine - 1) . "Go\<ESC>"
|
||||
" " Write the fold comment
|
||||
" exe l:txtBOL . g:pdv_cfg_CommentSingle . " {"."{{ " . a:name . g:pdv_cfg_EOL
|
||||
" " Add another newline below that
|
||||
" exe "norm! o\<ESC>"
|
||||
" " Search for our comment line
|
||||
" let l:currentLine = line(".")
|
||||
" while (l:currentLine <= line("$"))
|
||||
" " HERE!!!!
|
||||
" endwhile
|
||||
"
|
||||
"
|
||||
" endfunc
|
||||
|
||||
|
||||
" }}}
|
||||
|
||||
" {{{ PhpDoc()
|
||||
|
||||
func! PhpDoc()
|
||||
" Needed for my .vimrc: Switch off all other enhancements while generating docs
|
||||
let l:paste = &g:paste
|
||||
let &g:paste = g:pdv_cfg_paste == 1 ? 1 : &g:paste
|
||||
|
||||
let l:line = getline(".")
|
||||
let l:result = ""
|
||||
|
||||
if l:line =~ g:pdv_re_func
|
||||
let l:result = PhpDocFunc()
|
||||
|
||||
elseif l:line =~ g:pdv_re_funcend
|
||||
let l:result = PhpDocFuncEnd()
|
||||
|
||||
elseif l:line =~ g:pdv_re_attribute
|
||||
let l:result = PhpDocVar()
|
||||
|
||||
elseif l:line =~ g:pdv_re_class
|
||||
let l:result = PhpDocClass()
|
||||
|
||||
else
|
||||
let l:result = PhpDocDefault()
|
||||
|
||||
endif
|
||||
|
||||
" if g:pdv_cfg_folds == 1
|
||||
" PhpDocFolds(l:result)
|
||||
" endif
|
||||
|
||||
let &g:paste = l:paste
|
||||
|
||||
return l:result
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
|
||||
" {{{ PhpDocFuncEnd()
|
||||
func! PhpDocFuncEnd()
|
||||
|
||||
call append(line('.'), matchstr(getline('.'), '^\s*') . g:pdv_cfg_CommentEnd)
|
||||
endfunc
|
||||
" }}}
|
||||
" {{{ PhpDocFuncEndAuto()
|
||||
func! PhpDocFuncEndAuto()
|
||||
|
||||
|
||||
call search('{')
|
||||
call searchpair('{', '', '}')
|
||||
call append(line('.'), matchstr(getline('.'), '^\s*') . g:pdv_cfg_CommentEnd)
|
||||
|
||||
endfunc
|
||||
" }}}
|
||||
|
||||
" {{{ PhpDocFunc()
|
||||
|
||||
func! PhpDocFunc()
|
||||
" Line for the comment to begin
|
||||
let commentline = line (".") - 1
|
||||
|
||||
let l:name = substitute (getline ("."), '^\(.*\)\/\/.*$', '\1', "")
|
||||
|
||||
"exe g:pdv_cfg_BOL . "DEBUG:" . name. g:pdv_cfg_EOL
|
||||
|
||||
" First some things to make it more easy for us:
|
||||
" tab -> space && space+ -> space
|
||||
" let l:name = substitute (l:name, '\t', ' ', "")
|
||||
" Orphan. We're now using \s everywhere...
|
||||
|
||||
" Now we have to split DECL in three parts:
|
||||
" \[(skopemodifier\)]\(funcname\)\(parameters\)
|
||||
let l:indent = matchstr(l:name, g:pdv_re_indent)
|
||||
|
||||
let l:modifier = substitute (l:name, g:pdv_re_func, '\1', "g")
|
||||
let l:funcname = substitute (l:name, g:pdv_re_func, '\2', "g")
|
||||
let l:parameters = substitute (l:name, g:pdv_re_func, '\3', "g") . ","
|
||||
let l:params = substitute (l:name, g:pdv_re_func, '\3', "g")
|
||||
let l:sparams = substitute (l:params, '[$ ]', '', "g")
|
||||
let l:scope = PhpDocScope(l:modifier, l:funcname)
|
||||
let l:static = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_static) : ""
|
||||
let l:abstract = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_abstract) : ""
|
||||
let l:final = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_final) : ""
|
||||
|
||||
exe "norm! " . commentline . "G$"
|
||||
|
||||
" Local indent
|
||||
let l:txtBOL = g:pdv_cfg_BOL . l:indent
|
||||
|
||||
exec l:txtBOL . "/* " . l:scope ." ". funcname . "(" . l:params . ") {{" . "{ */ " . g:pdv_cfg_EOL
|
||||
|
||||
exe l:txtBOL . g:pdv_cfg_CommentHead . g:pdv_cfg_EOL
|
||||
" added folding
|
||||
exe l:txtBOL . g:pdv_cfg_Comment1 . funcname . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . g:pdv_cfg_EOL
|
||||
|
||||
while (l:parameters != ",") && (l:parameters != "")
|
||||
" Save 1st parameter
|
||||
let _p = substitute (l:parameters, '\([^,]*\) *, *\(.*\)', '\1', "")
|
||||
" Remove this one from list
|
||||
let l:parameters = substitute (l:parameters, '\([^,]*\) *, *\(.*\)', '\2', "")
|
||||
" PHP5 type hint?
|
||||
let l:paramtype = substitute (_p, g:pdv_re_param, '\1', "")
|
||||
" Parameter name
|
||||
let l:paramname = substitute (_p, g:pdv_re_param, '\2', "")
|
||||
" Parameter default
|
||||
let l:paramdefault = substitute (_p, g:pdv_re_param, '\3', "")
|
||||
|
||||
if l:paramtype == ""
|
||||
let l:paramtype = PhpDocType(l:paramdefault)
|
||||
endif
|
||||
|
||||
if l:paramtype != ""
|
||||
let l:paramtype = " " . l:paramtype
|
||||
endif
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@param" . l:paramtype . " $" . l:paramname . " " . g:pdv_cfg_EOL
|
||||
endwhile
|
||||
|
||||
if l:static != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@static" . g:pdv_cfg_EOL
|
||||
endif
|
||||
if l:abstract != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@abstract" . g:pdv_cfg_EOL
|
||||
endif
|
||||
if l:final != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@final" . g:pdv_cfg_EOL
|
||||
endif
|
||||
if l:scope != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@access " . l:scope . g:pdv_cfg_EOL
|
||||
endif
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@return " . g:pdv_cfg_ReturnVal . g:pdv_cfg_EOL
|
||||
|
||||
" Close the comment block.
|
||||
exe l:txtBOL . g:pdv_cfg_CommentTail . g:pdv_cfg_EOL
|
||||
|
||||
return l:modifier ." ". l:funcname . PhpDocFuncEndAuto()
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocVar()
|
||||
|
||||
func! PhpDocVar()
|
||||
" Line for the comment to begin
|
||||
let commentline = line (".") - 1
|
||||
|
||||
let l:name = substitute (getline ("."), '^\(.*\)\/\/.*$', '\1', "")
|
||||
|
||||
" Now we have to split DECL in three parts:
|
||||
" \[(skopemodifier\)]\(funcname\)\(parameters\)
|
||||
" let l:name = substitute (l:name, '\t', ' ', "")
|
||||
" Orphan. We're now using \s everywhere...
|
||||
|
||||
let l:indent = matchstr(l:name, g:pdv_re_indent)
|
||||
|
||||
let l:modifier = substitute (l:name, g:pdv_re_attribute, '\1', "g")
|
||||
let l:varname = substitute (l:name, g:pdv_re_attribute, '\3', "g")
|
||||
let l:default = substitute (l:name, g:pdv_re_attribute, '\4', "g")
|
||||
let l:scope = PhpDocScope(l:modifier, l:varname)
|
||||
|
||||
let l:static = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_static) : ""
|
||||
|
||||
let l:type = PhpDocType(l:default)
|
||||
|
||||
exe "norm! " . commentline . "G$"
|
||||
|
||||
" Local indent
|
||||
let l:txtBOL = g:pdv_cfg_BOL . l:indent
|
||||
|
||||
exe l:txtBOL . g:pdv_cfg_CommentHead . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Comment1 . l:varname . " " . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . g:pdv_cfg_EOL
|
||||
if l:static != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@static" . g:pdv_cfg_EOL
|
||||
endif
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@var " . l:type . g:pdv_cfg_EOL
|
||||
if l:scope != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@access " . l:scope . g:pdv_cfg_EOL
|
||||
endif
|
||||
|
||||
" Close the comment block.
|
||||
exe l:txtBOL . g:pdv_cfg_CommentTail . g:pdv_cfg_EOL
|
||||
return l:modifier ." ". l:varname
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocClass()
|
||||
|
||||
func! PhpDocClass()
|
||||
" Line for the comment to begin
|
||||
let commentline = line (".") - 1
|
||||
|
||||
let l:name = substitute (getline ("."), '^\(.*\)\/\/.*$', '\1', "")
|
||||
|
||||
"exe g:pdv_cfg_BOL . "DEBUG:" . name. g:pdv_cfg_EOL
|
||||
|
||||
" First some things to make it more easy for us:
|
||||
" tab -> space && space+ -> space
|
||||
" let l:name = substitute (l:name, '\t', ' ', "")
|
||||
" Orphan. We're now using \s everywhere...
|
||||
|
||||
" Now we have to split DECL in three parts:
|
||||
" \[(skopemodifier\)]\(classname\)\(parameters\)
|
||||
let l:indent = matchstr(l:name, g:pdv_re_indent)
|
||||
|
||||
let l:modifier = substitute (l:name, g:pdv_re_class, '\1', "g")
|
||||
let l:classname = substitute (l:name, g:pdv_re_class, '\3', "g")
|
||||
let l:extends = g:pdv_cfg_Uses == 1 ? substitute (l:name, g:pdv_re_class, '\5', "g") : ""
|
||||
let l:interfaces = g:pdv_cfg_Uses == 1 ? substitute (l:name, g:pdv_re_class, '\7', "g") . "," : ""
|
||||
|
||||
let l:abstract = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_abstract) : ""
|
||||
let l:final = g:pdv_cfg_php4always == 1 ? matchstr(l:modifier, g:pdv_re_final) : ""
|
||||
|
||||
exe "norm! " . commentline . "G$"
|
||||
|
||||
" Local indent
|
||||
let l:txtBOL = g:pdv_cfg_BOL . l:indent
|
||||
|
||||
exe l:txtBOL . g:pdv_cfg_CommentHead . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Comment1 . l:classname . " " . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . g:pdv_cfg_EOL
|
||||
if l:extends != "" && l:extends != "implements"
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@uses " . l:extends . g:pdv_cfg_EOL
|
||||
endif
|
||||
|
||||
while (l:interfaces != ",") && (l:interfaces != "")
|
||||
" Save 1st parameter
|
||||
let interface = substitute (l:interfaces, '\([^, ]*\) *, *\(.*\)', '\1', "")
|
||||
" Remove this one from list
|
||||
let l:interfaces = substitute (l:interfaces, '\([^, ]*\) *, *\(.*\)', '\2', "")
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@uses " . l:interface . g:pdv_cfg_EOL
|
||||
endwhile
|
||||
|
||||
if l:abstract != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@abstract" . g:pdv_cfg_EOL
|
||||
endif
|
||||
if l:final != ""
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@final" . g:pdv_cfg_EOL
|
||||
endif
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@package " . g:pdv_cfg_Package . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@version " . g:pdv_cfg_Version . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@copyright " . g:pdv_cfg_Copyright . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@author " . g:pdv_cfg_Author g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . "@license " . g:pdv_cfg_License . g:pdv_cfg_EOL
|
||||
|
||||
" Close the comment block.
|
||||
exe l:txtBOL . g:pdv_cfg_CommentTail . g:pdv_cfg_EOL
|
||||
return l:modifier ." ". l:classname
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocScope()
|
||||
|
||||
func! PhpDocScope(modifiers, identifier)
|
||||
" exe g:pdv_cfg_BOL . DEBUG: . a:modifiers . g:pdv_cfg_EOL
|
||||
let l:scope = ""
|
||||
if matchstr (a:modifiers, g:pdv_re_scope) != ""
|
||||
if g:pdv_cfg_php4always == 1
|
||||
let l:scope = matchstr (a:modifiers, g:pdv_re_scope)
|
||||
else
|
||||
let l:scope = "x"
|
||||
endif
|
||||
endif
|
||||
if l:scope =~ "^\s*$" && g:pdv_cfg_php4guess
|
||||
if a:identifier[0] == "_"
|
||||
let l:scope = g:pdv_cfg_php4guessval
|
||||
else
|
||||
let l:scope = "public"
|
||||
endif
|
||||
endif
|
||||
return l:scope != "x" ? l:scope : ""
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocType()
|
||||
|
||||
func! PhpDocType(typeString)
|
||||
let l:type = ""
|
||||
if a:typeString =~ g:pdv_re_array
|
||||
let l:type = "array"
|
||||
endif
|
||||
if a:typeString =~ g:pdv_re_float
|
||||
let l:type = "float"
|
||||
endif
|
||||
if a:typeString =~ g:pdv_re_int
|
||||
let l:type = "int"
|
||||
endif
|
||||
if a:typeString =~ g:pdv_re_string
|
||||
let l:type = "string"
|
||||
endif
|
||||
if a:typeString =~ g:pdv_re_bool
|
||||
let l:type = "bool"
|
||||
endif
|
||||
if l:type == ""
|
||||
let l:type = g:pdv_cfg_Type
|
||||
endif
|
||||
return l:type
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
" {{{ PhpDocDefault()
|
||||
|
||||
func! PhpDocDefault()
|
||||
" Line for the comment to begin
|
||||
let commentline = line (".") - 1
|
||||
|
||||
let l:indent = matchstr(getline("."), '^\ *')
|
||||
|
||||
exe "norm! " . commentline . "G$"
|
||||
|
||||
" Local indent
|
||||
let l:txtBOL = g:pdv_cfg_BOL . indent
|
||||
|
||||
exe l:txtBOL . g:pdv_cfg_CommentHead . g:pdv_cfg_EOL
|
||||
exe l:txtBOL . g:pdv_cfg_Commentn . " " . g:pdv_cfg_EOL
|
||||
|
||||
" Close the comment block.
|
||||
exe l:txtBOL . g:pdv_cfg_CommentTail . g:pdv_cfg_EOL
|
||||
endfunc
|
||||
|
||||
" }}}
|
||||
|
||||
endif " user_commands
|
||||
13
ftplugin/tex_latexSuite.vim
Normal file
13
ftplugin/tex_latexSuite.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
" LaTeX filetype
|
||||
" Language: LaTeX (ft=tex)
|
||||
" Maintainer: Srinath Avadhanula
|
||||
" Email: srinath@fastmail.fm
|
||||
|
||||
if !exists('s:initLatexSuite')
|
||||
let s:initLatexSuite = 1
|
||||
exec 'so '.fnameescape(expand('<sfile>:p:h').'/latex-suite/main.vim')
|
||||
|
||||
silent! do LatexSuite User LatexSuiteInitPost
|
||||
endif
|
||||
|
||||
silent! do LatexSuite User LatexSuiteFileType
|
||||
344
indent/html.vim
Normal file
344
indent/html.vim
Normal file
@@ -0,0 +1,344 @@
|
||||
" Description: HTML5 and inline SVG indenter
|
||||
" Changed By: HT de Beer <H.T.de.Beer@gmail.com>
|
||||
" Last Change: 20121013
|
||||
" Added the SVG elements to the list of indenting element. SVG elements
|
||||
" taken from http://www.w3.org/TR/SVG/eltindex.html
|
||||
"
|
||||
" Description: html5 (and html4) indenter
|
||||
" Changed By: Brian Gershon <brian.five@gmail.com>
|
||||
" Last Change: 30 Jan 2011
|
||||
"
|
||||
" 1. Started with vim72 html indent file authored by Johannes Zellner (below)
|
||||
" 2. Added html5 list as described here:
|
||||
" http://stackoverflow.com/questions/3232518/how-to-update-vim-to-color-code-new-html-elements
|
||||
" 3. Added this to a fork of https://github.com/othree/html5.vim
|
||||
" which already provides nice html5 syntax highlighting.
|
||||
"
|
||||
" Description: html indenter
|
||||
" Author: Johannes Zellner <johannes@zellner.org>
|
||||
" Last Change: Mo, 05 Jun 2006 22:32:41 CEST
|
||||
" Restoring 'cpo' and 'ic' added by Bram 2006 May 5
|
||||
" Globals:
|
||||
" let g:html_indent_tags = 'html\|p\|time'
|
||||
" let g:html_exclude_tags = ['html', 'style', 'script', 'body']
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
runtime! indent/javascript.vim
|
||||
let s:jsindent = &indentexpr
|
||||
unlet b:did_indent
|
||||
runtime! indent/css.vim
|
||||
let s:cssindent = &indentexpr
|
||||
let b:did_indent = 1
|
||||
|
||||
" [-- local settings (must come before aborting the script) --]
|
||||
setlocal indentexpr=HtmlIndentGet(v:lnum)
|
||||
setlocal indentkeys=o,O,*<Return>,<>>,{,}
|
||||
|
||||
|
||||
let s:tags = []
|
||||
|
||||
" [-- <ELEMENT ? - - ...> --]
|
||||
call add(s:tags, 'a')
|
||||
call add(s:tags, 'abbr')
|
||||
call add(s:tags, 'acronym')
|
||||
call add(s:tags, 'address')
|
||||
call add(s:tags, 'b')
|
||||
call add(s:tags, 'bdo')
|
||||
call add(s:tags, 'big')
|
||||
call add(s:tags, 'blockquote')
|
||||
call add(s:tags, 'button')
|
||||
call add(s:tags, 'caption')
|
||||
call add(s:tags, 'center')
|
||||
call add(s:tags, 'cite')
|
||||
call add(s:tags, 'code')
|
||||
call add(s:tags, 'colgroup')
|
||||
call add(s:tags, 'del')
|
||||
call add(s:tags, 'dfn')
|
||||
call add(s:tags, 'dir')
|
||||
call add(s:tags, 'div')
|
||||
call add(s:tags, 'dl')
|
||||
call add(s:tags, 'em')
|
||||
call add(s:tags, 'fieldset')
|
||||
call add(s:tags, 'font')
|
||||
call add(s:tags, 'form')
|
||||
call add(s:tags, 'frameset')
|
||||
call add(s:tags, 'h1')
|
||||
call add(s:tags, 'h2')
|
||||
call add(s:tags, 'h3')
|
||||
call add(s:tags, 'h4')
|
||||
call add(s:tags, 'h5')
|
||||
call add(s:tags, 'h6')
|
||||
call add(s:tags, 'i')
|
||||
call add(s:tags, 'iframe')
|
||||
call add(s:tags, 'ins')
|
||||
call add(s:tags, 'kbd')
|
||||
call add(s:tags, 'label')
|
||||
call add(s:tags, 'legend')
|
||||
call add(s:tags, 'li')
|
||||
call add(s:tags, 'map')
|
||||
call add(s:tags, 'menu')
|
||||
call add(s:tags, 'noframes')
|
||||
call add(s:tags, 'noscript')
|
||||
call add(s:tags, 'object')
|
||||
call add(s:tags, 'ol')
|
||||
call add(s:tags, 'optgroup')
|
||||
call add(s:tags, 'p')
|
||||
" call add(s:tags, 'pre')
|
||||
call add(s:tags, 'q')
|
||||
call add(s:tags, 's')
|
||||
call add(s:tags, 'samp')
|
||||
call add(s:tags, 'script')
|
||||
call add(s:tags, 'select')
|
||||
call add(s:tags, 'small')
|
||||
call add(s:tags, 'span')
|
||||
call add(s:tags, 'strong')
|
||||
call add(s:tags, 'style')
|
||||
call add(s:tags, 'sub')
|
||||
call add(s:tags, 'sup')
|
||||
call add(s:tags, 'table')
|
||||
call add(s:tags, 'textarea')
|
||||
call add(s:tags, 'title')
|
||||
call add(s:tags, 'tt')
|
||||
call add(s:tags, 'u')
|
||||
call add(s:tags, 'ul')
|
||||
call add(s:tags, 'var')
|
||||
|
||||
" New HTML 5 elements
|
||||
call add(s:tags, 'article')
|
||||
call add(s:tags, 'aside')
|
||||
call add(s:tags, 'audio')
|
||||
call add(s:tags, 'canvas')
|
||||
call add(s:tags, 'datalist')
|
||||
call add(s:tags, 'details')
|
||||
call add(s:tags, 'figcaption')
|
||||
call add(s:tags, 'figure')
|
||||
call add(s:tags, 'footer')
|
||||
call add(s:tags, 'header')
|
||||
call add(s:tags, 'hgroup')
|
||||
call add(s:tags, 'main')
|
||||
call add(s:tags, 'mark')
|
||||
call add(s:tags, 'meter')
|
||||
call add(s:tags, 'nav')
|
||||
call add(s:tags, 'output')
|
||||
call add(s:tags, 'progress')
|
||||
call add(s:tags, 'rp')
|
||||
call add(s:tags, 'rt')
|
||||
call add(s:tags, 'ruby')
|
||||
call add(s:tags, 'section')
|
||||
call add(s:tags, 'summary')
|
||||
call add(s:tags, 'template')
|
||||
call add(s:tags, 'time')
|
||||
call add(s:tags, 'video')
|
||||
call add(s:tags, 'bdi')
|
||||
call add(s:tags, 'data')
|
||||
|
||||
" Common inline used SVG elements
|
||||
call add(s:tags, 'clipPath')
|
||||
call add(s:tags, 'defs')
|
||||
call add(s:tags, 'desc')
|
||||
call add(s:tags, 'filter')
|
||||
call add(s:tags, 'foreignObject')
|
||||
call add(s:tags, 'g')
|
||||
call add(s:tags, 'linearGradient')
|
||||
call add(s:tags, 'marker')
|
||||
call add(s:tags, 'mask')
|
||||
call add(s:tags, 'pattern')
|
||||
call add(s:tags, 'radialGradient')
|
||||
call add(s:tags, 'svg')
|
||||
call add(s:tags, 'switch')
|
||||
call add(s:tags, 'symbol')
|
||||
call add(s:tags, 'text')
|
||||
call add(s:tags, 'textPath')
|
||||
call add(s:tags, 'tref')
|
||||
call add(s:tags, 'tspan')
|
||||
|
||||
call add(s:tags, 'html')
|
||||
call add(s:tags, 'head')
|
||||
call add(s:tags, 'body')
|
||||
|
||||
call add(s:tags, 'thead')
|
||||
call add(s:tags, 'tbody')
|
||||
call add(s:tags, 'tfoot')
|
||||
call add(s:tags, 'tr')
|
||||
call add(s:tags, 'th')
|
||||
call add(s:tags, 'td')
|
||||
|
||||
if exists('g:html_exclude_tags')
|
||||
for tag in g:html_exclude_tags
|
||||
call remove(s:tags, index(s:tags, tag))
|
||||
endfor
|
||||
endif
|
||||
let s:html_indent_tags = join(s:tags, '\|')
|
||||
if exists('g:html_indent_tags')
|
||||
let s:html_indent_tags = s:html_indent_tags.'\|'.g:html_indent_tags
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" [-- count indent-increasing tags of line a:lnum --]
|
||||
fun! <SID>HtmlIndentOpen(lnum, pattern)
|
||||
let s = substitute('x'.getline(a:lnum),
|
||||
\ '.\{-}\(\(<\)\('.a:pattern.'\)\>\)', "\1", 'g')
|
||||
let s = substitute(s, "[^\1].*$", '', '')
|
||||
return strlen(s)
|
||||
endfun
|
||||
|
||||
" [-- count indent-decreasing tags of line a:lnum --]
|
||||
fun! <SID>HtmlIndentClose(lnum, pattern)
|
||||
let s = substitute('x'.getline(a:lnum),
|
||||
\ '.\{-}\(\(<\)/\('.a:pattern.'\)\>>\)', "\1", 'g')
|
||||
let s = substitute(s, "[^\1].*$", '', '')
|
||||
return strlen(s)
|
||||
endfun
|
||||
|
||||
" [-- count indent-increasing '{' of (java|css) line a:lnum --]
|
||||
fun! <SID>HtmlIndentOpenAlt(lnum)
|
||||
return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
|
||||
endfun
|
||||
|
||||
" [-- count indent-decreasing '}' of (java|css) line a:lnum --]
|
||||
fun! <SID>HtmlIndentCloseAlt(lnum)
|
||||
return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
|
||||
endfun
|
||||
|
||||
" [-- return the sum of indents respecting the syntax of a:lnum --]
|
||||
fun! <SID>HtmlIndentSum(lnum, style)
|
||||
if a:style == match(getline(a:lnum), '^\s*</')
|
||||
if a:style == match(getline(a:lnum), '^\s*</\<\('.s:html_indent_tags.'\)\>')
|
||||
let open = <SID>HtmlIndentOpen(a:lnum, s:html_indent_tags)
|
||||
let close = <SID>HtmlIndentClose(a:lnum, s:html_indent_tags)
|
||||
if 0 != open || 0 != close
|
||||
return open - close
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if '' != &syntax &&
|
||||
\ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
|
||||
\ synIDattr(synID(a:lnum, strlen(getline(a:lnum)), 1), 'name')
|
||||
\ =~ '\(css\|java\).*'
|
||||
if a:style == match(getline(a:lnum), '^\s*}')
|
||||
return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
|
||||
endif
|
||||
endif
|
||||
return 0
|
||||
endfun
|
||||
|
||||
fun! HtmlIndentGet(lnum)
|
||||
" Find a non-empty line above the current line.
|
||||
let lnum = prevnonblank(a:lnum - 1)
|
||||
|
||||
" Hit the start of the file, use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
|
||||
let restore_ic = &ic
|
||||
setlocal ic " ignore case
|
||||
|
||||
" [-- special handling for <pre>: no indenting --]
|
||||
if getline(a:lnum) =~ '\c</pre>'
|
||||
\ || 0 < searchpair('\c<pre>', '', '\c</pre>', 'nWb')
|
||||
\ || 0 < searchpair('\c<pre>', '', '\c</pre>', 'nW')
|
||||
" we're in a line with </pre> or inside <pre> ... </pre>
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
return -1
|
||||
endif
|
||||
|
||||
" [-- special handling for <javascript>: use cindent --]
|
||||
let js = '<script'
|
||||
let jse = '</script>'
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" by Tye Zdrojewski <zdro@yahoo.com>, 05 Jun 2006
|
||||
" ZDR: This needs to be an AND (we are 'after the start of the pair' AND
|
||||
" we are 'before the end of the pair'). Otherwise, indentation
|
||||
" before the start of the script block will be affected; the end of
|
||||
" the pair will still match if we are before the beginning of the
|
||||
" pair.
|
||||
"
|
||||
if 0 < searchpair(js, '', jse, 'nWb')
|
||||
\ && 0 < searchpair(js, '', jse, 'nW')
|
||||
" we're inside javascript
|
||||
if getline(searchpair(js, '', '</script>', 'nWb')) !~ '<script [^>]*type=["'']\?text\/\(html\|template\)'
|
||||
\ && getline(lnum) !~ js && getline(a:lnum) !~ jse
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
if s:jsindent == ''
|
||||
return cindent(a:lnum)
|
||||
else
|
||||
execute 'let ind = ' . s:jsindent
|
||||
return ind
|
||||
endif
|
||||
endif
|
||||
if getline(a:lnum) =~ jse
|
||||
return indent(searchpair(js, '', jse, 'nWb'))
|
||||
endif
|
||||
endif
|
||||
|
||||
let css = '<style'
|
||||
let csse = '</style>'
|
||||
if 0 < searchpair(css, '', csse, 'nWb')
|
||||
\ && 0 < searchpair(css, '', csse, 'nW')
|
||||
" we're inside style
|
||||
if getline(lnum) !~ css && getline(a:lnum) !~ csse
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
if s:cssindent == ''
|
||||
return cindent(a:lnum)
|
||||
else
|
||||
execute 'let ind = ' . s:cssindent
|
||||
return ind
|
||||
endif
|
||||
endif
|
||||
if getline(a:lnum) =~ csse
|
||||
return indent(searchpair(css, '', csse, 'nWb'))
|
||||
endif
|
||||
endif
|
||||
|
||||
if getline(lnum) =~ '\c</pre>'
|
||||
" line before the current line a:lnum contains
|
||||
" a closing </pre>. --> search for line before
|
||||
" starting <pre> to restore the indent.
|
||||
let preline = prevnonblank(search('\c<pre>', 'bW') - 1)
|
||||
if preline > 0
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
|
||||
if 0 == match(getline(a:lnum), '^\s*</')
|
||||
return indent(preline) - (1*&sw)
|
||||
else
|
||||
return indent(preline)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
let ind = <SID>HtmlIndentSum(lnum, -1)
|
||||
let ind = ind + <SID>HtmlIndentSum(a:lnum, 0)
|
||||
|
||||
" Fix for conditional comment
|
||||
if getline(a:lnum) =~ '\c<!--.*<\(html\|body\).*-->'
|
||||
let ind = ind - 1
|
||||
endif
|
||||
|
||||
if restore_ic == 0
|
||||
setlocal noic
|
||||
endif
|
||||
|
||||
return indent(lnum) + (&sw * ind)
|
||||
endfun
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" [-- EOF <runtime>/indent/html.vim --]
|
||||
70
indent/jade.vim
Normal file
70
indent/jade.vim
Normal file
@@ -0,0 +1,70 @@
|
||||
" Vim indent file
|
||||
" Language: Jade
|
||||
" Maintainer: Joshua Borton
|
||||
" Credits: Tim Pope (vim-jade)
|
||||
" Last Change: 2010 Sep 22
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
unlet! b:did_indent
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal autoindent
|
||||
setlocal indentexpr=GetJadeIndent()
|
||||
setlocal indentkeys=o,O,*<Return>,},],0),!^F
|
||||
|
||||
" Only define the function once.
|
||||
if exists("*GetJadeIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:attributes = '\%((.\{-\})\)'
|
||||
let s:tag = '\([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*'
|
||||
|
||||
if !exists('g:jade_self_closing_tags')
|
||||
let g:jade_self_closing_tags = 'meta|link|img|hr|br|input'
|
||||
endif
|
||||
|
||||
setlocal formatoptions+=r
|
||||
setlocal comments+=n:\|
|
||||
|
||||
function! GetJadeIndent()
|
||||
let lnum = prevnonblank(v:lnum-1)
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
let line = substitute(getline(lnum),'\s\+$','','')
|
||||
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
|
||||
let lastcol = strlen(line)
|
||||
let line = substitute(line,'^\s\+','','')
|
||||
let indent = indent(lnum)
|
||||
let cindent = indent(v:lnum)
|
||||
let increase = indent + &sw
|
||||
if indent == indent(lnum)
|
||||
let indent = cindent <= indent ? -1 : increase
|
||||
endif
|
||||
|
||||
let group = synIDattr(synID(lnum,lastcol,1),'name')
|
||||
|
||||
if line =~ '^!!!'
|
||||
return indent
|
||||
elseif line =~ '^/\%(\[[^]]*\]\)\=$'
|
||||
return increase
|
||||
elseif line =~ '^\%(if\|else\|unless\|for\|each\|block\|mixin\|append\|case\|when\)'
|
||||
return increase
|
||||
elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$'
|
||||
return increase
|
||||
elseif line == '-#'
|
||||
return increase
|
||||
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>'
|
||||
return indent
|
||||
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter)$'
|
||||
return increase
|
||||
else
|
||||
return indent
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" vim:set sw=2:
|
||||
1269
indent/php.vim
1269
indent/php.vim
File diff suppressed because it is too large
Load Diff
262
indent/tex.vim
Normal file
262
indent/tex.vim
Normal file
@@ -0,0 +1,262 @@
|
||||
" Vim indent file
|
||||
" Language: LaTeX
|
||||
" Maintainer: Johannes Tanzler <johannes.tanzler@gmail.com>
|
||||
" Version: 0.5
|
||||
" Created: Sat, 16 Feb 2002 16:50:19 +0100
|
||||
" Last Change: Mar, 27 Jun 2011 11:46:35 +0200
|
||||
" Last Update: 18th feb 2002, by LH :
|
||||
" (*) better support for the option
|
||||
" (*) use some regex instead of several '||'.
|
||||
" Oct 9th, 2003, by JT:
|
||||
" (*) don't change indentation of lines starting with '%'
|
||||
" 2005/06/15, Moshe Kaminsky <kaminsky@math.huji.ac.il>
|
||||
" (*) New variables:
|
||||
" g:tex_items, g:tex_itemize_env, g:tex_noindent_env
|
||||
" 2011/3/6, by Zhou Yi Chao <broken.zhou@gmail.com>
|
||||
" (*) Don't change indentation of lines starting with '%'
|
||||
" I don't see any code with '%' and it doesn't work properly
|
||||
" so I add some code.
|
||||
" (*) New features: Add smartindent-like indent
|
||||
" for "{}" and "[]".
|
||||
" (*) New variables: g:tex_indent_brace
|
||||
"
|
||||
" Options: {{{
|
||||
"
|
||||
" To set the following options (ok, currently it's just one), add a line like
|
||||
" let g:tex_indent_items = 1
|
||||
" to your ~/.vimrc.
|
||||
"
|
||||
" * g:tex_indent_brace
|
||||
"
|
||||
" If this variable is unset or non-zero, it will use smartindent-like style
|
||||
" for "{}" and "[]"
|
||||
"
|
||||
" * g:tex_indent_items
|
||||
"
|
||||
" If this variable is set, item-environments are indented like Emacs does
|
||||
" it, i.e., continuation lines are indented with a shiftwidth.
|
||||
"
|
||||
" NOTE: I've already set the variable below; delete the corresponding line
|
||||
" if you don't like this behaviour.
|
||||
"
|
||||
" Per default, it is unset.
|
||||
"
|
||||
" set unset
|
||||
" ----------------------------------------------------------------
|
||||
" \begin{itemize} \begin{itemize}
|
||||
" \item blablabla \item blablabla
|
||||
" bla bla bla bla bla bla
|
||||
" \item blablabla \item blablabla
|
||||
" bla bla bla bla bla bla
|
||||
" \end{itemize} \end{itemize}
|
||||
"
|
||||
"
|
||||
" * g:tex_items
|
||||
"
|
||||
" A list of tokens to be considered as commands for the beginning of an item
|
||||
" command. The tokens should be separated with '\|'. The initial '\' should
|
||||
" be escaped. The default is '\\bibitem\|\\item'.
|
||||
"
|
||||
" * g:tex_itemize_env
|
||||
"
|
||||
" A list of environment names, separated with '\|', where the items (item
|
||||
" commands matching g:tex_items) may appear. The default is
|
||||
" 'itemize\|description\|enumerate\|thebibliography'.
|
||||
"
|
||||
" * g:tex_noindent_env
|
||||
"
|
||||
" A list of environment names. separated with '\|', where no indentation is
|
||||
" required. The default is 'document\|verbatim\|comment\|lstlisting'.
|
||||
"
|
||||
" }}}
|
||||
"
|
||||
" License: {{{
|
||||
" Copyright (c) 2002-2011 Johannes Tanzler <johannes.tanzler@gmail.com>
|
||||
|
||||
" Permission is hereby granted, free of charge, to any person obtaining
|
||||
" a copy of this software and associated documentation files (the
|
||||
" "Software"), to deal in the Software without restriction, including
|
||||
" without limitation the rights to use, copy, modify, merge, publish,
|
||||
" distribute, sublicense, and/or sell copies of the Software, and to
|
||||
" permit persons to whom the Software is furnished to do so, subject to
|
||||
" the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be included
|
||||
" in all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
" }}}
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
" Delete the next line to avoid the special indention of items
|
||||
if !exists("g:tex_indent_items")
|
||||
let g:tex_indent_items = 1
|
||||
endif
|
||||
if !exists("g:tex_indent_brace")
|
||||
let g:tex_indent_brace = 1
|
||||
endif
|
||||
if g:tex_indent_items
|
||||
if !exists("g:tex_itemize_env")
|
||||
let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography'
|
||||
endif
|
||||
if !exists('g:tex_items')
|
||||
let g:tex_items = '\\bibitem\|\\item'
|
||||
endif
|
||||
else
|
||||
let g:tex_items = ''
|
||||
endif
|
||||
|
||||
if !exists("g:tex_noindent_env")
|
||||
let g:tex_noindent_env = 'document\|verbatim\|comment\|lstlisting'
|
||||
endif
|
||||
|
||||
setlocal autoindent
|
||||
setlocal nosmartindent
|
||||
setlocal indentexpr=GetTeXIndent()
|
||||
exec 'setlocal indentkeys+=},]' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g')
|
||||
let g:tex_items = '^\s*' . g:tex_items
|
||||
|
||||
|
||||
" Only define the function once
|
||||
if exists("*GetTeXIndent") | finish
|
||||
endif
|
||||
|
||||
|
||||
|
||||
function GetTeXIndent()
|
||||
|
||||
" Find a non-blank line above the current line.
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
|
||||
" New code for comments: Comments is not what we need.
|
||||
while lnum != 0
|
||||
if getline(lnum) !~ '^\s*%'
|
||||
break
|
||||
endif
|
||||
let lnum = prevnonblank(lnum - 1)
|
||||
endwhile
|
||||
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0 | return 0
|
||||
endif
|
||||
|
||||
let ind = indent(lnum)
|
||||
let line = getline(lnum) " last line
|
||||
let cline = getline(v:lnum) " current line
|
||||
|
||||
" New code for comment: retain the indent of current line
|
||||
if cline =~ '^\s*%'
|
||||
return indent(v:lnum)
|
||||
endif
|
||||
|
||||
" Add a 'shiftwidth' after beginning of environments.
|
||||
" Don't add it for environments identified by
|
||||
" g:tex_noindent_env
|
||||
" LH modification : \begin does not always start a line
|
||||
let current_regexp = '\\begin'
|
||||
while 1
|
||||
let match_list = matchlist(line, current_regexp.'\s*{\(.*\)}')
|
||||
if (empty(match_list))
|
||||
break
|
||||
endif
|
||||
let environment_type = get(match_list, 1)
|
||||
if environment_type !~ g:tex_noindent_env
|
||||
let ind = ind + &sw
|
||||
|
||||
if g:tex_indent_items == 1
|
||||
" Add another sw for item-environments
|
||||
if line =~ g:tex_itemize_env
|
||||
let ind = ind + &sw
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
" Make the regexp match the following begin
|
||||
let current_regexp = current_regexp.'.*\\begin'
|
||||
endwhile
|
||||
|
||||
" Subtract a 'shiftwidth' when an environment ends
|
||||
if cline =~ '^\s*\\end' && cline !~ g:tex_noindent_env
|
||||
|
||||
if g:tex_indent_items == 1
|
||||
" Remove another sw for item-environments
|
||||
if cline =~ g:tex_itemize_env
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
endif
|
||||
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
" Subtract a 'shiftwidth' when an environment ended
|
||||
" the previous line but the shiftwidth wasn't
|
||||
" applied because it didn't begin the line
|
||||
let current_regexp = '\\end'
|
||||
while 1
|
||||
let match_list = matchlist(line, current_regexp.'\s*{\(.*\)}')
|
||||
if (empty(match_list))
|
||||
break
|
||||
endif
|
||||
let environment_type = get(match_list, 1)
|
||||
if environment_type !~ g:tex_noindent_env
|
||||
\ && (current_regexp != '\\end' || line !~ '^\s*\\end')
|
||||
" If the end begin the line, the shift width has already
|
||||
" been subtracted at the previous line
|
||||
|
||||
let ind = ind - &sw
|
||||
|
||||
if g:tex_indent_items == 1
|
||||
" Add another sw for item-environments
|
||||
if line =~ g:tex_itemize_env
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
" Make the regexp match the following end
|
||||
let current_regexp = current_regexp.'.*\\end'
|
||||
endwhile
|
||||
|
||||
if g:tex_indent_brace
|
||||
" Add a 'shiftwidth' after a "{" or "[" while there are not "}" and "]"
|
||||
" after them. \m for magic
|
||||
if line =~ '\m\(\(\[[^\]]*\)\|\({[^}]*\)\)$'
|
||||
let ind = ind + &sw
|
||||
endif
|
||||
" Remove a 'shiftwidth' after a "}" or "]" while there are not "{" and "["
|
||||
" before them. \m for magic
|
||||
if cline =~ '\m^\(\([^[]*\]\)\|\([^{]*}\)\)'
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
" Special treatment for 'item'
|
||||
" ----------------------------
|
||||
|
||||
if g:tex_indent_items
|
||||
|
||||
" '\item' or '\bibitem' itself:
|
||||
if cline =~ g:tex_items
|
||||
let ind = ind - &sw
|
||||
endif
|
||||
|
||||
" lines following to '\item' are intented once again:
|
||||
if line =~ g:tex_items
|
||||
let ind = ind + &sw
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
" vim: set sw=4 textwidth=78:
|
||||
8
spec/build_spec.rb
Normal file
8
spec/build_spec.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
$plugin_path = File.expand_path('../..', __FILE__)
|
||||
|
||||
describe 'build script' do
|
||||
it 'should run and return success code' do
|
||||
Dir.chdir($plugin_path)
|
||||
expect(system('bash ./build')).to be_true
|
||||
end
|
||||
end
|
||||
14
spec/loading_spec.rb
Normal file
14
spec/loading_spec.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "My Vim plugin" do
|
||||
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
|
||||
|
||||
languages.each do |lang|
|
||||
it "should parse .#{lang} file" do
|
||||
write_file "test.#{lang}", ""
|
||||
vim.edit "test.#{lang}"
|
||||
vim.insert "sample"
|
||||
vim.write
|
||||
end
|
||||
end
|
||||
end
|
||||
22
spec/spec_helper.rb
Executable file
22
spec/spec_helper.rb
Executable file
@@ -0,0 +1,22 @@
|
||||
require 'vimrunner'
|
||||
require 'vimrunner/rspec'
|
||||
|
||||
$plugin_path = File.expand_path('../..', __FILE__)
|
||||
|
||||
Vimrunner::RSpec.configure do |config|
|
||||
# Use a single Vim instance for the test suite. Set to false to use an
|
||||
# instance per test (slower, but can be easier to manage).
|
||||
config.reuse_server = true
|
||||
|
||||
# Decide how to start a Vim instance. In this block, an instance should be
|
||||
# spawned and set up with anything project-specific.
|
||||
config.start_vim do
|
||||
vim = Vimrunner.start
|
||||
|
||||
# Setup your plugin in the Vim instance
|
||||
vim.add_plugin($plugin_path)
|
||||
|
||||
# The returned value is the Client available in the tests.
|
||||
vim
|
||||
end
|
||||
end
|
||||
462
syntax/c.vim
Normal file
462
syntax/c.vim
Normal file
@@ -0,0 +1,462 @@
|
||||
" Vim syntax file
|
||||
" Language: C
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2013 Jun 06
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" A bunch of useful C keywords
|
||||
syn keyword cStatement goto break return continue asm
|
||||
syn keyword cLabel case default
|
||||
syn keyword cConditional if else switch
|
||||
syn keyword cRepeat while for do
|
||||
|
||||
syn keyword cTodo contained TODO FIXME XXX
|
||||
|
||||
" It's easy to accidentally add a space after a backslash that was intended
|
||||
" for line continuation. Some compilers allow it, which makes it
|
||||
" unpredictable and should be avoided.
|
||||
syn match cBadContinuation contained "\\\s\+$"
|
||||
|
||||
" cCommentGroup allows adding matches for special things in comments
|
||||
syn cluster cCommentGroup contains=cTodo,cBadContinuation
|
||||
|
||||
" String and Character constants
|
||||
" Highlight special characters (those which have a backslash) differently
|
||||
syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
|
||||
if !exists("c_no_utf")
|
||||
syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
|
||||
endif
|
||||
if exists("c_no_cformat")
|
||||
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend
|
||||
" cCppString: same as cString, but ends at end of line
|
||||
if !exists("cpp_no_cpp11") " ISO C++11
|
||||
syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
|
||||
else
|
||||
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
|
||||
endif
|
||||
syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
|
||||
syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
|
||||
else
|
||||
if !exists("c_no_c99") " ISO C99
|
||||
syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
||||
else
|
||||
syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
|
||||
endif
|
||||
syn match cFormat display "%%" contained
|
||||
syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
|
||||
" cCppString: same as cString, but ends at end of line
|
||||
syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
|
||||
endif
|
||||
|
||||
syn match cCharacter "L\='[^\\]'"
|
||||
syn match cCharacter "L'[^']*'" contains=cSpecial
|
||||
if exists("c_gnu")
|
||||
syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'"
|
||||
syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
|
||||
else
|
||||
syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'"
|
||||
syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
|
||||
endif
|
||||
syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
|
||||
syn match cSpecialCharacter display "'\\x\x\{1,2}'"
|
||||
syn match cSpecialCharacter display "L'\\x\x\+'"
|
||||
|
||||
if !exists("c_no_c11") " ISO C11
|
||||
if exists("c_no_cformat")
|
||||
syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend
|
||||
else
|
||||
syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
|
||||
endif
|
||||
syn match cCharacter "[Uu]'[^\\]'"
|
||||
syn match cCharacter "[Uu]'[^']*'" contains=cSpecial
|
||||
if exists("c_gnu")
|
||||
syn match cSpecialError "[Uu]'\\[^'\"?\\abefnrtv]'"
|
||||
syn match cSpecialCharacter "[Uu]'\\['\"?\\abefnrtv]'"
|
||||
else
|
||||
syn match cSpecialError "[Uu]'\\[^'\"?\\abfnrtv]'"
|
||||
syn match cSpecialCharacter "[Uu]'\\['\"?\\abfnrtv]'"
|
||||
endif
|
||||
syn match cSpecialCharacter display "[Uu]'\\\o\{1,3}'"
|
||||
syn match cSpecialCharacter display "[Uu]'\\x\x\+'"
|
||||
endif
|
||||
|
||||
"when wanted, highlight trailing white space
|
||||
if exists("c_space_errors")
|
||||
if !exists("c_no_trail_space_error")
|
||||
syn match cSpaceError display excludenl "\s\+$"
|
||||
endif
|
||||
if !exists("c_no_tab_space_error")
|
||||
syn match cSpaceError display " \+\t"me=e-1
|
||||
endif
|
||||
endif
|
||||
|
||||
" This should be before cErrInParen to avoid problems with #define ({ xxx })
|
||||
if exists("c_curly_error")
|
||||
syn match cCurlyError "}"
|
||||
syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
|
||||
else
|
||||
syn region cBlock start="{" end="}" transparent fold
|
||||
endif
|
||||
|
||||
"catch errors caused by wrong parenthesis and brackets
|
||||
" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
|
||||
" But avoid matching <::.
|
||||
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
||||
if exists("c_no_curly_error")
|
||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||
syn match cParenError display ")"
|
||||
syn match cErrInParen display contained "^^<%\|^%>"
|
||||
else
|
||||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||
syn match cParenError display ")"
|
||||
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
||||
endif
|
||||
elseif exists("c_no_bracket_error")
|
||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||
syn match cParenError display ")"
|
||||
syn match cErrInParen display contained "<%\|%>"
|
||||
else
|
||||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||
syn match cParenError display ")"
|
||||
syn match cErrInParen display contained "[{}]\|<%\|%>"
|
||||
endif
|
||||
else
|
||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
||||
syn match cParenError display "[\])]"
|
||||
syn match cErrInParen display contained "<%\|%>"
|
||||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
|
||||
else
|
||||
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
||||
syn match cParenError display "[\])]"
|
||||
syn match cErrInParen display contained "[\]{}]\|<%\|%>"
|
||||
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
|
||||
endif
|
||||
" cCppBracket: same as cParen but ends at end-of-line; used in cDefine
|
||||
syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
|
||||
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
||||
endif
|
||||
|
||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
||||
syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
|
||||
endif
|
||||
|
||||
"integer number, or floating point number without a dot and with "f".
|
||||
syn case ignore
|
||||
syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
|
||||
" Same, but without octal error (for comments)
|
||||
syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
|
||||
syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
|
||||
"hex number
|
||||
syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
|
||||
" Flag the first zero of an octal number as something special
|
||||
syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
|
||||
syn match cOctalZero display contained "\<0"
|
||||
syn match cFloat display contained "\d\+f"
|
||||
"floating point number, with dot, optional exponent
|
||||
syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
|
||||
"floating point number, starting with a dot, optional exponent
|
||||
syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
|
||||
"floating point number, without dot, with exponent
|
||||
syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
|
||||
if !exists("c_no_c99")
|
||||
"hexadecimal floating point number, optional leading digits, with dot, with exponent
|
||||
syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
|
||||
"hexadecimal floating point number, with leading digits, optional dot, with exponent
|
||||
syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
|
||||
endif
|
||||
|
||||
" flag an octal number with wrong digits
|
||||
syn match cOctalError display contained "0\o*[89]\d*"
|
||||
syn case match
|
||||
|
||||
if exists("c_comment_strings")
|
||||
" A comment can contain cString, cCharacter and cNumber.
|
||||
" But a "*/" inside a cString in a cComment DOES end the comment! So we
|
||||
" need to use a special type of cString: cCommentString, which also ends on
|
||||
" "*/", and sees a "*" at the start of the line as comment again.
|
||||
" Unfortunately this doesn't very well work for // type of comments :-(
|
||||
syn match cCommentSkip contained "^\s*\*\($\|\s\+\)"
|
||||
syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
|
||||
syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
|
||||
syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
|
||||
if exists("c_no_comment_fold")
|
||||
" Use "extend" here to have preprocessor lines not terminate halfway a
|
||||
" comment.
|
||||
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend
|
||||
else
|
||||
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend
|
||||
endif
|
||||
else
|
||||
syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
|
||||
if exists("c_no_comment_fold")
|
||||
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend
|
||||
else
|
||||
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend
|
||||
endif
|
||||
endif
|
||||
" keep a // comment separately, it terminates a preproc. conditional
|
||||
syn match cCommentError display "\*/"
|
||||
syn match cCommentStartError display "/\*"me=e-1 contained
|
||||
|
||||
syn keyword cOperator sizeof
|
||||
if exists("c_gnu")
|
||||
syn keyword cStatement __asm__
|
||||
syn keyword cOperator typeof __real__ __imag__
|
||||
endif
|
||||
syn keyword cType int long short char void
|
||||
syn keyword cType signed unsigned float double
|
||||
if !exists("c_no_ansi") || exists("c_ansi_typedefs")
|
||||
syn keyword cType size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t
|
||||
syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
|
||||
syn keyword cType mbstate_t wctrans_t wint_t wctype_t
|
||||
endif
|
||||
if !exists("c_no_c99") " ISO C99
|
||||
syn keyword cType _Bool bool _Complex complex _Imaginary imaginary
|
||||
syn keyword cType int8_t int16_t int32_t int64_t
|
||||
syn keyword cType uint8_t uint16_t uint32_t uint64_t
|
||||
syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
|
||||
syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
|
||||
syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
|
||||
syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
|
||||
syn keyword cType intptr_t uintptr_t
|
||||
syn keyword cType intmax_t uintmax_t
|
||||
endif
|
||||
if exists("c_gnu")
|
||||
syn keyword cType __label__ __complex__ __volatile__
|
||||
endif
|
||||
|
||||
syn keyword cStructure struct union enum typedef
|
||||
syn keyword cStorageClass static register auto volatile extern const
|
||||
if exists("c_gnu")
|
||||
syn keyword cStorageClass inline __attribute__
|
||||
endif
|
||||
if !exists("c_no_c99")
|
||||
syn keyword cStorageClass inline restrict
|
||||
endif
|
||||
if !exists("c_no_c11")
|
||||
syn keyword cStorageClass _Alignas alignas
|
||||
syn keyword cOperator _Alignof alignof
|
||||
syn keyword cStorageClass _Atomic
|
||||
syn keyword cOperator _Generic
|
||||
syn keyword cStorageClass _Noreturn noreturn
|
||||
syn keyword cOperator _Static_assert static_assert
|
||||
syn keyword cStorageClass _Thread_local thread_local
|
||||
syn keyword cType char16_t char32_t
|
||||
endif
|
||||
|
||||
if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
|
||||
if exists("c_gnu")
|
||||
syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
|
||||
endif
|
||||
syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
|
||||
syn keyword cConstant __STDC_VERSION__
|
||||
syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
|
||||
syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
|
||||
syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
|
||||
syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
|
||||
syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
|
||||
syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
|
||||
if !exists("c_no_c99")
|
||||
syn keyword cConstant __func__
|
||||
syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
|
||||
syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
|
||||
syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
|
||||
syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
|
||||
syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
|
||||
syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
|
||||
syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
|
||||
syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
|
||||
syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
|
||||
syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
|
||||
syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
|
||||
syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
|
||||
syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
|
||||
syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
|
||||
endif
|
||||
syn keyword cConstant FLT_RADIX FLT_ROUNDS
|
||||
syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
|
||||
syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
|
||||
syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
|
||||
syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
|
||||
syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
|
||||
syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
|
||||
syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
|
||||
syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
|
||||
syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
|
||||
syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
|
||||
syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
|
||||
syn keyword cConstant LC_NUMERIC LC_TIME
|
||||
syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
|
||||
syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
|
||||
" Add POSIX signals as well...
|
||||
syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
|
||||
syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
|
||||
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
|
||||
syn keyword cConstant SIGUSR1 SIGUSR2
|
||||
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
|
||||
syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
|
||||
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
|
||||
syn keyword cConstant TMP_MAX stderr stdin stdout
|
||||
syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
|
||||
" Add POSIX errors as well
|
||||
syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
|
||||
syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
|
||||
syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
|
||||
syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
|
||||
syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
|
||||
syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
|
||||
syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
|
||||
" math.h
|
||||
syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
|
||||
syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
|
||||
endif
|
||||
if !exists("c_no_c99") " ISO C99
|
||||
syn keyword cConstant true false
|
||||
endif
|
||||
|
||||
" Accept %: for # (C99)
|
||||
syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
|
||||
syn match cPreConditMatch display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
|
||||
if !exists("c_no_if0")
|
||||
syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
|
||||
syn region cCppOutWrapper start="^\s*\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
|
||||
syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
|
||||
if !exists("c_no_if0_fold")
|
||||
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
|
||||
else
|
||||
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
|
||||
endif
|
||||
syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
|
||||
syn region cCppInWrapper start="^\s*\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
|
||||
syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
|
||||
if !exists("c_no_if0_fold")
|
||||
syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
|
||||
else
|
||||
syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
|
||||
endif
|
||||
syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
|
||||
syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
|
||||
syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
|
||||
endif
|
||||
syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match cIncluded display contained "<[^>]*>"
|
||||
syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
|
||||
"syn match cLineSkip "\\$"
|
||||
syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock
|
||||
syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
|
||||
syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
|
||||
|
||||
" Highlight User Labels
|
||||
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
||||
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
||||
endif
|
||||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
||||
syn cluster cLabelGroup contains=cUserLabel
|
||||
syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup
|
||||
syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup
|
||||
syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||
|
||||
syn match cUserLabel display "\I\i*" contained
|
||||
|
||||
" Avoid recognizing most bitfields as labels
|
||||
syn match cBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
|
||||
syn match cBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
|
||||
|
||||
if exists("c_minlines")
|
||||
let b:c_minlines = c_minlines
|
||||
else
|
||||
if !exists("c_no_if0")
|
||||
let b:c_minlines = 50 " #if 0 constructs can be long
|
||||
else
|
||||
let b:c_minlines = 15 " mostly for () constructs
|
||||
endif
|
||||
endif
|
||||
if exists("c_curly_error")
|
||||
syn sync fromstart
|
||||
else
|
||||
exec "syn sync ccomment cComment minlines=" . b:c_minlines
|
||||
endif
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only used when an item doesn't have highlighting yet
|
||||
hi def link cFormat cSpecial
|
||||
hi def link cCppString cString
|
||||
hi def link cCommentL cComment
|
||||
hi def link cCommentStart cComment
|
||||
hi def link cLabel Label
|
||||
hi def link cUserLabel Label
|
||||
hi def link cConditional Conditional
|
||||
hi def link cRepeat Repeat
|
||||
hi def link cCharacter Character
|
||||
hi def link cSpecialCharacter cSpecial
|
||||
hi def link cNumber Number
|
||||
hi def link cOctal Number
|
||||
hi def link cOctalZero PreProc " link this to Error if you want
|
||||
hi def link cFloat Float
|
||||
hi def link cOctalError cError
|
||||
hi def link cParenError cError
|
||||
hi def link cErrInParen cError
|
||||
hi def link cErrInBracket cError
|
||||
hi def link cCommentError cError
|
||||
hi def link cCommentStartError cError
|
||||
hi def link cSpaceError cError
|
||||
hi def link cSpecialError cError
|
||||
hi def link cCurlyError cError
|
||||
hi def link cOperator Operator
|
||||
hi def link cStructure Structure
|
||||
hi def link cStorageClass StorageClass
|
||||
hi def link cInclude Include
|
||||
hi def link cPreProc PreProc
|
||||
hi def link cDefine Macro
|
||||
hi def link cIncluded cString
|
||||
hi def link cError Error
|
||||
hi def link cStatement Statement
|
||||
hi def link cCppInWrapper cCppOutWrapper
|
||||
hi def link cCppOutWrapper cPreCondit
|
||||
hi def link cPreConditMatch cPreCondit
|
||||
hi def link cPreCondit PreCondit
|
||||
hi def link cType Type
|
||||
hi def link cConstant Constant
|
||||
hi def link cCommentString cString
|
||||
hi def link cComment2String cString
|
||||
hi def link cCommentSkip cComment
|
||||
hi def link cString String
|
||||
hi def link cComment Comment
|
||||
hi def link cSpecial SpecialChar
|
||||
hi def link cTodo Todo
|
||||
hi def link cBadContinuation Error
|
||||
hi def link cCppOutSkip cCppOutIf2
|
||||
hi def link cCppInElse2 cCppOutIf2
|
||||
hi def link cCppOutIf2 cCppOut2 " Old syntax group for #if 0 body
|
||||
hi def link cCppOut2 cCppOut " Old syntax group for #if of #if 0
|
||||
hi def link cCppOut Comment
|
||||
|
||||
let b:current_syntax = "c"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
" vim: ts=8
|
||||
70
syntax/cpp.vim
Normal file
70
syntax/cpp.vim
Normal file
@@ -0,0 +1,70 @@
|
||||
" Vim syntax file
|
||||
" Language: C++
|
||||
" Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim)
|
||||
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
|
||||
" Last Change: 2012 Jun 14
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Read the C syntax to start with
|
||||
if version < 600
|
||||
so <sfile>:p:h/c.vim
|
||||
else
|
||||
runtime! syntax/c.vim
|
||||
unlet b:current_syntax
|
||||
endif
|
||||
|
||||
" C++ extensions
|
||||
syn keyword cppStatement new delete this friend using
|
||||
syn keyword cppAccess public protected private
|
||||
syn keyword cppType inline virtual explicit export bool wchar_t
|
||||
syn keyword cppExceptions throw try catch
|
||||
syn keyword cppOperator operator typeid
|
||||
syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
|
||||
syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
|
||||
syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
|
||||
syn keyword cppStorageClass mutable
|
||||
syn keyword cppStructure class typename template namespace
|
||||
syn keyword cppBoolean true false
|
||||
|
||||
" C++ 11 extensions
|
||||
if !exists("cpp_no_cpp11")
|
||||
syn keyword cppType override final
|
||||
syn keyword cppExceptions noexcept
|
||||
syn keyword cppStorageClass constexpr decltype
|
||||
syn keyword cppConstant nullptr
|
||||
endif
|
||||
|
||||
" The minimum and maximum operators in GNU C++
|
||||
syn match cppMinMax "[<>]?"
|
||||
|
||||
" Default highlighting
|
||||
if version >= 508 || !exists("did_cpp_syntax_inits")
|
||||
if version < 508
|
||||
let did_cpp_syntax_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
HiLink cppAccess cppStatement
|
||||
HiLink cppCast cppStatement
|
||||
HiLink cppExceptions Exception
|
||||
HiLink cppOperator Operator
|
||||
HiLink cppStatement Statement
|
||||
HiLink cppType Type
|
||||
HiLink cppStorageClass StorageClass
|
||||
HiLink cppStructure Structure
|
||||
HiLink cppBoolean Boolean
|
||||
HiLink cppConstant Constant
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "cpp"
|
||||
|
||||
" vim: ts=8
|
||||
108
syntax/html.vim
Normal file
108
syntax/html.vim
Normal file
@@ -0,0 +1,108 @@
|
||||
" Vim syntax file
|
||||
" Language: HTML (version 5)
|
||||
" Maintainer: Rodrigo Machado <rcmachado@gmail.com>
|
||||
" URL: http://rm.blog.br/vim/syntax/html.vim
|
||||
" Last Change: 2009 Aug 19
|
||||
" License: Public domain
|
||||
" (but let me know if you like :) )
|
||||
"
|
||||
" Note: This file just adds the new tags from HTML 5
|
||||
" and don't replace default html.vim syntax file
|
||||
"
|
||||
" Modified: othree <othree@gmail.com>
|
||||
" Changes: update to Draft 13 January 2011
|
||||
" add complete new attributes
|
||||
" add microdata Attributes
|
||||
" add bdi element
|
||||
" Modified: htdebeer <H.T.de.Beer@gmail.com>
|
||||
" Changes: add common SVG elements and attributes for inline SVG
|
||||
|
||||
" HTML 5 tags
|
||||
syn keyword htmlTagName contained article aside audio canvas command
|
||||
syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer
|
||||
syn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output
|
||||
syn keyword htmlTagName contained progress ruby rt rp section source summary template time track video data
|
||||
syn keyword htmlTagName contained wbr bdi
|
||||
|
||||
" SVG tags
|
||||
" http://www.w3.org/TR/SVG/
|
||||
" as found in http://www.w3.org/TR/SVG/eltindex.html
|
||||
syn keyword htmlTagName contained svg
|
||||
syn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem
|
||||
syn keyword htmlTagName contained animate animateColor animateMotion animateTransform
|
||||
syn keyword htmlTagName contained circle ellipse rect line polyline polygon image path
|
||||
syn keyword htmlTagName contained clipPath color-profile cursor
|
||||
syn keyword htmlTagName contained defs desc g symbol view use switch foreignObject
|
||||
syn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence
|
||||
syn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri
|
||||
syn keyword htmlTagName contained glyph glyphRef hkern
|
||||
syn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop
|
||||
syn keyword htmlTagName contained missing-glyph mpath
|
||||
syn keyword htmlTagName contained text textPath tref tspan vkern
|
||||
|
||||
" HTML 5 arguments
|
||||
" Core Attributes
|
||||
syn keyword htmlArg contained accesskey class contenteditable contextmenu dir
|
||||
syn keyword htmlArg contained draggable hidden id lang spellcheck style tabindex title translate
|
||||
" Event-handler Attributes
|
||||
syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange
|
||||
syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover
|
||||
syn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange
|
||||
syn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata
|
||||
syn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup
|
||||
syn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange
|
||||
syn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate
|
||||
syn keyword htmlArg contained onvolumechange onwaiting
|
||||
" XML Attributes
|
||||
syn keyword htmlArg contained xml:lang xml:space xml:base xmlns
|
||||
" new features
|
||||
" <body>
|
||||
syn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload
|
||||
syn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload
|
||||
" <video>, <audio>, <source>, <track>
|
||||
syn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track
|
||||
" <form>, <input>, <button>
|
||||
syn keyword htmlArg contained form autocomplete autofocus list min max step
|
||||
syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate
|
||||
syn keyword htmlArg contained required placeholder
|
||||
" <command>, <details>, <time>
|
||||
syn keyword htmlArg contained label icon open datetime pubdate
|
||||
" <script>
|
||||
syn keyword htmlArg contained async
|
||||
|
||||
" Custom Data Attributes
|
||||
" http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data
|
||||
syn match htmlArg "\<\(data\(\-[a-z]\+\)\+\)\=\>" contained
|
||||
|
||||
" Microdata
|
||||
" http://dev.w3.org/html5/md/
|
||||
syn keyword htmlArg contained itemid itemscope itemtype itemprop itemref
|
||||
|
||||
" SVG
|
||||
" http://www.w3.org/TR/SVG/
|
||||
" Some common attributes from http://www.w3.org/TR/SVG/attindex.html
|
||||
syn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth
|
||||
syn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by
|
||||
syn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy
|
||||
syn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy
|
||||
syn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired
|
||||
syn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy
|
||||
syn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits
|
||||
syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-y
|
||||
syn keyword htmlArg contained id ideographic in in2 intercept
|
||||
syn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes
|
||||
syn keyword htmlArg contained lang lengthAdjust limitingConeAngle local
|
||||
syn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name
|
||||
syn keyword htmlArg contained numOctaves
|
||||
syn keyword htmlArg contained offset offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness
|
||||
syn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits
|
||||
syn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry
|
||||
syn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage
|
||||
syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type u
|
||||
syn keyword htmlArg contained 1 u2 underline-position underline-thickness unicode unicode-range units-per-em
|
||||
syn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget
|
||||
syn keyword htmlArg contained width widths
|
||||
syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:show xlink:title xlink:type xml:base xml:lang xml:space
|
||||
syn keyword htmlArg contained y y1 y2 yChannelSelector
|
||||
syn keyword htmlArg contained z zoomAndPan
|
||||
syn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode
|
||||
37
syntax/html/aria.vim
Normal file
37
syntax/html/aria.vim
Normal file
@@ -0,0 +1,37 @@
|
||||
" Vim syntax file
|
||||
" Language: WAI-ARIA
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" URL: http://github.com/othree/html5-syntax.vim
|
||||
" Last Change: 2010-09-25
|
||||
" License: MIT
|
||||
" Changes: update to Draft 16 September 2010
|
||||
|
||||
setlocal iskeyword+=-
|
||||
|
||||
" WAI-ARIA States and Properties
|
||||
" http://www.w3.org/TR/wai-aria/states_and_properties
|
||||
syn keyword htmlArg contained role
|
||||
|
||||
" Global States and Properties
|
||||
syn keyword htmlArg contained aria-atomic aria-busy aria-controls aria-describedby
|
||||
syn keyword htmlArg contained aria-disabled aria-dropeffect aria-flowto aria-grabbed
|
||||
syn keyword htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label
|
||||
syn keyword htmlArg contained aria-labelledby aria-live aria-owns aria-relevant
|
||||
|
||||
" Widget Attributes
|
||||
syn keyword htmlArg contained aria-autocomplete aria-checked aria-disabled aria-expanded
|
||||
syn keyword htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label
|
||||
syn keyword htmlArg contained aria-level aria-multiline aria-multiselectable aria-orientation
|
||||
syn keyword htmlArg contained aria-pressed aria-readonly aria-required aria-selected
|
||||
syn keyword htmlArg contained aria-sort aria-valuemax aria-valuemin aria-valuenow aria-valuetext
|
||||
|
||||
" Live Region Attributes
|
||||
syn keyword htmlArg contained aria-atomic aria-busy aria-live aria-relevant
|
||||
|
||||
" Drag-and-Drop attributes
|
||||
syn keyword htmlArg contained aria-dropeffect aria-grabbed
|
||||
|
||||
" Relationship Attributes
|
||||
syn keyword htmlArg contained aria-activedescendant aria-controls aria-describedby aria-flowto
|
||||
syn keyword htmlArg contained aria-labelledby aria-owns aria-posinset aria-setsize
|
||||
|
||||
11
syntax/html/rdfa.vim
Normal file
11
syntax/html/rdfa.vim
Normal file
@@ -0,0 +1,11 @@
|
||||
" Vim syntax file
|
||||
" Language: RDFa
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" URL: http://github.com/othree/html5-syntax.vim
|
||||
" Last Change: 2012-06-08
|
||||
" License: MIT
|
||||
" Changes: update to Rec 07 June 2012
|
||||
|
||||
" RDFa
|
||||
" http://www.w3.org/TR/rdfa-syntax/#s_syntax
|
||||
syn keyword htmlArg contained about content datatype href inlist prefix property rel resource rev src typeof vocab
|
||||
@@ -1,27 +0,0 @@
|
||||
" Vim syntax file
|
||||
" Language: Jinja HTML template
|
||||
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com>
|
||||
" Last Change: 2007 Apr 8
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists("main_syntax")
|
||||
let main_syntax = 'html'
|
||||
endif
|
||||
|
||||
if version < 600
|
||||
so <sfile>:p:h/jinja.vim
|
||||
so <sfile>:p:h/html.vim
|
||||
else
|
||||
runtime! syntax/jinja.vim
|
||||
runtime! syntax/html.vim
|
||||
unlet b:current_syntax
|
||||
endif
|
||||
|
||||
let b:current_syntax = "htmljinja"
|
||||
89
syntax/jade.vim
Normal file
89
syntax/jade.vim
Normal file
@@ -0,0 +1,89 @@
|
||||
" Vim syntax file
|
||||
" Language: Jade
|
||||
" Maintainer: Joshua Borton
|
||||
" Credits: Tim Pope
|
||||
" Filenames: *.jade
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists("main_syntax")
|
||||
let main_syntax = 'jade'
|
||||
endif
|
||||
|
||||
runtime! syntax/html.vim
|
||||
runtime! syntax/html/html5.vim
|
||||
silent! syntax include @htmlCoffeescript syntax/coffee.vim
|
||||
unlet! b:current_syntax
|
||||
silent! syntax include @htmlStylus syntax/stylus.vim
|
||||
unlet! b:current_syntax
|
||||
silent! syntax include @htmlMarkdown syntax/markdown.vim
|
||||
unlet! b:current_syntax
|
||||
|
||||
syn case match
|
||||
|
||||
syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend
|
||||
syn cluster htmlJavascript add=javascriptParenthesisBlock
|
||||
|
||||
syn region jadeJavascript matchgroup=jadeJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
|
||||
syn region jadeJavascript matchgroup=jadeJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
|
||||
syn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment,jadeJavascript
|
||||
syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement
|
||||
syn match jadeTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent
|
||||
syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript
|
||||
syn match jadeComment '\s*\/\/.*$'
|
||||
syn region jadeHtmlComment start="^\z(\s*\)/" end="^\%(\z1\s\|\s*$\)\@!"
|
||||
syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent
|
||||
syn match jadeClassChar "\." contained nextgroup=jadeClass
|
||||
syn match jadeBlockExpansionChar ":\s" contained nextgroup=jadeTag
|
||||
syn match jadeIdChar "#{\@!" contained nextgroup=jadeId
|
||||
syn match jadeClass "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
|
||||
syn match jadeId "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
|
||||
syn region jadeDocType start="^\s*\(!!!\|doctype\)" end="$"
|
||||
" Unless I'm mistaken, syntax/html.vim requires
|
||||
" that the = sign be present for these matches.
|
||||
" This adds the matches back for jade.
|
||||
syn keyword jadeHtmlArg contained href title
|
||||
|
||||
syn match jadePlainChar "\\" contained
|
||||
syn region jadeInterpolation matchgroup=jadeInterpolationDelimiter start="#{" end="}" contains=@htmlJavascript
|
||||
syn match jadeInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
||||
|
||||
syn region jadeJavascriptFilter matchgroup=jadeFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript
|
||||
syn region jadeCoffeescriptFilter matchgroup=jadeFilter start="^\z(\s*\):coffeescript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript
|
||||
syn region jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):markdown\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown
|
||||
syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus
|
||||
syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!"
|
||||
|
||||
syn match jadeScriptConditional "\<\%(if\|else\|unless\|while\|for\|until\|case\|when\|default\)\>[?!]\@!"
|
||||
syn match jadeScriptStatement "\<\%(each\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
|
||||
|
||||
syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag keepend
|
||||
syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag
|
||||
syn region jadeCssBlock start="^\z(\s*\)style" nextgroup=@jadeComponent,jadeError end="^\%(\z1\s\|\s*$\)\@!" contains=@jadeTop,@htmlCss keepend
|
||||
|
||||
syn match jadeError "\$" contained
|
||||
|
||||
hi def link jadePlainChar Special
|
||||
hi def link jadeScriptConditional PreProc
|
||||
hi def link jadeScriptStatement PreProc
|
||||
hi def link jadeHtmlArg htmlArg
|
||||
hi def link jadeAttributeString String
|
||||
hi def link jadeAttributesDelimiter Identifier
|
||||
hi def link jadeIdChar Special
|
||||
hi def link jadeClassChar Special
|
||||
hi def link jadeBlockExpansionChar Special
|
||||
hi def link jadeId Identifier
|
||||
hi def link jadeClass Type
|
||||
hi def link jadeInterpolationDelimiter Delimiter
|
||||
hi def link jadeFilter PreProc
|
||||
hi def link jadeDocType PreProc
|
||||
hi def link jadeComment Comment
|
||||
hi def link jadeHtmlComment jadeComment
|
||||
|
||||
let b:current_syntax = "jade"
|
||||
|
||||
if main_syntax == "jade"
|
||||
unlet main_syntax
|
||||
endif
|
||||
43
syntax/javascript/html5.vim
Normal file
43
syntax/javascript/html5.vim
Normal file
@@ -0,0 +1,43 @@
|
||||
" Vim syntax file
|
||||
" Language: HTML5 New Stuff
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" URL: http://github.com/othree/html5-syntax.vim
|
||||
" Last Change: 2011-05-27
|
||||
" License: MIT
|
||||
" Changes:
|
||||
|
||||
syn keyword javascriptHtmlEvents onabort onblur oncanplay oncanplaythrough onchange
|
||||
syn keyword javascriptHtmlEvents onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover
|
||||
syn keyword javascriptHtmlEvents ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange
|
||||
syn keyword javascriptHtmlEvents onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata
|
||||
syn keyword javascriptHtmlEvents onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup
|
||||
syn keyword javascriptHtmlEvents onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange
|
||||
syn keyword javascriptHtmlEvents onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate
|
||||
syn keyword javascriptHtmlEvents onvolumechange onwaiting
|
||||
|
||||
" <body>
|
||||
syn keyword javascriptHtmlEvents onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload
|
||||
syn keyword javascriptHtmlEvents onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload
|
||||
|
||||
" Media Controller
|
||||
syn keyword javascriptDomElemAttrs buffered seekable duration currentTime paused
|
||||
syn keyword javascriptDomElemAttrs played defaultPlaybackRate playbackRate volume muted
|
||||
syn keyword javascriptDomElemAttrs mediaGroup
|
||||
syn keyword javascriptDomElemFuncs load play pause
|
||||
|
||||
syn keyword javascriptHtmlEvents oncanplay oncanplaythrough ondurationchange onemptied
|
||||
syn keyword javascriptHtmlEvents onloadeddata onloadedmetadata onloadstart onpause onplay onplaying onratechange
|
||||
syn keyword javascriptHtmlEvents ontimeupdate onvolumechange onwaiting
|
||||
|
||||
" <audio>/<video>
|
||||
syn keyword javascriptDomElemAttrs error src currentSrc networkState preload buffered readyState seeking
|
||||
syn keyword javascriptDomElemAttrs currentTime initialTime duration startOffsetTime paused defaultPlaybackRate playbackRate played
|
||||
syn keyword javascriptDomElemAttrs seekable ended autoplay loop controls volume muted defaltMuted audioTracks videoTracks textTracks
|
||||
syn keyword javascriptDomElemFuncs load addTextTrack
|
||||
|
||||
" <video>
|
||||
" syn keyword javascriptDomElemAttrs width height
|
||||
syn keyword javascriptDomElemAttrs videoWidth videoHeight poster
|
||||
|
||||
" drag and drop
|
||||
syn keyword javascriptDomElemAttrs onDragStart onDragEnd onDragEnter onDragLeave onDragOver onDrag onDrop draggable dropzone
|
||||
113
syntax/jinja.vim
113
syntax/jinja.vim
@@ -1,113 +0,0 @@
|
||||
" Vim syntax file
|
||||
" Language: Jinja template
|
||||
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com>
|
||||
" Last Change: 2008 May 9
|
||||
" Version: 1.1
|
||||
"
|
||||
" Known Bugs:
|
||||
" because of odd limitations dicts and the modulo operator
|
||||
" appear wrong in the template.
|
||||
"
|
||||
" Changes:
|
||||
"
|
||||
" 2008 May 9: Added support for Jinja2 changes (new keyword rules)
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syntax case match
|
||||
|
||||
" Jinja template built-in tags and parameters (without filter, macro, is and raw, they
|
||||
" have special threatment)
|
||||
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained and if else in not or recursive as import
|
||||
|
||||
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained is filter skipwhite nextgroup=jinjaFilter
|
||||
syn keyword jinjaStatement containedin=jinjaTagBlock contained macro skipwhite nextgroup=jinjaFunction
|
||||
syn keyword jinjaStatement containedin=jinjaTagBlock contained block skipwhite nextgroup=jinjaBlockName
|
||||
|
||||
" Variable Names
|
||||
syn match jinjaVariable containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
syn keyword jinjaSpecial containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained false true none loop super caller varargs kwargs
|
||||
|
||||
" Filters
|
||||
syn match jinjaOperator "|" containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained nextgroup=jinjaFilter
|
||||
syn match jinjaFilter contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
syn match jinjaFunction contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
syn match jinjaBlockName contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
|
||||
" Jinja template constants
|
||||
syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/"/ skip=/\\"/ end=/"/
|
||||
syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/'/ skip=/\\'/ end=/'/
|
||||
syn match jinjaNumber containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[0-9]\+\(\.[0-9]\+\)\?/
|
||||
|
||||
" Operators
|
||||
syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[+\-*\/<>=!,:]/
|
||||
syn match jinjaPunctuation containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[()\[\]]/
|
||||
syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /\./ nextgroup=jinjaAttribute
|
||||
syn match jinjaAttribute contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
|
||||
" Jinja template tag and variable blocks
|
||||
syn region jinjaNested matchgroup=jinjaOperator start="(" end=")" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
||||
syn region jinjaNested matchgroup=jinjaOperator start="\[" end="\]" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
||||
syn region jinjaNested matchgroup=jinjaOperator start="{" end="}" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained
|
||||
syn region jinjaTagBlock matchgroup=jinjaTagDelim start=/{%-\?/ end=/-\?%}/ skipwhite containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment
|
||||
|
||||
syn region jinjaVarBlock matchgroup=jinjaVarDelim start=/{{-\?/ end=/-\?}}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment
|
||||
|
||||
" Jinja template 'raw' tag
|
||||
syn region jinjaRaw matchgroup=jinjaRawDelim start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString,jinjaComment
|
||||
|
||||
" Jinja comments
|
||||
syn region jinjaComment matchgroup=jinjaCommentDelim start="{#" end="#}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString
|
||||
|
||||
" Block start keywords. A bit tricker. We only highlight at the start of a
|
||||
" tag block and only if the name is not followed by a comma or equals sign
|
||||
" which usually means that we have to deal with an assignment.
|
||||
syn match jinjaStatement containedin=jinjaTagBlock contained skipwhite /\({%-\?\s*\)\@<=\<[a-zA-Z_][a-zA-Z0-9_]*\>\(\s*[,=]\)\@!/
|
||||
|
||||
" and context modifiers
|
||||
syn match jinjaStatement containedin=jinjaTagBlock contained /\<with\(out\)\?\s\+context\>/ skipwhite
|
||||
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||
if version >= 508 || !exists("did_jinja_syn_inits")
|
||||
if version < 508
|
||||
let did_jinja_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink jinjaPunctuation jinjaOperator
|
||||
HiLink jinjaAttribute jinjaVariable
|
||||
HiLink jinjaFunction jinjaFilter
|
||||
|
||||
HiLink jinjaTagDelim jinjaTagBlock
|
||||
HiLink jinjaVarDelim jinjaVarBlock
|
||||
HiLink jinjaCommentDelim jinjaComment
|
||||
HiLink jinjaRawDelim jinja
|
||||
|
||||
HiLink jinjaSpecial Special
|
||||
HiLink jinjaOperator Normal
|
||||
HiLink jinjaRaw Normal
|
||||
HiLink jinjaTagBlock PreProc
|
||||
HiLink jinjaVarBlock PreProc
|
||||
HiLink jinjaStatement Statement
|
||||
HiLink jinjaFilter Function
|
||||
HiLink jinjaBlockName Function
|
||||
HiLink jinjaVariable Identifier
|
||||
HiLink jinjaString Constant
|
||||
HiLink jinjaNumber Constant
|
||||
HiLink jinjaComment Comment
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "jinja"
|
||||
294
syntax/php.vim
294
syntax/php.vim
File diff suppressed because one or more lines are too long
106
syntax/proto.vim
Normal file
106
syntax/proto.vim
Normal file
@@ -0,0 +1,106 @@
|
||||
" Protocol Buffers - Google's data interchange format
|
||||
" Copyright 2008 Google Inc. All rights reserved.
|
||||
" http://code.google.com/p/protobuf/
|
||||
"
|
||||
" Redistribution and use in source and binary forms, with or without
|
||||
" modification, are permitted provided that the following conditions are
|
||||
" met:
|
||||
"
|
||||
" * Redistributions of source code must retain the above copyright
|
||||
" notice, this list of conditions and the following disclaimer.
|
||||
" * Redistributions in binary form must reproduce the above
|
||||
" copyright notice, this list of conditions and the following disclaimer
|
||||
" in the documentation and/or other materials provided with the
|
||||
" distribution.
|
||||
" * Neither the name of Google Inc. nor the names of its
|
||||
" contributors may be used to endorse or promote products derived from
|
||||
" this software without specific prior written permission.
|
||||
"
|
||||
" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
" This is the Vim syntax file for Google Protocol Buffers.
|
||||
"
|
||||
" Usage:
|
||||
"
|
||||
" 1. cp proto.vim ~/.vim/syntax/
|
||||
" 2. Add the following to ~/.vimrc:
|
||||
"
|
||||
" augroup filetype
|
||||
" au! BufRead,BufNewFile *.proto setfiletype proto
|
||||
" augroup end
|
||||
"
|
||||
" Or just create a new file called ~/.vim/ftdetect/proto.vim with the
|
||||
" previous lines on it.
|
||||
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn case match
|
||||
|
||||
syn keyword pbTodo contained TODO FIXME XXX
|
||||
syn cluster pbCommentGrp contains=pbTodo
|
||||
|
||||
syn keyword pbSyntax syntax import option
|
||||
syn keyword pbStructure package message group
|
||||
syn keyword pbRepeat optional required repeated
|
||||
syn keyword pbDefault default
|
||||
syn keyword pbExtend extend extensions to max
|
||||
syn keyword pbRPC service rpc returns
|
||||
|
||||
syn keyword pbType int32 int64 uint32 uint64 sint32 sint64
|
||||
syn keyword pbType fixed32 fixed64 sfixed32 sfixed64
|
||||
syn keyword pbType float double bool string bytes
|
||||
syn keyword pbTypedef enum
|
||||
syn keyword pbBool true false
|
||||
|
||||
syn match pbInt /-\?\<\d\+\>/
|
||||
syn match pbInt /\<0[xX]\x+\>/
|
||||
syn match pbFloat /\<-\?\d*\(\.\d*\)\?/
|
||||
" TODO: .proto also supports C-style block comments;
|
||||
" see /usr/share/vim/vim70/syntax/c.vim for how it's done.
|
||||
syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp
|
||||
syn region pbString start=/"/ skip=/\\"/ end=/"/
|
||||
syn region pbString start=/'/ skip=/\\'/ end=/'/
|
||||
|
||||
if version >= 508 || !exists("did_proto_syn_inits")
|
||||
if version < 508
|
||||
let did_proto_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink pbTodo Todo
|
||||
|
||||
HiLink pbSyntax Include
|
||||
HiLink pbStructure Structure
|
||||
HiLink pbRepeat Repeat
|
||||
HiLink pbDefault Keyword
|
||||
HiLink pbExtend Keyword
|
||||
HiLink pbRPC Keyword
|
||||
HiLink pbType Type
|
||||
HiLink pbTypedef Typedef
|
||||
HiLink pbBool Boolean
|
||||
|
||||
HiLink pbInt Number
|
||||
HiLink pbFloat Float
|
||||
HiLink pbComment Comment
|
||||
HiLink pbString String
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "proto"
|
||||
130
syntax/scss.vim
130
syntax/scss.vim
@@ -1,126 +1,20 @@
|
||||
" Vim syntax file
|
||||
" Language: SCSS (Sassy CSS)
|
||||
" Author: Daniel Hofstetter (daniel.hofstetter@42dh.com)
|
||||
" Inspired by the syntax files for sass and css. Thanks to the authors of
|
||||
" those files!
|
||||
" Language: SCSS
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Filenames: *.scss
|
||||
" Last Change: 2010 Jul 26
|
||||
|
||||
if !exists("main_syntax")
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let main_syntax = 'scss'
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/css.vim
|
||||
runtime! syntax/css/*.vim
|
||||
runtime! syntax/sass.vim
|
||||
|
||||
syn case ignore
|
||||
syn match scssComment "//.*" contains=sassTodo,@Spell
|
||||
syn region scssComment start="/\*" end="\*/" contains=sassTodo,@Spell
|
||||
|
||||
syn region scssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,scssDefinition,scssComment,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssInclude,scssExtend,scssDebug,scssWarn,@scssControl,scssInterpolation,scssNestedSelector,scssReturn,scssFn
|
||||
|
||||
syn region scssInterpolation start="#{" end="}" contains=scssVariable
|
||||
|
||||
" functions from http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(rgb\|rgba\|red\|green\|blue\|mix\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(lighten\|darken\|saturate\|desaturate\|grayscale\|complement\|invert\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(alpha\|opacity\|opacify\|transparentize\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(adjust-color\|scale-color\|change-color\|ie-hex-str\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(unquote\|quote\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(percentage\|round\|ceil\|floor\|abs\|min\|max\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(length\|nth\|join\|append\|zip\|index\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(type-of\|unit\|unitless\|comparable\)\s*(" end=")" oneline keepend
|
||||
syn region scssFn contained matchgroup=scssFnName start="\<\(if\)\s*(" end=")" oneline keepend
|
||||
|
||||
syn match scssVariable "$[[:alnum:]_-]\+" nextgroup=scssVariableAssignment
|
||||
syn match scssVariableAssignment ":" contained nextgroup=scssVariableValue
|
||||
syn match scssVariableValue ".*;"me=e-1 contained contains=scssVariable,scssOperator,scssDefault "me=e-1 means that the last char of the pattern is not highlighted
|
||||
syn match scssMixin "^@mixin" nextgroup=scssMixinName
|
||||
syn match scssMixinName " [[:alnum:]_-]\+" contained nextgroup=scssDefinition
|
||||
syn match scssFunction "^@function" nextgroup=scssFunctionName
|
||||
syn match scssFunctionName " [[:alnum:]_-]\+" contained nextgroup=scssDefinition
|
||||
syn match scssReturn "@return" contained
|
||||
syn match scssInclude "@include" nextgroup=scssMixinName
|
||||
syn match scssExtend "@extend .*[;}]"me=e-1 contains=cssTagName,scssIdChar,scssClassChar
|
||||
syn keyword scssTodo TODO FIXME NOTE OPTIMIZE XXX contained containedIn=scssComment,cssComment
|
||||
|
||||
syn match scssColor "#[0-9A-Fa-f]\{3\}\>" contained
|
||||
syn match scssColor "#[0-9A-Fa-f]\{6\}\>" contained
|
||||
|
||||
syn match scssIdChar "#[[:alnum:]_-]\@=" nextgroup=scssId contains=scssColor
|
||||
syn match scssId "[[:alnum:]_-]\+" contained
|
||||
syn match scssClassChar "\.[[:alnum:]_-]\@=" nextgroup=scssClass
|
||||
syn match scssClass "[[:alnum:]_-]\+" contained
|
||||
syn match scssAmpersand "&" nextgroup=cssPseudoClass
|
||||
|
||||
syn match scssOperator "+" contained
|
||||
syn match scssOperator "-" contained
|
||||
syn match scssOperator "/" contained
|
||||
syn match scssOperator "*" contained
|
||||
|
||||
syn match scssNestedSelector "[^/]* {"me=e-1 contained contains=cssTagName,cssAttributeSelector,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssMixin,scssFunction,@scssControl,scssInterpolation,scssNestedProperty
|
||||
syn match scssNestedProperty "[[:alnum:]]\+:"me=e-1 contained
|
||||
|
||||
syn match scssDebug "@debug"
|
||||
syn match scssWarn "@warn"
|
||||
syn match scssDefault "!default" contained
|
||||
|
||||
syn match scssIf "@if"
|
||||
syn match scssElse "@else"
|
||||
syn match scssElseIf "@else if"
|
||||
syn match scssWhile "@while"
|
||||
syn match scssFor "@for" nextgroup=scssVariable
|
||||
syn match scssFrom " from "
|
||||
syn match scssTo " to "
|
||||
syn match scssThrough " through "
|
||||
syn match scssEach "@each" nextgroup=scssVariable
|
||||
syn match scssIn " in "
|
||||
syn cluster scssControl contains=scssIf,scssElse,scssElseIf,scssWhile,scssFor,scssFrom,scssTo,scssThrough,scssEach,scssIn
|
||||
|
||||
syn match scssComment "//.*$" contains=@Spell
|
||||
syn region scssImportStr start="\"" end="\""
|
||||
syn region scssImport start="@import" end=";" contains=scssImportStr,scssComment,cssComment,cssUnicodeEscape,cssMediaType,cssUrl
|
||||
|
||||
hi def link scssVariable Identifier
|
||||
hi def link scssVariableValue Constant
|
||||
hi def link scssMixin PreProc
|
||||
hi def link scssMixinName Function
|
||||
hi def link scssFunction PreProc
|
||||
hi def link scssFunctionName Function
|
||||
hi def link scssFn Constant
|
||||
hi def link scssFnName Function
|
||||
hi def link scssReturn Statement
|
||||
hi def link scssInclude PreProc
|
||||
hi def link scssExtend PreProc
|
||||
hi def link scssComment Comment
|
||||
hi def link scssColor Constant
|
||||
hi def link scssIdChar Special
|
||||
hi def link scssClassChar Special
|
||||
hi def link scssId Identifier
|
||||
hi def link scssClass Identifier
|
||||
hi def link scssAmpersand Character
|
||||
hi def link scssNestedProperty Type
|
||||
hi def link scssDebug Debug
|
||||
hi def link scssWarn Debug
|
||||
hi def link scssDefault Special
|
||||
hi def link scssIf Conditional
|
||||
hi def link scssElse Conditional
|
||||
hi def link scssElseIf Conditional
|
||||
hi def link scssWhile Repeat
|
||||
hi def link scssFor Repeat
|
||||
hi def link scssFrom Repeat
|
||||
hi def link scssTo Repeat
|
||||
hi def link scssThrough Repeat
|
||||
hi def link scssEach Repeat
|
||||
hi def link scssIn Repeat
|
||||
hi def link scssInterpolation Delimiter
|
||||
hi def link scssImport Include
|
||||
hi def link scssImportStr Include
|
||||
hi def link scssTodo Todo
|
||||
hi def link scssComment sassComment
|
||||
|
||||
let b:current_syntax = "scss"
|
||||
if main_syntax == 'scss'
|
||||
unlet main_syntax
|
||||
endif
|
||||
|
||||
" vim:set sw=2:
|
||||
|
||||
431
syntax/vbnet.vim
Normal file
431
syntax/vbnet.vim
Normal file
@@ -0,0 +1,431 @@
|
||||
" Vim syntax file
|
||||
" Language: VB.NET
|
||||
" Maintainer: Tim Pope <vim@rebelongto.us>
|
||||
" Last Change: 2006 Apr 28
|
||||
" Filenames: *.vb
|
||||
" $Id: vbnet.vim,v 1.7 2006/04/28 06:00:29 tpope Exp $
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" 2. Lexical Grammar
|
||||
syn case ignore
|
||||
syn sync linebreaks=2
|
||||
" 2.1.4 Comments
|
||||
syn keyword vbTodo contained TODO FIXME XXX NOTE
|
||||
syn region vbnetComment start="\<REM\>" end="$" contains=vbnetTodo
|
||||
syn region vbnetComment start="'" end="$" contains=vbnetTodo
|
||||
syn cluster vbnetComments contains=vbnetComment,vbnetXmlComment
|
||||
" 2.3 Keywords
|
||||
syn keyword vbnetKeywordError EndIf GoSub Let Variant Wend
|
||||
" Every possible keyword (Version 8). Used for certain errors below
|
||||
syn keyword vbnetKeywordError AddHandler AddressOf Alias And AndAlso As Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate CDec CDbl Char CInt Class CLng CObj Const Continue CSByte CShort CSng CStr CType CUInt CULng CUShort Date Decimal Declare Default Delegate Dim DirectCast Do Double Each Else ElseIf End EndIf Enum Erase Error Event Exit False Finally For Friend Function Get GetType Global GoSub GoTo Handles If Implements Imports In Inherits Integer Interface Is IsNot Let Lib Like Long Loop Me Mod Module MustInherit MustOverride MyBase MyClass Namespace Narrowing New Next Not Nothing NotInheritable NotOverridable Object Of On Operator Option Optional Or OrElse Overloads Overridable Overrides ParamArray Partial Private Property Protected Public RaiseEvent ReadOnly ReDim RemoveHandler Resume Return SByte Select Set Shadows Shared Short Single Static Step Stop String Structure Sub SyncLock Then Throw To True Try TryCast TypeOf Variant Wend UInteger ULong UShort Using When While Widening With WithEvents WriteOnly contained
|
||||
syn match vbnetIdentifier "\[\h\w*\]"
|
||||
syn cluster vbnetStrict contains=vbnetIdentifier,vbnetKeywordError
|
||||
" 2.4 Literals
|
||||
syn keyword vbnetBoolean False True
|
||||
syn match vbnetNumber "[+-]\=\(&O[0-7]*\|&H\x\+\|\<\d\+\)[SIL]\=\>"
|
||||
syn match vbnetNumber "[+-]\=\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[FRD]\=\>"
|
||||
syn match vbnetNumber "[+-]\=\<\d\+[eE][-+]\=\d\+[FRD]\=\>"
|
||||
syn match vbnetNumber "[+-]\=\<\d\+\([eE][-+]\=\d\+\)\=[FRD]\>"
|
||||
syn region vbnetString start=+"+ end=+"+ end=+$+ skip=+""+
|
||||
syn match vbnetCharacter +"\([^"]\|""\)"c+
|
||||
" 2.4.6 Date literals
|
||||
syn match vbnetDate "1\=\d\([-/]\)[123]\=\d\1\d\{3,4\}" contained
|
||||
" For simplicity, require at least an hour and a minute in a time, and require
|
||||
" minutes and seconds to be two digits
|
||||
syn match vbnetDate "\<[12]\=\d:\d\d\(:\d\d\)\=\s*\([AP]M\)\=\>" contained
|
||||
syn match vbnetDate "\<_$" contained
|
||||
" Avoid matching #directives
|
||||
syn region vbnetDateGroup matchgroup=vbnetDate start="\(\S\s*\)\@<=#" skip="\<_$" end="\(\S\s*\)\@<=#" end="$" contains=vbnetDate,@vbnetStrict
|
||||
syn keyword vbnetConstant Nothing
|
||||
syn cluster vbnetLiterals contains=vbnetBoolean,vbnetNumber,vbnetString,vbnetCharacter,vbnetDateGroup,vbnetConstant
|
||||
|
||||
" 3. Preprocessing Directives
|
||||
syn region vbnetPreCondit
|
||||
\ start="^\s*#\s*\(If\|ElseIf\|Else\|End\s\+If\)\>" skip="\<_$"
|
||||
\ end="$" contains=@vbnetComments keepend
|
||||
"syn match vbnetPreCondit "\(\s*#\s*\(Else\)\=If\>.*\)\@<=\<Then\>"
|
||||
syn region vbnetDefine start="^\s*#\s*Const\>" skip="\<_$" end="$"
|
||||
\ contains=@vbnetComments keepend
|
||||
syn region vbnetInclude
|
||||
\ start="^\s*#\s*\(ExternalSource\|End\s\+ExternalSource\)\>"
|
||||
\ skip="\<_$" end="$" contains=@vbnetComments keepend
|
||||
syn region vbnetRegion matchgroup=vbnetPreProc start="^\s*#\s*Region\>" end="^\s*#\s*End\s\+Region\>" fold contains=TOP
|
||||
syn cluster vbnetPreProc contains=vbnetPreCondit,vbnetDefine,vbnetInclude,vbnetRegion
|
||||
|
||||
" 4. General Concepts
|
||||
syn keyword vbnetTypeAccess Public Private Protected Friend contained
|
||||
syn match vbnetAccessModifier "\<\(Friend\|Private\|Protected\|Protected\s\+\Friend\|Public\)\>"
|
||||
" This is from section 9 but must be here to lower the priority
|
||||
syn match vbnetModifier "\<\(Shared\|Static\|ReadOnly\|WithEvents\|Shadows\)\>"
|
||||
|
||||
" 5. Attributes
|
||||
"syn match vbnetAttribute "<\(\s_\n\|[^<=>]\)\{-1,}>"
|
||||
syn match vbnetAttribute "<\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\%(\s*([^()]*)\)\=\(\s*,\s*\%(_\n\s*\)\=\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\%(\s*([^()]*)\)\=\)\{-}\s*>"
|
||||
|
||||
" 6. Source Files and Namespaces
|
||||
syn keyword vbnetImports Imports
|
||||
syn match vbnetOption "^\s*Option\s\+\(\(Explicit\|Strict\)\(\s\+On\|\s\+Off\)\=\|Compare\s\+\(Binary\|Text\)\)\s*$"
|
||||
if ! exists("vbnet_no_code_folds")
|
||||
syn region vbnetNamespaceBlock matchgroup=vbnetStorage start="\(\w\s*\)\@<!Namespace" end="\<End\s\+\Namespace\>" contains=TOP fold
|
||||
else
|
||||
syn region vbnetNamespaceBlock matchgroup=vbnetStorage start="\(\w\s*\)\@<!Namespace" end="\<End\s\+\Namespace\>" contains=TOP
|
||||
endif
|
||||
|
||||
" 7. Types
|
||||
" 7.2 Interface Implementation
|
||||
syn keyword vbnetTypeImplementsKeyword Implements contained
|
||||
syn match vbnetTypeImplementsClause "\(^\|:\)\s*Implements\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetTypeImplementsKeyword,@vbnetStrict contained skipwhite skipnl nextgroup=@vbnetTypeImplements
|
||||
syn match vbnetTypeImplementsComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
|
||||
syn match vbnetTypeImplementsPreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
|
||||
syn cluster vbnetTypeImplements contains=vbnetTypeImplementsClause,vbnetTypeImplementsComment,vbnetTypeImplementsPreProc
|
||||
" 7.3 Primitive Types
|
||||
syn match vbnetPossibleType "\%(\<\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contained skipwhite nextgroup=vbnetGeneric
|
||||
syn keyword vbnetBuiltinType Boolean Byte Char Date Decimal Double Single Integer Long Object Short String skipwhite nextgroup=vbnetGeneric
|
||||
syn match vbnetSystemType "\<System\.\(Boolean\|Byte\|SByte\|Char\|Decimal\|Double\|Single\|Int32\|UInt32\|Int64\|UInt64\|Int16\|UInt16\|Object\)\>" skipwhite nextgroup=vbnetGeneric
|
||||
syn cluster vbnetType contains=vbnetBuiltinType,vbnetSystemType
|
||||
syn cluster vbnetAnyType contains=@vbnetType,vbnetPossibleType
|
||||
syn match vbnetTypeSpecifier "[a-zA-Z0-9]\@<=[\$%&#]"
|
||||
syn match vbnetTypeSpecifier "[a-zA-Z0-9]\@<=!\([^a-zA-Z0-9]\|$\)"me=s+1
|
||||
" 7.4 Enumerations
|
||||
syn keyword vbnetEnumWords Shadows Enum contained
|
||||
syn cluster vbnetEnum contains=vbnetTypeAccess,vbnetEnumWords,vbnetAsClause
|
||||
syn match vbnetEnumDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Enum\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)\=" contains=@vbnetEnum,@vbnetStrict containedin=vbnetEnumBlock
|
||||
syn match vbnetTypeEnd "\<End\s\+Enum\>" containedin=vbnetEnumBlock
|
||||
" 7.5 Classes
|
||||
syn keyword vbnetClassWords MustInherit NotInheritable Class contained
|
||||
syn cluster vbnetClass contains=vbnetTypeAccess,vbnetClassWords
|
||||
syn match vbnetClassGeneric "\%(\w\s*\)\@<=(\s*Of\s\+[^)]*)" contained contains=vbnetGeneric,@vbnetStrict skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
|
||||
syn match vbnetClassDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Class\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetClass,@vbnetStrict containedin=vbnetClassBlock skipwhite skipempty nextgroup=vbnetClassGeneric,@vbnetClassBase,@vbnetTypeImplements
|
||||
syn match vbnetTypeEnd "\<End\s\+Class\>" containedin=vbnetClassBlock
|
||||
" 7.5.1 Class Base Specification
|
||||
syn keyword vbnetInheritsKeyword Inherits contained
|
||||
syn match vbnetClassBase "\(^\|:\)\s*Inherits\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=vbnetInheritsKeyword,@vbnetType,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements
|
||||
syn match vbnetClassBaseComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
|
||||
syn match vbnetClassBasePreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements
|
||||
syn cluster vbnetClassBase contains=vbnetClassBase,vbnetClassBaseComment,vbnetClassBasePreProc
|
||||
" 7.6 Structures
|
||||
syn keyword vbnetStructureWords Implements Structure contained
|
||||
syn cluster vbnetStructure contains=vbnetTypeAccess,vbnetStructureWords
|
||||
syn match vbnetStructureDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Structure\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetStructure,@vbnetStrict containedin=vbnetStructureBlock skipwhite skipempty nextgroup=@vbnetTypeImplements
|
||||
syn match vbnetTypeEnd "\<End\s\+Structure\>" containedin=vbnetStructureBlock
|
||||
" 7.7 Modules
|
||||
syn keyword vbnetModuleWords Module contained
|
||||
syn cluster vbnetModule contains=vbnetTypeAccess,vbnetModuleWords
|
||||
syn match vbnetModuleDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Module\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetModule,@vbnetStrict containedin=vbnetModuleBlock
|
||||
syn match vbnetTypeEnd "\<End\s\+Module\>" containedin=vbnetModuleBlock
|
||||
" 7.8 Interfaces
|
||||
syn keyword vbnetInterfaceWords Shadows Inherits Interface contained
|
||||
syn cluster vbnetInterface contains=vbnetTypeAccess,vbnetInterfaceWords
|
||||
syn match vbnetInterfaceDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!Interface\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*" contains=@vbnetInterface,@vbnetStrict containedin=vbnetInterfaceBlock skipwhite skipempty nextgroup=@vbnetInterfaceBase
|
||||
syn match vbnetTypeEnd "\<End\s\+Interface\>" containedin=vbnetInterfaceBlock
|
||||
" 7.8.1 Interface Inheritance
|
||||
syn match vbnetInterfaceBase "\(^\|:\)\s*Inherits\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetInheritsKeyword,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
|
||||
syn match vbnetInterfaceBaseComment "\s*\%('\|\<REM\>\).*$" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
|
||||
syn match vbnetInterfaceBasePreProc "^\s*#.*$" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase
|
||||
syn cluster vbnetInterfaceBase contains=vbnetInterfaceBase,vbnetInterfaceBaseComment,vbnetInterfaceBasePreProc
|
||||
" 7.10 Delegates
|
||||
syn keyword vbnetStorage Delegate
|
||||
|
||||
" 9. Type Members
|
||||
" 9.1 Interface Method Implementation
|
||||
syn keyword vbnetImplementsKeyword Implements contained
|
||||
syn match vbnetImplementsClause "\<Implements\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*" contains=vbnetImplementsKeyword,@vbnetStrict contained
|
||||
" 9.2 Methods
|
||||
syn keyword vbnetProcedureWords Public Private Protected Friend Shadows Shared Overridable NotOverridable MustOverride Overrides Overloads Delegate contained
|
||||
syn keyword vbnetSubWords Sub New contained
|
||||
syn keyword vbnetAsError As contained
|
||||
syn cluster vbnetSub contains=vbnetProcedureWords,vbnetSubWords,vbnetParameter
|
||||
syn keyword vbnetFunctionWords Function contained
|
||||
syn cluster vbnetFunction contains=vbnetProcedureWords,vbnetFunctionWords,vbnetParameter
|
||||
syn region vbnetSubArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=@vbnetHandlesOrImplements,vbnetAsError contained
|
||||
syn match vbnetSubDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Sub\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetSub,@vbnetStrict containedin=vbnetSubBlock skipwhite nextgroup=vbnetSubArguments,@vbnetHandlesOrImplements
|
||||
syn match vbnetProcedureEnd "\<End\s\+Sub\>" containedin=vbnetSubBlock
|
||||
syn region vbnetFunctionArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetFunctionReturn,@vbnetHandlesOrImplements contained
|
||||
syn match vbnetFunctionReturn "\<As\s\+[][(){}A-Za-z0-9_.]\+" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=@vbnetHandlesOrImplements contained
|
||||
syn match vbnetFunctionDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Function\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetFunction,@vbnetStrict containedin=vbnetFunctionBlock skipwhite nextgroup=vbnetFunctionArguments,vbnetFunctionReturn,@vbnetHandlesOrImplements
|
||||
syn match vbnetProcedureEnd "\<End\s\+Function\>" containedin=vbnetFunctionBlock
|
||||
" 9.2.2 External Method Declarations
|
||||
syn keyword vbnetExternalProcedureWords Declare Ansi Unicode Auto Lib Alias contained
|
||||
syn region vbnetExternalSubArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend contained
|
||||
syn match vbnetExternalSubDeclaration #\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!Declare\(\s\+\%(Ansi\|Unicode\|Auto\)\)\=\s\+Sub\s\+\%(\h\w*\|\[\h\w*\]\)\s\+Lib\s\+"[^"]*"\(\s\+\<Alias\>\s\+"[^"]*"\)\=\s\+\(_\n\s*\)\=# contains=@vbnetSub,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalSubArguments
|
||||
syn region vbnetExternalFunctionArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetAsClause contained
|
||||
syn match vbnetExternalFunctionDeclaration #\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!Declare\(\s\+\%(Ansi\|Unicode\|Auto\)\)\=\s\+Function\s\+\%(\h\w*\|\[\h\w*\]\)\s\+Lib\s\+"[^"]*"\(\s\+\<Alias\>\s\+"[^"]*"\)\=\s\+\(_\n\s*\)\=# contains=@vbnetFunction,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalFunctionArguments
|
||||
" 9.2.5 Method Parameters
|
||||
syn keyword vbnetParameter ByVal ByRef Optional ParamArray contained
|
||||
" 9.2.6 Event Handling
|
||||
syn keyword vbnetHandlesKeyword Handles MyBase contained
|
||||
syn match vbnetHandlesClause "\<Handles\s\+\h\w*\.\h\w*\(\s*,\s*\h\w*\.\h\w*\)*\>" contains=vbnetHandlesKeyword,@vbnetStrict contained
|
||||
syn cluster vbnetHandlesOrImplements contains=vbnetHandlesClause,vbnetImplementsClause
|
||||
" 9.4 Events
|
||||
syn keyword vbnetEventWords Public Private Protected Friend Shadows Shared Event contained
|
||||
syn cluster vbnetEvent contains=vbnetEventWords
|
||||
syn region vbnetEventArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetImplementsClause,vbnetAsError contained
|
||||
syn match vbnetEventDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Event\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetEvent,@vbnetStrict skipwhite nextgroup=vbnetEventArguments,vbnetImplementsClause
|
||||
" 9.5 Constants
|
||||
syn keyword vbnetStatement Const
|
||||
" 9.6 Instance and Shared Variables
|
||||
syn keyword vbnetStatement Dim
|
||||
syn keyword vbnetAsClause As skipwhite nextgroup=@vbnetAnyType,@vbnetStrict contained
|
||||
syn keyword vbnetAsNewClause As skipwhite nextgroup=vbnetNewClause,@vbnetAnyType,@vbnetStrict
|
||||
"syn keyword vbnetVarMemberWords Public Private Protected Friend Shadows Shared ReadOnly WithEvents Dim As contained
|
||||
"syn match vbnetVarMemberDef "\<\(\(Public\|Private\|Protected\|Friend\|Shadows\|Shared\|ReadOnly\|WithEvents\|Dim\)\s\+\)\+\h\w*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|[\$%&#!]\)\=\(\s*=\s*[^,]*\)\=\(\s*,\s*\h\w*\(\s\+As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|[\$%&#!]\)\=\)*" contains=vbnetVarMemberWords,vbnetAsClause,vbnetTypeSpecifier
|
||||
" 9.7 Properties
|
||||
syn keyword vbnetPropertyWords Property Default ReadOnly WriteOnly contained
|
||||
syn cluster vbnetProperty contains=vbnetProcedureWords,vbnetPropertyWords,vbnetParameter
|
||||
syn match vbnetPropertyDeclaration "\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Property\>\s\+\%(\h\w*\>\|\[\h\w*\]\)" contains=@vbnetProperty,@vbnetStrict containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock skipwhite nextgroup=vbnetPropertyArguments,vbnetPropertyReturn,vbnetImplementsClause
|
||||
syn region vbnetPropertyArguments start="(" skip="([^)]*)\|\<_$" end=")" end="$" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetPropertyReturn,vbnetImplementsClause contained
|
||||
syn match vbnetPropertyReturn "\<As\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\>" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=vbnetImplementsClause contained
|
||||
syn match vbnetProcedureEnd "\<End\s\+Property\>" containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock
|
||||
syn keyword vbnetGetterWords Get Public Protected Private Friend contained
|
||||
syn cluster vbnetGetter contains=vbnetGetterWords
|
||||
syn match vbnetGetterDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>" contains=@vbnetGetter,@vbnetStrict contained containedin=vbnetGetterBlock
|
||||
syn keyword vbnetSetterWords Set ByVal Public Protected Private Friend contained
|
||||
syn cluster vbnetSetter contains=vbnetSetterWords
|
||||
syn match vbnetSetterDeclaration "\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\s*\(([^)]*)\)\=" contains=@vbnetSetter,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict contained containedin=vbnetSetterBlock
|
||||
|
||||
" 10. Statements
|
||||
" 10.1 Blocks
|
||||
syn match vbnetLabel "^\h\w*:"me=e-1
|
||||
" 10.3 With Statement
|
||||
syn match vbnetStatement "\<\(End\s\+\)\=With\>"
|
||||
" 10.4 SyncLock Statement
|
||||
syn match vbnetStatement "\<\(End\s\+\)\=SyncLock\>"
|
||||
" 10.5 Event Statements
|
||||
syn keyword vbnetEvent AddHandler RemoveHandler RaiseEvent
|
||||
syn keyword vbnetStatement Call
|
||||
" 10.8 Conditional Statements
|
||||
syn keyword vbnetConditional Then ElseIf Else
|
||||
syn match vbnetConditional "\<\(End\s\+\)\=If\>"
|
||||
syn match vbnetConditional "\<\(Select\(\s\+Case\)\|\(End\|Exit\)\s\+Select\)\>"
|
||||
syn keyword vbnetLabel Case
|
||||
" 10.9 Loop Statements
|
||||
syn keyword vbnetRepeat To Step Each In Next Loop Until
|
||||
syn match vbnetRepeat "\<\(End\s\+\|Exit\s\+\)\=While\>"
|
||||
syn match vbnetRepeat "\<\(Exit\s\+\)\=\(Do\|For\)\>"
|
||||
" 10.10 Exception-Handling Statements
|
||||
syn keyword vbnetException Catch When Finally Resume Throw
|
||||
syn match vbnetException "\<\(On\s\+Error\|\(End\s\+\|Exit\s\+\)\=Try\)\>"
|
||||
" 10.11 Branch Statements
|
||||
syn keyword vbnetBranch GoTo Stop Return
|
||||
syn match vbnetBranch "\<Exit\s\+\(Sub\|Function\|Property\)\>"
|
||||
" 10.12 Array-Handling Statements
|
||||
syn keyword vbnetArrayHandler Erase
|
||||
syn match vbnetArrayHandler "\<ReDim\(\s\+Preserve\)\=\>"
|
||||
|
||||
" 11. Expressions
|
||||
" 11.4.3 Instance Expressions
|
||||
syn keyword vbnetStatement Me MyBase MyClass
|
||||
" 11.4.5 AddressOf Expressions
|
||||
syn keyword vbnetStorage AddressOf
|
||||
" 11.10 New Expressions
|
||||
syn keyword vbnetNewClause New skipwhite nextgroup=@vbnetAnyType
|
||||
" 11.11 Cast Expressions
|
||||
syn keyword vbnetCast CBool CByte CChar CDate CDbl CDec Char CInt CLng CObj CShort CSng CStr CType DirectCast
|
||||
syn keyword vbnetOperator And Or Not Xor Mod In Is Imp Eqv Like AndAlso OrElse GetType TypeOf
|
||||
|
||||
"
|
||||
" Folding
|
||||
"
|
||||
|
||||
if ! exists("vbnet_no_code_folds")
|
||||
"syn region vbnetNamespaceBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Namespace\>"rs=s end="\<\End\s\+Namespace\>"re=e contains=TOP fold
|
||||
syn region vbnetEnumBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\|\.\)\@<!\<Enum\s"rs=s matchgroup=vbnetEnumWords end="\<\End\s\+Enum\>" contains=vbnetEnumDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,@vbnetLiterals fold
|
||||
syn region vbnetClassBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Class\>"rs=s matchgroup=vbnetClassWords end="\<\End\s\+Class\>" contains=TOP fold
|
||||
syn region vbnetStructureBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Structure\>"rs=s matchgroup=vbnetStructureWords end="\<\End\s\+Structure\>" contains=TOP fold
|
||||
syn region vbnetModuleBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Module\>"rs=s matchgroup=vbnetModuleWords end="\<\End\s\+Module\>" contains=TOP fold
|
||||
syn region vbnetInterfaceBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Interface\>"rs=s matchgroup=vbnetInterfaceWords end="\<\End\s\+Interface\>" contains=vbnetInterfaceDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,vbnetSubDeclaration,vbnetFunctionDeclaration,vbnetPropertyDeclaration,vbnetEventDeclaration fold
|
||||
syn region vbnetSubBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|Declare\|MustOverride\|Delegate\)\>.*\)\@<!\<Sub\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Sub\>" contains=TOP fold
|
||||
syn region vbnetFunctionBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|Declare\|MustOverride\|Delegate\)\>.*\)\@<!\<Function\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Function\>" contains=TOP fold
|
||||
syn region vbnetReadWritePropertyBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|ReadOnly\|WriteOnly\)\>.*\)\@<!\<Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold
|
||||
syn region vbnetReadOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<ReadOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc fold
|
||||
syn region vbnetWriteOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<WriteOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold
|
||||
syn region vbnetGetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Get\>" contains=TOP contained fold
|
||||
syn region vbnetSetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Set\>" contains=TOP contained fold
|
||||
syn region vbnetGetterErrorBlock matchgroup=vbnetError start="\<Get\>" end="\<End\s\+Get\>" contains=TOP contained fold
|
||||
syn region vbnetSetterErrorBlock matchgroup=vbnetError start="\<Set\>" end="\<End\s\+Set\>" contains=TOP contained fold
|
||||
else
|
||||
syn region vbnetReadWritePropertyBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<\(End\|Exit\|ReadOnly\|WriteOnly\)\>.*\)\@<!\<Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc
|
||||
syn region vbnetReadOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<ReadOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc
|
||||
syn region vbnetWriteOnlyPropertyBlock start="\(\w\s*\)\@<!\<\(.*\<WriteOnly\>\&\(\w\+\s\+\)*\)Property\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Property\>" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc
|
||||
syn region vbnetGetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Get\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Get\>" contains=TOP contained
|
||||
syn region vbnetSetterBlock start="\(\w\s*\)\@<!\<\(\w\+\s\+\)*\(\<End\>.*\)\@<!\<Set\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Set\>" contains=TOP contained
|
||||
syn region vbnetGetterErrorBlock matchgroup=vbnetError start="\<Get\>" end="\<End\s\+Get\>" contains=TOP contained
|
||||
syn region vbnetSetterErrorBlock matchgroup=vbnetError start="\<Set\>" end="\<End\s\+Set\>" contains=TOP contained
|
||||
endif
|
||||
|
||||
"let vbnet_v7 = 1
|
||||
if ! exists("vbnet_v7")
|
||||
" 4.7 Type and Namespace Names
|
||||
syn keyword vbnetStatement Global
|
||||
" 4.9 Generic Types and Methods
|
||||
syn keyword vbnetOfClause Of skipwhite nextgroup=@vbnetAnyType contained
|
||||
syn match vbnetGeneric "(Of\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s\+As\(\s\+\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\|\s*{\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*\s*}\)*\)\=)" contains=vbnetAsClause,vbnetOfClause,vbnetGenericTypeList,@vbnetStrict contained
|
||||
syn match vbnetGenericTypeList "{\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\(\s*,\s*\%(\h\w*\|\[\h\w*\]\)\%(\.\h\w*\|\.\[\h\w*\]\)*\)*}" contains=@vbnetType contained
|
||||
" 7.3 Primitive Types
|
||||
syn keyword vbnetBuiltinType SByte UShort UInteger ULong
|
||||
" 7.11 Partial Types
|
||||
"syn keyword vbnetClassModifier Partial
|
||||
syn keyword vbnetClassWords Partial contained
|
||||
" 9.8 Operators
|
||||
"syn match vbnetProcedure "\<\(End\s\+\|Exit\s\+\)\=Operator\>"
|
||||
syn keyword vbnetOperatorWords Public Shared Operator Widening Narrowing ByVal IsTrue IsFalse CType contained
|
||||
"syn keyword vbnetParameter ByVal contained
|
||||
syn match vbnetOperatorDeclaration "\<\(.*\<Shared\>\&\(\w\+\s\+\)*\)\(\<\(End\|Exit\)\>.*\)\@<!\<Operator\>\s\+[A-Za-z&*+/\\^<=>-]*([^)]*)" contains=vbnetOperatorWords,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict containedin=vbnetOperatorBlock skipwhite nextgroup=vbnetAsClause
|
||||
syn match vbnetProcedureEnd "\<End\s\+Operator\>" containedin=vbnetOperatorBlock
|
||||
syn match vbnetBranch "\<Exit\s\+\(Operator\)\>"
|
||||
if ! exists("vbnet_no_code_folds")
|
||||
syn region vbnetOperatorBlock start="\(^\|:\)\s*\zs\<\(\w\+\s\+\)*\(\<\(End\|Exit\)\>.*\)\@<!\<Operator\>"rs=s matchgroup=vbnetProcedure end="\<End\s\+Operator\>" contains=TOP fold
|
||||
endif
|
||||
" 10.9 Loop Statements
|
||||
syn match vbnetRepeat "\<Continue\s\+\(Do\|For\|While\)\>"
|
||||
" 10.13 Using Statement
|
||||
syn match vbnetStatement "\<\(End\s\+\)\=Using\>"
|
||||
" 11.5.3 Is Expressions
|
||||
syn keyword vbnetOperator IsNot
|
||||
" 11.11 Cast Expressions
|
||||
syn keyword vbnetCast CSByte CUShort CUInt CULng TryCast
|
||||
" 12. Documentation Comments
|
||||
syn match vbnetXmlCommentLeader +'''+ contained
|
||||
syn match vbnetXmlComment +'''.*$+ contains=vbnetXmlCommentLeader,@vbnetXml
|
||||
syn include @vbnetXml syntax/xml.vim
|
||||
endif
|
||||
|
||||
if ! exists("vbnet_no_functions")
|
||||
" From the Microsoft.VisualBasic namespace.
|
||||
" Extracted from the Mono sources; let me know if I missed any.
|
||||
syn keyword vbnetMSConversion ErrorToString Fix Hex Int Oct Str Val
|
||||
syn keyword vbnetMSDateAndTime DateAdd DateDiff DatePart DateSerial DateValue Day Hour Minute Month MonthName Second TimeSerial TimeValue Weekday WeekdayName Year DatePart DateString Now TimeOfDay Timer TimeString Today
|
||||
syn keyword vbnetMSFileSystem ChDir ChDrive CurDir Dir EOF FileAttr FileClose FileCopy FileDateTime FileGet FileGetObject FileLen FileOpen FilePut FilePutObject FileWidth FreeFile GetAttr Input InputString Kill LineInput Loc Lock LOF MkDir Print PrintLine Rename Reset RmDir Seek SetAttr SPC TAB Unlock Write WriteLine
|
||||
syn keyword vbnetMSFinancial DDB FV IPmt IRR MIRR NPer NPV Pmt PPmt PV Rate SLN SYD
|
||||
syn keyword vbnetMSGlobals ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion ScriptEngine
|
||||
syn keyword vbnetMSInformation Erl Err IsArray IsDate IsDBNull IsError IsNothing IsNumeric IsReference LBound QBColor RGB SystemTypeName TypeName UBound VarType VbTypeName
|
||||
syn keyword vbnetMSInteraction AppActivate Beep CallByName Choose Command CreateObject DeleteSetting Environ GetAllSettings GetObject GetSetting IIf InputBox MsgBox Partition SaveSetting Shell Switch
|
||||
syn keyword vbnetMSStrings Asc AscW Chr ChrW Filter Format FormatCurrency FormatDateTime FormatNumber FormatPercent GetChar InStr InStrRev Join LCase Left Len LSet LTrim Mid Replace Right RSet RTrim Space Split StrComp StrConv StrDup StrReverse Trim UCase
|
||||
syn keyword vbnetMSVBMath Randomize Rnd
|
||||
syn match vbnetMSFunction "\<Microsoft\.VisualBasic\."
|
||||
endif
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||
if version >= 508 || !exists("did_vbnet_syntax_inits")
|
||||
if version < 508
|
||||
let did_vbnet_syntax_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
" 2. Lexical Grammar
|
||||
HiLink vbnetTodo Todo
|
||||
HiLink xmlRegion vbnetXmlComment
|
||||
HiLink vbnetXmlCommentLeader vbnetXmlComment
|
||||
HiLink vbnetXmlComment vbnetComment
|
||||
HiLink vbnetComment Comment
|
||||
HiLink vbnetKeywordError vbnetError
|
||||
HiLink vbnetAsError vbnetError
|
||||
HiLink vbnetError Error
|
||||
HiLink vbnetBoolean Boolean
|
||||
HiLink vbnetNumber Number
|
||||
HiLink vbnetCharacter Character
|
||||
HiLink vbnetString String
|
||||
HiLink vbnetDate Constant
|
||||
HiLink vbnetConstant Constant
|
||||
|
||||
" 3. Preprocessing Directives
|
||||
HiLink vbnetPreCondit PreCondit
|
||||
HiLink vbnetDefine Define
|
||||
HiLink vbnetInclude Include
|
||||
HiLink vbnetPreProc PreProc
|
||||
|
||||
" 4. General Concepts
|
||||
HiLink vbnetTypeAccess vbnetType
|
||||
HiLink vbnetAccessModifier vbnetModifier
|
||||
|
||||
" 5. Attributes
|
||||
HiLink vbnetAttribute Special
|
||||
|
||||
" 6. Source Files and Namespaces
|
||||
HiLink vbnetStorage vbnetStorageClass
|
||||
HiLink vbnetOption vbnetPreProc
|
||||
HiLink vbnetImports vbnetInclude
|
||||
|
||||
" 7. Types
|
||||
HiLink vbnetTypeSpecifier vbnetType
|
||||
HiLink vbnetBuiltinType vbnetType
|
||||
HiLink vbnetSystemType vbnetType
|
||||
HiLink vbnetType Type
|
||||
HiLink vbnetClassModifier vbnetStorageClass
|
||||
HiLink vbnetEnumWords vbnetStorageClass
|
||||
HiLink vbnetModuleWords vbnetStorageClass
|
||||
HiLink vbnetClassWords vbnetStorageClass
|
||||
HiLink vbnetStructureWords vbnetStorageClass
|
||||
HiLink vbnetInterfaceWords vbnetStorageClass
|
||||
HiLink vbnetTypeImplementsKeyword vbnetStorageClass
|
||||
HiLink vbnetInheritsKeyword vbnetStorageClass
|
||||
HiLink vbnetTypeEnd vbnetStorageClass
|
||||
HiLink vbnetStorageClass StorageClass
|
||||
|
||||
" 9. Type Members
|
||||
HiLink vbnetAsNewClause vbnetAsClause
|
||||
HiLink vbnetAsClause vbnetStorageClass
|
||||
HiLink vbnetOfClause vbnetStorageClass
|
||||
HiLink vbnetProcedureEnd Statement
|
||||
HiLink vbnetProcedure Statement
|
||||
HiLink vbnetModifier vbnetStorageClass
|
||||
HiLink vbnetPropertyWords vbnetStatement
|
||||
HiLink vbnetGetterWords vbnetStatement
|
||||
HiLink vbnetSetterWords vbnetStatement
|
||||
HiLink vbnetExternalProcedureWords vbnetStatement
|
||||
HiLink vbnetProcedureWords vbnetStatement
|
||||
HiLink vbnetSubWords vbnetStatement
|
||||
HiLink vbnetFunctionWords vbnetStatement
|
||||
HiLink vbnetOperatorWords vbnetStatement
|
||||
HiLink vbnetVarMemberWords vbnetStatement
|
||||
HiLink vbnetHandlesKeyword vbnetStatement
|
||||
HiLink vbnetImplementsKeyword vbnetStatement
|
||||
HiLink vbnetEventWords vbnetStatement
|
||||
|
||||
" 10. Statements
|
||||
HiLink vbnetStatement Statement
|
||||
HiLink vbnetLabel Label
|
||||
HiLink vbnetParameter Keyword
|
||||
HiLink vbnetEvent vbnetStatement
|
||||
HiLink vbnetConditional Conditional
|
||||
HiLink vbnetRepeat Repeat
|
||||
HiLink vbnetException Exception
|
||||
HiLink vbnetBranch Keyword
|
||||
HiLink vbnetArrayHandler Statement
|
||||
|
||||
" 11. Expressions
|
||||
HiLink vbnetCast vbnetType
|
||||
HiLink vbnetOperator Operator
|
||||
HiLink vbnetNewClause Keyword
|
||||
|
||||
" Functions
|
||||
HiLink vbnetMSConstants vbnetMSFunction
|
||||
HiLink vbnetMSConversion vbnetMSFunction
|
||||
HiLink vbnetMSDateAndTime vbnetMSFunction
|
||||
HiLink vbnetMSFileSystem vbnetMSFunction
|
||||
HiLink vbnetMSFinancial vbnetMSFunction
|
||||
HiLink vbnetMSGlobals vbnetMSFunction
|
||||
HiLink vbnetMSInformation vbnetMSFunction
|
||||
HiLink vbnetMSInteraction vbnetMSFunction
|
||||
HiLink vbnetMSStrings vbnetMSFunction
|
||||
HiLink vbnetMSVBMath vbnetMSFunction
|
||||
HiLink vbnetMSVBUtils vbnetMSFunction
|
||||
HiLink vbnetMSFunction Function
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "vbnet"
|
||||
|
||||
" vim:set ft=vim sts=4 sw=4:
|
||||
Reference in New Issue
Block a user