diff options
Diffstat (limited to 'ftplugin/csv.vim')
| -rw-r--r-- | ftplugin/csv.vim | 52 | 
1 files changed, 26 insertions, 26 deletions
| diff --git a/ftplugin/csv.vim b/ftplugin/csv.vim index 0b3eee19..b6414d9f 100644 --- a/ftplugin/csv.vim +++ b/ftplugin/csv.vim @@ -483,7 +483,7 @@ fu! <sid>GetDelimiter(first, last) "{{{3      if !exists("b:csv_fixed_width_cols")          let _cur = getpos('.')          let _s   = @/ -        let Delim= {0: ';', 1:  ',', 2: '|', 3: '	'} +        let Delim= {0: ';', 1:  ',', 2: '|', 3: '	', 4: '\^'}          let temp = {}          " :silent :s does not work with lazyredraw          let _lz  = &lz @@ -525,12 +525,16 @@ fu! <sid>WColumn(...) "{{{3          let fields=(split(line[0:end],b:col.'\zs'))          let ret=len(fields)          if exists("a:1") && a:1 > 0 -            " bang attribute +            " bang attribute: Try to get the column name              let head  = split(getline(1),b:col.'\zs')              " remove preceeding whitespace -            let ret   = substitute(head[ret-1], '^\s\+', '', '') -            " remove delimiter -            let ret   = substitute(ret, b:delimiter. '$', '', '') +            if len(head) < ret +                call <sid>Warn("Header has no field ". ret) +            else +                let ret   = substitute(head[ret-1], '^\s\+', '', '') +                " remove delimiter +                let ret   = substitute(ret, b:delimiter. '$', '', '') +            endif          endif      else          let temp=getpos('.')[2] @@ -1002,7 +1006,8 @@ fu! <sid>MoveCol(forward, line, ...) "{{{3      elseif a:forward < 0          if colnr > 0 || cpos == spos              call search('.\ze'.pat, 'bWe') -            while getpos('.')[2] == cpos +            let stime=localtime() +            while getpos('.')[2] == cpos && <sid>Timeout(stime) " make sure loop terminates                  " cursor didn't move, move cursor one cell to the left                  norm! h                  if colnr > 0 @@ -1208,8 +1213,10 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3      if exists("a:1")          if a:1 == '$' || a:1 >= max              let pos = max -        elseif a:1 <= 0 +        elseif a:1 < 0              let pos = col +        else +            let pos = a:1          endif      else          let pos = col @@ -1217,7 +1224,7 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3      let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1)      " translate 1 based columns into zero based list index -    let pos -= 1 +    "let pos -= 1      let col -= 1      if pos == 0 @@ -1772,7 +1779,7 @@ endfu  fu! <sid>NewRecord(line1, line2, count) "{{{3      if a:count =~ "\D" -        call <sid>WarningMsg("Invalid count specified") +        call <sid>Warn("Invalid count specified")          return      endif @@ -1848,20 +1855,13 @@ fu! <sid>CSVMappings() "{{{3      call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')      call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')      call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>') -    call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0, -        \ line(".")-v:count1)<CR>') -    call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, -        \ line(".")-v:count1)<CR>') -    call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, -        \ line(".")+v:count1)<CR>') -    call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, -        \ line(".")+v:count1)<CR>') -    call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1, -        \ 1)<CR>') -    call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1, -        \ 0)<CR>') -    call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0, -        \ 1)<CR>') +    call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>') +    call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>') +    call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>') +    call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>') +    call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1, 1)<CR>') +    call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1, 0)<CR>') +    call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0, 1)<CR>')      call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr')      " Text object: Field      call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>') @@ -1937,9 +1937,6 @@ fu! <sid>CommandDefinitions() "{{{3          \ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')      call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',          \ '-range=%') -    call <sid>LocalCmd('Tabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)', -        \ '-bang -range=%') -    " Alias for :Tabularize, might be taken by Tabular plugin      call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',          \ '-bang -range=%')      call <sid>LocalCmd("AddColumn", @@ -2391,6 +2388,9 @@ fu! <sid>ColumnMode() "{{{3          return "\<CR>"      endif  endfu +fu! <sid>Timeout(start) "{{{3 +    return localtime()-a:start < 2 +endfu  " Global functions "{{{2  fu! csv#EvalColumn(nr, func, first, last) range "{{{3 | 
