diff --git a/after/ftplugin/vim/caw.vim b/after/ftplugin/vim/caw.vim index d42f4d2..0c809b3 100644 --- a/after/ftplugin/vim/caw.vim +++ b/after/ftplugin/vim/caw.vim @@ -4,6 +4,8 @@ let s:save_cpo = &cpo set cpo&vim let b:caw_oneline_comment = '"' +let b:caw_hatpos_sp = {lnum -> getline(lnum) =~# '^\s*\\' ? "" : " "} +let b:caw_zeropos_sp = b:caw_hatpos_sp if !exists("b:did_caw_ftplugin") if exists('b:undo_ftplugin') diff --git a/macros/after-ftplugin-template.vim b/macros/after-ftplugin-template.vim index ba848f6..5ba7d1a 100644 --- a/macros/after-ftplugin-template.vim +++ b/macros/after-ftplugin-template.vim @@ -6,6 +6,7 @@ set cpo&vim + if !exists("b:did_caw_ftplugin") if exists('b:undo_ftplugin') diff --git a/macros/generate-ftplugins.vim b/macros/generate-ftplugins.vim index 4aac18c..cf352d4 100644 --- a/macros/generate-ftplugins.vim +++ b/macros/generate-ftplugins.vim @@ -406,6 +406,14 @@ function! s:wrap_multiline() abort \} endfunction +function! s:additional_vars() abort + return { + \ 'vim': [ + \ ['b:caw_hatpos_sp', '{lnum -> getline(lnum) =~# ''^\s*\\'' ? "" : " "}'], + \ ['b:caw_zeropos_sp', 'b:caw_hatpos_sp'], + \ ], + \} +endfunction let s:root_dir = expand(':h:h') @@ -435,6 +443,7 @@ function! s:write_all() abort let oneline = s:oneline() let wrap_oneline = s:wrap_oneline() let wrap_multiline = s:wrap_multiline() + let additional_vars = s:additional_vars() let all_keys = s:sort_unique( \ keys(oneline) + keys(wrap_oneline) + keys(wrap_multiline) \) @@ -468,6 +477,17 @@ function! s:write_all() abort g//d endif + " More additional variables + if has_key(additional_vars, filetype) + let additionals = [] + for [k, v] in get(additional_vars, filetype) + let additionals += [printf('let %s = %s', k, v)] + endfor + %s@@\=join(additionals, "\n")@ + else + g//d + endif + write endfor endfunction