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 | 
