" This gives us better results for Nit
set noignorecase
- set completeopt=longest,menuone,preview
+ set completeopt=longest,menuone
" Do not predict small 3 letters keywords (or their prefix), they slow down
" prediction and some also require double-enter on end of line.
let g:acp_behaviorKeywordIgnores = ['new', 'var', 'in', 'do', 'els', 'end', 'ret', 'for', 'fun']
" Use nitls to compute all interesting files from the current directory and the standard library
- for file in split(system('nitls -M standard .', '\n'))
+ for file in split(system('nitls -M core .', '\n'))
silent let &complete = &complete . ',s' . file
silent set complete?
endfor
" Found no doc, give up
if empty(docs) || !(join(docs, '') =~ '\w')
+ echo 'Nitdoc found nothing for "' . word . '"'
return
endif
" 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
redraw!
endfun
-" Activate the omnifunc on Nit files
-autocmd FileType nit set omnifunc=NitOmnifunc
+" Call `nit` on the current file
+fun NitExecute()
+ let path = expand('%')
+
+ if &modified
+ let path = tempname() . '.nit'
+ execute '%write '. path
+ endif
+
+ execute '!nit "' . path . '"'
+endfun
+command NitExecute call NitExecute()
+
+if !exists("g:nit_disable_omnifunc") || !g:nit_disable_omnifunc
+ " Activate the omnifunc on Nit files
+ autocmd FileType nit set omnifunc=NitOmnifunc
+endif
" Define the user command Nitdoc for ease of use
command -nargs=* Nitdoc call Nitdoc("<args>")