diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-04-25 21:06:45 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-04-25 21:06:45 +0200 |
commit | b2ee28374b942026474e77d9aa6fc538f105755b (patch) | |
tree | ce7160a3938f6d8ff355c71b42c168aa86406a5e /ftplugin | |
parent | 68b2748af117b56208f25678c4b465af00dc64c5 (diff) | |
download | vim-polyglot-b2ee28374b942026474e77d9aa6fc538f105755b.tar.gz vim-polyglot-b2ee28374b942026474e77d9aa6fc538f105755b.zip |
Add gdscript, closes #483
Diffstat (limited to 'ftplugin')
-rw-r--r-- | ftplugin/gdscript3.vim | 107 | ||||
-rw-r--r-- | ftplugin/gsl.vim | 5 |
2 files changed, 112 insertions, 0 deletions
diff --git a/ftplugin/gdscript3.vim b/ftplugin/gdscript3.vim new file mode 100644 index 00000000..3e5451f1 --- /dev/null +++ b/ftplugin/gdscript3.vim @@ -0,0 +1,107 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'gdscript') == -1 + +setlocal commentstring=#\ %s + +if exists("g:gdscript3_loaded") + finish +endif +let g:gdscript3_loaded=1 + +if !has("python3") && !has("python") + finish +endif + +if has("python3") + let s:pyfile_cmd = "py3file" + let s:py_cmd = "py3" +else + let s:pyfile_cmd = "pyfile" + let s:py_cmd = "py" +endif + +execute s:pyfile_cmd . " " . expand('<sfile>:p:h') . "/../python/init.py" + +fun! GDScriptComplete(findstart, base) + if a:findstart == 1 + let line = getline('.') + let start = col('.') - 1 + " Treat '-' as part of the word when completing in a string. + if synIDattr(synID(line('.'), col('.')-1, 1), 'name') ==# "gdString" + let pattern = '[-a-zA-Z0-9_]' + else + let pattern = '[a-zA-Z0-9_]' + endif + while start > 0 && line[start - 1] =~ pattern + let start -= 1 + endwhile + return start + else + execute s:py_cmd . " gdscript_complete()" + if exists("gdscript_completions") + return gdscript_completions + else + return [] + endif + endif +endfun +set omnifunc=GDScriptComplete + +" Configure for common completion frameworks. + +" Deoplete +if &rtp =~ 'deoplete.nvim' + call deoplete#custom#option('sources', { + \ 'gdscript3': ['omni'], + \ }) + call deoplete#custom#var('omni', 'input_patterns', { + \ 'gdscript3': [ + \ '\.|\w+', + \ '\bextends\s+', + \ '\bexport\(', + \ '\bfunc\s+', + \ '"res://[^"]*' + \ ] + \ }) +endif + +" SuperTab +let g:SuperTabDefaultCompletionType = "<c-x><c-o>" + +" YouCompleteMe +if !exists('g:ycm_semantic_triggers') + let g:ycm_semantic_triggers = {} +endif +let g:ycm_semantic_triggers.gdscript3 = [ + \'re!\w+', + \'.', + \'re!\bextends\s+', + \'re!\bexport\(', + \'re!\bfunc\s+', + \'re!"res://[^"]*' + \] + + + +" Configure echodoc +if &rtp =~ 'echodoc' + let s:echodoc_dict = { "name": "gdscript3", "rank": 9 } + fun! s:echodoc_dict.search(text) + execute s:py_cmd . " echodoc_search()" + if exists("echodoc_search_result") + return echodoc_search_result + else + return [] + endif + endfun + call echodoc#register('gdscript3', s:echodoc_dict) + + " Reset echodoc cache when exiting insert mode. + " This fixes an issue where the function signature wouldn't re-appear + " after exiting and re-entering insert mode. + au InsertLeave * let b:prev_echodoc = [] +endif + +" Configure Syntastic checker +let g:syntastic_gdscript3_checkers = ['godot_server'] + +endif diff --git a/ftplugin/gsl.vim b/ftplugin/gsl.vim new file mode 100644 index 00000000..de18da43 --- /dev/null +++ b/ftplugin/gsl.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'gdscript') == -1 + +setlocal commentstring=//\ %s + +endif |