Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2026-06-24 01:15:06 +01:00
3 changed files with 4 additions and 61 deletions

View File

@@ -4525,53 +4525,6 @@ format_build_modifiers(struct format_expand_state *es, const char **s,
return (list);
}
/* Fuzzy match a single token (no spaces). */
static int
format_fuzzy_match_token(const char *pattern, size_t patternlen,
const char *text, int icase)
{
const char *end = pattern + patternlen;
while (pattern != end) {
if (*text == '\0')
return (0);
if (icase) {
if (tolower((u_char)*pattern) == tolower((u_char)*text))
pattern++;
} else {
if (*pattern == *text)
pattern++;
}
text++;
}
return (1);
}
/*
* Fuzzy match strings. The pattern is split on spaces into tokens and every
* token must match as a sequence.
*/
static int
format_fuzzy_match(const char *pattern, const char *text, int icase)
{
const char *start;
size_t len;
while (*pattern != '\0') {
while (*pattern == ' ')
pattern++;
if (*pattern == '\0')
break;
start = pattern;
while (*pattern != '\0' && *pattern != ' ')
pattern++;
len = pattern - start;
if (!format_fuzzy_match_token(start, len, text, icase))
return (0);
}
return (1);
}
/* Match against an fnmatch(3) pattern or regular expression. */
static char *
format_match(struct format_modifier *fm, const char *pattern, const char *text)
@@ -4582,10 +4535,7 @@ format_match(struct format_modifier *fm, const char *pattern, const char *text)
if (fm->argc >= 1)
s = fm->argv[0];
if (strchr(s, 'z') != NULL) {
if (!format_fuzzy_match(pattern, text, strchr(s, 'i') != NULL))
return (xstrdup("0"));
} else if (strchr(s, 'r') == NULL) {
if (strchr(s, 'r') == NULL) {
if (strchr(s, 'i') != NULL)
flags |= FNM_CASEFOLD;
if (fnmatch(pattern, text, flags) != 0)

View File

@@ -904,7 +904,7 @@ status_prompt_redraw(struct client *c)
status_prompt_area(c, &ax, &aw);
tmp = utf8_tocstr(c->prompt_buffer);
format_add(ft, "prompt-input", "%s", tmp);
format_add(ft, "prompt_input", "%s", tmp);
prompt = format_expand_time(ft, c->prompt_string);
free(tmp);

11
tmux.1
View File

@@ -6384,20 +6384,13 @@ An optional argument specifies flags:
.Ql r
means the pattern is a regular expression instead of the default
.Xr glob 7
pattern,
.Ql z
means the pattern is a fuzzy match, that is, it matches if its characters
appear in the string in order but not necessarily consecutively;
the pattern is split on spaces into separate terms which must all match,
and
pattern and
.Ql i
means to ignore case.
For example:
.Ql #{m:*foo*,#{host}}
or
.Ql #{m/ri:\[ha]A,MYVAR}
or
.Ql #{m/z:abc,aXbXc} .
.Ql #{m/ri:\[ha]A,MYVAR} .
A
.Ql C
performs a search for a