home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.4 / 7.4.486 < prev    next >
Encoding:
Internet Message Format  |  2014-10-21  |  6.7 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.4.486
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.4.486
  11. Problem:    Check for writing to a yank register is wrong.
  12. Solution:   Negate the check. (Zyx).  Also clean up the #ifdefs.
  13. Files:        src/ex_docmd.c, src/ex_cmds.h
  14.  
  15.  
  16. *** ../vim-7.4.485/src/ex_docmd.c    2014-09-19 20:07:22.546449677 +0200
  17. --- src/ex_docmd.c    2014-10-21 19:56:31.290287055 +0200
  18. ***************
  19. *** 49,58 ****
  20. --- 49,63 ----
  21.   static char_u *get_user_command_name __ARGS((int idx));
  22.   # endif
  23.   
  24. + /* Wether a command index indicates a user command. */
  25. + # define IS_USER_CMDIDX(idx) ((int)(idx) < 0)
  26.   #else
  27.   # define ex_command    ex_ni
  28.   # define ex_comclear    ex_ni
  29.   # define ex_delcommand    ex_ni
  30. + /* Wether a command index indicates a user command. */
  31. + # define IS_USER_CMDIDX(idx) (FALSE)
  32.   #endif
  33.   
  34.   #ifdef FEAT_EVAL
  35. ***************
  36. *** 2190,2200 ****
  37.       goto doend;
  38.       }
  39.   
  40. !     ni = (
  41. ! #ifdef FEAT_USR_CMDS
  42. !         !USER_CMDIDX(ea.cmdidx) &&
  43. ! #endif
  44. !         (cmdnames[ea.cmdidx].cmd_func == ex_ni
  45.   #ifdef HAVE_EX_SCRIPT_NI
  46.            || cmdnames[ea.cmdidx].cmd_func == ex_script_ni
  47.   #endif
  48. --- 2195,2202 ----
  49.       goto doend;
  50.       }
  51.   
  52. !     ni = (!IS_USER_CMDIDX(ea.cmdidx)
  53. !         && (cmdnames[ea.cmdidx].cmd_func == ex_ni
  54.   #ifdef HAVE_EX_SCRIPT_NI
  55.            || cmdnames[ea.cmdidx].cmd_func == ex_script_ni
  56.   #endif
  57. ***************
  58. *** 2229,2237 ****
  59.   /*
  60.    * 5. parse arguments
  61.    */
  62. ! #ifdef FEAT_USR_CMDS
  63. !     if (!USER_CMDIDX(ea.cmdidx))
  64. ! #endif
  65.       ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
  66.   
  67.       if (!ea.skip)
  68. --- 2231,2237 ----
  69.   /*
  70.    * 5. parse arguments
  71.    */
  72. !     if (!IS_USER_CMDIDX(ea.cmdidx))
  73.       ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
  74.   
  75.       if (!ea.skip)
  76. ***************
  77. *** 2252,2261 ****
  78.       }
  79.   
  80.       if (text_locked() && !(ea.argt & CMDWIN)
  81. ! # ifdef FEAT_USR_CMDS
  82. !         && !USER_CMDIDX(ea.cmdidx)
  83. ! # endif
  84. !        )
  85.       {
  86.           /* Command not allowed when editing the command line. */
  87.   #ifdef FEAT_CMDWIN
  88. --- 2252,2258 ----
  89.       }
  90.   
  91.       if (text_locked() && !(ea.argt & CMDWIN)
  92. !         && !IS_USER_CMDIDX(ea.cmdidx))
  93.       {
  94.           /* Command not allowed when editing the command line. */
  95.   #ifdef FEAT_CMDWIN
  96. ***************
  97. *** 2273,2281 ****
  98.       if (!(ea.argt & CMDWIN)
  99.           && ea.cmdidx != CMD_edit
  100.           && ea.cmdidx != CMD_checktime
  101. ! # ifdef FEAT_USR_CMDS
  102. !         && !USER_CMDIDX(ea.cmdidx)
  103. ! # endif
  104.           && curbuf_locked())
  105.           goto doend;
  106.   #endif
  107. --- 2270,2276 ----
  108.       if (!(ea.argt & CMDWIN)
  109.           && ea.cmdidx != CMD_edit
  110.           && ea.cmdidx != CMD_checktime
  111. !         && !IS_USER_CMDIDX(ea.cmdidx)
  112.           && curbuf_locked())
  113.           goto doend;
  114.   #endif
  115. ***************
  116. *** 2468,2477 ****
  117.       /* accept numbered register only when no count allowed (:put) */
  118.       if (       (ea.argt & REGSTR)
  119.           && *ea.arg != NUL
  120. ! #ifdef FEAT_USR_CMDS
  121. !         /* Do not allow register = for user commands */
  122. !         && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
  123. ! #endif
  124.           && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
  125.       {
  126.   #ifndef FEAT_CLIPBOARD
  127. --- 2463,2470 ----
  128.       /* accept numbered register only when no count allowed (:put) */
  129.       if (       (ea.argt & REGSTR)
  130.           && *ea.arg != NUL
  131. !            /* Do not allow register = for user commands */
  132. !         && (!IS_USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
  133.           && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
  134.       {
  135.   #ifndef FEAT_CLIPBOARD
  136. ***************
  137. *** 2482,2495 ****
  138.           goto doend;
  139.       }
  140.   #endif
  141. !     if (
  142. ! #ifdef FEAT_USR_CMDS
  143. !         valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
  144. !                            && USER_CMDIDX(ea.cmdidx)))
  145. ! #else
  146. !         valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
  147. ! #endif
  148. !        )
  149.       {
  150.           ea.regname = *ea.arg++;
  151.   #ifdef FEAT_EVAL
  152. --- 2475,2482 ----
  153.           goto doend;
  154.       }
  155.   #endif
  156. !     if (valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
  157. !                           && !IS_USER_CMDIDX(ea.cmdidx))))
  158.       {
  159.           ea.regname = *ea.arg++;
  160.   #ifdef FEAT_EVAL
  161. ***************
  162. *** 2663,2672 ****
  163.        * number.  Don't do this for a user command.
  164.        */
  165.       if ((ea.argt & BUFNAME) && *ea.arg != NUL && ea.addr_count == 0
  166. ! # ifdef FEAT_USR_CMDS
  167. !         && !USER_CMDIDX(ea.cmdidx)
  168. ! # endif
  169. !         )
  170.       {
  171.       /*
  172.        * :bdelete, :bwipeout and :bunload take several arguments, separated
  173. --- 2650,2656 ----
  174.        * number.  Don't do this for a user command.
  175.        */
  176.       if ((ea.argt & BUFNAME) && *ea.arg != NUL && ea.addr_count == 0
  177. !         && !IS_USER_CMDIDX(ea.cmdidx))
  178.       {
  179.       /*
  180.        * :bdelete, :bwipeout and :bunload take several arguments, separated
  181. ***************
  182. *** 2704,2710 ****
  183.   #endif
  184.   
  185.   #ifdef FEAT_USR_CMDS
  186. !     if (USER_CMDIDX(ea.cmdidx))
  187.       {
  188.       /*
  189.        * Execute a user-defined command.
  190. --- 2688,2694 ----
  191.   #endif
  192.   
  193.   #ifdef FEAT_USR_CMDS
  194. !     if (IS_USER_CMDIDX(ea.cmdidx))
  195.       {
  196.       /*
  197.        * Execute a user-defined command.
  198. ***************
  199. *** 2763,2773 ****
  200.       }
  201.   #ifdef FEAT_EVAL
  202.       do_errthrow(cstack,
  203. !         (ea.cmdidx != CMD_SIZE
  204. ! # ifdef FEAT_USR_CMDS
  205. !          && !USER_CMDIDX(ea.cmdidx)
  206. ! # endif
  207. !         ) ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL);
  208.   #endif
  209.   
  210.       if (verbose_save >= 0)
  211. --- 2747,2754 ----
  212.       }
  213.   #ifdef FEAT_EVAL
  214.       do_errthrow(cstack,
  215. !         (ea.cmdidx != CMD_SIZE && !IS_USER_CMDIDX(ea.cmdidx))
  216. !             ? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL);
  217.   #endif
  218.   
  219.       if (verbose_save >= 0)
  220. ***************
  221. *** 3361,3369 ****
  222.   /*
  223.    * 5. parse arguments
  224.    */
  225. ! #ifdef FEAT_USR_CMDS
  226. !     if (!USER_CMDIDX(ea.cmdidx))
  227. ! #endif
  228.       ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
  229.   
  230.       arg = skipwhite(p);
  231. --- 3342,3348 ----
  232.   /*
  233.    * 5. parse arguments
  234.    */
  235. !     if (!IS_USER_CMDIDX(ea.cmdidx))
  236.       ea.argt = (long)cmdnames[(int)ea.cmdidx].cmd_argt;
  237.   
  238.       arg = skipwhite(p);
  239. *** ../vim-7.4.485/src/ex_cmds.h    2014-09-19 20:07:22.546449677 +0200
  240. --- src/ex_cmds.h    2014-10-21 19:52:45.926286562 +0200
  241. ***************
  242. *** 1153,1160 ****
  243.   #endif
  244.   };
  245.   
  246. - #define USER_CMDIDX(idx) ((int)(idx) < 0)
  247.   #ifndef DO_DECLARE_EXCMD
  248.   typedef enum CMD_index cmdidx_T;
  249.   
  250. --- 1153,1158 ----
  251. *** ../vim-7.4.485/src/version.c    2014-10-21 19:35:28.406284296 +0200
  252. --- src/version.c    2014-10-21 20:00:44.350287607 +0200
  253. ***************
  254. *** 743,744 ****
  255. --- 743,746 ----
  256.   {   /* Add new patch number below this line */
  257. + /**/
  258. +     486,
  259.   /**/
  260.  
  261. -- 
  262. FATHER: One day, lad, all this will be yours ...
  263. PRINCE: What - the curtains?
  264.                  "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
  265.  
  266.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  267. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  268. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  269.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  270.