changeset 9645:123d3c102035 v7.4.2099

commit https://github.com/vim/vim/commit/73ac0c4281a3606651604a3cbcc334bfb3859a87 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 24 16:17:59 2016 +0200 patch 7.4.2099 Problem: When a keymap is active only "(lang)" is displayed. (Ilya Dogolazky) Solution: Show the keymap name. (Dmitri Vereshchagin, closes https://github.com/vim/vim/issues/933)
author Christian Brabandt <cb@256bit.org>
date Sun, 24 Jul 2016 16:30:05 +0200
parents 9f7bcc2c3b97
children c9c6aaff0184
files src/buffer.c src/proto/screen.pro src/screen.c src/version.c
diffstat 4 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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);
--- 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)
--- 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,