Several quickfix and location list related things
* Moved general utilities block * Added MatchingLinesDict function Works like MatchingLines, but returns a dictionary compatible with setqflist() and setloclist() * Added [Q|L]add[line|cursor] commands * Added LFind and QFind commands
This commit is contained in:
parent
d4a429dfda
commit
f90c93a19b
1 changed files with 45 additions and 11 deletions
56
vimrc
56
vimrc
|
@ -87,11 +87,52 @@ noremap <leader>d "_d
|
|||
noremap x "_x
|
||||
noremap <leader>x x
|
||||
|
||||
" === GENERAL UTILITIES ===
|
||||
function! MatchingLines(pattern)
|
||||
let list = []
|
||||
let pattern = a:pattern
|
||||
exec "g/".pattern."/ call add(list, expand('%').'('.line('.').') : '.matchstr(getline('.'), '".pattern."'))"
|
||||
return list
|
||||
endfunc
|
||||
|
||||
function! s:mld_helper(list, pattern)
|
||||
" Helper function for MatchingLinesDict
|
||||
call add(a:list, {'filename': expand("%"), 'lnum': line("."), 'col': match(getline("."), a:pattern)+1, 'text': matchstr(getline("."), a:pattern)})
|
||||
endfunc
|
||||
function! MatchingLinesDict(pattern)
|
||||
let list = []
|
||||
silent! exec "g/".a:pattern."/ call s:mld_helper(list, a:pattern)"
|
||||
return list
|
||||
endfunc
|
||||
|
||||
function! LocationAddLineCol(filename, lnum, text, col)
|
||||
call setloclist(0, [{'filename': a:filename, 'lnum': a:lnum, 'desc': a:text, 'col': a:col}], 'a')
|
||||
endfunction
|
||||
|
||||
function! QuickfixAddLineCol(filename, lnum, text, col)
|
||||
call setqflist([{'filename': a:filename, 'lnum': a:lnum, 'desc': a:text, 'col': a:col}], 'a')
|
||||
endfunction
|
||||
|
||||
function! LocationAddLine(filename, lnum, text)
|
||||
call setloclist(0, [{'filename': a:filename, 'lnum': a:lnum, 'desc': a:text}], 'a')
|
||||
endfunction
|
||||
|
||||
function! QuickfixAddLine(filename, lnum, text)
|
||||
call setqflist([{'filename': a:filename, 'lnum': a:lnum, 'desc': a:text}], 'a')
|
||||
endfunction
|
||||
|
||||
" === GENERAL COMMANDS ===
|
||||
command! L lopen | set number | set norelativenumber
|
||||
command! LAddLine call LocationAddLine(expand("%"), line("."), getline("."))
|
||||
command! QAddLine call QuickfixAddLine(expand("%"), line("."), getline("."))
|
||||
command! LAddCursor call LocationAddLineCol(expand("%"), line("."), getline("."), col("."))
|
||||
command! QAddCursor call QuickfixAddLineCol(expand("%"), line("."), getline("."), col("."))
|
||||
|
||||
command! Fixme cex MatchingLines("\\cfixme.*")
|
||||
command! Todo cex MatchingLines("\\ctodo.*")
|
||||
command! Fixme lex MatchingLines("\\c\\<fixme.*")
|
||||
command! Todo lex MatchingLines("\\c\\<todo.*")
|
||||
|
||||
command! -nargs=1 LFind call setloclist(0, MatchingLinesDict(<args>))
|
||||
command! -nargs=1 QFind call setqflist(MatchingLinesDict(<args>))
|
||||
|
||||
" === GENERAL KEY MAPPINGS ===
|
||||
let mapleader = "\\"
|
||||
|
@ -165,14 +206,6 @@ digraph oe 246
|
|||
digraph OE 214
|
||||
digraph ss 223
|
||||
|
||||
" === GENERAL UTILITIES ===
|
||||
function! MatchingLines(pattern)
|
||||
let list = []
|
||||
let pattern = a:pattern
|
||||
exec "g/".pattern."/ call add(list, expand('%').'('.line('.').') : '.matchstr(getline('.'), '".pattern."'))"
|
||||
return list
|
||||
endfunc
|
||||
|
||||
" === GENERAL AUTOCOMMANDS ===
|
||||
|
||||
nnoremap <leader>h :call <SID>toggleWUC()<CR>
|
||||
|
@ -323,6 +356,7 @@ function! s:init_vim_file()
|
|||
|
||||
command! -buffer Functions lex MatchingLines("^\\s*fun\\(ction\\)\\?\\>!.*$")
|
||||
command! -buffer Commands lex MatchingLines("^\\s*com\\(mand\\)\\?\\>!.*$")
|
||||
command! -buffer Autocommands lex MatchingLines("^\\s*au\\(tocmd\\)\\?\\>!\\@!.*$")
|
||||
endfunction
|
||||
|
||||
" --- C / C++ Stuff ---
|
||||
|
@ -374,5 +408,5 @@ autocmd!
|
|||
au BufWritePre *.rb :retab
|
||||
|
||||
au BufWritepost *.rb :set noexpandtab
|
||||
au BufWritepost *.rb :retab!
|
||||
au BufWritepost *.rb :silent! :undo
|
||||
augroup END
|
||||
|
|
Loading…
Reference in a new issue