aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bürgin <676c7473@gmail.com>2015-03-28 15:51:48 +0100
committerJustin M. Keyes <justinkz@gmail.com>2015-03-29 09:55:59 -0400
commit2c7e8c38e0f483cf803eb225720cd11ae370ae75 (patch)
tree7d4ab698d225a1a94e4afe36d40bf3792c64c455
parent9d02e5b984bb540567766941cff4d03f0b6e1837 (diff)
downloadrneovim-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.txt10
-rw-r--r--runtime/vimrc_example.vim7
-rw-r--r--src/nvim/macros.h9
-rw-r--r--src/nvim/option.c3
-rw-r--r--src/nvim/option_defs.h1
-rw-r--r--src/nvim/version.c2
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,