aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/autoload/tlib/buffer.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/tlib_vim/autoload/tlib/buffer.vim')
m---------vim/bundle/tlib_vim0
-rw-r--r--vim/bundle/tlib_vim/autoload/tlib/buffer.vim401
2 files changed, 0 insertions, 401 deletions
diff --git a/vim/bundle/tlib_vim b/vim/bundle/tlib_vim
new file mode 160000
+Subproject 5636472e5dba1a4104376ce6bd93cc2546e0248
diff --git a/vim/bundle/tlib_vim/autoload/tlib/buffer.vim b/vim/bundle/tlib_vim/autoload/tlib/buffer.vim
deleted file mode 100644
index aa75545..0000000
--- a/vim/bundle/tlib_vim/autoload/tlib/buffer.vim
+++ /dev/null
@@ -1,401 +0,0 @@
-" buffer.vim
-" @Author: Tom Link (micathom AT gmail com?subject=[vim])
-" @Website: http://www.vim.org/account/profile.php?user_id=4037
-" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
-" @Created: 2007-06-30.
-" @Last Change: 2015-11-06.
-" @Revision: 7.1.352
-
-
-" Where to display the line when using |tlib#buffer#ViewLine|.
-" For possible values for position see |scroll-cursor|.
-TLet g:tlib_viewline_position = 'zz'
-
-
-let s:bmru = []
-
-
-function! tlib#buffer#EnableMRU() "{{{3
- call tlib#autocmdgroup#Init()
- autocmd TLib BufEnter * call s:BMRU_Push(bufnr('%'))
-endf
-
-
-function! tlib#buffer#DisableMRU() "{{{3
- call tlib#autocmdgroup#Init()
- autocmd! TLib BufEnter
-endf
-
-
-function! s:BMRU_Push(bnr) "{{{3
- let i = index(s:bmru, a:bnr)
- if i >= 0
- call remove(s:bmru, i)
- endif
- call insert(s:bmru, a:bnr)
-endf
-
-
-function! s:CompareBuffernameByBasename(a, b) "{{{3
- let rx = '"\zs.\{-}\ze" \+\S\+ \+\d\+$'
- let an = matchstr(a:a, rx)
- let an = fnamemodify(an, ':t')
- let bn = matchstr(a:b, rx)
- let bn = fnamemodify(bn, ':t')
- let rv = an == bn ? 0 : an > bn ? 1 : -1
- return rv
-endf
-
-
-function! s:CompareBufferNrByMRU(a, b) "{{{3
- let an = matchstr(a:a, '\s*\zs\d\+\ze')
- let bn = matchstr(a:b, '\s*\zs\d\+\ze')
- let ai = index(s:bmru, 0 + an)
- if ai == -1
- return 1
- else
- let bi = index(s:bmru, 0 + bn)
- if bi == -1
- return -1
- else
- return ai == bi ? 0 : ai > bi ? 1 : -1
- endif
- endif
-endf
-
-
-" Set the buffer to buffer and return a command as string that can be
-" evaluated by |:execute| in order to restore the original view.
-function! tlib#buffer#Set(buffer) "{{{3
- let lazyredraw = &lazyredraw
- set lazyredraw
- try
- let cb = bufnr('%')
- let sn = bufnr(a:buffer)
- if sn != cb
- let ws = bufwinnr(sn)
- if ws != -1
- let wb = bufwinnr('%')
- exec ws.'wincmd w'
- return wb.'wincmd w'
- else
- silent exec 'sbuffer! '. sn
- return 'wincmd c'
- endif
- else
- return ''
- endif
- finally
- let &lazyredraw = lazyredraw
- endtry
-endf
-
-
-" :def: function! tlib#buffer#Eval(buffer, code)
-" Evaluate CODE in BUFFER.
-"
-" EXAMPLES: >
-" call tlib#buffer#Eval('foo.txt', 'echo b:bar')
-function! tlib#buffer#Eval(buffer, code) "{{{3
- " let cb = bufnr('%')
- " let wb = bufwinnr('%')
- " " TLogVAR cb
- " let sn = bufnr(a:buffer)
- " let sb = sn != cb
- let lazyredraw = &lazyredraw
- set lazyredraw
- let restore = tlib#buffer#Set(a:buffer)
- try
- exec a:code
- " if sb
- " let ws = bufwinnr(sn)
- " if ws != -1
- " try
- " exec ws.'wincmd w'
- " exec a:code
- " finally
- " exec wb.'wincmd w'
- " endtry
- " else
- " try
- " silent exec 'sbuffer! '. sn
- " exec a:code
- " finally
- " wincmd c
- " endtry
- " endif
- " else
- " exec a:code
- " endif
- finally
- exec restore
- let &lazyredraw = lazyredraw
- endtry
-endf
-
-
-" :def: function! tlib#buffer#GetList(?show_hidden=0, ?show_number=0, " ?order='bufnr')
-" Possible values for the "order" argument:
-" bufnr :: Default behaviour
-" mru :: Sort buffers according to most recent use
-" basename :: Sort by the file's basename (last component)
-"
-" NOTE: MRU order works on second invocation only. If you want to always
-" use MRU order, call tlib#buffer#EnableMRU() in your ~/.vimrc file.
-function! tlib#buffer#GetList(...)
- TVarArg ['show_hidden', 0], ['show_number', 0], ['order', '']
- " TLogVAR show_hidden, show_number, order
- let ls_bang = show_hidden ? '!' : ''
- redir => bfs
- exec 'silent ls'. ls_bang
- redir END
- let buffer_list = split(bfs, '\n')
- if order == 'mru'
- if empty(s:bmru)
- call tlib#buffer#EnableMRU()
- echom 'tlib: Installed Buffer MRU logger; disable with: call tlib#buffer#DisableMRU()'
- else
- call sort(buffer_list, function('s:CompareBufferNrByMRU'))
- endif
- elseif order == 'basename'
- call sort(buffer_list, function('s:CompareBuffernameByBasename'))
- endif
- let buffer_nr = map(copy(buffer_list), 'str2nr(matchstr(v:val, ''\s*\zs\d\+\ze''))')
- " TLogVAR buffer_list, buffer_nr
- if show_number
- call map(buffer_list, 'matchstr(v:val, ''^\s*\d\+.\{-}\ze\s\+\S\+ \d\+\s*$'')')
- else
- call map(buffer_list, 'matchstr(v:val, ''^\s*\d\+\zs.\{-}\ze\s\+\S\+ \d\+\s*$'')')
- endif
- " TLogVAR buffer_list
- " call map(buffer_list, 'matchstr(v:val, ''^.\{-}\ze\s\+line \d\+\s*$'')')
- " TLogVAR buffer_list
- call map(buffer_list, 'matchstr(v:val, ''^[^"]\+''). printf("%-20s %s", fnamemodify(matchstr(v:val, ''"\zs.\{-}\ze"$''), ":t"), fnamemodify(matchstr(v:val, ''"\zs.\{-}\ze"$''), ":h"))')
- " TLogVAR buffer_list
- return [buffer_nr, buffer_list]
-endf
-
-
-" :def: function! tlib#buffer#ViewLine(line, ?position='z')
-" line is either a number or a string that begins with a number.
-" For possible values for position see |scroll-cursor|.
-" See also |g:tlib_viewline_position|.
-function! tlib#buffer#ViewLine(line, ...) "{{{3
- if a:line
- TVarArg 'pos'
- let ln = matchstr(a:line, '^\d\+')
- let lt = matchstr(a:line, '^\d\+: \zs.*')
- " TLogVAR pos, ln, lt
- exec ln
- if empty(pos)
- let pos = tlib#var#Get('tlib_viewline_position', 'wbg')
- endif
- " TLogVAR pos
- if !empty(pos)
- exec 'norm! '. pos
- endif
- call tlib#buffer#HighlightLine(ln)
- " let @/ = '\%'. ln .'l.*'
- endif
-endf
-
-
-function! s:UndoHighlightLine() "{{{3
- 2match none
- autocmd! TLib CursorMoved,CursorMovedI <buffer>
- autocmd! TLib CursorHold,CursorHoldI <buffer>
- autocmd! TLib InsertEnter,InsertChange,InsertLeave <buffer>
- autocmd! TLib BufLeave,BufWinLeave,WinLeave,BufHidden <buffer>
-endf
-
-
-function! tlib#buffer#HighlightLine(...) "{{{3
- TVarArg ['line', line('.')]
- " exec '2match MatchParen /^\%'. a:line .'l.*/'
- exec '2match Search /^\%'. line .'l.*/'
- call tlib#autocmdgroup#Init()
- exec 'autocmd TLib CursorMoved,CursorMovedI <buffer> if line(".") != '. line .' | call s:UndoHighlightLine() | endif'
- autocmd TLib CursorHold,CursorHoldI <buffer> call s:UndoHighlightLine()
- autocmd TLib InsertEnter <buffer> call s:UndoHighlightLine()
- " autocmd TLib BufLeave,BufWinLeave,WinLeave,BufHidden <buffer> call s:UndoHighlightLine()
-endf
-
-
-" Delete the lines in the current buffer. Wrapper for |:delete|.
-function! tlib#buffer#DeleteRange(line1, line2) "{{{3
- let r = @t
- try
- exec a:line1.','.a:line2.'delete t'
- finally
- let @t = r
- endtry
-endf
-
-
-" Replace a range of lines.
-function! tlib#buffer#ReplaceRange(line1, line2, lines)
- call tlib#buffer#DeleteRange(a:line1, a:line2)
- call append(a:line1 - 1, a:lines)
-endf
-
-
-" Initialize some scratch area at the bottom of the current buffer.
-function! tlib#buffer#ScratchStart() "{{{3
- norm! Go
- let b:tlib_inbuffer_scratch = line('$')
- return b:tlib_inbuffer_scratch
-endf
-
-
-" Remove the in-buffer scratch area.
-function! tlib#buffer#ScratchEnd() "{{{3
- if !exists('b:tlib_inbuffer_scratch')
- echoerr 'tlib: In-buffer scratch not initalized'
- endif
- call tlib#buffer#DeleteRange(b:tlib_inbuffer_scratch, line('$'))
- unlet b:tlib_inbuffer_scratch
-endf
-
-
-" Run exec on all buffers via bufdo and return to the original buffer.
-function! tlib#buffer#BufDo(exec) "{{{3
- let bn = bufnr('%')
- exec 'bufdo '. a:exec
- exec 'buffer! '. bn
-endf
-
-
-" :def: function! tlib#buffer#InsertText(text, keyargs)
-" Keyargs:
-" 'shift': 0|N
-" 'col': col('.')|N
-" 'lineno': line('.')|N
-" 'indent': 0|1
-" 'pos': 'e'|'s' ... Where to locate the cursor (somewhat like s and e in {offset})
-" Insert text (a string) in the buffer.
-function! tlib#buffer#InsertText(text, ...) "{{{3
- TVarArg ['keyargs', {}]
- " TLogVAR a:text, keyargs
- let keyargs = extend({
- \ 'shift': 0, 'col': col('.'), 'lineno': line('.'), 'pos': 'e', 'indent': 0
- \ }, keyargs)
- " TLogVAR keyargs
- let grow = 0
- let post_del_last_line = line('$') == 1
- let line = getline(keyargs.lineno)
- if keyargs.col + keyargs.shift > 0
- let pre = line[0 : (keyargs.col - 1 + keyargs.shift)]
- let post = line[(keyargs.col + keyargs.shift): -1]
- else
- let pre = ''
- let post = line
- endif
- " TLogVAR keyargs.lineno, line, pre, post
- let text0 = pre . a:text . post
- let text = split(text0, '\n', 1)
- " TLogVAR text
- let icol = len(pre)
- " exec 'norm! '. keyargs.lineno .'G'
- call cursor(keyargs.lineno, keyargs.col)
- if keyargs.indent && keyargs.col > 1
- if &fo =~# '[or]'
- " FIXME: Is the simple version sufficient?
- " VERSION 1
- " " This doesn't work because it's not guaranteed that the
- " " cursor is set.
- " let cline = getline('.')
- " norm! a
- " "norm! o
- " " TAssertExec redraw | sleep 3
- " let idt = strpart(getline('.'), 0, keyargs.col('.') + keyargs.shift)
- " " TLogVAR idt
- " let idtl = len(idt)
- " -1,.delete
- " " TAssertExec redraw | sleep 3
- " call append(keyargs.lineno - 1, cline)
- " call cursor(keyargs.lineno, keyargs.col)
- " " TAssertExec redraw | sleep 3
- " if idtl == 0 && icol != 0
- " let idt = matchstr(pre, '^\s\+')
- " let idtl = len(idt)
- " endif
- " VERSION 2
- let idt = matchstr(pre, '^\s\+')
- let idtl = len(idt)
- else
- let [m_0, idt, iline; rest] = matchlist(pre, '^\(\s*\)\(.*\)$')
- let idtl = len(idt)
- endif
- if idtl < icol
- let idt .= repeat(' ', icol - idtl)
- endif
- " TLogVAR idt
- let idtl1 = len(idt)
- for i in range(1, len(text) - 1)
- let text[i] = idt . text[i]
- let grow += idtl1
- endfor
- endif
- " TLogVAR text
- " exec 'norm! '. keyargs.lineno .'Gdd'
- call tlib#normal#WithRegister('"tdd', 't')
- call append(keyargs.lineno - 1, text)
- if post_del_last_line
- call tlib#buffer#KeepCursorPosition('$delete')
- endif
- let tlen = len(text)
- let posshift = matchstr(keyargs.pos, '\d\+')
- " TLogVAR keyargs.pos
- if keyargs.pos =~ '^e'
- exec keyargs.lineno + tlen - 1
- exec 'norm! 0'. (len(text[-1]) - len(post) + posshift - 1) .'l'
- elseif keyargs.pos =~ '^s'
- " TLogVAR keyargs.lineno, pre, posshift
- exec keyargs.lineno
- exec 'norm! '. len(pre) .'|'
- if !empty(posshift)
- exec 'norm! '. posshift .'h'
- endif
- endif
- " TLogDBG getline(keyargs.lineno)
- " TLogDBG string(getline(1, '$'))
- return grow
-endf
-
-
-function! tlib#buffer#InsertText0(text, ...) "{{{3
- TVarArg ['keyargs', {}]
- let mode = get(keyargs, 'mode', 'i')
- " TLogVAR mode
- if !has_key(keyargs, 'shift')
- let col = col('.')
- " if mode =~ 'i'
- " let col += 1
- " endif
- let keyargs.shift = col >= col('$') ? 0 : -1
- " let keyargs.shift = col('.') >= col('$') ? 0 : -1
- " TLogVAR col
- " TLogDBG col('.') .'-'. col('$') .': '. string(getline('.'))
- endif
- " TLogVAR keyargs.shift
- return tlib#buffer#InsertText(a:text, keyargs)
-endf
-
-
-function! tlib#buffer#CurrentByte() "{{{3
- return line2byte(line('.')) + col('.')
-endf
-
-
-" Evaluate cmd while maintaining the cursor position and jump registers.
-function! tlib#buffer#KeepCursorPosition(cmd) "{{{3
- " let pos = getpos('.')
- let view = winsaveview()
- try
- keepjumps exec a:cmd
- finally
- " call setpos('.', pos)
- call winrestview(view)
- endtry
-endf
-