Skip to content

Commit

Permalink
patch 8.1.1221: filtering does not work when listing marks
Browse files Browse the repository at this point in the history
Problem:    Filtering does not work when listing marks.
Solution:   Implement filtering marks. (Marcin Szamotulski, closes #3895)
  • Loading branch information
brammool committed Apr 27, 2019
1 parent 0ee1bdf commit ad6dc49
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 32 deletions.
24 changes: 13 additions & 11 deletions runtime/doc/various.txt
Expand Up @@ -571,17 +571,19 @@ N *+X11* Unix only: can restore window title |X11|
the output, not necessarily the whole line. Only some
commands support filtering, try it out to check if it
works. Some of the commands that support filtering:
|:#| - filter whole line
|:command| - filter by command name
|:files| - filter by file name
|:highlight| - filter by highlight group
|:jumps| - filter by file name
|:let| - filter by variable name
|:list| - filter whole line
|:llist| - filter by file name or module name
|:oldfiles| - filter by file name
|:clist| - filter by file name or module name
|:set| - filter by variable name
|:#| - filter whole line
|:clist| - filter by file name or module name
|:command| - filter by command name
|:files| - filter by file name
|:highlight| - filter by highlight group
|:jumps| - filter by file name
|:let| - filter by variable name
|:list| - filter whole line
|:llist| - filter by file name or module name
|:marks| - filter by text in the current file,
or file name for other files
|:oldfiles| - filter by file name
|:set| - filter by variable name

Only normal messages are filtered, error messages are
not.
Expand Down
40 changes: 22 additions & 18 deletions src/mark.c
Expand Up @@ -744,11 +744,12 @@ show_one_mark(
int c,
char_u *arg,
pos_T *p,
char_u *name,
char_u *name_arg,
int current) /* in current file */
{
static int did_title = FALSE;
int mustfree = FALSE;
char_u *name = name_arg;

if (c == -1) /* finish up */
{
Expand All @@ -762,35 +763,38 @@ show_one_mark(
semsg(_("E283: No marks matching \"%s\""), arg);
}
}
/* don't output anything if 'q' typed at --more-- prompt */
// don't output anything if 'q' typed at --more-- prompt
else if (!got_int
&& (arg == NULL || vim_strchr(arg, c) != NULL)
&& p->lnum != 0)
{
if (!did_title)
if (name == NULL && current)
{
/* Highlight title */
msg_puts_title(_("\nmark line col file/text"));
did_title = TRUE;
name = mark_line(p, 15);
mustfree = TRUE;
}
msg_putchar('\n');
if (!got_int)
if (!message_filtered(name))
{
sprintf((char *)IObuff, " %c %6ld %4d ", c, p->lnum, p->col);
msg_outtrans(IObuff);
if (name == NULL && current)
if (!did_title)
{
name = mark_line(p, 15);
mustfree = TRUE;
// Highlight title
msg_puts_title(_("\nmark line col file/text"));
did_title = TRUE;
}
if (name != NULL)
msg_putchar('\n');
if (!got_int)
{
msg_outtrans_attr(name, current ? HL_ATTR(HLF_D) : 0);
if (mustfree)
vim_free(name);
sprintf((char *)IObuff, " %c %6ld %4d ", c, p->lnum, p->col);
msg_outtrans(IObuff);
if (name != NULL)
{
msg_outtrans_attr(name, current ? HL_ATTR(HLF_D) : 0);
}
}
out_flush(); // show one line at a time
}
out_flush(); /* show one line at a time */
if (mustfree)
vim_free(name);
}
}

Expand Down
21 changes: 18 additions & 3 deletions src/testdir/test_filter_cmd.vim
Expand Up @@ -126,7 +126,22 @@ func Test_filter_commands()
let res = split(execute("filter /\.c$/ jumps"), "\n")[1:]
call assert_equal([" 2 1 0 file.c", ">"], res)

bwipe file.c
bwipe file.h
bwipe file.hs
" Test filtering :marks command
b file.c
mark A
b file.h
mark B
let res = split(execute("filter /\.c$/ marks"), "\n")[1:]
call assert_equal([" A 1 0 file.c"], res)

call setline(1, ['one', 'two', 'three'])
1mark a
2mark b
3mark c
let res = split(execute("filter /two/ marks abc"), "\n")[1:]
call assert_equal([" b 2 0 two"], res)

bwipe! file.c
bwipe! file.h
bwipe! file.hs
endfunc
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -767,6 +767,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1221,
/**/
1220,
/**/
Expand Down

0 comments on commit ad6dc49

Please sign in to comment.