diff options
Diffstat (limited to 'src/register.c')
-rw-r--r-- | src/register.c | 79 |
1 files changed, 46 insertions, 33 deletions
diff --git a/src/register.c b/src/register.c index ccf9b6447..554af8280 100644 --- a/src/register.c +++ b/src/register.c @@ -2161,7 +2161,7 @@ ex_display(exarg_T *eap) int attr; char_u *arg = eap->arg; int clen; - char_u type[2]; + int type; if (arg != NULL && *arg == NUL) arg = NULL; @@ -2174,9 +2174,9 @@ ex_display(exarg_T *eap) name = get_register_name(i); switch (get_reg_type(name, NULL)) { - case MLINE: type[0] = 'l'; break; - case MCHAR: type[0] = 'c'; break; - default: type[0] = 'b'; break; + case MLINE: type = 'l'; break; + case MCHAR: type = 'c'; break; + default: type = 'b'; break; } if (arg != NULL && vim_strchr(arg, name) == NULL #ifdef ONE_CLIPBOARD @@ -2213,39 +2213,49 @@ ex_display(exarg_T *eap) if (yb->y_array != NULL) { - msg_putchar('\n'); - msg_puts(" "); - msg_putchar(type[0]); - msg_puts(" "); - msg_putchar('"'); - msg_putchar(name); - msg_puts(" "); - - n = (int)Columns - 11; - for (j = 0; j < yb->y_size && n > 1; ++j) + int do_show = FALSE; + + for (j = 0; !do_show && j < yb->y_size; ++j) + do_show = !message_filtered(yb->y_array[j]); + + if (do_show || yb->y_size == 0) { - if (j) - { - msg_puts_attr("^J", attr); - n -= 2; - } - for (p = yb->y_array[j]; *p && (n -= ptr2cells(p)) >= 0; ++p) + msg_putchar('\n'); + msg_puts(" "); + msg_putchar(type); + msg_puts(" "); + msg_putchar('"'); + msg_putchar(name); + msg_puts(" "); + + n = (int)Columns - 11; + for (j = 0; j < yb->y_size && n > 1; ++j) { - clen = (*mb_ptr2len)(p); - msg_outtrans_len(p, clen); - p += clen - 1; + if (j) + { + msg_puts_attr("^J", attr); + n -= 2; + } + for (p = yb->y_array[j]; *p && (n -= ptr2cells(p)) >= 0; + ++p) + { + clen = (*mb_ptr2len)(p); + msg_outtrans_len(p, clen); + p += clen - 1; + } } + if (n > 1 && yb->y_type == MLINE) + msg_puts_attr("^J", attr); + out_flush(); // show one line at a time } - if (n > 1 && yb->y_type == MLINE) - msg_puts_attr("^J", attr); - out_flush(); // show one line at a time + ui_breakcheck(); } - ui_breakcheck(); } // display last inserted text if ((p = get_last_insert()) != NULL - && (arg == NULL || vim_strchr(arg, '.') != NULL) && !got_int) + && (arg == NULL || vim_strchr(arg, '.') != NULL) && !got_int + && !message_filtered(p)) { msg_puts("\n c \". "); dis_msg(p, TRUE); @@ -2253,7 +2263,7 @@ ex_display(exarg_T *eap) // display last command line if (last_cmdline != NULL && (arg == NULL || vim_strchr(arg, ':') != NULL) - && !got_int) + && !got_int && !message_filtered(last_cmdline)) { msg_puts("\n c \": "); dis_msg(last_cmdline, FALSE); @@ -2261,7 +2271,8 @@ ex_display(exarg_T *eap) // display current file name if (curbuf->b_fname != NULL - && (arg == NULL || vim_strchr(arg, '%') != NULL) && !got_int) + && (arg == NULL || vim_strchr(arg, '%') != NULL) && !got_int + && !message_filtered(curbuf->b_fname)) { msg_puts("\n c \"% "); dis_msg(curbuf->b_fname, FALSE); @@ -2273,7 +2284,8 @@ ex_display(exarg_T *eap) char_u *fname; linenr_T dummy; - if (buflist_name_nr(0, &fname, &dummy) != FAIL) + if (buflist_name_nr(0, &fname, &dummy) != FAIL + && !message_filtered(fname)) { msg_puts("\n c \"# "); dis_msg(fname, FALSE); @@ -2282,7 +2294,8 @@ ex_display(exarg_T *eap) // display last search pattern if (last_search_pat() != NULL - && (arg == NULL || vim_strchr(arg, '/') != NULL) && !got_int) + && (arg == NULL || vim_strchr(arg, '/') != NULL) && !got_int + && !message_filtered(last_search_pat())) { msg_puts("\n c \"/ "); dis_msg(last_search_pat(), FALSE); @@ -2291,7 +2304,7 @@ ex_display(exarg_T *eap) #ifdef FEAT_EVAL // display last used expression if (expr_line != NULL && (arg == NULL || vim_strchr(arg, '=') != NULL) - && !got_int) + && !got_int && !message_filtered(expr_line)) { msg_puts("\n c \"= "); dis_msg(expr_line, FALSE); |