diff options
author | Christian Segundo | 2023-10-12 15:29:11 +0200 |
---|---|---|
committer | Christian Segundo | 2023-10-12 15:29:11 +0200 |
commit | 542613a0f58ccb3722c93b4b68677d7b5053fd57 (patch) | |
tree | 04a940df3e75a4b4cbe53cc3392c4e1c63fc8c6f /public/nvim/.nvim/plugin | |
parent | 449a6f57a36862a8ff27b2a3cee0922f4e4d949e (diff) | |
download | dotfiles-542613a0f58ccb3722c93b4b68677d7b5053fd57.tar.gz |
Add nvim
Diffstat (limited to 'public/nvim/.nvim/plugin')
-rw-r--r-- | public/nvim/.nvim/plugin/qf-dd.vim | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/public/nvim/.nvim/plugin/qf-dd.vim b/public/nvim/.nvim/plugin/qf-dd.vim new file mode 100644 index 0000000..385c0c7 --- /dev/null +++ b/public/nvim/.nvim/plugin/qf-dd.vim @@ -0,0 +1,30 @@ +" https://stackoverflow.com/questions/42905008/quickfix-list-how-to-add-and-remove-entries +" When using `dd` in the quickfix list, remove the item from the quickfix list. +function! RemoveQFItem(mode) range abort + let l:qf_list = getqflist() + + " distinguish mode for getting delete index and delete count + if a:mode == 'v' + let l:del_qf_idx = getpos("'<")[1] - 1 + let l:del_ct = getpos("'>")[1] - l:del_qf_idx + else + let l:del_qf_idx = line('.') - 1 + let l:del_ct = v:count > 1 ? v:count : 1 + endif + + " delete lines and update quickfix + for item in range(l:del_ct) + call remove(l:qf_list, l:del_qf_idx) + endfor + call setqflist(l:qf_list, 'r') + + if len(l:qf_list) > 0 + execute l:del_qf_idx + 1 . 'cfirst' + copen + else + cclose + endif +endfunction + +autocmd FileType qf nmap <buffer> dd :call RemoveQFItem('n')<cr> +autocmd FileType qf vmap <buffer> dd :call RemoveQFItem('v')<cr> |