fix(spell): always accept ':' as filename char in 'spellfile' (#27172)

Follow-up to #25236
This commit is contained in:
zeertzjq 2024-01-24 18:13:39 +08:00 committed by GitHub
parent 0c1119ac75
commit 8c044f0862
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 16 additions and 5 deletions

View File

@ -5729,7 +5729,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Name of the word list file where words are added for the |zg| and |zw| Name of the word list file where words are added for the |zg| and |zw|
commands. It must end in ".{encoding}.add". You need to include the commands. It must end in ".{encoding}.add". You need to include the
path, otherwise the file is placed in the current directory. path, otherwise the file is placed in the current directory.
The path may include characters from 'isfname', space, comma and '@'. The path may include characters from 'isfname', ' ', ',', '@' and ':'.
*E765* *E765*
It may also be a comma-separated list of names. A count before the It may also be a comma-separated list of names. A count before the
|zg| and |zw| commands can be used to access each. This allows using |zg| and |zw| commands can be used to access each. This allows using

View File

@ -6135,7 +6135,7 @@ vim.bo.spc = vim.bo.spellcapcheck
--- Name of the word list file where words are added for the `zg` and `zw` --- Name of the word list file where words are added for the `zg` and `zw`
--- commands. It must end in ".{encoding}.add". You need to include the --- commands. It must end in ".{encoding}.add". You need to include the
--- path, otherwise the file is placed in the current directory. --- path, otherwise the file is placed in the current directory.
--- The path may include characters from 'isfname', space, comma and '@'. --- The path may include characters from 'isfname', ' ', ',', '@' and ':'.
--- *E765* --- *E765*
--- It may also be a comma-separated list of names. A count before the --- It may also be a comma-separated list of names. A count before the
--- `zg` and `zw` commands can be used to access each. This allows using --- `zg` and `zw` commands can be used to access each. This allows using

View File

@ -849,11 +849,11 @@ bool vim_isfilec(int c)
} }
/// Check if "c" is a valid file-name character, including characters left /// Check if "c" is a valid file-name character, including characters left
/// out of 'isfname' to make "gf" work, such as comma, space, '@', etc. /// out of 'isfname' to make "gf" work, such as ',', ' ', '@', ':', etc.
bool vim_is_fname_char(int c) bool vim_is_fname_char(int c)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{ {
return vim_isfilec(c) || c == ',' || c == ' ' || c == '@'; return vim_isfilec(c) || c == ',' || c == ' ' || c == '@' || c == ':';
} }
/// Check that "c" is a valid file-name character or a wildcard character /// Check that "c" is a valid file-name character or a wildcard character

View File

@ -7746,7 +7746,7 @@ return {
Name of the word list file where words are added for the |zg| and |zw| Name of the word list file where words are added for the |zg| and |zw|
commands. It must end in ".{encoding}.add". You need to include the commands. It must end in ".{encoding}.add". You need to include the
path, otherwise the file is placed in the current directory. path, otherwise the file is placed in the current directory.
The path may include characters from 'isfname', space, comma and '@'. The path may include characters from 'isfname', ' ', ',', '@' and ':'.
*E765* *E765*
It may also be a comma-separated list of names. A count before the It may also be a comma-separated list of names. A count before the
|zg| and |zw| commands can be used to access each. This allows using |zg| and |zw| commands can be used to access each. This allows using

View File

@ -4,6 +4,7 @@ local eq = helpers.eq
local clear = helpers.clear local clear = helpers.clear
local api = helpers.api local api = helpers.api
local exc_exec = helpers.exc_exec local exc_exec = helpers.exc_exec
local fn = helpers.fn
local rmdir = helpers.rmdir local rmdir = helpers.rmdir
local write_file = helpers.write_file local write_file = helpers.write_file
local mkdir = helpers.mkdir local mkdir = helpers.mkdir
@ -105,4 +106,14 @@ describe('spellfile', function()
api.nvim_set_option_value('spelllang', 'en', {}) api.nvim_set_option_value('spelllang', 'en', {})
eq('Vim(set):E757: This does not look like a spell file', exc_exec('set spell')) eq('Vim(set):E757: This does not look like a spell file', exc_exec('set spell'))
end) end)
it('can be set to a relative path', function()
local fname = testdir .. '/spell/spell.add'
api.nvim_set_option_value('spellfile', fname, {})
end)
it('can be set to an absolute path', function()
local fname = fn.fnamemodify(testdir .. '/spell/spell.add', ':p')
api.nvim_set_option_value('spellfile', fname, {})
end)
end) end)