Merge pull request #23979 from neovim/backport-23975-to-release-0.9

[Backport release-0.9] fix(helptags): make multibyte help tags work properly
This commit is contained in:
zeertzjq
2023-06-11 12:37:17 +08:00
committed by GitHub
3 changed files with 19 additions and 2 deletions

View File

@@ -457,7 +457,7 @@ int find_help_tags(const char *arg, int *num_matches, char ***matches, bool keep
// Replace "^x" by "CTRL-X". Don't do this for "^_" to make
// ":help i_^_CTRL-D" work.
// Insert '-' before and after "CTRL-X" when applicable.
if (*s < ' '
if ((uint8_t)(*s) < ' '
|| (*s == '^' && s[1]
&& (ASCII_ISALPHA(s[1]) || vim_strchr("?@[\\]^", (uint8_t)s[1]) != NULL))) {
if (d > IObuff && d[-1] != '_' && d[-1] != '\\') {

View File

@@ -1751,7 +1751,7 @@ static tagmatch_status_T findtags_parse_line(findtags_state_T *st, tagptrs_T *ta
if (st->state == TS_BINARY) {
int tagcmp;
// Simplistic check for unsorted tags file.
int i = (int)tagpp->tagname[0];
int i = (uint8_t)tagpp->tagname[0];
if (margs->sortic) {
i = TOUPPER_ASC(tagpp->tagname[0]);
}

View File

@@ -4,6 +4,10 @@ local clear = helpers.clear
local command = helpers.command
local eq = helpers.eq
local funcs = helpers.funcs
local meths = helpers.meths
local mkdir = helpers.mkdir
local rmdir = helpers.rmdir
local write_file = helpers.write_file
describe(':help', function()
before_each(clear)
@@ -25,4 +29,17 @@ describe(':help', function()
-- Before #9773, Nvim would crash on quitting the help window.
eq(1002, funcs.win_getid())
end)
it('multibyte help tags work #23978', function()
mkdir('Xhelptags')
finally(function()
rmdir('Xhelptags')
end)
mkdir('Xhelptags/doc')
write_file('Xhelptags/doc/Xhelptags.txt', '*…*')
command('helptags Xhelptags/doc')
command('set rtp+=Xhelptags')
command('help …')
eq('*…*', meths.get_current_line())
end)
end)