" hook_add {{{ let g:lexima_no_default_rules = v:true let g:lexima_ctrlh_as_backspace = v:true " }}} " hook_source {{{ call lexima#set_default_rules() let s:rules = {} " common let s:rules._ = [] let s:rules._ += [ \ #{ char: '', at: '\%#\s*)', leave: ')' }, \ #{ char: '', at: '\%#\s*\}', leave: '}' }, \ #{ char: '', at: '\%#\s*\]', leave: ']' }, \ #{ char: '', at: '\%#\s*>', leave: '>' }, \ #{ char: '', at: '\%#\s*`', leave: '`' }, \ #{ char: '', at: '\%#\s*"', leave: '"' }, \ #{ char: '', at: '\%#\s*''', leave: '''' }, \ ] let s:rules._ += [ \ #{ char: '<', at: '\<\h\w*\%#', input_after: '>' }, \ #{ char: '', at: '<\%#>', delete: 1 }, \ #{ char: '>', at: '\%#>', leave: '>' }, \ #{ char: '', at: '\%#\s*>', leave: '>' }, \ ] " python let s:rules.python = [] let s:rules.python += [ \ #{ char: '_', at: '\W\+_\%#', input: '_', input_after: '__' }, \ #{ char: '', at: '__\%#__', input: '', delete: 2 }, \ #{ char: '', at: '\%#__', leave: 2 }, \ ] " help let s:rules.help = [] let s:rules.help += [ \ #{ char: '*', input: '*', input_after: '*' }, \ #{ char: '*', at: '\%#\*', leave: '*' }, \ #{ char: '', at: '|\%#|', delete: 1 }, \ #{ char: '', at: '\*\%#\*', delete: 1 }, \ #{ char: '', at: '\%#|', leave: '|' }, \ #{ char: '', input: '|', input_after: '|' }, \ #{ char: '', at: '\%#|', leave: '|' }, \ #{ char: '', at: '\%#\*', leave: '*' }, \ ] " toml let s:rules.toml = [] let s:rules.toml += [ \ #{ char: '', at: "=\\s*'''\\%#'''$", input: '', input_after: '' }, \ #{ char: '', at: '=\s*"""\%#"""$', input: '', input_after: '' }, \ ] " vim " based on https://github.com/thinca/config/blob/5413e42a/dotfiles/dot.vim/vimrc#L2755 let s:vim_input_bslash = ''->repeat(g:vim_indent_cont)->printf('%s') let s:rules.vim = [] let s:rules.vim += [ \ #{ char: '', at: '{\%#}', input: s:vim_input_bslash, input_after: ' ' }, \ #{ char: '', at: '{\%#$', input: s:vim_input_bslash, input_after: ' }' }, \ #{ char: '', at: '(\%#)', input: s:vim_input_bslash, input_after: ' ' }, \ #{ char: '', at: '(\%#$', input: s:vim_input_bslash, input_after: ' )' }, \ #{ char: '', at: '\[\%#\]', input: s:vim_input_bslash, input_after: ' ' }, \ #{ char: '', at: '\[\%#$', input: s:vim_input_bslash, input_after: ' \]' }, \ ] " endmarker let s:rules.vim += [ \ #{ char: '', at: '<<\s*\%(trim\s\+\)\?\(\h\w*\)\%#$', input: '', input_after: '\1', with_submatch: v:true }, \ ] " sh let s:rules.sh = [] let s:rules.sh += [ \ #{ char: '', at: '\%#\s\]\]', leave: 3 }, \ ] let s:rules.zsh = copy(s:rules.sh) " jq let s:rules.jq = [] " string interpolation let s:rules.jq += [ \ #{ char: '(', at: '\\\%#', input_after: ')' }, \ ] eval s:rules \ ->foreach({ ft, rules -> rules->foreach({ -> \ v:val->extend(ft ==# '_' ? {} : #{ filetype: ft })->lexima#add_rule() \ }) }) " based on https://github.com/yuki-yano/dotfiles/blob/9bfee6c8/.vimrc#L3335 function! s:lexima_alter_command(original, altanative) abort eval ['', '', '!']->foreach({ -> \ lexima#add_rule(#{ \ char: v:val, \ mode: ':', \ at: $'\c^\(''<,''>\)\?{a:original}\%#', \ input: $'{a:altanative}{v:val}', \ }) }) endfunction command! -nargs=+ -complete=command LeximaAlterCommand call lexima_alter_command() " Plugin Commands LeximaAlterCommand cap\%[ture] Capture LeximaAlterCommand capturej\%[son] CaptureJson LeximaAlterCommand capj\%[son] CaptureJson LeximaAlterCommand quic\%[krun] QuickRun LeximaAlterCommand qr\%[un] QuickRun LeximaAlterCommand fixw\%[hitespace] FixWhitespace LeximaAlterCommand dd\%[u] Ddu LeximaAlterCommand dei\%[n] Dein LeximaAlterCommand deinr\%[eadme] DeinReadme LeximaAlterCommand rg Rg LeximaAlterCommand helpfu\%[lversion] HelpfulVersion LeximaAlterCommand copi\%[lot] Copilot LeximaAlterCommand gi\%[n] Gin " Original Commands LeximaAlterCommand colo\%[rscheme] ColorScheme LeximaAlterCommand ra\%[ndomcolorscheme] RandomColorScheme LeximaAlterCommand spa\%[rkcolorscheme] SparkColorScheme LeximaAlterCommand mi\%[ninote] MiniNote LeximaAlterCommand den\%[opssharedserver] DenopsSharedServer LeximaAlterCommand deinu\%[pdatemine] DeinUpdateMine LeximaAlterCommand vt\%[erminal] VTerminal " }}}