aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/editorconfig.txt14
-rw-r--r--runtime/doc/news.txt2
-rw-r--r--runtime/plugin/editorconfig.lua10
-rw-r--r--test/functional/plugin/editorconfig_spec.lua16
4 files changed, 31 insertions, 11 deletions
diff --git a/runtime/doc/editorconfig.txt b/runtime/doc/editorconfig.txt
index e93713e5ff..04a057e5ff 100644
--- a/runtime/doc/editorconfig.txt
+++ b/runtime/doc/editorconfig.txt
@@ -13,16 +13,18 @@ the opened file are applied.
For more information on EditorConfig, see https://editorconfig.org/.
- *g:editorconfig_enable*
-EditorConfig integration can be disabled by adding >lua
+ *g:editorconfig* *b:editorconfig*
+EditorConfig integration can be disabled globally by adding >lua
- vim.g.editorconfig_enable = false
+ vim.g.editorconfig = false
<
-to the user's |init.lua| file (or the Vimscript equivalent to |init.vim|).
+to the user's |init.lua| file (or the Vimscript equivalent to |init.vim|). It
+can also be disabled per-buffer by setting the |b:editorconfig| buffer-local
+variable to `false`.
- *b:editorconfig*
When Nvim finds a valid .editorconfig file it will store the applied
-properties in the buffer variable |b:editorconfig|.
+properties in the buffer variable |b:editorconfig| if it was not already set to
+`false` by the user.
*editorconfig-properties*
The following properties are supported by default:
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt
index 3e291e59c9..33ac9ddd20 100644
--- a/runtime/doc/news.txt
+++ b/runtime/doc/news.txt
@@ -53,7 +53,7 @@ The following new APIs or features were added.
• EditorConfig support is now builtin. This is enabled by default and happens
automatically. To disable it, users should add >lua
- vim.g.editorconfig_enable = false
+ vim.g.editorconfig = false
<
(or the Vimscript equivalent) to their |config| file.
diff --git a/runtime/plugin/editorconfig.lua b/runtime/plugin/editorconfig.lua
index 60eb861aaa..54cd0e828e 100644
--- a/runtime/plugin/editorconfig.lua
+++ b/runtime/plugin/editorconfig.lua
@@ -1,11 +1,13 @@
-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, vim.F.if_nil(vim.g.editorconfig, 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..e6a2550aba 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', 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', false)
+ test_case('3_space.txt', { shiftwidth = 42 })
+ test_case('4_space.py', { shiftwidth = 4 })
+ end)
end)