" Get path to the best metadata file named `name`
"
" Returns an empty string if not found.
-fun NitMetadataFile(name)
+fun s:NitMetadataFile(name)
" Where are the generated metadata files?
if empty($NIT_VIM_DIR)
let metadata_dir = $HOME . '/.vim/nit'
let synopsis_matches = []
let doc_matches = []
- let path = NitMetadataFile(a:path)
+ let path = s:NitMetadataFile(a:path)
if empty(path)
return
endif
" Add?
if name == a:base
" Exact match
- call NitOmnifuncAddAMatch(a:matches, words, name)
+ call s:NitOmnifuncAddAMatch(a:matches, words, name)
elseif name =~? '^'.a:base
" Common-prefix match
- call NitOmnifuncAddAMatch(prefix_matches, words, name)
+ call s:NitOmnifuncAddAMatch(prefix_matches, words, name)
elseif name =~? a:base
" Substring match
- call NitOmnifuncAddAMatch(substring_matches, words, name)
+ call s:NitOmnifuncAddAMatch(substring_matches, words, name)
elseif get(words, 2, '') =~? a:base
" Match in the synopsis
- call NitOmnifuncAddAMatch(synopsis_matches, words, name)
+ call s:NitOmnifuncAddAMatch(synopsis_matches, words, name)
elseif get(words, 3, '') =~? a:base
" Match in the longer doc
- call NitOmnifuncAddAMatch(synopsis_matches, words, name)
+ call s:NitOmnifuncAddAMatch(doc_matches, words, name)
endif
endfor
endfun
" Internal function to search parse the information from a metadata line
-fun NitOmnifuncAddAMatch(matches, words, name)
+fun s:NitOmnifuncAddAMatch(matches, words, name)
let pretty = get(a:words, 1, '')
let synopsis = get(a:words, 2, '')
let desc = get(a:words, 3, '')
endfun
" Show doc for the entity under the cursor in the preview window
-fun Nitdoc()
- " Word under cursor
- let word = expand("<cword>")
+fun Nitdoc(...)
+ if a:0 == 0 || empty(a:1)
+ " Word under cursor
+ let word = expand("<cword>")
+ else
+ let word = join(a:000, ' ')
+ endif
" All possible docs (there may be more than one entity with the same name)
let docs = []
" Search in all metadata files
for file in ['modules', 'classes', 'properties']
- let path = NitMetadataFile(file.'.txt')
+ let path = s:NitMetadataFile(file.'.txt')
if empty(path)
continue
endif
" Activate the omnifunc on Nit files
autocmd FileType nit set omnifunc=NitOmnifunc
+" Define the user command Nitdoc for ease of use
+command -nargs=* Nitdoc call Nitdoc("<args>")
+
let s:script_dir = fnamemodify(resolve(expand('<sfile>:p')), ':h')