Some nice improvements
This commit is contained in:
parent
374e983d09
commit
a56d48dc53
@ -5,10 +5,8 @@ function! latex#change#init(initialized)
|
|||||||
|
|
||||||
nnoremap <silent><buffer> cse :call latex#change#env_prompt()<cr>
|
nnoremap <silent><buffer> cse :call latex#change#env_prompt()<cr>
|
||||||
|
|
||||||
nnoremap <silent><buffer> tse :call latex#change#env_toggle_star()<cr>
|
nnoremap <silent><buffer> tse :call latex#change#toggle_env_star()<cr>
|
||||||
|
nnoremap <silent><buffer> tsd :call latex#change#toggle_delim()<cr>
|
||||||
nnoremap <silent><buffer> tsl :call latex#change#delim_toggle()<cr>
|
|
||||||
nnoremap <silent><buffer> tsr :call latex#change#delim_toggle()<cr>
|
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -24,40 +22,6 @@ function! latex#change#delim(open, close)
|
|||||||
call setline(l2, line)
|
call setline(l2, line)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 latex#change#delim_toggle
|
|
||||||
function! latex#change#delim_toggle()
|
|
||||||
"
|
|
||||||
" Toggle \left and \right variants of delimiters
|
|
||||||
"
|
|
||||||
let [d1, l1, c1, d2, l2, c2] = latex#util#get_delim()
|
|
||||||
|
|
||||||
if d1 =~ 'left'
|
|
||||||
let newd1 = substitute(d1, '\\left', '', '')
|
|
||||||
let newd2 = substitute(d2, '\\right', '', '')
|
|
||||||
elseif d1 !~ '\cbigg\?'
|
|
||||||
let newd1 = '\left' . d1
|
|
||||||
let newd2 = '\right' . d2
|
|
||||||
else
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
let line = getline(l1)
|
|
||||||
let line = strpart(line, 0, c1 - 1) . newd1 . strpart(line, c1 + len(d1) - 1)
|
|
||||||
call setline(l1, line)
|
|
||||||
|
|
||||||
if l1 == l2
|
|
||||||
let n = len(newd1) - len(d1)
|
|
||||||
let c2 += n
|
|
||||||
let pos = getpos('.')
|
|
||||||
let pos[2] += n
|
|
||||||
call setpos('.', pos)
|
|
||||||
endif
|
|
||||||
|
|
||||||
let line = getline(l2)
|
|
||||||
let line = strpart(line, 0, c2 - 1) . newd2 . strpart(line, c2 + len(d2) - 1)
|
|
||||||
call setline(l2, line)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" {{{1 latex#change#env
|
" {{{1 latex#change#env
|
||||||
function! latex#change#env(new_env)
|
function! latex#change#env(new_env)
|
||||||
let [env, l1, c1, l2, c2] = latex#util#get_env(1)
|
let [env, l1, c1, l2, c2] = latex#util#get_env(1)
|
||||||
@ -102,8 +66,42 @@ function! latex#change#env_prompt()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 latex#change#env_toggle_star
|
" {{{1 latex#change#toggle_delim
|
||||||
function! latex#change#env_toggle_star()
|
function! latex#change#toggle_delim()
|
||||||
|
"
|
||||||
|
" Toggle \left and \right variants of delimiters
|
||||||
|
"
|
||||||
|
let [d1, l1, c1, d2, l2, c2] = latex#util#get_delim()
|
||||||
|
|
||||||
|
if d1 =~ 'left'
|
||||||
|
let newd1 = substitute(d1, '\\left', '', '')
|
||||||
|
let newd2 = substitute(d2, '\\right', '', '')
|
||||||
|
elseif d1 !~ '\cbigg\?'
|
||||||
|
let newd1 = '\left' . d1
|
||||||
|
let newd2 = '\right' . d2
|
||||||
|
else
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let line = getline(l1)
|
||||||
|
let line = strpart(line, 0, c1 - 1) . newd1 . strpart(line, c1 + len(d1) - 1)
|
||||||
|
call setline(l1, line)
|
||||||
|
|
||||||
|
if l1 == l2
|
||||||
|
let n = len(newd1) - len(d1)
|
||||||
|
let c2 += n
|
||||||
|
let pos = getpos('.')
|
||||||
|
let pos[2] += n
|
||||||
|
call setpos('.', pos)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let line = getline(l2)
|
||||||
|
let line = strpart(line, 0, c2 - 1) . newd2 . strpart(line, c2 + len(d2) - 1)
|
||||||
|
call setline(l2, line)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 latex#change#toggle_env_star
|
||||||
|
function! latex#change#toggle_env_star()
|
||||||
let env = latex#util#get_env()
|
let env = latex#util#get_env()
|
||||||
|
|
||||||
if env == '\('
|
if env == '\('
|
||||||
@ -155,32 +153,6 @@ function! latex#change#wrap_selection_prompt(...)
|
|||||||
endfunction
|
endfunction
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
" Work in progress
|
|
||||||
" {{{1 latex#change#surround
|
|
||||||
function! latex#change#surround()
|
|
||||||
let pos = getpos('.')
|
|
||||||
|
|
||||||
let a = getchar()
|
|
||||||
if a =~ '^\d\+$'
|
|
||||||
let a = nr2char(a)
|
|
||||||
endif
|
|
||||||
|
|
||||||
if a == "e"
|
|
||||||
call latex#change#env_prompt()
|
|
||||||
elseif a == "
|
|
||||||
echo "Not implemented"
|
|
||||||
"let b = getchar()
|
|
||||||
"if b =~ '^\d\+$'
|
|
||||||
" let b = nr2char(b)
|
|
||||||
"endif
|
|
||||||
"
|
|
||||||
"echo 'a=' . a . ' b=' . b
|
|
||||||
endif
|
|
||||||
|
|
||||||
call setpos('.', pos)
|
|
||||||
endfunction
|
|
||||||
"}}}1
|
|
||||||
|
|
||||||
" {{{1 s:sidwrap
|
" {{{1 s:sidwrap
|
||||||
let s:SID = matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
|
let s:SID = matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
|
||||||
function! s:sidwrap(func)
|
function! s:sidwrap(func)
|
||||||
|
@ -21,15 +21,20 @@ function! latex#motion#init(initialized)
|
|||||||
onoremap <silent><buffer> [] :normal v[]<cr>
|
onoremap <silent><buffer> [] :normal v[]<cr>
|
||||||
onoremap <silent><buffer> [[ :normal v[[<cr>
|
onoremap <silent><buffer> [[ :normal v[[<cr>
|
||||||
|
|
||||||
vnoremap <silent><buffer> ie :latex#motion#select_current_env('inner')<cr>
|
vnoremap <silent><buffer> ie :call latex#motion#select_environment(1)<cr>
|
||||||
vnoremap <silent><buffer> ae :latex#motion#select_current_env('outer')<cr>
|
vnoremap <silent><buffer> ae :call latex#motion#select_environment()<cr>
|
||||||
onoremap <silent><buffer> ie :normal vie<cr>
|
onoremap <silent><buffer> ie :normal vie<cr>
|
||||||
onoremap <silent><buffer> ae :normal vae<cr>
|
onoremap <silent><buffer> ae :normal vae<cr>
|
||||||
|
|
||||||
vnoremap <silent><buffer> i$ :latex#motion#select_inline_math('inner')<cr>
|
vnoremap <silent><buffer> i$ :call latex#motion#select_inline_math(1)<cr>
|
||||||
vnoremap <silent><buffer> a$ :latex#motion#select_inline_math('outer')<cr>
|
vnoremap <silent><buffer> a$ :call latex#motion#select_inline_math()<cr>
|
||||||
onoremap <silent><buffer> i$ :normal vi$<cr>
|
onoremap <silent><buffer> i$ :normal vi$<cr>
|
||||||
onoremap <silent><buffer> a$ :normal va$<cr>
|
onoremap <silent><buffer> a$ :normal va$<cr>
|
||||||
|
|
||||||
|
vnoremap <silent><buffer> id :<c-u>call latex#motion#select_delimiter(1)<cr>
|
||||||
|
vnoremap <silent><buffer> ad :<c-u>call latex#motion#select_delimiter()<cr>
|
||||||
|
onoremap <silent><buffer> id :normal vi(<cr>
|
||||||
|
onoremap <silent><buffer> ad :normal va(<cr>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"
|
"
|
||||||
@ -55,9 +60,6 @@ endfunction
|
|||||||
|
|
||||||
" {{{1 latex#motion#find_matching_pair
|
" {{{1 latex#motion#find_matching_pair
|
||||||
function! latex#motion#find_matching_pair(...)
|
function! latex#motion#find_matching_pair(...)
|
||||||
"
|
|
||||||
" Note: This code is ugly, but it seems to work.
|
|
||||||
"
|
|
||||||
if a:0 > 0
|
if a:0 > 0
|
||||||
normal! gv
|
normal! gv
|
||||||
endif
|
endif
|
||||||
@ -68,18 +70,14 @@ function! latex#motion#find_matching_pair(...)
|
|||||||
let nl = line('.')
|
let nl = line('.')
|
||||||
let nc = col('.')
|
let nc = col('.')
|
||||||
|
|
||||||
" Combine all open/close pats
|
|
||||||
let all_pats = join(g:latex_motion_open_pats+g:latex_motion_close_pats, '\|')
|
|
||||||
let all_pats = '\C\(' . all_pats . '\|\$\)'
|
|
||||||
|
|
||||||
" Find delimiter under cursor
|
" Find delimiter under cursor
|
||||||
let [lnum, cnum] = searchpos(all_pats, 'cbnW', nl-2)
|
let [lnum, cnum] = searchpos(s:delimiters, 'cbnW', nl-2)
|
||||||
let delim = matchstr(getline(lnum), '^'. all_pats, cnum-1)
|
let delim = matchstr(getline(lnum), '^' . s:delimiters, cnum-1)
|
||||||
|
|
||||||
" If delimiter not found, try to search forward instead
|
" If delimiter not found, try to search forward instead
|
||||||
if empty(delim)
|
if empty(delim)
|
||||||
let [lnum, cnum] = searchpos(all_pats, 'cnW', nl+2)
|
let [lnum, cnum] = searchpos(s:delimiters, 'cnW', nl+2)
|
||||||
let delim = matchstr(getline(lnum), '^'. all_pats, cnum-1)
|
let delim = matchstr(getline(lnum), '^'. s:delimiters, cnum-1)
|
||||||
if empty(delim)
|
if empty(delim)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -100,9 +98,9 @@ function! latex#motion#find_matching_pair(...)
|
|||||||
|
|
||||||
call cursor(lnum2,cnum2)
|
call cursor(lnum2,cnum2)
|
||||||
else
|
else
|
||||||
for i in range(len(g:latex_motion_open_pats))
|
for i in range(len(s:delimiters))
|
||||||
let open_pat = '\C' . b:notbslash . g:latex_motion_open_pats[i]
|
let open_pat = '\C' . b:notbslash . s:delimiters_open[i]
|
||||||
let close_pat = '\C' . b:notbslash . g:latex_motion_close_pats[i]
|
let close_pat = '\C' . b:notbslash . s:delimiters_close[i]
|
||||||
|
|
||||||
if delim =~# '^' . open_pat
|
if delim =~# '^' . open_pat
|
||||||
call searchpairpos(open_pat, '', close_pat,
|
call searchpairpos(open_pat, '', close_pat,
|
||||||
@ -135,25 +133,13 @@ function! latex#motion#next_sec(type, backwards, visual)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Define search pattern and do the search while preserving "/
|
" Define search pattern and do the search while preserving "/
|
||||||
let save_search = @/
|
|
||||||
let flags = 'W'
|
let flags = 'W'
|
||||||
if a:backwards
|
if a:backwards
|
||||||
let flags = 'b' . flags
|
let flags = 'b' . flags
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Define section pattern
|
|
||||||
let sec_pat = join([
|
|
||||||
\ '(sub)*section',
|
|
||||||
\ 'chapter',
|
|
||||||
\ 'part',
|
|
||||||
\ 'appendix',
|
|
||||||
\ '(front|back|main)matter',
|
|
||||||
\ ], '|')
|
|
||||||
let sec_pat = b:notcomment . '\v\s*\\(' . sec_pat . ')>'
|
|
||||||
|
|
||||||
" Perform the search
|
" Perform the search
|
||||||
call search(sec_pat, flags)
|
call search(s:section, flags)
|
||||||
let @/ = save_search
|
|
||||||
|
|
||||||
" For the [] and ][ commands we move down or up after the search
|
" For the [] and ][ commands we move down or up after the search
|
||||||
if a:type == 1
|
if a:type == 1
|
||||||
@ -165,11 +151,48 @@ function! latex#motion#next_sec(type, backwards, visual)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 latex#motion#select_current_env
|
" {{{1 latex#motion#select_delimiter
|
||||||
function! latex#motion#select_current_env(seltype)
|
function! latex#motion#select_delimiter(...)
|
||||||
|
let inner = a:0 > 0
|
||||||
|
|
||||||
|
let [d1, l1, c1, d2, l2, c2] = latex#util#get_delim()
|
||||||
|
|
||||||
|
if inner
|
||||||
|
let c1 += len(d1)
|
||||||
|
if c1 != len(getline(l1))
|
||||||
|
let l1 += 1
|
||||||
|
let c1 = 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if inner
|
||||||
|
let c2 -= 1
|
||||||
|
if c2 < 1
|
||||||
|
let l2 -= 1
|
||||||
|
let c2 = len(getline(l2))
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let c2 += len(d2) - 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if l1 < l2 || (l1 == l2 && c1 < c2)
|
||||||
|
call cursor(l1,c1)
|
||||||
|
if visualmode() ==# 'V'
|
||||||
|
normal! V
|
||||||
|
else
|
||||||
|
normal! v
|
||||||
|
endif
|
||||||
|
call cursor(l2,c2)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" {{{1 latex#motion#select_environment
|
||||||
|
function! latex#motion#select_environment(...)
|
||||||
|
let inner = a:0 > 0
|
||||||
|
|
||||||
let [env, lnum, cnum, lnum2, cnum2] = latex#util#get_env(1)
|
let [env, lnum, cnum, lnum2, cnum2] = latex#util#get_env(1)
|
||||||
call cursor(lnum, cnum)
|
call cursor(lnum, cnum)
|
||||||
if a:seltype == 'inner'
|
if inner
|
||||||
if env =~ '^\'
|
if env =~ '^\'
|
||||||
call search('\\.\_\s*\S', 'eW')
|
call search('\\.\_\s*\S', 'eW')
|
||||||
else
|
else
|
||||||
@ -182,7 +205,7 @@ function! latex#motion#select_current_env(seltype)
|
|||||||
normal! v
|
normal! v
|
||||||
endif
|
endif
|
||||||
call cursor(lnum2, cnum2)
|
call cursor(lnum2, cnum2)
|
||||||
if a:seltype == 'inner'
|
if inner
|
||||||
call search('\S\_\s*', 'bW')
|
call search('\S\_\s*', 'bW')
|
||||||
else
|
else
|
||||||
if env =~ '^\'
|
if env =~ '^\'
|
||||||
@ -194,8 +217,8 @@ function! latex#motion#select_current_env(seltype)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 latex#motion#select_inline_math
|
" {{{1 latex#motion#select_inline_math
|
||||||
function! latex#motion#select_inline_math(seltype)
|
function! latex#motion#select_inline_math(...)
|
||||||
" seltype is either 'inner' or 'outer'
|
let inner = a:0 > 0
|
||||||
|
|
||||||
let dollar_pat = '\\\@<!\$'
|
let dollar_pat = '\\\@<!\$'
|
||||||
|
|
||||||
@ -207,7 +230,7 @@ function! latex#motion#select_inline_math(seltype)
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if a:seltype == 'inner'
|
if inner
|
||||||
normal! l
|
normal! l
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -219,12 +242,47 @@ function! latex#motion#select_inline_math(seltype)
|
|||||||
|
|
||||||
call s:search_and_skip_comments(dollar_pat, 'W')
|
call s:search_and_skip_comments(dollar_pat, 'W')
|
||||||
|
|
||||||
if a:seltype == 'inner'
|
if inner
|
||||||
normal! h
|
normal! h
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
|
" {{{1 Common patterns
|
||||||
|
|
||||||
|
" Patterns to match opening and closing delimiters/environments
|
||||||
|
let s:delimiters_open = [
|
||||||
|
\ '{',
|
||||||
|
\ '(',
|
||||||
|
\ '\[',
|
||||||
|
\ '\\{',
|
||||||
|
\ '\\(',
|
||||||
|
\ '\\\[',
|
||||||
|
\ '\\\Cbegin\s*{.\{-}}',
|
||||||
|
\ '\\\Cleft\s*\%([^\\]\|\\.\|\\\a*\)',
|
||||||
|
\ '\\\cbigg\?\((\|\[\|\\{\)',
|
||||||
|
\ ]
|
||||||
|
let s:delimiters_close = [
|
||||||
|
\ '}',
|
||||||
|
\ ')',
|
||||||
|
\ '\]',
|
||||||
|
\ '\\}',
|
||||||
|
\ '\\)',
|
||||||
|
\ '\\\]',
|
||||||
|
\ '\\\Cend\s*{.\{-}}',
|
||||||
|
\ '\\\Cright\s*\%([^\\]\|\\.\|\\\a*\)',
|
||||||
|
\ '\\\cbigg\?\()\|\]\|\\}\)',
|
||||||
|
\ ]
|
||||||
|
let s:delimiters = join(s:delimiters_open + s:delimiters_close, '\|')
|
||||||
|
let s:delimiters = '\(' . s:delimiters . '\|\$\)'
|
||||||
|
|
||||||
|
" Pattern to match section/chapter/...
|
||||||
|
let s:section = b:notcomment . '\v\s*\\'
|
||||||
|
let s:section.= '((sub)*section|chapter|part|appendix|(front|back|main)matter)'
|
||||||
|
let s:section.= '>'
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
" {{{1 s:highlight_matching_pair
|
" {{{1 s:highlight_matching_pair
|
||||||
function! s:highlight_matching_pair(...)
|
function! s:highlight_matching_pair(...)
|
||||||
if latex#util#in_comment() | return | endif
|
if latex#util#in_comment() | return | endif
|
||||||
@ -237,13 +295,9 @@ function! s:highlight_matching_pair(...)
|
|||||||
let nc = col('.')
|
let nc = col('.')
|
||||||
let line = getline(nl)
|
let line = getline(nl)
|
||||||
|
|
||||||
" Combine all open/close pats
|
|
||||||
let all_pats = join(g:latex_motion_open_pats+g:latex_motion_close_pats, '\|')
|
|
||||||
let all_pats = '\C\(' . all_pats . '\|\$\)'
|
|
||||||
|
|
||||||
" Find delimiter under cursor
|
" Find delimiter under cursor
|
||||||
let cnum = searchpos(all_pats, 'cbnW', nl)[1]
|
let cnum = searchpos(s:delimiters, 'cbnW', nl)[1]
|
||||||
let delim = matchstr(line, '^'. all_pats, cnum-1)
|
let delim = matchstr(line, '^'. s:delimiters, cnum-1)
|
||||||
|
|
||||||
" Only highlight when cursor is on delimiters
|
" Only highlight when cursor is on delimiters
|
||||||
if empty(delim) || strlen(delim)+cnum-hmode < nc
|
if empty(delim) || strlen(delim)+cnum-hmode < nc
|
||||||
@ -270,26 +324,26 @@ function! s:highlight_matching_pair(...)
|
|||||||
"
|
"
|
||||||
" Match other delimitors
|
" Match other delimitors
|
||||||
"
|
"
|
||||||
for i in range(len(g:latex_motion_open_pats))
|
for i in range(len(s:delimiters_open))
|
||||||
let open_pat = '\C' . b:notbslash . g:latex_motion_open_pats[i]
|
let open_pat = '\C' . b:notbslash . s:delimiters_open[i]
|
||||||
let close_pat = '\C' . b:notbslash . g:latex_motion_close_pats[i]
|
let close_pat = '\C' . b:notbslash . s:delimiters_close[i]
|
||||||
|
|
||||||
if delim =~# '^' . open_pat
|
if delim =~# '^' . open_pat
|
||||||
let [lnum2, cnum2] = searchpairpos(open_pat, '', close_pat,
|
let [lnum2, cnum2] = searchpairpos(open_pat, '', close_pat,
|
||||||
\ 'nW', 'latex#util#in_comment()', line('w$'), 200)
|
\ 'nW', 'latex#util#in_comment()', line('w$'), 200)
|
||||||
execute '2match MatchParen /\%(\%' . nl . 'l\%' . cnum
|
execute '2match MatchParen /\%(\%' . nl . 'l\%' . cnum
|
||||||
\ . 'c' . g:latex_motion_open_pats[i] . '\|\%'
|
\ . 'c' . s:delimiters_open[i] . '\|\%'
|
||||||
\ . lnum2 . 'l\%' . cnum2 . 'c'
|
\ . lnum2 . 'l\%' . cnum2 . 'c'
|
||||||
\ . g:latex_motion_close_pats[i] . '\)/'
|
\ . s:delimiters_close[i] . '\)/'
|
||||||
return
|
return
|
||||||
elseif delim =~# '^' . close_pat
|
elseif delim =~# '^' . close_pat
|
||||||
let [lnum2, cnum2] = searchpairpos(open_pat, '',
|
let [lnum2, cnum2] = searchpairpos(open_pat, '',
|
||||||
\ '\C\%(\%'. nl . 'l\%' . cnum . 'c\)\@!' . close_pat,
|
\ '\C\%(\%'. nl . 'l\%' . cnum . 'c\)\@!' . close_pat,
|
||||||
\ 'bnW', 'latex#util#in_comment()', line('w0'), 200)
|
\ 'bnW', 'latex#util#in_comment()', line('w0'), 200)
|
||||||
execute '2match MatchParen /\%(\%' . lnum2 . 'l\%' . cnum2
|
execute '2match MatchParen /\%(\%' . lnum2 . 'l\%' . cnum2
|
||||||
\ . 'c' . g:latex_motion_open_pats[i] . '\|\%'
|
\ . 'c' . s:delimiters_open[i] . '\|\%'
|
||||||
\ . nl . 'l\%' . cnum . 'c'
|
\ . nl . 'l\%' . cnum . 'c'
|
||||||
\ . g:latex_motion_close_pats[i] . '\)/'
|
\ . s:delimiters_close[i] . '\)/'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
@ -142,27 +142,7 @@ function! latex#util#get_env(...)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{1 latex#util#get_delim
|
" {{{1 latex#util#get_delim
|
||||||
let s:latex_delim_open = [
|
|
||||||
\ '(',
|
|
||||||
\ '\[',
|
|
||||||
\ '\\{',
|
|
||||||
\ '\\\[',
|
|
||||||
\ '\\\Cleft\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ '\\\cbigg\?\((\|\[\|\\{\)',
|
|
||||||
\ ]
|
|
||||||
let s:latex_delim_close = [
|
|
||||||
\ ')',
|
|
||||||
\ '\]',
|
|
||||||
\ '\\}',
|
|
||||||
\ '\\\]',
|
|
||||||
\ '\\\Cright\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ '\\\cbigg\?\()\|\]\|\\}\)',
|
|
||||||
\ ]
|
|
||||||
function! latex#util#get_delim()
|
function! latex#util#get_delim()
|
||||||
"
|
|
||||||
" Note: This functions has not been optimized
|
|
||||||
"
|
|
||||||
|
|
||||||
" Save position in order to restore before finishing
|
" Save position in order to restore before finishing
|
||||||
let pos_original = getpos('.')
|
let pos_original = getpos('.')
|
||||||
|
|
||||||
@ -170,7 +150,7 @@ function! latex#util#get_delim()
|
|||||||
let pos_save = getpos('.')
|
let pos_save = getpos('.')
|
||||||
|
|
||||||
" Check if the cursor is on top of a closing delimiter
|
" Check if the cursor is on top of a closing delimiter
|
||||||
let close_pats = '\(' . join(s:latex_delim_close, '\|') . '\)'
|
let close_pats = '\(' . join(s:delimiters_close, '\|') . '\)'
|
||||||
let lnum = pos_save[1]
|
let lnum = pos_save[1]
|
||||||
let cnum = pos_save[2]
|
let cnum = pos_save[2]
|
||||||
let [lnum, cnum] = searchpos(close_pats, 'cbnW', lnum)
|
let [lnum, cnum] = searchpos(close_pats, 'cbnW', lnum)
|
||||||
@ -187,10 +167,10 @@ function! latex#util#get_delim()
|
|||||||
let l2=1000000
|
let l2=1000000
|
||||||
let c1=1000000
|
let c1=1000000
|
||||||
let c2=1000000
|
let c2=1000000
|
||||||
for i in range(len(s:latex_delim_open))
|
for i in range(len(s:delimiters_open))
|
||||||
call setpos('.', pos_save)
|
call setpos('.', pos_save)
|
||||||
let open = s:latex_delim_open[i]
|
let open = s:delimiters_open[i]
|
||||||
let close = s:latex_delim_close[i]
|
let close = s:delimiters_close[i]
|
||||||
let flags = 'W'
|
let flags = 'W'
|
||||||
|
|
||||||
" Check if the cursor is on top of an opening delimiter. If it is not,
|
" Check if the cursor is on top of an opening delimiter. If it is not,
|
||||||
@ -221,6 +201,21 @@ function! latex#util#get_delim()
|
|||||||
return [d1,l1,c1,d2,l2,c2]
|
return [d1,l1,c1,d2,l2,c2]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let s:delimiters_open = [
|
||||||
|
\ '(',
|
||||||
|
\ '\[',
|
||||||
|
\ '\\{',
|
||||||
|
\ '\\\Cleft\s*\%([^\\]\|\\.\|\\\a*\)',
|
||||||
|
\ '\\\cbigg\?\((\|\[\|\\{\)',
|
||||||
|
\ ]
|
||||||
|
let s:delimiters_close = [
|
||||||
|
\ ')',
|
||||||
|
\ '\]',
|
||||||
|
\ '\\}',
|
||||||
|
\ '\\\Cright\s*\%([^\\]\|\\.\|\\\a*\)',
|
||||||
|
\ '\\\cbigg\?\()\|\]\|\\}\)',
|
||||||
|
\ ]
|
||||||
|
|
||||||
" {{{1 latex#util#has_syntax
|
" {{{1 latex#util#has_syntax
|
||||||
function! latex#util#has_syntax(name, ...)
|
function! latex#util#has_syntax(name, ...)
|
||||||
" Usage: latex#util#has_syntax(name, [line], [col])
|
" Usage: latex#util#has_syntax(name, [line], [col])
|
||||||
|
183
doc/latex.txt
183
doc/latex.txt
@ -33,9 +33,11 @@ CONTENTS *vim-latex-contents*
|
|||||||
6. Folding .............................. |vim-latex-folding|
|
6. Folding .............................. |vim-latex-folding|
|
||||||
7. Latexmk .............................. |vim-latex-latexmk|
|
7. Latexmk .............................. |vim-latex-latexmk|
|
||||||
8. Motion ............................... |vim-latex-motion|
|
8. Motion ............................... |vim-latex-motion|
|
||||||
9. Table of contents .................... |vim-latex-toc|
|
9. Change ............................... |vim-latex-change|
|
||||||
10. Function reference ................... |vim-latex-functions|
|
10. Table of contents .................... |vim-latex-toc|
|
||||||
11. Limitations .......................... |vim-latex-limitations|
|
11. Utility functions .................... |vim-latex-util|
|
||||||
|
12. Function reference ................... |vim-latex-functions|
|
||||||
|
13. Limitations .......................... |vim-latex-limitations|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
INTRO *vim-latex-intro*
|
INTRO *vim-latex-intro*
|
||||||
@ -132,32 +134,37 @@ convenience to list all the defined mappings, and it is by default mapped to
|
|||||||
'<localleader>lh'. The default mappings may be disabled with the option
|
'<localleader>lh'. The default mappings may be disabled with the option
|
||||||
|g:latex_default_mappings|, if the user wishes to create his own mappings.
|
|g:latex_default_mappings|, if the user wishes to create his own mappings.
|
||||||
|
|
||||||
n % *@:call latex#motion#find_matching_pair('n')<cr>
|
n % *@:call latex#motion#find_matching_pair()<CR>
|
||||||
v % *@:<C-U>call latex#motion#find_matching_pair('v')<cr>
|
v % *@:<C-U>call latex#motion#find_matching_pair(1)<CR>
|
||||||
o % *@:call latex#motion#find_matching_pair('o')<cr>
|
o % *@:normal v%<CR>
|
||||||
|
|
||||||
v a$ *@:latex#motion#select_inline_math('outer')<cr>
|
v a$ *@:call latex#motion#select_inline_math()<CR>
|
||||||
v i$ *@:latex#motion#select_inline_math('inner')<cr>
|
v i$ *@:call latex#motion#select_inline_math(1)<CR>
|
||||||
o a$ *@:normal va$<cr>
|
o a$ *@:normal va$<CR>
|
||||||
o i$ *@:normal vi$<cr>
|
o i$ *@:normal vi$<CR>
|
||||||
|
|
||||||
v ae *@:latex#motion#select_current_env('outer')<cr>
|
v ae *@:call latex#motion#select_environment()<CR>
|
||||||
v ie *@:latex#motion#select_current_env('inner')<cr>
|
v ie *@:call latex#motion#select_environment(1)<CR>
|
||||||
o ae *@:normal vae<cr>
|
o ae *@:normal vae<CR>
|
||||||
o ie *@:normal vie<cr>
|
o ie *@:normal vie<CR>
|
||||||
|
|
||||||
n [[ *@:call latex#motion#next_sec(0,1,0)<cr>
|
v ad *@:<C-U>call latex#motion#select_delimiter()<CR>
|
||||||
n [] *@:call latex#motion#next_sec(1,1,0)<cr>
|
v id *@:<C-U>call latex#motion#select_delimiter(1)<CR>
|
||||||
n ][ *@:call latex#motion#next_sec(1,0,0)<cr>
|
o ad *@:normal va(<CR>
|
||||||
n ]] *@:call latex#motion#next_sec(0,0,0)<cr>
|
o id *@:normal vi(<CR>
|
||||||
v [[ *@:<C-U>call latex#motion#next_sec(0,1,1)<cr>
|
|
||||||
v [] *@:<C-U>call latex#motion#next_sec(1,1,1)<cr>
|
n [[ *@:call latex#motion#next_sec(0,1,0)<CR>
|
||||||
v ][ *@:<C-U>call latex#motion#next_sec(1,0,1)<cr>
|
n [] *@:call latex#motion#next_sec(1,1,0)<CR>
|
||||||
v ]] *@:<C-U>call latex#motion#next_sec(0,0,1)<cr>
|
n ][ *@:call latex#motion#next_sec(1,0,0)<CR>
|
||||||
o [[ *@:normal v[[<cr>
|
n ]] *@:call latex#motion#next_sec(0,0,0)<CR>
|
||||||
o [] *@:normal v[]<cr>
|
v [[ *@:<C-U>call latex#motion#next_sec(0,1,1)<CR>
|
||||||
o ][ *@:normal v][<cr>
|
v [] *@:<C-U>call latex#motion#next_sec(1,1,1)<CR>
|
||||||
o ]] *@:normal v]]<cr>
|
v ][ *@:<C-U>call latex#motion#next_sec(1,0,1)<CR>
|
||||||
|
v ]] *@:<C-U>call latex#motion#next_sec(0,0,1)<CR>
|
||||||
|
o [[ *@:normal v[[<CR>
|
||||||
|
o [] *@:normal v[]<CR>
|
||||||
|
o ][ *@:normal v][<CR>
|
||||||
|
o ]] *@:normal v]]<CR>
|
||||||
|
|
||||||
n <localleader>li *@:call latex#info()<cr>
|
n <localleader>li *@:call latex#info()<cr>
|
||||||
n <localleader>lh *@:call latex#help()<cr>
|
n <localleader>lh *@:call latex#help()<cr>
|
||||||
@ -174,10 +181,27 @@ n <localleader>lG *@:call latex#latexmk#status(1)<cr>
|
|||||||
n <localleader>lc *@:call latex#latexmk#clean()<cr>
|
n <localleader>lc *@:call latex#latexmk#clean()<cr>
|
||||||
n <localleader>lC *@:call latex#latexmk#clean(1)<cr>
|
n <localleader>lC *@:call latex#latexmk#clean(1)<cr>
|
||||||
|
|
||||||
|
n <localleader>li *@:call latex#info()<CR>
|
||||||
|
n <localleader>lh *@:call latex#help()<CR>
|
||||||
|
n <localleader>lv *@:call latex#view()<CR>
|
||||||
|
n <localleader>lR *@:call latex#reinit()<CR>
|
||||||
|
n <localleader>lt *@:call latex#toc#open()<CR>
|
||||||
|
n <localleader>lT *@:call latex#toc#toggle()<CR>
|
||||||
|
n <localleader>ll *@:call latex#latexmk#compile()<CR>
|
||||||
|
n <localleader>lk *@:call latex#latexmk#stop(1)<CR>
|
||||||
|
n <localleader>lK *@:call latex#latexmk#stop_all()<CR>
|
||||||
|
n <localleader>le *@:call latex#latexmk#errors()<CR>
|
||||||
|
n <localleader>lg *@:call latex#latexmk#status()<CR>
|
||||||
|
n <localleader>lG *@:call latex#latexmk#status(1)<CR>
|
||||||
|
n <localleader>lc *@:call latex#latexmk#clean()<CR>
|
||||||
|
n <localleader>lC *@:call latex#latexmk#clean(1)<CR>
|
||||||
|
|
||||||
n zx *@:call latex#fold#refresh()<cr>zx
|
n zx *@:call latex#fold#refresh()<cr>zx
|
||||||
n dse *@:call latex#change#env('')<cr>
|
n dse *@:call latex#change#env('')<CR>
|
||||||
n cse *@:call latex#change#env_prompt()<cr>
|
n cse *@:call latex#change#env_prompt()<CR>
|
||||||
|
n tse *@:call latex#change#env_toggle_star()<CR>
|
||||||
n tse *@:call latex#change#env_toggle_star()<cr>
|
n tse *@:call latex#change#env_toggle_star()<cr>
|
||||||
|
n tsd *@:call latex#change#delim_toggle()<CR>
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
OPTIONS *vim-latex-options*
|
OPTIONS *vim-latex-options*
|
||||||
@ -206,10 +230,8 @@ Overview:~
|
|||||||
|g:latex_latexmk_options|
|
|g:latex_latexmk_options|
|
||||||
|g:latex_latexmk_output|
|
|g:latex_latexmk_output|
|
||||||
|g:latex_main_tex_candidates|
|
|g:latex_main_tex_candidates|
|
||||||
|g:latex_motion_close_pats|
|
|
||||||
|g:latex_motion_enabled|
|
|g:latex_motion_enabled|
|
||||||
|g:latex_motion_matchparen|
|
|g:latex_motion_matchparen|
|
||||||
|g:latex_motion_open_pats|
|
|
||||||
|g:latex_toc_enabled|
|
|g:latex_toc_enabled|
|
||||||
|g:latex_toc_fold_levels|
|
|g:latex_toc_fold_levels|
|
||||||
|g:latex_toc_fold|
|
|g:latex_toc_fold|
|
||||||
@ -345,20 +367,6 @@ main tex file in multi-file projects. >
|
|||||||
\]
|
\]
|
||||||
<
|
<
|
||||||
|
|
||||||
*g:latex_motion_close_pats*
|
|
||||||
Define a list of patterns that match closing braces and environments. >
|
|
||||||
let g:latex_motion_close_pats = [
|
|
||||||
\ '}',
|
|
||||||
\ ')',
|
|
||||||
\ '\]',
|
|
||||||
\ '\\}',
|
|
||||||
\ '\\)',
|
|
||||||
\ '\\\]',
|
|
||||||
\ '\\end\s*{.\{-}}',
|
|
||||||
\ '\\right\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ ]
|
|
||||||
<
|
|
||||||
|
|
||||||
*g:latex_motion_enabled*
|
*g:latex_motion_enabled*
|
||||||
Whether to enable the motion interface. If it is disabled, then neither the
|
Whether to enable the motion interface. If it is disabled, then neither the
|
||||||
default mappings nor the autocommands that enable highlighting of matching
|
default mappings nor the autocommands that enable highlighting of matching
|
||||||
@ -372,20 +380,6 @@ but disables the builtin |matchparen|. >
|
|||||||
let g:latex_motion_matchparen = 1
|
let g:latex_motion_matchparen = 1
|
||||||
<
|
<
|
||||||
|
|
||||||
*g:latex_motion_open_pats*
|
|
||||||
Define a list of patterns that match opening braces and environments. >
|
|
||||||
let g:latex_motion_open_pats = [
|
|
||||||
\ '{',
|
|
||||||
\ '(',
|
|
||||||
\ '\[',
|
|
||||||
\ '\\{',
|
|
||||||
\ '\\(',
|
|
||||||
\ '\\\[',
|
|
||||||
\ '\\begin\s*{.\{-}}',
|
|
||||||
\ '\\left\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ ]
|
|
||||||
<
|
|
||||||
|
|
||||||
*g:latex_toc_enabled*
|
*g:latex_toc_enabled*
|
||||||
Enable interface for TOC. If it is disabled, then mappings for the TOC will
|
Enable interface for TOC. If it is disabled, then mappings for the TOC will
|
||||||
not be created. >
|
not be created. >
|
||||||
@ -584,6 +578,34 @@ Functions:
|
|||||||
|latex#motion#select_current_env|
|
|latex#motion#select_current_env|
|
||||||
|latex#motion#select_inline_math|
|
|latex#motion#select_inline_math|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CHANGE *vim-latex-change*
|
||||||
|
|
||||||
|
Utility functions are provided to manipulate the current environments or
|
||||||
|
delimiters.
|
||||||
|
|
||||||
|
Functions:
|
||||||
|
|latex#change#env|
|
||||||
|
|latex#change#env_prompt|
|
||||||
|
|latex#change#toggle_delim|
|
||||||
|
|latex#change#toggle_env_star|
|
||||||
|
|latex#change#wrap_selection|
|
||||||
|
|latex#change#wrap_selection_prompt|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
UTILITY FUNCTIONS *vim-latex-util*
|
||||||
|
|
||||||
|
Functions:
|
||||||
|
|latex#util#convert_back|
|
||||||
|
|latex#util#get_delim|
|
||||||
|
|latex#util#get_env|
|
||||||
|
|latex#util#has_syntax|
|
||||||
|
|latex#util#in_comment|
|
||||||
|
|latex#util#kpsewhich|
|
||||||
|
|latex#util#set_default|
|
||||||
|
|latex#util#tex2tree|
|
||||||
|
|latex#util#tree2tex|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
TABLE OF CONTENTS *vim-latex-toc*
|
TABLE OF CONTENTS *vim-latex-toc*
|
||||||
|
|
||||||
@ -613,6 +635,12 @@ descriptions follow.
|
|||||||
|
|
||||||
Overview:~
|
Overview:~
|
||||||
|
|
||||||
|
|latex#change#env|
|
||||||
|
|latex#change#env_prompt|
|
||||||
|
|latex#change#toggle_delim|
|
||||||
|
|latex#change#toggle_env_star|
|
||||||
|
|latex#change#wrap_selection|
|
||||||
|
|latex#change#wrap_selection_prompt|
|
||||||
|latex#complete#omnifunc|
|
|latex#complete#omnifunc|
|
||||||
|latex#complete#labels|
|
|latex#complete#labels|
|
||||||
|latex#complete#bibtex|
|
|latex#complete#bibtex|
|
||||||
@ -634,11 +662,32 @@ Overview:~
|
|||||||
|latex#reinit|
|
|latex#reinit|
|
||||||
|latex#toc#open|
|
|latex#toc#open|
|
||||||
|latex#toc#toggle|
|
|latex#toc#toggle|
|
||||||
|
|latex#util#convert_back|
|
||||||
|
|latex#util#get_delim|
|
||||||
|
|latex#util#get_env|
|
||||||
|
|latex#util#has_syntax|
|
||||||
|
|latex#util#in_comment|
|
||||||
|
|latex#util#kpsewhich|
|
||||||
|
|latex#util#set_default|
|
||||||
|
|latex#util#tex2tree|
|
||||||
|
|latex#util#tree2tex|
|
||||||
|latex#view|
|
|latex#view|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Detailed descriptions:~
|
Detailed descriptions:~
|
||||||
|
|
||||||
|
*latex#change#env*
|
||||||
|
|
||||||
|
*latex#change#env_prompt*
|
||||||
|
|
||||||
|
*latex#change#toggle_delim*
|
||||||
|
|
||||||
|
*latex#change#toggle_env_star*
|
||||||
|
|
||||||
|
*latex#change#wrap_selection*
|
||||||
|
|
||||||
|
*latex#change#wrap_selection_prompt*
|
||||||
|
|
||||||
*latex#complete#omnifunc*
|
*latex#complete#omnifunc*
|
||||||
An 'omnifunc' for label and citation completion, see |vim-latex-completion|.
|
An 'omnifunc' for label and citation completion, see |vim-latex-completion|.
|
||||||
|
|
||||||
@ -717,6 +766,24 @@ the TOC window.
|
|||||||
Toggle TOC window: If TOC window is open, then close it. If it is closed,
|
Toggle TOC window: If TOC window is open, then close it. If it is closed,
|
||||||
then open it (but do not move the cursor to the window).
|
then open it (but do not move the cursor to the window).
|
||||||
|
|
||||||
|
*latex#util#convert_back*
|
||||||
|
|
||||||
|
*latex#util#get_delim*
|
||||||
|
|
||||||
|
*latex#util#get_env*
|
||||||
|
|
||||||
|
*latex#util#has_syntax*
|
||||||
|
|
||||||
|
*latex#util#in_comment*
|
||||||
|
|
||||||
|
*latex#util#kpsewhich*
|
||||||
|
|
||||||
|
*latex#util#set_default*
|
||||||
|
|
||||||
|
*latex#util#tex2tree*
|
||||||
|
|
||||||
|
*latex#util#tree2tex*
|
||||||
|
|
||||||
*latex#view*
|
*latex#view*
|
||||||
Open the output file (specified with |g:latex_latexmk_output|) with the
|
Open the output file (specified with |g:latex_latexmk_output|) with the
|
||||||
default viewer |g:latex_viewer|.
|
default viewer |g:latex_viewer|.
|
||||||
|
@ -71,30 +71,6 @@ call latex#util#set_default('g:latex_errorformat_ignore_warnings',
|
|||||||
" {{{1 Motion
|
" {{{1 Motion
|
||||||
call latex#util#set_default('g:latex_motion_enabled', 1)
|
call latex#util#set_default('g:latex_motion_enabled', 1)
|
||||||
call latex#util#set_default('g:latex_motion_matchparen', 1)
|
call latex#util#set_default('g:latex_motion_matchparen', 1)
|
||||||
call latex#util#set_default('g:latex_motion_open_pats',
|
|
||||||
\ [
|
|
||||||
\ '{',
|
|
||||||
\ '(',
|
|
||||||
\ '\[',
|
|
||||||
\ '\\{',
|
|
||||||
\ '\\(',
|
|
||||||
\ '\\\[',
|
|
||||||
\ '\\begin\s*{.\{-}}',
|
|
||||||
\ '\\left\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ '\\\cbigg\?\((\|\[\|\\{\)',
|
|
||||||
\ ])
|
|
||||||
call latex#util#set_default('g:latex_motion_close_pats',
|
|
||||||
\ [
|
|
||||||
\ '}',
|
|
||||||
\ ')',
|
|
||||||
\ '\]',
|
|
||||||
\ '\\}',
|
|
||||||
\ '\\)',
|
|
||||||
\ '\\\]',
|
|
||||||
\ '\\end\s*{.\{-}}',
|
|
||||||
\ '\\right\s*\%([^\\]\|\\.\|\\\a*\)',
|
|
||||||
\ '\\\cbigg\?\()\|\]\|\\}\)',
|
|
||||||
\ ])
|
|
||||||
|
|
||||||
" {{{1 Toc
|
" {{{1 Toc
|
||||||
call latex#util#set_default('g:latex_toc_enabled', 1)
|
call latex#util#set_default('g:latex_toc_enabled', 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user