diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-09-25 22:29:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-25 16:29:25 +0200 |
commit | f8a1cadccff39923643fdea2e282be9fffa60e99 (patch) | |
tree | f40ff35a3322dcf758f688d89333d86d0f855212 | |
parent | 91e912f8d40284c74d4a997c8c95961eebb35d91 (diff) | |
download | rneovim-f8a1cadccff39923643fdea2e282be9fffa60e99.tar.gz rneovim-f8a1cadccff39923643fdea2e282be9fffa60e99.tar.bz2 rneovim-f8a1cadccff39923643fdea2e282be9fffa60e99.zip |
fix(filetype): use :setf instead of nvim_buf_set_option (#20334)
-rw-r--r-- | runtime/filetype.lua | 8 | ||||
-rw-r--r-- | test/functional/lua/filetype_spec.lua | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/runtime/filetype.lua b/runtime/filetype.lua index c50ba6453d..ee9d5a0a75 100644 --- a/runtime/filetype.lua +++ b/runtime/filetype.lua @@ -14,10 +14,14 @@ vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile', 'StdinReadPost' }, { -- Generic configuration file used as fallback ft = require('vim.filetype.detect').conf(args.file, args.buf) if ft then - vim.api.nvim_cmd({ cmd = 'setf', args = { 'FALLBACK', ft } }, {}) + vim.api.nvim_buf_call(args.buf, function() + vim.api.nvim_cmd({ cmd = 'setf', args = { 'FALLBACK', ft } }, {}) + end) end else - vim.api.nvim_buf_set_option(args.buf, 'filetype', ft) + vim.api.nvim_buf_call(args.buf, function() + vim.api.nvim_cmd({ cmd = 'setf', args = { ft } }, {}) + end) if on_detect then on_detect(args.buf) end diff --git a/test/functional/lua/filetype_spec.lua b/test/functional/lua/filetype_spec.lua index be57b2db31..2a7be53164 100644 --- a/test/functional/lua/filetype_spec.lua +++ b/test/functional/lua/filetype_spec.lua @@ -1,6 +1,7 @@ local helpers = require('test.functional.helpers')(after_each) local exec_lua = helpers.exec_lua local eq = helpers.eq +local meths = helpers.meths local clear = helpers.clear local pathroot = helpers.pathroot local command = helpers.command @@ -94,3 +95,10 @@ describe('vim.filetype', function() ]]) end) end) + +describe('filetype.lua', function() + it('does not override user autocommands that set filetype #20333', function() + clear({args={'--clean', '--cmd', 'autocmd BufRead *.md set filetype=notmarkdown', 'README.md'}}) + eq('notmarkdown', meths.buf_get_option(0, 'filetype')) + end) +end) |