diff options
Diffstat (limited to '')
| -rw-r--r-- | ftplugin/csv.vim | 268 | ||||
| -rw-r--r-- | ftplugin/latex-box/findmain.vim | 4 | ||||
| -rw-r--r-- | ftplugin/latex-box/latexmk.vim | 24 | ||||
| -rw-r--r-- | ftplugin/latex-box/mappings.vim | 32 | 
4 files changed, 227 insertions, 101 deletions
| diff --git a/ftplugin/csv.vim b/ftplugin/csv.vim index c1a5fa4f..95b609c9 100644 --- a/ftplugin/csv.vim +++ b/ftplugin/csv.vim @@ -1,11 +1,11 @@  " Filetype plugin for editing CSV files. "{{{1  " Author:  Christian Brabandt <cb@256bit.org> -" Version: 0.30 +" Version: 0.31  " Script:  http://www.vim.org/scripts/script.php?script_id=2830  " License: VIM License -" Last Change: Thu, 27 Mar 2014 23:28:40 +0100 +" Last Change: Thu, 15 Jan 2015 21:05:10 +0100  " Documentation: see :help ft-csv.txt -" GetLatestVimScripts: 2830 29 :AutoInstall: csv.vim +" GetLatestVimScripts: 2830 30 :AutoInstall: csv.vim  "  " Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667  " though, implementation differs. @@ -90,7 +90,7 @@ fu! <sid>Init(startline, endline) "{{{3          " - Should work with most ugly solutions that are available          let b:col='\%(\%(\%(' . (b:delimiter !~ '\s' ? '\s*' : '') .                  \ '"\%(' . (exists("g:csv_nl") ? '\_' : '' ) . -                \ '[^"]\|""\)*"\)' . s:del . '\)\|\%(' . +                \ '[^"]\|""\)*"\s*\)' . s:del . '\)\|\%(' .                  \  '[^' .  b:delimiter . ']*' . s:del . '\)\)'          let b:col_end='\%(\%(\%(' . (b:delimiter !~ '\s' ? '\s*' : '') .                  \ '"\%(' . (exists("g:csv_nl") ? '\_' : '' ) . @@ -147,7 +147,7 @@ fu! <sid>Init(startline, endline) "{{{3      let b:undo_ftplugin .=  "| unlet! b:delimiter b:col"          \ . "| unlet! b:csv_fixed_width_cols b:csv_filter"          \ . "| unlet! b:csv_fixed_width b:csv_list b:col_width" -        \ . "| unlet! b:csv_SplitWindow b:csv_headerline" +        \ . "| unlet! b:csv_SplitWindow b:csv_headerline b:csv_cmt"          \ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"          \. " | unlet! b:browsefilter b:csv_cmt"          \. " | unlet! b:csv_arrange_leftalign" @@ -182,7 +182,7 @@ fu! <sid>Init(startline, endline) "{{{3   " \ delf <sid>SaveOptions | delf <sid>CheckDuplicates |   " \ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |   " \ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn - " \ delf <sid>SetupQuitPre() | delf CSV_CloseBuffer + " \ delf <sid>SetupAutoCmd() | delf CSV_CloseBuffer  endfu  fu! <sid>LocalSettings(type) "{{{3 @@ -194,11 +194,8 @@ fu! <sid>LocalSettings(type) "{{{3          let b:undo_ftplugin = "setlocal sol& tw< wrap<"          " Set browsefilter -        if (v:version > 703 || (v:version == 703 && has("patch593"))) -                    \ && exists("browsefilter") -            let b:browsefilter="CSV Files (*.csv, *.dat)\t*.csv;*.dat\n". +        let b:browsefilter="CSV Files (*.csv, *.dat)\t*.csv;*.dat\n".                   \ "All Files\t*.*\n" -        endif          if has("conceal")              setl cole=2 cocu=nc @@ -341,7 +338,8 @@ fu! <sid>SearchColumn(arg) "{{{3      endif      let @/ = <sid>GetPat(colnr, maxcolnr, '\%('.pat. '\)')      try -        norm! n +        " force redraw, so that the search pattern isn't shown +        exe "norm! n\<c-l>"      catch /^Vim\%((\a\+)\)\=:E486/          " Pattern not found          echohl Error @@ -619,10 +617,6 @@ fu! <sid>ColWidth(colnr) "{{{3  endfu  fu! <sid>ArrangeCol(first, last, bang, limit) range "{{{3 -    "TODO: Why doesn't that work? -    " is this because of the range flag? -    " It's because of the way, Vim works with -    " a:firstline and a:lastline parameter, therefore      " explicitly give the range as argument to the function      if exists("b:csv_fixed_width_cols")          " Nothing to do @@ -713,6 +707,8 @@ fu! <sid>CalculateColumnWidth() "{{{3      " delete buffer content in variable b:csv_list,      " this was only necessary for calculating the max width      unlet! b:csv_list +    unlet! s:columnize_count +    unlet! s:decimal_column  endfu  fu! <sid>Columnize(field) "{{{3 @@ -736,51 +732,83 @@ fu! <sid>Columnize(field) "{{{3      " Careful: Keep this fast! Using      " let width=get(b:col_width,<SID>WColumn()-1,20)      " is too slow, so we are using: -    let width=get(b:col_width, (s:columnize_count % s:max_cols), 20) +    let colnr = s:columnize_count % s:max_cols +    let width=get(b:col_width, colnr, 20) +    let align='r' +    if exists('b:csv_arrange_align') +        let align_list=split(get(b:, 'csv_arrange_align', " "), '\zs') +        try +            let align = align_list[colnr] +        catch +            let align = 'r' +        endtry +    endif +    if ((align isnot? 'r' && align isnot? 'l' && +       \ align isnot? 'c' && align isnot? '.') || get(b:, 'csv_arrange_leftalign', 0)) +       let align = 'r' +    endif      let s:columnize_count += 1      let has_delimiter = (a:field =~# b:delimiter.'$') -    if v:version > 703 || v:version == 703 && has("patch713") -        " printf knows about %S (e.g. can handle char length -        if get(b:, 'csv_arrange_leftalign',0) -            " left-align content -            return printf("%-*S%s", width+1 ,  -                \ (has_delimiter ? -                \ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field), -                \ (has_delimiter ? b:delimiter : '')) -        else -            return printf("%*S", width+1 ,  a:field) -        endif -    else -        " printf only handles bytes -        if !exists("g:csv_no_multibyte") && -            \ match(a:field, '[^ -~]') != -1 -            " match characters outside the ascii range -            let a = split(a:field, '\zs') -            let add = eval(join(map(a, 'len(v:val)'), '+')) -            let add -= len(a) -        else -            let add = 0 -        endif - -        " Add one for the frame -        " plus additional width for multibyte chars, -        " since printf(%*s..) uses byte width! -        let width = width + add  + 1 +    if align is? 'l' +        " left-align content +        return printf("%-*S%s", width+1 ,  +            \ (has_delimiter ? a:field[:-2] : a:field), +            \ (has_delimiter ? b:delimiter : ' ')) +    elseif align is? 'c' +        " center the column +        let t = width - len(split(a:field, '\zs')) +        let leftwidth = t/2 +        " uneven width, add one +        let rightwidth = (t%2 ? leftwidth+1 : leftwidth) +        let field = (has_delimiter ?  a:field[:-2] : a:field).  repeat(' ', rightwidth) +        return printf("%*S%s", width , field, (has_delimiter ? b:delimiter : ' ')) +    elseif align is? '.' +        if !exists("s:decimal_column") +            let s:decimal_column = {} +        endif +        if get(s:decimal_column, colnr, 0) == 0 +            call <sid>CheckHeaderLine() +            call <sid>NumberFormat() +            let data = <sid>CopyCol('', colnr+1, '')[s:csv_fold_headerline : -1] +            let pat1 = escape(s:nr_format[1], '.').'\zs[^'.s:nr_format[1].']*\ze'. +                        \ (has_delimiter ? b:delimiter : '').'$' +            let pat2 = '\d\+\ze\%(\%('.escape(s:nr_format[1], '.'). '\d\+\)\|'. +                        \ (has_delimiter ? b:delimiter : '').'$\)' +            let data1 = map(copy(data), 'matchstr(v:val, pat1)') +            let data2 = map(data, 'matchstr(v:val, pat2)') +            " strlen should be okay for decimals... +            let data1 = map(data1, 'strlen(v:val)') +            let data2 = map(data2, 'strlen(v:val)') +            let dec = max(data1) +            let scal = max(data2) +            if dec + scal + 1 + (has_delimiter ? 1 : 0) > width +                let width = dec + scal + 1 + (has_delimiter ? 1 :0) +                let b:col_width[colnr] = width +            endif -        if width == strlen(a:field) -            " Column has correct length, don't use printf() -            return a:field +            let s:decimal_column[colnr] = dec          else -            if get(b:, 'csv_arrange_leftalign',0) -                " left-align content -                return printf("%-*s%s", width,   -                \ (has_delimiter ?  matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field), -                \ (has_delimiter ? b:delimiter : '')) -            else -                return printf("%*s", width ,  a:field) -            endif +            let dec = get(s:decimal_column, colnr)          endif +        let field = (has_delimiter ?  a:field[:-2] : a:field) +        let fmt = printf("%%%d.%df", width+1, dec) +        try +            if s:nr_format[1] isnot '.' +                let field = substitute(field, s:nr_format[1], '.', 'g') +                let field = substitute(field, s:nr_format[0], '', 'g') +            endif +            if field =~? '\h' " text in the column, can't be converted to float +                throw "no decimal" +            endif +            let result = printf(fmt, str2float(field)). (has_delimiter ? b:delimiter : ' ') +        catch +            let result = printf("%*S", width+2, a:field) +        endtry +        return result +    else +        " right align +        return printf("%*S", width+1 ,  a:field)      endif  endfun @@ -809,14 +837,13 @@ fu! <sid>GetColPat(colnr, zs_flag) "{{{3      return pat . (a:zs_flag ? '\zs' : '')  endfu -fu! <sid>SetupQuitPre(window) "{{{3 +fu! <sid>SetupAutoCmd(window,bufnr) "{{{3      " Setup QuitPre autocommand to quit cleanly -    if exists("##QuitPre") -        augroup CSV_QuitPre -            au! -            exe "au QuitPre * call CSV_CloseBuffer(".winbufnr(a:window).")" -        augroup end -    endif +    aug CSV_QuitPre +        au! +        exe "au QuitPre * call CSV_CloseBuffer(".winbufnr(a:window).")" +        exe "au CursorHold <buffer=".a:bufnr."> call CSV_SetSplitOptions(".a:window.")" +    aug END  endfu  fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3 @@ -837,8 +864,9 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3          let _sbo = &sbo          let a = []          let b=b:col +        let bufnr = bufnr('.')          if a:hor -            setl scrollopt=hor scrollbind +            setl scrollopt=hor scrollbind cursorbind              let _fdc = &l:fdc              let lines = empty(a:lines) ? s:csv_fold_headerline : a:lines              let a = getline(1,lines) @@ -851,16 +879,21 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3              "setl syntax=csv              sil! doautocmd FileType csv              noa 1 +            sil! sign unplace *              exe "resize" . lines -            setl scrollopt=hor winfixheight nowrap -            "let &l:stl=repeat(' ', winwidth(0)) +            setl scrollopt=hor winfixheight nowrap cursorbind              let &l:stl="%#Normal#".repeat(' ',winwidth(0)) +            let s:local_stl = &l:stl              " set the foldcolumn to the same of the other window              let &l:fdc = _fdc          else -            setl scrollopt=ver scrollbind +            setl scrollopt=ver scrollbind cursorbind              noa 0 -            let a=<sid>CopyCol('',1,a:lines) +            if a:lines[-1:] is? '!' +                let a=<sid>CopyCol('',a:lines,'') +            else +                let a=<sid>CopyCol('',1, a:lines-1) +            endif              " Does it make sense to use the preview window?              "vert sil! pedit |wincmd w | enew!              above vsp +enew @@ -876,11 +909,14 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3              noa 0              let b:csv_SplitWindow = winnr()              sil :call <sid>ArrangeCol(1,line('$'), 1, -1) +            sil! sign unplace *              exe "vert res" . len(split(getline(1), '\zs'))              call matchadd("CSVHeaderLine", b:col) -            setl scrollopt=ver winfixwidth +            setl scrollopt=ver winfixwidth cursorbind nonu nornu fdc=0          endif -        call <sid>SetupQuitPre(winnr()) +        call <sid>SetupAutoCmd(winnr(),bufnr) +        " disable airline +        let w:airline_disabled = 1          let win = winnr()          setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted          noa wincmd p @@ -901,9 +937,9 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3          if exists("_sbo")              let &sbo = _sbo          endif -        setl noscrollbind +        setl noscrollbind nocursorbind          try -            wincmd c +            noa wincmd c          catch /^Vim\%((\a\+)\)\=:E444/	" cannot close last window          catch /^Vim\%((\a\+)\)\=:E517/	" buffer already wiped              " no-op @@ -959,6 +995,9 @@ fu! <sid>MoveCol(forward, line, ...) "{{{3      elseif line > line('$')          let line=line('$')      endif +    if foldclosed(line) != -1 +        let line = line > line('.') ? foldclosedend(line) : foldclosed(line) +    endif      " Generate search pattern      if colnr == 1 @@ -1906,7 +1945,7 @@ fu! <sid>CommandDefinitions() "{{{3      call <sid>LocalCmd("CSVFixed", ':call <sid>InitCSVFixedWidth()', '')      call <sid>LocalCmd("NewRecord", ':call <sid>NewRecord(<line1>,          \ <line2>, <q-args>)', '-nargs=? -range') -    call <sid>LocalCmd("NewDelimiter", ':call <sid>NewDelimiter(<q-args>)', +    call <sid>LocalCmd("NewDelimiter", ':call <sid>NewDelimiter(<q-args>, 1, line(''$''))',          \ '-nargs=1')      call <sid>LocalCmd("Duplicates", ':call <sid>CheckDuplicates(<q-args>)',          \ '-nargs=1 -complete=custom,<sid>CompleteColumnNr') @@ -1993,7 +2032,7 @@ fu! <sid>SaveOptions(list) "{{{3      return save  endfu -fu! <sid>NewDelimiter(newdelimiter) "{{{3 +fu! <sid>NewDelimiter(newdelimiter, firstl, lastl) "{{{3      let save = <sid>SaveOptions(['ro', 'ma'])      if exists("b:csv_fixed_width_cols")          call <sid>Warn("NewDelimiter does not work with fixed width column!") @@ -2005,8 +2044,12 @@ fu! <sid>NewDelimiter(newdelimiter) "{{{3      if &l:ro          setl noro      endif -    let line=1 -    while line <= line('$') +    let delimiter = a:newdelimiter +    if a:newdelimiter is '\t' +        let delimiter="\t" +    endif +    let line=a:firstl +    while line <= a:lastl          " Don't change delimiter for comments          if getline(line) =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')              let line+=1 @@ -2016,7 +2059,7 @@ fu! <sid>NewDelimiter(newdelimiter) "{{{3          " Remove field delimiter          call map(fields, 'substitute(v:val, b:delimiter .              \ ''\?$'' , "", "")') -        call setline(line, join(fields, a:newdelimiter)) +        call setline(line, join(fields, delimiter))          let line+=1      endwhile      " reset local buffer options @@ -2024,7 +2067,17 @@ fu! <sid>NewDelimiter(newdelimiter) "{{{3          call setbufvar('', '&'. key, value)      endfor      "reinitialize the plugin +    if exists("g:csv_delim") +        let _delim = g:csv_delim +    endif +    let g:csv_delim = delimiter      call <sid>Init(1,line('$')) +    if exists("_delim") +        let g:csv_delim = _delim +    else +        unlet g:csv_delim +    endif +    unlet! _delim  endfu  fu! <sid>IN(list, value) "{{{3 @@ -2207,6 +2260,23 @@ fu! <sid>Tabularize(bang, first, last) "{{{3      let adjust_last = 0      call cursor(a:first,0)      call <sid>CheckHeaderLine() +    let line=a:first +    if exists("g:csv_table_leftalign") +        let b:csv_arrange_leftalign = 1 +    endif +    let newlines=[] +    while line <= a:last +        let curline = getline(line) +        if empty(split(curline, b:delimiter)) +            " only empty delimiters, add one empty delimiter +            " (:NewDelimiter strips trailing delimiter +            let curline = repeat(b:delimiter, <sid>MaxColumns()) +            call add(newlines, line) +            call setline(line, curline) +        endif +        let line+=1 +    endw +    unlet! line      if exists("b:csv_fixed_width_cols")          let cols=copy(b:csv_fixed_width_cols)          let pat = join(map(cols, ' ''\(\%''. v:val. ''c\)'' '), '\|') @@ -2223,21 +2293,35 @@ fu! <sid>Tabularize(bang, first, last) "{{{3          " don't clear column width variable, might have been set in the          " plugin!          sil call <sid>ArrangeCol(a:first, a:last, 0, -1) +        if !get(b:, 'csv_arrange_leftalign',0) +            for line in newlines +                let cline = getline(line) +                let cline = substitute(cline, '\s$', ' ', '') +                call setline(line, cline) +            endfor +            unlet! line +        endif      endif      if empty(b:col_width)          call <sid>Warn('An error occured, aborting!')          return      endif -    let b:col_width[-1] += 1 +    if get(b:, 'csv_arrange_leftalign', 0) +        call map(b:col_width, 'v:val+1') +    endif +    if b:delimiter == "\t" && !get(b:, 'csv_arrange_leftalign',0) +        let b:col_width[-1] += 1 +    endif      let marginline = s:td.scol. join(map(copy(b:col_width), 'repeat(s:td.hbar, v:val)'), s:td.cros). s:td.ecol -    exe printf('sil %d,%ds/%s/%s/ge', a:first, (a:last+adjust_last), -        \ (exists("b:csv_fixed_width_cols") ? pat : b:delimiter ), s:td.vbar) +    call <sid>NewDelimiter(s:td.vbar, a:first, a:last+adjust_last) +    "exe printf('sil %d,%ds/%s/%s/ge', a:first, (a:last+adjust_last), +    "    \ (exists("b:csv_fixed_width_cols") ? pat : b:delimiter ), s:td.vbar)      " Add vertical bar in first column, if there isn't already one      exe printf('sil %d,%ds/%s/%s/e', a:first, a:last+adjust_last,          \ '^[^'. s:td.vbar. s:td.scol. ']', s:td.vbar.'&') -    " And add a final vertical bar, if there isn't already +    " And add a final vertical bar, if there isn't one already      exe printf('sil %d,%ds/%s/%s/e', a:first, a:last+adjust_last,          \ '[^'. s:td.vbar. s:td.ecol. ']$', '&'. s:td.vbar)      " Make nice intersection graphs @@ -2247,11 +2331,16 @@ fu! <sid>Tabularize(bang, first, last) "{{{3      call append(a:first-1, s:td.ltop. join(line, s:td.dhor). s:td.rtop)      call append(a:last+adjust_last+1, s:td.lbot. join(line, s:td.uhor). s:td.rbot) -    if s:csv_fold_headerline > 0 && !a:bang -        "call <sid>NewRecord(s:csv_fold_headerline, s:csv_fold_headerline, 1) +    if s:csv_fold_headerline > 0          call append(a:first + s:csv_fold_headerline, marginline)          let adjust_last += 1      endif +    " Adjust headerline to header of new table +    let b:csv_headerline = (exists('b:csv_headerline')?b:csv_headerline+2:3) +    call <sid>CheckHeaderLine() +    " Adjust syntax highlighting +    unlet! b:current_syntax +    ru syntax/csv.vim      if a:bang          exe printf('sil %d,%ds/^%s\zs\n/&%s&/e', a:first + s:csv_fold_headerline, a:last + adjust_last, @@ -2484,8 +2573,23 @@ fu! CSV_WCol(...) "{{{3      endtry  endfun +fu! CSV_SetSplitOptions(window) "{{{3 +    if exists("s:local_stl") +        " local horizontal statusline +        for opt in items({'&nu': &l:nu, '&rnu': &l:rnu, '&fdc': &fdc}) +            if opt[1] != getwinvar(a:window, opt[0]) +                call setwinvar(a:window, opt[0], opt[1]) +            endif +        endfor +        " Check statusline (airline might change it) +        if getwinvar(a:window, '&l:stl') != s:local_stl +            call setwinvar(a:window, '&stl', s:local_stl) +        endif +    endif +endfun +  fu! CSV_CloseBuffer(buffer) "{{{3 -    " Setup by SetupQuitPre autocommand +    " Setup by SetupAutoCmd autocommand      try          if bufnr((a:buffer)+0) > -1              exe a:buffer. "bw" diff --git a/ftplugin/latex-box/findmain.vim b/ftplugin/latex-box/findmain.vim index 622c408f..b9871a61 100644 --- a/ftplugin/latex-box/findmain.vim +++ b/ftplugin/latex-box/findmain.vim @@ -30,7 +30,7 @@ function! LatexBox_GetMainFileName(...)  	" move up the directory tree until we find a .latexmain file.  	" TODO: Should we be doing this recursion by default, or should there be a  	"       setting? -	while glob('*.latexmain') == '' +	while glob('*.latexmain',1) == ''  		let dirmodifier = dirmodifier.':h'  		let dirNew = fnameescape(expand(dirmodifier))  		" break from the loop if we cannot go up any further. @@ -41,7 +41,7 @@ function! LatexBox_GetMainFileName(...)  		exe 'cd '.dirLast  	endwhile -	let lheadfile = glob('*.latexmain') +	let lheadfile = glob('*.latexmain',1)  	if lheadfile != ''  		" Remove the trailing .latexmain part of the filename... We never want  		" that. diff --git a/ftplugin/latex-box/latexmk.vim b/ftplugin/latex-box/latexmk.vim index 6c5d3eb1..1285bc64 100644 --- a/ftplugin/latex-box/latexmk.vim +++ b/ftplugin/latex-box/latexmk.vim @@ -443,10 +443,32 @@ function! LatexBox_LatexErrors(status, ...)  	endif  endfunction +" Redefine uniq() for compatibility with older Vim versions (< 7.4.218) +function! s:uniq(list) +        if exists('*uniq') +                return uniq(a:list) +        elseif len(a:list) <= 1 +                return a:list +        endif + +        let last_element = get(a:list,0) +        let uniq_list = [last_element] + +        for i in range(1, len(a:list)-1) +                let next_element = get(a:list, i) +                if last_element == next_element +                        continue +                endif +                let last_element = next_element +                call add(uniq_list, next_element) +        endfor +        return uniq_list +endfunction +  function! s:log_contains_error(file)  	let lines = readfile(a:file)  	let lines = filter(lines, 'v:val =~ ''^.*:\d\+: ''') -	let lines = uniq(map(lines, 'matchstr(v:val, ''^.*\ze:\d\+:'')')) +	let lines = s:uniq(map(lines, 'matchstr(v:val, ''^.*\ze:\d\+:'')'))  	let lines = filter(lines, 'filereadable(fnameescape(v:val))')  	return len(lines) > 0  endfunction diff --git a/ftplugin/latex-box/mappings.vim b/ftplugin/latex-box/mappings.vim index 648d9b56..ef6b52ff 100644 --- a/ftplugin/latex-box/mappings.vim +++ b/ftplugin/latex-box/mappings.vim @@ -5,31 +5,31 @@ if exists("g:LatexBox_no_mappings")  endif  " latexmk {{{ -map <buffer> <LocalLeader>ll :Latexmk<CR> -map <buffer> <LocalLeader>lL :Latexmk!<CR> -map <buffer> <LocalLeader>lc :LatexmkClean<CR> -map <buffer> <LocalLeader>lC :LatexmkClean!<CR> -map <buffer> <LocalLeader>lg :LatexmkStatus<CR> -map <buffer> <LocalLeader>lG :LatexmkStatus!<CR> -map <buffer> <LocalLeader>lk :LatexmkStop<CR> -map <buffer> <LocalLeader>le :LatexErrors<CR> +noremap <buffer> <LocalLeader>ll :Latexmk<CR> +noremap <buffer> <LocalLeader>lL :Latexmk!<CR> +noremap <buffer> <LocalLeader>lc :LatexmkClean<CR> +noremap <buffer> <LocalLeader>lC :LatexmkClean!<CR> +noremap <buffer> <LocalLeader>lg :LatexmkStatus<CR> +noremap <buffer> <LocalLeader>lG :LatexmkStatus!<CR> +noremap <buffer> <LocalLeader>lk :LatexmkStop<CR> +noremap <buffer> <LocalLeader>le :LatexErrors<CR>  " }}}  " View {{{ -map <buffer> <LocalLeader>lv :LatexView<CR> +noremap <buffer> <LocalLeader>lv :LatexView<CR>  " }}}  " TOC {{{ -map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR> +noremap <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>  " }}}  " List of labels {{{ -map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR> +noremap <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>  " }}}  " Folding {{{  if g:LatexBox_Folding == 1 -	map <buffer> <LocalLeader>lf :LatexFold<CR> +	noremap <buffer> <LocalLeader>lf :LatexFold<CR>  endif  " }}} @@ -44,12 +44,12 @@ endif  " Define text objects {{{  vmap <buffer> ie <Plug>LatexBox_SelectCurrentEnvInner  vmap <buffer> ae <Plug>LatexBox_SelectCurrentEnvOuter -omap <buffer> ie :normal vie<CR> -omap <buffer> ae :normal vae<CR> +onoremap <buffer> ie :normal vie<CR> +onoremap <buffer> ae :normal vae<CR>  vmap <buffer> i$ <Plug>LatexBox_SelectInlineMathInner  vmap <buffer> a$ <Plug>LatexBox_SelectInlineMathOuter -omap <buffer> i$ :normal vi$<CR> -omap <buffer> a$ :normal va$<CR> +onoremap <buffer> i$ :normal vi$<CR> +onoremap <buffer> a$ :normal va$<CR>  " }}}  " Jump between sections {{{ | 
