diff options
author | sus-domesticus <134197728+sus-domesticus@users.noreply.github.com> | 2024-06-06 17:16:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-06 09:16:43 -0500 |
commit | cb6c0fda718e4503fc1bfc49a9fe92411f5f9005 (patch) | |
tree | 8213be77050e788060517c2830ab772356618492 | |
parent | 972374f4e91dfbfa4a42202abc6e070dad6cdf02 (diff) | |
download | rneovim-cb6c0fda718e4503fc1bfc49a9fe92411f5f9005.tar.gz rneovim-cb6c0fda718e4503fc1bfc49a9fe92411f5f9005.tar.bz2 rneovim-cb6c0fda718e4503fc1bfc49a9fe92411f5f9005.zip |
feat(editorconfig): add support for spelling_language (#28638)
-rw-r--r-- | runtime/doc/editorconfig.txt | 4 | ||||
-rw-r--r-- | runtime/doc/news.txt | 3 | ||||
-rw-r--r-- | runtime/lua/editorconfig.lua | 21 | ||||
-rw-r--r-- | test/functional/plugin/editorconfig_spec.lua | 21 |
4 files changed, 47 insertions, 2 deletions
diff --git a/runtime/doc/editorconfig.txt b/runtime/doc/editorconfig.txt index 0b20c77801..eef14ed51c 100644 --- a/runtime/doc/editorconfig.txt +++ b/runtime/doc/editorconfig.txt @@ -78,6 +78,10 @@ root *editorconfig.root* directories. This property must be at the top-level of the `.editorconfig` file (i.e. it must not be within a glob section). +spelling_language *editorconfig.spelling_language* + A code of the format ss or ss-TT, where ss is an ISO 639 language code and + TT is an ISO 3166 territory identifier. Sets the 'spelllang' option. + tab_width *editorconfig.tab_width* The display size of a single tab character. Sets the 'tabstop' option. diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 13e4b23ea1..2fed1b6b29 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -128,7 +128,8 @@ PERFORMANCE PLUGINS -• TODO +• EditorConfig + • spelling_language property is now supported. STARTUP diff --git a/runtime/lua/editorconfig.lua b/runtime/lua/editorconfig.lua index dcd7425c29..e65d267a70 100644 --- a/runtime/lua/editorconfig.lua +++ b/runtime/lua/editorconfig.lua @@ -190,6 +190,27 @@ function properties.insert_final_newline(bufnr, val) end end +--- A code of the format ss or ss-TT, where ss is an ISO 639 language code and TT is an ISO 3166 territory identifier. +--- Sets the 'spelllang' option. +function properties.spelling_language(bufnr, val) + local error_msg = + 'spelling_language must be of the format ss or ss-TT, where ss is an ISO 639 language code and TT is an ISO 3166 territory identifier.' + + assert(val:len() == 2 or val:len() == 5, error_msg) + + local language_code = val:sub(1, 2):lower() + assert(language_code:match('%l%l'), error_msg) + if val:len() == 2 then + vim.bo[bufnr].spelllang = language_code + else + assert(val:sub(3, 3) == '-', error_msg) + + local territory_code = val:sub(4, 5):lower() + assert(territory_code:match('%l%l'), error_msg) + vim.bo[bufnr].spelllang = language_code .. '_' .. territory_code + end +end + --- @private --- Modified version of [glob2regpat()] that does not match path separators on `*`. --- diff --git a/test/functional/plugin/editorconfig_spec.lua b/test/functional/plugin/editorconfig_spec.lua index 839a723405..242ed9b57f 100644 --- a/test/functional/plugin/editorconfig_spec.lua +++ b/test/functional/plugin/editorconfig_spec.lua @@ -16,8 +16,16 @@ local testdir = 'Xtest-editorconfig' local function test_case(name, expected) local filename = testdir .. pathsep .. name command('edit ' .. filename) + for opt, val in pairs(expected) do - eq(val, api.nvim_get_option_value(opt, { buf = 0 }), name) + local opt_info = api.nvim_get_option_info2(opt, {}) + if opt_info.scope == 'win' then + eq(val, api.nvim_get_option_value(opt, { win = 0 }), name) + elseif opt_info.scope == 'buf' then + eq(val, api.nvim_get_option_value(opt, { buf = 0 }), name) + else + eq(val, api.nvim_get_option_value(opt, {}), name) + end end end @@ -93,6 +101,12 @@ setup(function() [max_line_length.txt] max_line_length = 42 + + [short_spelling_language.txt] + spelling_language = de + + [long_spelling_language.txt] + spelling_language = en-NZ ]] ) end) @@ -222,4 +236,9 @@ But not this one eq(true, ok, err) end) + + it('sets spelllang', function() + test_case('short_spelling_language.txt', { spelllang = 'de' }) + test_case('long_spelling_language.txt', { spelllang = 'en_nz' }) + end) end) |