nvim: init.vim: Reintroduce QFGrep for cscope

Commit 6a26c59f removed Quickfix + QFGrep enhancement for
cscope since we wanted to use fzf and later skim. However,
since we now want to have as much as possible only pure
vimscript dependencies, reintroduce this so we need not
depend on fzf or any external fuzzy search tool anymore
with our recent usage of vim-clap.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
This commit is contained in:
Sanchayan Maity 2019-12-02 19:54:02 +05:30
parent b3ac08c56f
commit 0a9b5e78ca

View file

@ -9,7 +9,6 @@ Plug 'ervandew/supertab'
" of words. " of words.
Plug 'easymotion/vim-easymotion' Plug 'easymotion/vim-easymotion'
" Fuzzy search " Fuzzy search
Plug 'junegunn/fzf.vim'
Plug 'liuchengxu/vim-clap' Plug 'liuchengxu/vim-clap'
" Remove extraneous whitespace when edit mode is exited " Remove extraneous whitespace when edit mode is exited
Plug 'thirtythreeforty/lessspace.vim' Plug 'thirtythreeforty/lessspace.vim'
@ -37,6 +36,8 @@ Plug 'rbong/vim-flog'
" For tmux yank " For tmux yank
Plug 'vim-utils/vim-husk' Plug 'vim-utils/vim-husk'
" Tags " Tags
Plug 'sk1418/QFGrep'
Plug 'steffanc/cscopemaps.vim'
Plug 'ludovicchabant/vim-gutentags' Plug 'ludovicchabant/vim-gutentags'
Plug 'deoplete-plugins/deoplete-tag' Plug 'deoplete-plugins/deoplete-tag'
" GDB " GDB
@ -244,6 +245,7 @@ nnoremap <Leader>ghr :GitGutterPreviewHunk<CR>
nnoremap <Leader>gqf :GitGutterQuickFix<CR> nnoremap <Leader>gqf :GitGutterQuickFix<CR>
nnoremap <Leader>ggf :GitGutterFold<CR> nnoremap <Leader>ggf :GitGutterFold<CR>
" For Cscope " For Cscope
nnoremap <Leader>cu :NeomakeSh cscope -bqR<CR>
nnoremap <Leader>cr :cs reset<CR> nnoremap <Leader>cr :cs reset<CR>
" For Neomake " For Neomake
nnoremap <Leader>nm :Neomake<CR> nnoremap <Leader>nm :Neomake<CR>
@ -455,46 +457,39 @@ autocmd BufRead,BufNewFile *.md,*.txt setlocal spell spelllang=en_uk
" Automatically resize the window " Automatically resize the window
autocmd VimResized * wincmd = autocmd VimResized * wincmd =
" CScope & fuzzy integration " For CScope and Quickfix
" Taken from https://gist.github.com/amitab/cd051f1ea23c588109c6cfcb7d1d5776 " https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d
" However, the above gist has completely wrong mappings " https://medium.com/@lakshmankumar12/vim-and-cscope-5f4558c8a8b8
function! Cscope(option, query) function! Cscope(oper, currword)
let color = '{ x = $1; $1 = ""; z = $3; $3 = ""; printf "\033[34m%s\033[0m:\033[31m%s\033[0m\011\033[37m%s\033[0m\n", x,z,$0; }' execute "normal mZ"
let opts = { execute "set csqf=" . a:oper . "-"
\ 'source': "cscope -dL" . a:option . " " . a:query . " | awk '" . color . "'", execute "lcs find " a:oper . " " . a:currword
\ 'options': ['--ansi', '--prompt', '> ', execute "lopen"
\ '--multi', '--bind', 'alt-a:select-all,alt-d:deselect-all', execute "wincmd p"
\ '--color', 'bw'], execute "normal `Z"
\ 'down': '40%' execute "set csqf="
\ }
function! opts.sink(lines)
let data = split(a:lines)
let file = split(data[0], ":")
execute 'e ' . '+' . file[1] . ' ' . file[0]
endfunction
call fzf#run(opts)
endfunction endfunction
function! CscopeQuery(option) function! CscopeQuery(option)
call inputsave() call inputsave()
if a:option == '9' if a:option == "s"
let query = input('Assignments to: ')
elseif a:option == '3'
let query = input('Functions calling: ')
elseif a:option == '2'
let query = input('Functions called by: ')
elseif a:option == '6'
let query = input('Egrep: ')
elseif a:option == '7'
let query = input('File: ')
elseif a:option == '1'
let query = input('Definition: ')
elseif a:option == '8'
let query = input('Files #including: ')
elseif a:option == '0'
let query = input('C Symbol: ') let query = input('C Symbol: ')
elseif a:option == '4' elseif a:option == "g"
let query = input('Definition: ')
elseif a:option == "d"
let query = input('Functions called by: ')
elseif a:option == "c"
let query = input('Functions calling: ')
elseif a:option == "t"
let query = input('Text: ') let query = input('Text: ')
elseif a:option == "e"
let query = input('Egrep: ')
elseif a:option == "f"
let query = input('File: ')
elseif a:option == "i"
let query = input('Files #including: ')
elseif a:option == "a"
let query = input('Assignments to: ')
else else
echo "Invalid option!" echo "Invalid option!"
return return
@ -507,25 +502,25 @@ function! CscopeQuery(option)
endif endif
endfunction endfunction
nnoremap <silent> <Leader>ss :call Cscope('0', expand('<cword>'))<CR> nnoremap <silent> <Leader>ss :call Cscope("s", expand('<cword>'))<CR>
nnoremap <silent> <Leader>sg :call Cscope('1', expand('<cword>'))<CR> nnoremap <silent> <Leader>sg :call Cscope("g", expand('<cword>'))<CR>
nnoremap <silent> <Leader>sd :call Cscope('2', expand('<cword>'))<CR> nnoremap <silent> <Leader>sd :call Cscope("d", expand('<cword>'))<CR>
nnoremap <silent> <Leader>sc :call Cscope('3', expand('<cword>'))<CR> nnoremap <silent> <Leader>sc :call Cscope("c", expand('<cword>'))<CR>
nnoremap <silent> <Leader>st :call Cscope('4', expand('<cword>'))<CR> nnoremap <silent> <Leader>st :call Cscope("t", expand('<cword>'))<CR>
nnoremap <silent> <Leader>se :call Cscope('6', expand('<cword>'))<CR> nnoremap <silent> <Leader>se :call Cscope("e", expand('<cword>'))<CR>
nnoremap <silent> <Leader>sf :call Cscope('7', expand('<cword>'))<CR> nnoremap <silent> <Leader>sf :call Cscope("f", expand('<cword>'))<CR>
nnoremap <silent> <Leader>si :call Cscope('8', expand('<cword>'))<CR> nnoremap <silent> <Leader>si :call Cscope("i", expand('<cword>'))<CR>
nnoremap <silent> <Leader>sa :call Cscope('9', expand('<cword>'))<CR> nnoremap <silent> <Leader>sa :call Cscope("a", expand('<cword>'))<CR>
nnoremap <silent> <Leader><Leader>ss :call CscopeQuery('0')<CR> nnoremap <silent> <Leader><Leader>ss :call CscopeQuery("s")<CR>
nnoremap <silent> <Leader><Leader>sg :call CscopeQuery('1')<CR> nnoremap <silent> <Leader><Leader>sg :call CscopeQuery("g")<CR>
nnoremap <silent> <Leader><Leader>sd :call CscopeQuery('2')<CR> nnoremap <silent> <Leader><Leader>sd :call CscopeQuery("d")<CR>
nnoremap <silent> <Leader><Leader>sc :call CscopeQuery('3')<CR> nnoremap <silent> <Leader><Leader>sc :call CscopeQuery("c")<CR>
nnoremap <silent> <Leader><Leader>st :call CscopeQuery('4')<CR> nnoremap <silent> <Leader><Leader>st :call CscopeQuery("t")<CR>
nnoremap <silent> <Leader><Leader>se :call CscopeQuery('6')<CR> nnoremap <silent> <Leader><Leader>se :call CscopeQuery("e")<CR>
nnoremap <silent> <Leader><Leader>sf :call CscopeQuery('7')<CR> nnoremap <silent> <Leader><Leader>sf :call CscopeQuery("f")<CR>
nnoremap <silent> <Leader><Leader>si :call CscopeQuery('8')<CR> nnoremap <silent> <Leader><Leader>si :call CscopeQuery("i")<CR>
nnoremap <silent> <Leader><Leader>sa :call CscopeQuery('9')<CR> nnoremap <silent> <Leader><Leader>sa :call CscopeQuery("a")<CR>
function! NvimGdbNoTKeymaps() function! NvimGdbNoTKeymaps()
tnoremap <silent> <buffer> <esc> <c-\><c-n> tnoremap <silent> <buffer> <esc> <c-\><c-n>