misc/vim: search in synopsis and full doc for matches
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 9 Mar 2015 17:36:29 +0000 (13:36 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 9 Mar 2015 17:56:33 +0000 (13:56 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

misc/vim/plugin/nit.vim

index a781d87..046ab9f 100644 (file)
@@ -110,13 +110,17 @@ endfun
 " Internal function to search for lines in `path` corresponding to the partial
 " word `base`. Adds found and formated match to `matches`.
 "
-" Will order the results in 3 levels:
+" Will order the results in 5 levels:
 " 1. Exact matches
 " 2. Common prefix matches
 " 3. Substring matches
+" 4. Synopsis matches
+" 5. Doc matches
 fun NitOmnifuncAddFromFile(base, matches, path)
        let prefix_matches = []
        let substring_matches = []
+       let synopsis_matches = []
+       let doc_matches = []
 
        let path = NitMetadataFile(a:path)
        if empty(path)
@@ -137,12 +141,20 @@ fun NitOmnifuncAddFromFile(base, matches, path)
                elseif name =~? a:base
                        " Substring match
                        call NitOmnifuncAddAMatch(substring_matches, words, name)
+               elseif get(words, 2, '') =~? a:base
+                       " Match in the synopsis
+                       call NitOmnifuncAddAMatch(synopsis_matches, words, name)
+               elseif get(words, 3, '') =~? a:base
+                       " Match in the longer doc
+                       call NitOmnifuncAddAMatch(synopsis_matches, words, name)
                endif
        endfor
 
        " Assemble the final match list
        call extend(a:matches, sort(prefix_matches))
        call extend(a:matches, sort(substring_matches))
+       call extend(a:matches, sort(synopsis_matches))
+       call extend(a:matches, sort(doc_matches))
 endfun
 
 " Internal function to search parse the information from a metadata line