vim-patch:7.4.502 #2282

Problem:    Language mapping also applies to mapped characters.
Solution:   Add the 'langnoremap' option, when on 'langmap' does not apply to
            mapped characters. (Christian Brabandt)

https://github.com/vim/vim/releases/tag/v7-4-502
This commit is contained in:
David Bürgin
2015-03-28 15:51:48 +01:00
committed by Justin M. Keyes
parent 9d02e5b984
commit 2c7e8c38e0
6 changed files with 28 additions and 4 deletions

View File

@@ -77,12 +77,17 @@
* Adjust chars in a language according to 'langmap' option.
* NOTE that there is no noticeable overhead if 'langmap' is not set.
* When set the overhead for characters < 256 is small.
* Don't apply 'langmap' if the character comes from the Stuff buffer.
* Don't apply 'langmap' if the character comes from the Stuff buffer or from a
* mapping and the langnoremap option was set.
* The do-while is just to ignore a ';' after the macro.
*/
# define LANGMAP_ADJUST(c, condition) \
do { \
if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
if (*p_langmap \
&& (condition) \
&& (!p_lnr || (p_lnr && typebuf_maplen() == 0)) \
&& !KeyStuffed \
&& (c) >= 0) \
{ \
if ((c) < 256) \
c = langmap_mapchar[c]; \

View File

@@ -1027,6 +1027,9 @@ static vimoption_T
{"langmenu", "lm", P_STRING|P_VI_DEF|P_NFNAME,
(char_u *)&p_lm, PV_NONE,
{(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
{"langnoremap", "lnr", P_BOOL|P_VI_DEF,
(char_u *)&p_lnr, PV_NONE,
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
{"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL,
(char_u *)&p_ls, PV_NONE,
{(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},

View File

@@ -432,6 +432,7 @@ EXTERN int p_js; /* 'joinspaces' */
EXTERN char_u *p_kp; /* 'keywordprg' */
EXTERN char_u *p_km; /* 'keymodel' */
EXTERN char_u *p_langmap; /* 'langmap'*/
EXTERN int p_lnr; /* 'langnoremap'*/
EXTERN char_u *p_lm; /* 'langmenu' */
EXTERN char_u *p_lispwords; /* 'lispwords' */
EXTERN long p_ls; /* 'laststatus' */

View File

@@ -238,7 +238,7 @@ static int included_patches[] = {
//505 NA
//504 NA
503,
//502,
502,
//501 NA
500,
499,