On Wed, Jan 14, 2015 at 12:44:57PM +0100, Bram Moolenaar wrote:
> 
> 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 -- b...@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    ///
> 
> -- 
> -- 
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
> 
> --- 
> You received this message because you are subscribed to the Google Groups 
> "vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to vim_dev+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

tiny build fails with this patch:

gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 
-mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/getchar.o getchar.c^M
getchar.c: In function 'do_map':^M
getchar.c:3713:29: error: 'buf_T' has no member named 'b_maphash'^M             
                                                                                
                                                                                
                                       if (map_table == curbuf->b_maphash)^M    
                                                                                
                                                                                
                                                                                
               ^^M
getchar.c:3753:25: error: 'buf_T' has no member named 'b_maphash'^M
  if (map_table == curbuf->b_maphash)^M
                         ^^M
Makefile:2572: recipe for target 'objects/getchar.o' failed^M
make[1]: *** [objects/getchar.o] Error 1^M

-- 
Ike

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Attachment: pgpsgjNuhv11u.pgp
Description: PGP signature

Reply via email to