diff options
| -rw-r--r-- | runtime/doc/options.txt | 10 | ||||
| -rw-r--r-- | runtime/vimrc_example.vim | 7 | ||||
| -rw-r--r-- | src/nvim/macros.h | 9 | ||||
| -rw-r--r-- | src/nvim/option.c | 3 | ||||
| -rw-r--r-- | src/nvim/option_defs.h | 1 | ||||
| -rw-r--r-- | src/nvim/version.c | 2 | 
6 files changed, 28 insertions, 4 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index a9e1d0f381..0322fae991 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -4351,6 +4351,16 @@ A jump table for the options with a short description can be found at |Q_op|.  		:source $VIMRUNTIME/menu.vim  <	Warning: This deletes all menus that you defined yourself! +					*'langnoremap'* *'lnr'* +'langnoremap' 'lnr'	boolean (default off) +			global +			{not in Vi} +	When on, setting 'langmap' does not apply to characters resulting from +	a mapping.  This basically means, if you noticed that setting +	'langmap' disables some of your mappings, try setting this option. +	This option defaults to off for backwards compatibility.  Set it on if +	that works for you to avoid mappings to break. +  					*'laststatus'* *'ls'*  'laststatus' 'ls'	number	(default 1)  			global diff --git a/runtime/vimrc_example.vim b/runtime/vimrc_example.vim index cd944155f2..1be1bcd3b6 100644 --- a/runtime/vimrc_example.vim +++ b/runtime/vimrc_example.vim @@ -1,7 +1,7 @@  " An example for a vimrc file.  "  " Maintainer:   Bram Moolenaar <Bram@vim.org> -" Last change:  2014 Feb 05 +" Last change:  2014 Nov 05  "  " To use it, copy it to  "     for Unix:  ~/.vimrc @@ -80,3 +80,8 @@ if !exists(":DiffOrig")    command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis                   \ | wincmd p | diffthis  endif + +" Prevent that the langmap option applies to characters that result from a +" mapping.  If unset (default), this may break plugins (but it's backward +" compatible). +set langnoremap diff --git a/src/nvim/macros.h b/src/nvim/macros.h index 60f6cd454f..93812683d6 100644 --- a/src/nvim/macros.h +++ b/src/nvim/macros.h @@ -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]; \ diff --git a/src/nvim/option.c b/src/nvim/option.c index 3f12709521..4f955fee4e 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -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}, diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h index 1db5a0b51c..ea073d34a4 100644 --- a/src/nvim/option_defs.h +++ b/src/nvim/option_defs.h @@ -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' */ diff --git a/src/nvim/version.c b/src/nvim/version.c index f3ecc6541b..c2a196e5d2 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -238,7 +238,7 @@ static int included_patches[] = {    //505 NA    //504 NA    503, -  //502, +  502,    //501 NA    500,    499,  | 
