commit 34d1eaa792fa332cea190568967a489e324fca6f
parent 42afa0369a3c01dddd1efef1397bbf46011f391b
Author: Gregory Anders <greg@gpanders.com>
Date: Wed, 4 Jan 2023 14:36:18 -0700
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.
Diffstat:
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git 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
@@ -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)