diff options
Diffstat (limited to 'computer/additional_properties_of_editorconfig.rst')
-rw-r--r-- | computer/additional_properties_of_editorconfig.rst | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/computer/additional_properties_of_editorconfig.rst b/computer/additional_properties_of_editorconfig.rst new file mode 100644 index 0000000..a6c2d0a --- /dev/null +++ b/computer/additional_properties_of_editorconfig.rst @@ -0,0 +1,75 @@ +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 |