diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-08-30 20:26:34 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-30 20:26:34 +0100 |
commit | 9b03d3e75b4274493bbe76772d7b92238791964c (patch) | |
tree | d6d26fb5f2689da0a86eab0eab4dbbd016fb6eac /runtime/ftplugin | |
parent | 04c4c5746e15884768d2cb41370c3276a196cd4c (diff) | |
download | vim-git-9b03d3e75b4274493bbe76772d7b92238791964c.tar.gz |
Update runtime files
Diffstat (limited to 'runtime/ftplugin')
-rw-r--r-- | runtime/ftplugin/gdscript.vim | 53 | ||||
-rw-r--r-- | runtime/ftplugin/gdshader.vim | 12 | ||||
-rw-r--r-- | runtime/ftplugin/racket.vim | 82 |
3 files changed, 147 insertions, 0 deletions
diff --git a/runtime/ftplugin/gdscript.vim b/runtime/ftplugin/gdscript.vim new file mode 100644 index 000000000..dc1d220d0 --- /dev/null +++ b/runtime/ftplugin/gdscript.vim @@ -0,0 +1,53 @@ +vim9script + +# Vim filetype plugin file +# Language: gdscript (Godot game engine scripting language) +# Maintainer: Maxim Kim <habamax@gmail.com> + +if exists("b:did_ftplugin") | finish | endif + +b:did_ftplugin = 1 +b:undo_ftplugin = 'setlocal cinkeys<' + \ .. '| setlocal indentkeys<' + \ .. '| setlocal commentstring<' + \ .. '| setlocal suffixesadd<' + \ .. '| setlocal foldexpr<' + \ .. '| setlocal foldignore<' + +setlocal cinkeys-=0# +setlocal indentkeys-=0# +setlocal suffixesadd=.gd +setlocal commentstring=#\ %s +setlocal foldignore= +setlocal foldexpr=GDScriptFoldLevel() + + +def GDScriptFoldLevel(): string + var line = getline(v:lnum) + if line =~? '^\s*$' + return "-1" + endif + + var sw = shiftwidth() + var indent = indent(v:lnum) / sw + var indent_next = indent(nextnonblank(v:lnum + 1)) / sw + + if indent_next > indent && line =~ ':\s*$' + return $">{indent_next}" + else + return $"{indent}" + endif +enddef + + +# Next/Previous section +def NextSection(back: bool, cnt: number) + for n in range(cnt) + search('^\s*func\s', back ? 'bW' : 'W') + endfor +enddef + +nnoremap <silent><buffer> ]] <scriptcmd>NextSection(false, v:count1)<CR> +nnoremap <silent><buffer> [[ <scriptcmd>NextSection(true, v:count1)<CR> +xmap <silent><buffer><expr> ]] "\<esc>" .. v:count1 .. ']]m>gv' +xmap <silent><buffer><expr> [[ "\<esc>" .. v:count1 .. '[[m>gv' diff --git a/runtime/ftplugin/gdshader.vim b/runtime/ftplugin/gdshader.vim new file mode 100644 index 000000000..74de7c10f --- /dev/null +++ b/runtime/ftplugin/gdshader.vim @@ -0,0 +1,12 @@ +vim9script + +# Vim filetype plugin file +# Language: Godot shading language +# Maintainer: Maxim Kim <habamax@gmail.com> + +if exists("b:did_ftplugin") | finish | endif +b:did_ftplugin = 1 + +b:undo_ftplugin = 'setlocal suffixesadd<' + +setlocal suffixesadd=.gdshader diff --git a/runtime/ftplugin/racket.vim b/runtime/ftplugin/racket.vim new file mode 100644 index 000000000..3aa413397 --- /dev/null +++ b/runtime/ftplugin/racket.vim @@ -0,0 +1,82 @@ +" Vim filetype plugin +" Language: Racket +" Maintainer: D. Ben Knoble <ben.knoble+github@gmail.com> +" Previous Maintainer: Will Langstroth <will@langstroth.com> +" URL: https://github.com/benknoble/vim-racket +" Last Change: 2022 Aug 29 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" quick hack to allow adding values +setlocal iskeyword=@,!,#-',*-:,<-Z,a-z,~,_,94 + +" Enable auto begin new comment line when continuing from an old comment line +setlocal comments=:;;;;,:;;;,:;;,:; +setlocal formatoptions+=r + +"setlocal commentstring=;;%s +setlocal commentstring=#\|\ %s\ \|# + +setlocal formatprg=raco\ fmt + +" Undo our settings when the filetype changes away from Racket +" (this should be amended if settings/mappings are added above!) +let b:undo_ftplugin = + \ "setlocal iskeyword< lispwords< lisp< comments< formatoptions< formatprg<" + \. " | setlocal commentstring<" + +if !exists("no_plugin_maps") && !exists("no_racket_maps") + " Simply setting keywordprg like this works: + " setlocal keywordprg=raco\ docs + " but then vim says: + " "press ENTER or type a command to continue" + " We avoid the annoyance of having to hit enter by remapping K directly. + function s:RacketDoc(word) abort + execute 'silent !raco docs --' shellescape(a:word) + redraw! + endfunction + nnoremap <buffer> <Plug>RacketDoc :call <SID>RacketDoc(expand('<cword>'))<CR> + nmap <buffer> K <Plug>RacketDoc + + " For the visual mode K mapping, it's slightly more convoluted to get the + " selected text: + function! s:Racket_visual_doc() + try + let l:old_a = @a + normal! gv"ay + call system("raco docs '". @a . "'") + redraw! + return @a + finally + let @a = l:old_a + endtry + endfunction + + xnoremap <buffer> <Plug>RacketDoc :call <SID>Racket_visual_doc()<cr> + xmap <buffer> K <Plug>RacketDoc + + let b:undo_ftplugin .= + \ " | silent! execute 'nunmap <buffer> K'" + \. " | silent! execute 'xunmap <buffer> K'" +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = + \ "Racket Source Files (*.rkt *.rktl)\t*.rkt;*.rktl\n" + \. "All Files (*.*)\t*.*\n" + let b:undo_ftplugin .= " | unlet! b:browsefilter" +endif + +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_words = '#|:|#' + let b:undo_ftplugin .= " | unlet! b:match_words" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save |