diff options
author | Gregory Anders <greg@gpanders.com> | 2023-01-04 14:36:18 -0700 |
---|---|---|
committer | Gregory Anders <greg@gpanders.com> | 2023-01-07 08:19:12 -0700 |
commit | 34d1eaa792fa332cea190568967a489e324fca6f (patch) | |
tree | ccc218ca7e709141c455b5ffe76aaf9cb9604023 | |
parent | 42afa0369a3c01dddd1efef1397bbf46011f391b (diff) | |
download | rneovim-34d1eaa792fa332cea190568967a489e324fca6f.tar.gz rneovim-34d1eaa792fa332cea190568967a489e324fca6f.tar.bz2 rneovim-34d1eaa792fa332cea190568967a489e324fca6f.zip |
feat(editorconfig): allow editorconfig to be toggled dynamically
Rather than only check `editorconfig_enable` when the plugin is loaded,
check it each time the autocommand fires, so that users may enable or
disable it dynamically.
Also check for a buffer local version of the variable, so that
editorconfig can be enabled or disabled per-buffer.
-rw-r--r-- | runtime/plugin/editorconfig.lua | 11 | ||||
-rw-r--r-- | test/functional/plugin/editorconfig_spec.lua | 16 |
2 files changed, 23 insertions, 4 deletions
diff --git a/runtime/plugin/editorconfig.lua b/runtime/plugin/editorconfig.lua index 60eb861aaa..c715279fd5 100644 --- a/runtime/plugin/editorconfig.lua +++ b/runtime/plugin/editorconfig.lua @@ -1,11 +1,14 @@ -if vim.g.editorconfig_enable == false or vim.g.editorconfig_enable == 0 then - return -end - local group = vim.api.nvim_create_augroup('editorconfig', {}) vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead', 'BufFilePost' }, { group = group, callback = function(args) + -- Buffer-local enable has higher priority + local enable = + vim.F.if_nil(vim.b.editorconfig_enable, vim.F.if_nil(vim.g.editorconfig_enable, true)) + if not enable then + return + end + require('editorconfig').config(args.buf) end, }) diff --git a/test/functional/plugin/editorconfig_spec.lua b/test/functional/plugin/editorconfig_spec.lua index f71b8088ed..ad95b9a07e 100644 --- a/test/functional/plugin/editorconfig_spec.lua +++ b/test/functional/plugin/editorconfig_spec.lua @@ -4,6 +4,8 @@ local command = helpers.command local eq = helpers.eq local pathsep = helpers.get_pathsep() local curbufmeths = helpers.curbufmeths +local funcs = helpers.funcs +local meths = helpers.meths local testdir = 'Xtest-editorconfig' @@ -191,4 +193,18 @@ But not this one it('sets textwidth', function() test_case('max_line_length.txt', { textwidth = 42 }) end) + + it('can be disabled globally', function() + meths.set_var('editorconfig_enable', false) + meths.set_option_value('shiftwidth', 42, {}) + test_case('3_space.txt', { shiftwidth = 42 }) + end) + + it('can be disabled per-buffer', function() + meths.set_option_value('shiftwidth', 42, {}) + local bufnr = funcs.bufadd(testdir .. pathsep .. '3_space.txt') + meths.buf_set_var(bufnr, 'editorconfig_enable', false) + test_case('3_space.txt', { shiftwidth = 42 }) + test_case('4_space.py', { shiftwidth = 4 }) + end) end) |