vim/7.4.569
2015-01-14 18:00:23 +01:00

166 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

To: vim_dev@googlegroups.com
Subject: Patch 7.4.569
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.4.569 (after 7.4.468)
Problem: Having CTRL-C interrupt or not does not check the mode of the
mapping. (Ingo Karkat)
Solution: Use a bitmask with the map mode. (Christian Brabandt)
Files: src/getchar.c, src/structs.h, src/testdir/test_mapping.in,
src/testdir/test_mapping.ok, src/ui.c, src/globals.h
*** ../vim-7.4.568/src/getchar.c 2014-12-14 00:43:50.335749455 +0100
--- src/getchar.c 2015-01-14 12:13:13.136016098 +0100
***************
*** 3708,3715 ****
if (!did_it)
retval = 2; /* no match */
else if (*keys == Ctrl_C)
/* If CTRL-C has been unmapped, reuse it for Interrupting. */
! mapped_ctrl_c = FALSE;
goto theend;
}
--- 3708,3720 ----
if (!did_it)
retval = 2; /* no match */
else if (*keys == Ctrl_C)
+ {
/* If CTRL-C has been unmapped, reuse it for Interrupting. */
! if (map_table == curbuf->b_maphash)
! curbuf->b_mapped_ctrl_c &= ~mode;
! else
! mapped_ctrl_c &= ~mode;
! }
goto theend;
}
***************
*** 3744,3750 ****
/* If CTRL-C has been mapped, don't always use it for Interrupting. */
if (*keys == Ctrl_C)
! mapped_ctrl_c = TRUE;
mp->m_keys = vim_strsave(keys);
mp->m_str = vim_strsave(rhs);
--- 3749,3760 ----
/* If CTRL-C has been mapped, don't always use it for Interrupting. */
if (*keys == Ctrl_C)
! {
! if (map_table == curbuf->b_maphash)
! curbuf->b_mapped_ctrl_c |= mode;
! else
! mapped_ctrl_c |= mode;
! }
mp->m_keys = vim_strsave(keys);
mp->m_str = vim_strsave(rhs);
*** ../vim-7.4.568/src/structs.h 2014-09-23 15:45:04.874801055 +0200
--- src/structs.h 2015-01-14 12:15:33.582480344 +0100
***************
*** 1802,1807 ****
--- 1802,1808 ----
cryptstate_T *b_cryptstate; /* Encryption state while reading or writing
* the file. NULL when not using encryption. */
#endif
+ int b_mapped_ctrl_c; /* modes where CTRL-C is mapped */
}; /* file_buffer */
*** ../vim-7.4.568/src/testdir/test_mapping.in 2014-12-14 00:43:50.335749455 +0100
--- src/testdir/test_mapping.in 2015-01-14 12:11:14.197316987 +0100
***************
*** 8,13 ****
--- 8,22 ----
:inoreab чкпр vim
GAчкпр

+ :" mapping of ctrl-c in insert mode
+ :set cpo-=< cpo-=k
+ :inoremap <c-c> <ctrl-c>
+ :cnoremap <c-c> dummy
+ :cunmap <c-c>
+ GA
+ TEST2: CTRL-C |A|
+ 
+ :nunmap <c-c>
: " langmap should not get remapped in insert mode
:inoremap { FAIL_ilangmap
*** ../vim-7.4.568/src/testdir/test_mapping.ok 2014-12-14 00:43:50.335749455 +0100
--- src/testdir/test_mapping.ok 2015-01-14 12:11:14.197316987 +0100
***************
*** 1,4 ****
--- 1,6 ----
test starts here:
vim
+ TEST2: CTRL-C |<ctrl-c>A|
+
+
+
*** ../vim-7.4.568/src/ui.c 2014-09-19 13:46:49.550399801 +0200
--- src/ui.c 2015-01-14 12:18:23.888618642 +0100
***************
*** 180,186 ****
/* ... there is no need for CTRL-C to interrupt something, don't let
* it set got_int when it was mapped. */
! if (mapped_ctrl_c)
ctrl_c_interrupts = FALSE;
}
--- 180,186 ----
/* ... there is no need for CTRL-C to interrupt something, don't let
* it set got_int when it was mapped. */
! if ((mapped_ctrl_c | curbuf->b_mapped_ctrl_c) & State)
ctrl_c_interrupts = FALSE;
}
*** ../vim-7.4.568/src/globals.h 2014-08-10 13:34:59.056785459 +0200
--- src/globals.h 2015-01-14 12:13:58.959514980 +0100
***************
*** 958,964 ****
#ifdef USE_ON_FLY_SCROLL
EXTERN int dont_scroll INIT(= FALSE);/* don't use scrollbars when TRUE */
#endif
! EXTERN int mapped_ctrl_c INIT(= FALSE); /* CTRL-C is mapped */
EXTERN int ctrl_c_interrupts INIT(= TRUE); /* CTRL-C sets got_int */
EXTERN cmdmod_T cmdmod; /* Ex command modifiers */
--- 958,964 ----
#ifdef USE_ON_FLY_SCROLL
EXTERN int dont_scroll INIT(= FALSE);/* don't use scrollbars when TRUE */
#endif
! EXTERN int mapped_ctrl_c INIT(= FALSE); /* modes where CTRL-C is mapped */
EXTERN int ctrl_c_interrupts INIT(= TRUE); /* CTRL-C sets got_int */
EXTERN cmdmod_T cmdmod; /* Ex command modifiers */
*** ../vim-7.4.568/src/version.c 2015-01-14 11:24:51.851582151 +0100
--- src/version.c 2015-01-14 12:12:04.728764264 +0100
***************
*** 743,744 ****
--- 743,746 ----
{ /* Add new patch number below this line */
+ /**/
+ 569,
/**/
--
hundred-and-one symptoms of being an internet addict:
85. Choice between paying Compuserve bill and paying for kids education
is a no brainer -- although a bit painful for your kids.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///