aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/autoload/tlib/qfl.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/tlib_vim/autoload/tlib/qfl.vim')
m---------vim/bundle/tlib_vim0
-rw-r--r--vim/bundle/tlib_vim/autoload/tlib/qfl.vim312
2 files changed, 0 insertions, 312 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/qfl.vim b/vim/bundle/tlib_vim/autoload/tlib/qfl.vim
deleted file mode 100644
index 148620a..0000000
--- a/vim/bundle/tlib_vim/autoload/tlib/qfl.vim
+++ /dev/null
@@ -1,312 +0,0 @@
-" @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
-" @Website: https://github.com/tomtom
-" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
-" @Last Change: 2015-12-06
-" @Revision: 60
-
-" :nodoc:
-TLet g:tlib#qfl#world = {
- \ 'type': 'mi',
- \ 'query': 'Select entry',
- \ 'pick_last_item': 0,
- \ 'resize_vertical': 0,
- \ 'resize': 20,
- \ 'scratch': '__TLibQFL__',
- \ 'tlib_UseInputListScratch': 'call tlib#qfl#InitListBuffer(world)',
- \ 'key_handlers': [
- \ {'key': 5, 'agent': 'tlib#qfl#AgentWithSelected', 'key_name': '<c-e>', 'help': 'Run a command on selected lines'},
- \ {'key': 16, 'agent': 'tlib#qfl#AgentPreviewQFE', 'key_name': '<c-p>', 'help': 'Preview'},
- \ {'key': 60, 'agent': 'tlib#qfl#AgentGotoQFE', 'key_name': '<', 'help': 'Jump (don''t close the list)'},
- \ {'key': 19, 'agent': 'tlib#qfl#AgentSplitBuffer', 'key_name': '<c-s>', 'help': 'Show in split buffer'},
- \ {'key': 20, 'agent': 'tlib#qfl#AgentTabBuffer', 'key_name': '<c-t>', 'help': 'Show in tab'},
- \ {'key': 22, 'agent': 'tlib#qfl#AgentVSplitBuffer', 'key_name': '<c-v>', 'help': 'Show in vsplit buffer'},
- \ {'key': 12, 'agent': 'tlib#qfl#AgentEditLine', 'key_name': '<c-l>', 'help': 'Edit selected line(s)'},
- \ {'key': "\<c-insert>", 'agent': 'tlib#qfl#SetFollowCursor', 'key_name': '<c-ins>', 'help': 'Toggle trace cursor'},
- \ ],
- \ 'return_agent': 'tlib#qfl#AgentEditQFE',
- \ }
-
-
-function! tlib#qfl#FormatQFLE(qfe) dict abort "{{{3
- let filename = tlib#qfl#QfeFilename(a:qfe)
- if get(self, 'qfl_short_filename', '')
- let filename = pathshorten(filename)
- endif
- return printf("%s|%d| %s", filename, a:qfe.lnum, get(a:qfe, "text"))
-endf
-
-
-function! tlib#qfl#QfeFilename(qfe) abort "{{{3
- let filename = get(a:qfe, 'filename')
- if empty(filename)
- let filename = bufname(get(a:qfe, 'bufnr'))
- endif
- return filename
-endf
-
-
-function! tlib#qfl#InitListBuffer(world) "{{{3
- let set_syntax = get(a:world, 'set_syntax', 'tlib#qfl#SetSyntax')
- call call(set_syntax, [], a:world)
- if has('balloon_eval')
- setlocal ballooneval balloonexpr=tlib#qfl#Balloon()
- endif
-endf
-
-
-function! tlib#qfl#SetSyntax() dict abort "{{{3
- let syntax = get(self, 'qfl_list_syntax', '')
- let nextgroup = get(self, 'qfl_list_syntax_nextgroup', '')
- " TLogVAR syntax, nextgroup
- if !empty(syntax)
- exec printf('runtime syntax/%s.vim', syntax)
- endif
- syn match TTagedFilesFilename /\%(\f\+\| \)\+\ze|\d\+| / nextgroup=TTagedFilesLNum
- if !empty(nextgroup)
- exec 'syn match TTagedFilesLNum /|\d\+|\s\+/ nextgroup='. nextgroup
- else
- syn match TTagedFilesLNum /|\d\+|/
- endif
- hi def link TTagedFilesFilename Directory
- hi def link TTagedFilesLNum LineNr
-endf
-
-
-function! tlib#qfl#Balloon() "{{{3
- let world = getbufvar(v:beval_bufnr, 'tlibDisplayListWorld')
- let current = max([1, world.offset]) + v:beval_lnum - 1
- if current > len(world.table)
- let current = len(world.table)
- endif
- let baseidx = world.GetBaseIdx0(current)
- " TLogVAR world.offset, v:beval_lnum, current, baseidx
- let item = world.data[baseidx]
- let bufnr = get(item, 'bufnr', 0)
- let bufname = get(item, 'filename', '')
- if bufnr == 0 && !empty(bufname)
- let bufnr = bufnr(bufname)
- endif
- if empty(bufname) && bufnr > 0
- let bufname = bufname(bufnr)
- endif
- " TLogVAR item
- if bufnr == 0
- return ''
- else
- let lines = [printf("%d#%d: %s", bufnr, item.lnum, bufname)]
- if has('balloon_multiline')
- let desc = {'nr': 'Error number', 'type': 'Error type', 'text': ''}
- for key in ['nr', 'type', 'text']
- if has_key(item, key) && !empty(item[key])
- let keydesc = get(desc, key, key)
- if empty(keydesc)
- let text = item[key]
- else
- let text = printf("%s: %s", key, item[key])
- endif
- call add(lines, text)
- endif
- endfor
- endif
- return join(lines, "\n")
- endif
- " v:beval_bufnr number of the buffer in which balloon is going to show
- " v:beval_winnr number of the window
- " v:beval_lnum line number
- " v:beval_col column number (byte index)
- " v:beval_text word under or after the mouse pointer
-endf
-
-
-function! tlib#qfl#AgentEditQFE(world, selected, ...) "{{{3
- TVarArg ['cmd_edit', ''], ['cmd_buffer', '']
- " TVarArg ['cmd_edit', 'edit'], ['cmd_buffer', 'buffer']
- " TLogVAR a:selected
- if empty(a:selected)
- call a:world.RestoreOrigin()
- " call a:world.ResetSelected()
- else
- call a:world.RestoreOrigin()
- for idx in a:selected
- let idx -= 1
- " TLogVAR idx
- if idx >= 0
- " TLogVAR a:world.data
- " call tlog#Debug(string(map(copy(a:world.data), 'v:val.bufnr')))
- " TLogVAR idx, a:world.data[idx]
- let qfe = a:world.data[idx]
- " let back = a:world.SwitchWindow('win')
- " TLogVAR cmd_edit, cmd_buffer, qfe
- let fn = tlib#qfl#QfeFilename(qfe)
- " TLogVAR cmd_edit, cmd_buffer, fn
- if empty(cmd_edit) && empty(cmd_buffer)
- if tlib#file#Edit(fn)
- call tlib#buffer#ViewLine(qfe.lnum)
- endif
- else
- call tlib#file#With(cmd_edit, cmd_buffer, [fn], a:world)
- " TLogDBG bufname('%')
- " TLogVAR &filetype
- call tlib#buffer#ViewLine(qfe.lnum)
- " call a:world.SetOrigin()
- " exec back
- endif
- endif
- endfor
- endif
- return a:world
-endf
-
-
-function! tlib#qfl#AgentPreviewQFE(world, selected) "{{{3
- " TLogVAR a:selected
- let back = a:world.SwitchWindow('win')
- call tlib#qfl#AgentEditQFE(a:world, a:selected[0:0])
- exec back
- redraw
- let a:world.state = 'redisplay'
- return a:world
-endf
-
-
-function! tlib#qfl#AgentGotoQFE(world, selected) "{{{3
- let world = a:world
- if !empty(a:selected)
- let world = tlib#agent#Suspend(world, a:selected)
- call tlib#qfl#AgentEditQFE(world, a:selected[0:0])
- endif
- return world
-endf
-
-
-function! tlib#qfl#AgentWithSelected(world, selected, ...) "{{{3
- let cmd = a:0 >= 1 ? a:1 : input('Ex command: ', '', 'command')
- let world = a:world
- if !empty(cmd)
- let world = tlib#qfl#RunCmdOnSelected(world, a:selected, cmd)
- else
- let world.state = 'redisplay'
- endif
- return world
-endf
-
-
-function! tlib#qfl#RunCmdOnSelected(world, selected, cmd, ...) "{{{3
- let close_scratch = a:0 >= 1 ? a:1 : 1
- if close_scratch
- call a:world.CloseScratch()
- endif
- " TLogVAR a:cmd
- for entry in a:selected
- " TLogVAR entry, a:world.GetBaseItem(entry)
- call tlib#qfl#AgentEditQFE(a:world, [entry])
- " TLogDBG bufname('%')
- exec a:cmd
- " let item = a:world.data[a:world.GetBaseIdx(entry - 1)]
- " <+TODO+>
- let item = a:world.data[entry - 1]
- " TLogVAR entry, item, getline('.')
- if has_key(a:world, 'GetBufferLines')
- let lines = a:world.GetBufferLines('.', '.')
- else
- let lines = getline('.', '.')
- endif
- let item['text'] = tlib#string#Strip(lines[0])
- endfor
- if has_key(a:world, 'AfterRunCmd')
- if bufnr('%') == a:world.bufnr
- call a:world.AfterRunCmd()
- else
- " <+TODO+> Run in other buffer
- endif
- endif
- " call s:FormatBase(a:world)
- call a:world.RestoreOrigin()
- let a:world.state = 'reset'
- return a:world
-endf
-
-
-function! tlib#qfl#AgentSplitBuffer(world, selected) "{{{3
- call a:world.CloseScratch()
- return tlib#qfl#AgentEditQFE(a:world, a:selected, 'split', 'sbuffer')
-endf
-
-
-function! tlib#qfl#AgentTabBuffer(world, selected) "{{{3
- call a:world.CloseScratch()
- return tlib#qfl#AgentEditQFE(a:world, a:selected, 'tabedit', 'tab sbuffer')
-endf
-
-
-function! tlib#qfl#AgentVSplitBuffer(world, selected) "{{{3
- call a:world.CloseScratch()
- return tlib#qfl#AgentEditQFE(a:world, a:selected, 'vertical split', 'vertical sbuffer')
-endf
-
-
-" function! tlib#qfl#AgentOpenBuffer(world, selected) "{{{3
-" endf
-
-
-function! tlib#qfl#AgentEditLine(world, selected) "{{{3
- call a:world.CloseScratch()
- let cmd = 'call tlib#qfl#EditLine(".")'
- return tlib#qfl#RunCmdOnSelected(a:world, a:selected, cmd)
- let a:world.state = 'reset'
- return a:world
-endf
-
-
-function! tlib#qfl#EditLine(lnum) "{{{3
- call inputsave()
- let line = input('', getline(a:lnum))
- call inputrestore()
- if !empty(line)
- call setline(line(a:lnum), line)
- endif
-endf
-
-
-function! tlib#qfl#SetFollowCursor(world, selected) "{{{3
- if empty(a:world.follow_cursor)
- let a:world.follow_cursor = 'tlib#qfl#AgentPreviewQFE'
- else
- let a:world.follow_cursor = ''
- endif
- let a:world.state = 'redisplay'
- return a:world
-endf
-
-
-function! tlib#qfl#QflList(list, ...) abort "{{{3
- TVarArg ['world_dict', {}], ['anyway', 0], ['suspended', 0]
- Tlibtrace 'tlib', world_dict, anyway, suspended
- " TLogVAR a:list, world_dict, anyway, suspended
- if !anyway && empty(a:list)
- return
- endif
- let world = copy(g:tlib#qfl#world)
- if !empty(world_dict)
- let world = tlib#eval#Extend(world, world_dict)
- endif
- " TLogVAR world
- let world = tlib#World#New(world)
- " echom "DBG world" string(sort(keys(world)))
- let world.data = copy(a:list)
- if !has_key(world, 'format_data')
- let world.format_data = 'tlib#qfl#FormatQFLE'
- endif
- " TLogVAR world
- " TLogVAR world.data
- " call s:FormatBase(world)
- " TLogVAR world.base
- return tlib#input#ListW(world, suspended ? 'hibernate' : '')
-endf
-
-
-function! tlib#qfl#Browse(...) abort "{{{3
- let list = getqflist()
- return call(function('tlib#qfl#QflList'), [list] + a:000)
-endf
-