diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-24 16:17:59 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-24 16:17:59 +0200 |
commit | 73ac0c4281a3606651604a3cbcc334bfb3859a87 (patch) | |
tree | a5a70546506fcc3cfc91e5b8e6794af80606be42 | |
parent | 6f1d9a096bf22d50c727dca73abbfb8e3ff55176 (diff) | |
download | vim-73ac0c4281a3606651604a3cbcc334bfb3859a87.zip |
patch 7.4.2099
Problem: When a keymap is active only "(lang)" is displayed. (Ilya
Dogolazky)
Solution: Show the keymap name. (Dmitri Vereshchagin, closes #933)
-rw-r--r-- | src/buffer.c | 2 | ||||
-rw-r--r-- | src/proto/screen.pro | 2 | ||||
-rw-r--r-- | src/screen.c | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 10 insertions, 7 deletions
diff --git a/src/buffer.c b/src/buffer.c index 99d23ec5d..8590e2a2e 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -4114,7 +4114,7 @@ build_stl_str_hl( case STL_KEYMAP: fillable = FALSE; - if (get_keymap_str(wp, tmp, TMPLEN)) + if (get_keymap_str(wp, (char_u *)"<%s>", tmp, TMPLEN)) str = tmp; break; case STL_PAGENUM: diff --git a/src/proto/screen.pro b/src/proto/screen.pro index f8b14c49a..5bc3fbaaf 100644 --- a/src/proto/screen.pro +++ b/src/proto/screen.pro @@ -23,7 +23,7 @@ void win_redraw_last_status(frame_T *frp); void win_redr_status_matches(expand_T *xp, int num_matches, char_u **matches, int match, int showtail); void win_redr_status(win_T *wp); int stl_connected(win_T *wp); -int get_keymap_str(win_T *wp, char_u *buf, int len); +int get_keymap_str(win_T *wp, char_u *fmt, char_u *buf, int len); void screen_putchar(int c, int row, int col, int attr); void screen_getbytes(int row, int col, char_u *bytes, int *attrp); void screen_puts(char_u *text, int row, int col, int attr); diff --git a/src/screen.c b/src/screen.c index 04a0da9eb..ccdf98c58 100644 --- a/src/screen.c +++ b/src/screen.c @@ -6767,7 +6767,7 @@ win_redr_status(win_T *wp) screen_fill(row, row + 1, len + W_WINCOL(wp), this_ru_col + W_WINCOL(wp), fillchar, fillchar, attr); - if (get_keymap_str(wp, NameBuff, MAXPATHL) + if (get_keymap_str(wp, (char_u *)"<%s>", NameBuff, MAXPATHL) && (int)(this_ru_col - len) > (int)(STRLEN(NameBuff) + 1)) screen_puts(NameBuff, row, (int)(this_ru_col - STRLEN(NameBuff) - 1 + W_WINCOL(wp)), attr); @@ -6862,6 +6862,7 @@ stl_connected(win_T *wp) int get_keymap_str( win_T *wp, + char_u *fmt, /* format string containing one %s item */ char_u *buf, /* buffer for the result */ int len) /* length of buffer */ { @@ -6894,9 +6895,7 @@ get_keymap_str( #endif p = (char_u *)"lang"; } - if ((int)(STRLEN(p) + 3) < len) - sprintf((char *)buf, "<%s>", p); - else + if (vim_snprintf((char *)buf, len, (char *)fmt, p) > len - 1) buf[0] = NUL; #ifdef FEAT_EVAL vim_free(s); @@ -10166,7 +10165,9 @@ showmode(void) MSG_PUTS_ATTR(_(" Arabic"), attr); else # endif - MSG_PUTS_ATTR(_(" (lang)"), attr); + if (get_keymap_str(curwin, (char_u *)" (%s)", + NameBuff, MAXPATHL)) + MSG_PUTS_ATTR(NameBuff, attr); } #endif if ((State & INSERT) && p_paste) diff --git a/src/version.c b/src/version.c index 20dd14037..b15681b6a 100644 --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2099, +/**/ 2098, /**/ 2097, |