Additional properties in .editorconfig
######################################
:date: 2019-01-22T00:30:44
:category: computer
:tags: vim, authoring
For some inexplicable reasons `vim-editorconfig`_ stopped working
with my latest build of neovim. I am not sure why and I haven’t
have enough time to debug it properly. As a workaround I have
temporarily (?) switched to `editorconfig-vim`_. The former
plugin is all written in VimL, so it was not problem to extend
properties it supports by two more ones ``spell_enabled`` and
``spell_language`` corresponding to ``spell`` and ``spelllang``
vim options respectively. The later plugin is in Python and it is
a bit more complicated, but fortunately it has an explicit hook
for custom plugins. So, I could write this into special
``plugin/`` file (no into ``~/.vimrc``, because commands from
plugins in ``~/.vim/pack`` are not available then yet):
.. code:: vim
function! FiletypeHook(config)
if has_key(a:config, 'spell_enabled')
let spell_enabled = a:config['spell_enabled']
echom printf("EditorConfig: spell_enabled = %s",
\ spell_enabled)
if spell_enabled == "true"
let &spell = 1
else
let &spell = 0
endif
endif
if has_key(a:config, 'spell_language')
let s:languages = map(filter(globpath(&runtimepath,
\ 'spell/*', 1, 1),
\ '!isdirectory(v:val)'), 'fnamemodify(v:val, '':t'')')
echom printf("EditorConfig: s:languages = %s",
\ s:languages)
let spell_language = a:config['spell_language']
" set bomb if necessary
if spell_language[-3:] == "BOM"
let &bomb = 1
spell_language = spell_language[:-4]
endif
echom printf("EditorConfig: spell_language = %s",
\ spell_language)
" We need to accept even dialects of languages, e.g., en_gb
let lang = split(spell_language, '_')[0]
echom printf("EditorConfig: spell_language = %s",
\ lang)
if !empty(filter(copy(s:languages),
\ 'stridx(v:val, lang) == 0'))
echom printf("EditorConfig: spell_language = %s",
\ spell_language)
let &spelllang = spell_language
endif
endif
return 0 " Return 0 to show no error happened
endfunction
call editorconfig#AddNewHook(function('FiletypeHook'))
Seems to work like charm. Comments on the code are, of course,
more than welcome.
.. _`vim-editorconfig`:
https://github.com/sgur/vim-editorconfig
.. _`editorconfig-vim`:
https://github.com/editorconfig/editorconfig-vim