codekingpro/portable-devtools
115k
1vim9script2 3# Vim filetype plugin file4# Language: gdscript (Godot game engine scripting language)5# Maintainer: Maxim Kim <habamax@gmail.com>6# Website: https://github.com/habamax/vim-gdscript7# Last Change: 2024 Jul 148 9if exists("b:did_ftplugin") | finish | endif10 11b:did_ftplugin = 112b:undo_ftplugin = 'setlocal cinkeys<'13 \ .. '| setlocal indentkeys<'14 \ .. '| setlocal commentstring<'15 \ .. '| setlocal suffixesadd<'16 \ .. '| setlocal foldexpr<'17 \ .. '| setlocal foldignore<'18 19setlocal cinkeys-=0#20setlocal indentkeys-=0#21setlocal suffixesadd=.gd22setlocal commentstring=#\ %s23setlocal foldignore=24setlocal foldexpr=GDScriptFoldLevel()25 26if get(g:, 'gdscript_recommended_style', 1)27 setlocal noexpandtab tabstop=4 softtabstop=0 shiftwidth=028 b:undo_ftplugin ..= ' | setlocal expandtab< tabstop< softtabstop< shiftwidth<'29endif30 31 32def GDScriptFoldLevel(): string33 var line = getline(v:lnum)34 if line =~? '^\s*$'35 return "-1"36 endif37 38 var sw = shiftwidth()39 var indent = indent(v:lnum) / sw40 var indent_next = indent(nextnonblank(v:lnum + 1)) / sw41 42 if indent_next > indent && line =~ ':\s*$'43 return $">{indent_next}"44 else45 return $"{indent}"46 endif47enddef48 49 50if !exists("g:no_plugin_maps")51 # Next/Previous section52 def NextSection(back: bool, cnt: number)53 for n in range(cnt)54 search('^\s*func\s', back ? 'bW' : 'W')55 endfor56 enddef57 58 nnoremap <silent><buffer> ]] <scriptcmd>NextSection(false, v:count1)<CR>59 nnoremap <silent><buffer> [[ <scriptcmd>NextSection(true, v:count1)<CR>60 xmap <buffer><expr> ]] $'<C-\><C-N>{v:count1}]]m>gv'61 xmap <buffer><expr> [[ $'<C-\><C-N>{v:count1}[[m>gv'62 b:undo_ftplugin ..=63 \ " | silent exe 'unmap <buffer> [['"64 \ .. " | silent exe 'unmap <buffer> ]]'"65endif66 