From: Alexis Laferrière Date: Sun, 8 Mar 2015 00:09:09 +0000 (-0500) Subject: misc/vim: add a function to search for instances of the word under the cursor X-Git-Tag: v0.7.3~36^2~3 X-Git-Url: http://nitlanguage.org?hp=33a596ef3e0dbe879675baa289b3457f954a195a misc/vim: add a function to search for instances of the word under the cursor Signed-off-by: Alexis Laferrière --- diff --git a/misc/README.md b/misc/README.md index 1a7b97f..1661f43 100644 --- a/misc/README.md +++ b/misc/README.md @@ -38,6 +38,7 @@ Ensure that `~/.vimrc` contains * Syntax checker (require [Syntastic][2]). * Autocomplete for whole projects using module importations * Show documentation in preview window + * Search declarations and usages of the word under the cursor [2]: https://github.com/scrooloose/syntastic @@ -105,3 +106,14 @@ You may want to map the function to a shortcut by adding the following code to ` " Map displaying Nitdoc to Ctrl-D map :call Nitdoc() ~~~ + +## Search declarations and usages of the word under the cursor + +The function `NitGitGrep` calls `git grep` to find declarations and usages of the word under the cursor. +It displays the results in the preview window. +You may want to map the function to a shortcut by adding the following code to `~/.vimrc`. + +~~~ +" Map the NitGitGrep function to Ctrl-G +map :call NitGitGrep() +~~~ diff --git a/misc/vim/plugin/nit.vim b/misc/vim/plugin/nit.vim index c9d54d0..b1b115b 100644 --- a/misc/vim/plugin/nit.vim +++ b/misc/vim/plugin/nit.vim @@ -310,6 +310,32 @@ fun Nitdoc() redraw! endfun +" Call `git grep` on the word under the cursor +" +" Shows declarations first, then all matches, in the preview window. +fun NitGitGrep() + let word = expand("") + let out = tempname() + execute 'silent !(git grep "\\(module\\|class\\|universal\\|interface\\|var\\|fun\\) '.word.'";'. + \'echo; git grep '.word.') > '.out + + " Open the preview window on a temp file + execute "silent pedit " . out + + " Change to preview window + wincmd P + + " Set options + setlocal buftype=nofile + setlocal noswapfile + setlocal syntax=none + setlocal bufhidden=delete + + " Change back to the source buffer + wincmd p + redraw! +endfun + " Activate the omnifunc on Nit files autocmd FileType nit set omnifunc=NitOmnifunc