nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
misc/vim: nitdoc function search for a precise word
[nit.git]
/
misc
/
vim
/
plugin
/
nit.vim
diff --git
a/misc/vim/plugin/nit.vim
b/misc/vim/plugin/nit.vim
index
b1b115b
..
f19224a
100644
(file)
--- a/
misc/vim/plugin/nit.vim
+++ b/
misc/vim/plugin/nit.vim
@@
-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`.
"
" 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
" 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 = []
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)
let path = NitMetadataFile(a:path)
if empty(path)
@@
-131,18
+135,26
@@
fun NitOmnifuncAddFromFile(base, matches, path)
if name == a:base
" Exact match
call NitOmnifuncAddAMatch(a:matches, words, name)
if name == a:base
" Exact match
call NitOmnifuncAddAMatch(a:matches, words, name)
- elseif name =~ '^'.a:base
+ elseif name =~? '^'.a:base
" Common-prefix match
call NitOmnifuncAddAMatch(prefix_matches, words, name)
" Common-prefix match
call NitOmnifuncAddAMatch(prefix_matches, words, name)
- elseif name =~ a:base
+ elseif name =~? a:base
" Substring match
call NitOmnifuncAddAMatch(substring_matches, words, name)
" 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))
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
endfun
" Internal function to search parse the information from a metadata line
@@
-271,7
+283,7
@@
fun Nitdoc()
for line in readfile(path)
let words = split(line, '#====#', 1)
let name = get(words, 0, '')
for line in readfile(path)
let words = split(line, '#====#', 1)
let name = get(words, 0, '')
- if name =~ '^' . word
+ if name =~ '^' . word . '\>'
" It fits our word, get long doc
let desc = get(words,3,'')
let desc = join(split(desc, '#nnnn#', 1), "\n")
" It fits our word, get long doc
let desc = get(words,3,'')
let desc = join(split(desc, '#nnnn#', 1), "\n")