This commit is contained in:
baabelfish 2016-02-22 11:12:53 +02:00
commit c3f6a03349
9 changed files with 123 additions and 35 deletions

View file

@ -49,7 +49,12 @@ endfunction
function! features#info#web()
call suggest#New("def", 0, 0, s:New(1))
let current_word = expand("<cword>")
if modules#isGlobalImport(current_word)
call util#open_module_doc(current_word, "")
else
call suggest#New("def", 0, 0, s:New(1))
endif
endfunction

View file

@ -83,5 +83,17 @@ function! modules#FindGlobalImports()
endfunction
function! modules#moduleLocation(str)
if has_key(modules#FindGlobalImports(), a:str)
return modules#FindGlobalImports()[a:str]
endif
endfunction
function! modules#isGlobalImport(str)
return has_key(modules#FindGlobalImports(), a:str)
endfunction
let &cpo = s:save_cpo
unlet s:save_cpo

View file

@ -285,6 +285,11 @@ function! util#SelectNimProc(inner)
endfunction
function! util#goto_file()
let module_loc = modules#moduleLocation(expand("<cword>"))
endfunction
call operator#user#define('nimrepl_send', 'NimReplSend')
function! NimReplSend(motion_wiseness)
let start = getpos("'[")

View file

@ -4,7 +4,7 @@
==============================================================================
CONTENTS *nim-contents*
1.Intro.................................................|NimIntro|
1.Introduction..........................................|NimIntro|
2.Features..............................................|NimFeatures|
2.1.Syntax highlighting.............................|NimSyntaxHL|
2.2.Nimsuggest interaction..........................|NimSuggest|
@ -21,20 +21,78 @@ CONTENTS *nim-contents*
6.License...............................................|NimLicense|
==============================================================================
1.Intro *NimIntro*
1.Introduction *NimIntro*
==============================================================================
2.Features *NimFeatures*
- It's... Asynchronous!
- Syntax highlighting
- Normal vim highlight
- More intelligent highlight with nimsuggest
- Semantic highlighting for specified nim symbol kinds
- Indentation
- Error checking
- Using ``:make``
- Neomake
- Project navigation with nimsuggest
- Jump to definition
- Get symbol information (type, module, file, signature, etc...)
- Find usages (file and/or project)
- Autocompletion
- Nimsuggest omnicompletion
- Autocomplete module names
- IDE like stuff
- Outline listing all symbols in the module (like tagbar)
- Jump to documentation in web
- Refactoring
- Rename symbol in file or project
- REPL
- Open repl
- Send current buffer
- Send selection
------------------------------------------------------------------------------
2.1.Syntax highlighting *NimSyntaxHL*
2.1.1Intelligent with nimsuggest *NimSyntaxHLI*
Nimsuggest has the ability to highlight symbols in a buffer intelligently.
When you declare your on proc it gives you the highlight information for
every usage of that proc. When your routine call fails, your syntax
highlighting will fail too.
2.1.2Semantic highlighting *NimSyntaxHLI*
With the nimsuggest highlihgting it is possible to distinguish between
different symbol types. You can specify which symbol kinds you want to
be highlighted by hash made from their name.
In case of
for idx 1..10:
for jdx 1..0:
(idx * jdx).echo
all cases of idx will be highlighted with their own random color and jdx
with their own.
------------------------------------------------------------------------------
2.2.Nimsuggest interaction *NimSuggest*
Nimsuggest is a tool replacing the original nim idetools. This plugin
aims to use information given from nimsuggest to the fullest.
------------------------------------------------------------------------------
2.1.Get symbol information *NimSInfo*
------------------------------------------------------------------------------
2.2.Goto symbol *NimSGoto*

View file

@ -1,2 +1,3 @@
scriptencoding utf-8
au BufNewFile,BufRead *.nims,*.nim setlocal filetype=nim
au BufNewFile,BufRead *.nim setlocal filetype=nim
au BufNewFile,BufRead *.nims setlocal filetype=nims

View file

@ -40,16 +40,19 @@ command! -buffer -nargs=* -complete=buffer -range NimREPLEval :call features
if exists('g:nvim_nim_enable_default_binds')
nnoremap <buffer> <c-]> :NimDefinition<cr>
nnoremap <buffer> gf :call util#goto_file()<cr>
nnoremap <buffer> gd :NimDefinition<cr>
nnoremap <buffer> gt :NimInfo<cr>
nnoremap <buffer> gT :NimWeb<cr>
nnoremap <buffer> cr :NimRenameSymbol<cr>
nnoremap <buffer> cR :NimRenameSymbolProject<cr>
endif
if exists('g:nvim_nim_enable_custom_textobjects')
onoremap <buffer> <silent>af :<C-U>call util#SelectNimProc(0)<CR>
onoremap <buffer> <silent>if :<C-U>call util#SelectNimProc(1)<CR>
vnoremap <buffer> <silent>af :<C-U>call util#SelectNimProc(0)<CR><Esc>gv
vnoremap <buffer> <silent>if :<C-U>call util#SelectNimProc(1)<CR><Esc>gv
onoremap <buffer> <silent>af :<C-U>call util#SelectNimProc(0)<cr>
onoremap <buffer> <silent>if :<C-U>call util#SelectNimProc(1)<cr>
vnoremap <buffer> <silent>af :<C-U>call util#SelectNimProc(0)<cr><Esc>gv
vnoremap <buffer> <silent>if :<C-U>call util#SelectNimProc(1)<cr><Esc>gv
endif
augroup nvim_nim_highlighter

View file

@ -30,7 +30,7 @@ function! FindNimModulesPath()
endfunction
if exists("g:ycm_semantic_triggers")
let g:ycm_semantic_triggers["nim"] = ['.', '(']
let g:ycm_semantic_triggers["nim"] = ['.']
endif
let g:nvim_nim_enable_async = has("nvim")

View file

@ -35,21 +35,21 @@ syntax keyword nimTodo TODO FIXME
" Operators
syntax match nimOperatorAll "[&:?!@<>\|\~\.\^\=\/\+\-\*\$%]\+"
syntax keyword nimOperator and or not xor shl shr div mod notin is isnot .
syntax keyword nimOP9 div mod shl shr
syntax keyword nimOP5 notin is isnot not
syntax keyword nimOP4 and
syntax keyword nimOP3 or xor
syntax match nimOP10 "[\$\^]"
syntax match nimOP9 "[\*\%\\\/]"
syntax match nimOP6 "\."
syntax match nimOP5 "[=|<|>]"
syntax match nimOP5 "\v([!<>]\=)"
syntax match nimOP2 "[@:?]"
syntax match nimOP1 "[\*+\/%&]="
syntax match nimOP0 "=>"
syntax match nimOP0 "\->"
syntax match nimOperatorAll "[&:?!@<>\|\~\.\^\=\/\+\-\*\$%]\+"
syntax keyword nimOperator not xor shl shr div mod notin is isnot .
syntax keyword nimOP9 div mod shl shr
syntax keyword nimOP5 notin is isnot not
syntax keyword nimOP4 and
syntax keyword nimOP3 or xor
syntax match nimOP10 "[\$\^]"
syntax match nimOP9 "[\*\%\\\/]"
syntax match nimOP6 "\."
syntax match nimOP5 "[=|<|>]"
syntax match nimOP5 "\v([!<>]\=)"
syntax match nimOP2 "[@:?]"
syntax match nimOP1 "[\*+\/%&]="
syntax match nimOP0 "=>"
syntax match nimOP0 "\->"
syntax match nimFunction /[a-z,A-Z,0-9]\+\ze(/
@ -148,17 +148,6 @@ highlight link nimFunction Function
highlight link nimIdentifier Identifier
highlight link nimKeyword Keyword
highlight link nimNumber Number
highlight link nimOP0 Operator0
highlight link nimOP1 Operator1
highlight link nimOP10 Operator10
highlight link nimOP2 Operator2
highlight link nimOP3 Operator3
highlight link nimOP3 Operator4
highlight link nimOP5 Operator5
highlight link nimOP6 Operator6
highlight link nimOP7 Operator7
highlight link nimOP8 Operator8
highlight link nimOP9 Operator9
highlight link nimOperatorAll Operator
highlight link nimString String
highlight link nimStringLiterals Character

15
syntax/nims.vim Normal file
View file

@ -0,0 +1,15 @@
scriptencoding utf-8
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syntax keyword nimTypedef task
syntax keyword nimBuiltinFunction exec
syntax keyword nimStorage build tests bench
so <sfile>:p:h/nim.vim
let b:current_syntax = "nims"