vim: improve NitGitGrep
authorAlexis Laferrière <alexis.laf@xymus.net>
Sun, 2 Jul 2017 01:50:50 +0000 (21:50 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Fri, 14 Jul 2017 12:51:09 +0000 (08:51 -0400)
* Print line number after the file path, so you can use `gF` here too.
* Show the introduction(s) before the redefs.
* Search for the complete word under the cursor.
* Search only in Nit source files.
* Avoid duplicating results.

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

misc/vim/plugin/nit.vim

index 582e5fb..c810664 100644 (file)
@@ -358,12 +358,13 @@ endfun
 
 " Call `git grep` on the word under the cursor
 "
-" Shows declarations first, then all matches, in the preview window.
+" In the preview window, list introductions, declarations and then all matches.
 fun NitGitGrep()
        let word = expand("<cword>")
        let out = tempname()
-       execute 'silent !(git grep "\\(module\\|class\\|universal\\|interface\\|var\\|fun\\) '.word.'";'.
-               \'echo; git grep '.word.') > '.out
+       execute 'silent !(git grep -n -e "\<\\(module\\|class\\|universal\\|interface\\|subset\\|var\\|fun\\)\> \<'.word.'\>" --and --not -e redef -- ''*.nit'';'.
+               \'git grep -n "redef \<\\(class\\|universal\\|interface\\|subset\\|var\\|fun\\)\> \<'.word.'\>" -- ''*.nit'';'.
+               \'echo; git grep -n -e "\<'.word.'\>" --and --not -e "\<\\(module\\|class\\|universal\\|interface\\|subset\\|var\\|fun\\)\> \<'.word.'\>" -- ''*.nit'') > '.out
 
        " Open the preview window on a temp file
        execute "silent pedit " . out