diff options
author | David Bürgin <676c7473@gmail.com> | 2015-03-28 15:51:48 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-03-29 09:55:59 -0400 |
commit | 2c7e8c38e0f483cf803eb225720cd11ae370ae75 (patch) | |
tree | 7d4ab698d225a1a94e4afe36d40bf3792c64c455 | |
parent | 9d02e5b984bb540567766941cff4d03f0b6e1837 (diff) | |
download | rneovim-2c7e8c38e0f483cf803eb225720cd11ae370ae75.tar.gz rneovim-2c7e8c38e0f483cf803eb225720cd11ae370ae75.tar.bz2 rneovim-2c7e8c38e0f483cf803eb225720cd11ae370ae75.zip |
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
-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, |