summaryrefslogtreecommitdiffstats
path: root/computer/additional_properties_of_editorconfig.rst
diff options
context:
space:
mode:
Diffstat (limited to 'computer/additional_properties_of_editorconfig.rst')
-rw-r--r--computer/additional_properties_of_editorconfig.rst75
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