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 / old / 5.6.032 < prev    next >
Encoding:
Internet Message Format  |  2000-03-24  |  4.8 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 5.6.032
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. ------------
  6.  
  7. Patch 5.6.032
  8. Problem:    Functions with an argument that is a line number don't all accept
  9.             ".", "$", etc. (Ralf Arens)
  10. Solution:   Add get_art_lnum() and use it for setline(), line2byte() and
  11.             synID().
  12. Files:      src/eval.c
  13.  
  14.  
  15. *** ../vim-5.6.31/src/eval.c    Wed Jan 12 21:14:54 2000
  16. --- src/eval.c    Sat Feb 19 21:04:14 2000
  17. ***************
  18. *** 143,148 ****
  19. --- 143,149 ----
  20.   static int get_env_var __ARGS((char_u **arg, VAR retvar, int evaluate));
  21.   static int find_internal_func __ARGS((char_u *name));
  22.   static int get_func_var __ARGS((char_u *name, int len, VAR retvar, char_u **arg, linenr_t firstline, linenr_t lastline, int *doesrange, int evaluate));
  23. + static linenr_t get_arg_lnum __ARGS((VAR argvars, VAR retvar));
  24.   static void f_append __ARGS((VAR argvars, VAR retvar));
  25.   static void f_argc __ARGS((VAR argvars, VAR retvar));
  26.   static void f_argv __ARGS((VAR argvars, VAR retvar));
  27. ***************
  28. *** 2133,2147 ****
  29.       return ret;
  30.   }
  31.   
  32. - /*********************************************
  33. -  * Implementation of the built-in functions
  34. -  */
  35.   /*
  36. !  * "append(lnum, string)" function
  37.    */
  38. !     static void
  39. ! f_append(argvars, retvar)
  40.       VAR        argvars;
  41.       VAR        retvar;
  42.   {
  43. --- 2134,2144 ----
  44.       return ret;
  45.   }
  46.   
  47.   /*
  48. !  * Get the lnum from the first argument.  Also accepts ".", "$", etc.
  49.    */
  50. !     static linenr_t
  51. ! get_arg_lnum(argvars, retvar)
  52.       VAR        argvars;
  53.       VAR        retvar;
  54.   {
  55. ***************
  56. *** 2154,2159 ****
  57. --- 2151,2174 ----
  58.       lnum = retvar->var_val.var_number;
  59.       clear_var(retvar);
  60.       }
  61. +     return lnum;
  62. + }
  63. + /*********************************************
  64. +  * Implementation of the built-in functions
  65. +  */
  66. + /*
  67. +  * "append(lnum, string)" function
  68. +  */
  69. +     static void
  70. + f_append(argvars, retvar)
  71. +     VAR        argvars;
  72. +     VAR        retvar;
  73. + {
  74. +     long    lnum;
  75. +     lnum = get_arg_lnum(argvars, retvar);
  76.       retvar->var_val.var_number = 1; /* Default: Failed */
  77.   
  78.       if (lnum >= 0 && lnum <= curbuf->b_ml.ml_line_count
  79. ***************
  80. *** 2747,2760 ****
  81.       linenr_t    lnum;
  82.       char_u    *p;
  83.   
  84. !     lnum = get_var_number(&argvars[0]);
  85. !     if (lnum == 0)  /* no valid number, try using line() */
  86. !     {
  87. !     f_line(argvars, retvar);
  88. !     lnum = retvar->var_val.var_number;
  89. !     clear_var(retvar);
  90. !     }
  91.       if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count)
  92.       p = ml_get(lnum);
  93.       else
  94. --- 2762,2768 ----
  95.       linenr_t    lnum;
  96.       char_u    *p;
  97.   
  98. !     lnum = get_arg_lnum(argvars, retvar);
  99.       if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count)
  100.       p = ml_get(lnum);
  101.       else
  102. ***************
  103. *** 3390,3396 ****
  104.   #else
  105.       linenr_t    lnum;
  106.   
  107. !     lnum = get_var_number(&argvars[0]);
  108.       if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1)
  109.       retvar->var_val.var_number = -1;
  110.       else
  111. --- 3398,3404 ----
  112.   #else
  113.       linenr_t    lnum;
  114.   
  115. !     lnum = get_arg_lnum(argvars, retvar);
  116.       if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1)
  117.       retvar->var_val.var_number = -1;
  118.       else
  119. ***************
  120. *** 3598,3604 ****
  121.       linenr_t    lnum;
  122.       char_u    *line;
  123.   
  124. !     lnum = get_var_number(&argvars[0]);
  125.       line = get_var_string(&argvars[1]);
  126.       retvar->var_val.var_number = 1;        /* FAIL is default */
  127.   
  128. --- 3606,3612 ----
  129.       linenr_t    lnum;
  130.       char_u    *line;
  131.   
  132. !     lnum = get_arg_lnum(argvars, retvar);
  133.       line = get_var_string(&argvars[1]);
  134.       retvar->var_val.var_number = 1;        /* FAIL is default */
  135.   
  136. ***************
  137. *** 3722,3728 ****
  138.       long    col;
  139.       int        trans;
  140.   
  141. !     line = get_var_number(&argvars[0]);
  142.       col = get_var_number(&argvars[1]) - 1;
  143.       trans = get_var_number(&argvars[2]);
  144.   
  145. --- 3730,3736 ----
  146.       long    col;
  147.       int        trans;
  148.   
  149. !     line = get_arg_lnum(argvars, retvar);
  150.       col = get_var_number(&argvars[1]) - 1;
  151.       trans = get_var_number(&argvars[2]);
  152.   
  153. *** ../vim-5.6.31/src/version.c    Sat Mar 25 21:29:50 2000
  154. --- src/version.c    Sat Mar 25 21:31:20 2000
  155. ***************
  156. *** 420,421 ****
  157. --- 420,423 ----
  158.   {   /* Add new patch number below this line */
  159. + /**/
  160. +     32,
  161.   /**/
  162.  
  163. -- 
  164.    An extraordinary TALL KNIGHT in all black (possibly John with Mike on his
  165.    shoulders) walks out from the dark trees.  He is extremely fierce and
  166.    gruesome countenance.  He walks towards KING ARTHUR and PATSY, who are
  167.    wazzing like mad.  (Salopian slang, meaning very scared.  almost to the
  168.    point of wetting oneself, e.g. before an important football match or
  169.    prior to a postering.  Salopian slang meaning a beating by the school
  170.    praeposters.  Sorry about the Salopian slant to this stage direction - Ed.)
  171.                  "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
  172.  
  173. /-/-- Bram Moolenaar --- Bram@moolenaar.net --- http://www.moolenaar.net --\-\
  174. \-\-- Vim: http://www.vim.org ---- ICCF Holland: http://www.vim.org/iccf --/-/
  175.