To: vim-dev@vim.org
Subject: Patch 6.0.124
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 6.0.124
Problem:    When using a ":substitute" command that starts with "\="
            (evaluated as an expression), "~" was still replaced with the 
            previous substitute string.
Solution:   Skip the replacement when the substitute string starts with "\=".
            Also adjust the documentation about doubling backslashes.
Files:      src/ex_cmds.c, runtime/doc/change.txt


*** ../vim60.123/src/ex_cmds.c	Wed Dec 12 21:42:23 2001
--- src/ex_cmds.c	Thu Jan 10 19:27:31 2002
***************
*** 3548,3555 ****
      /*
       * ~ in the substitute pattern is replaced with the old pattern.
       * We do it here once to avoid it to be replaced over and over again.
       */
!     sub = regtilde(sub, p_magic);
  
      /*
       * Check for a match on each line.
--- 3548,3557 ----
      /*
       * ~ in the substitute pattern is replaced with the old pattern.
       * We do it here once to avoid it to be replaced over and over again.
+      * But don't do it when it starts with "\=", then it's an expression.
       */
!     if (!(sub[0] == '\\' && sub[1] == '='))
! 	sub = regtilde(sub, p_magic);
  
      /*
       * Check for a match on each line.
*** ../vim60.123/runtime/doc/change.txt	Tue Sep 25 21:40:33 2001
--- runtime/doc/change.txt	Thu Jan 10 19:37:10 2002
***************
*** 1,4 ****
! *change.txt*    For Vim version 6.0.  Last change: 2001 Sep 11
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *change.txt*    For Vim version 6.0.  Last change: 2002 Jan 10
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 640,651 ****
  
  						*sub-replace-special*
  When the {string} starts with "\=" it is evaluated as an expression.  The
! special meaning for characters as mentioned below does not apply then.
! The whole matched text can be accessed with "submatch(0)".  The text matched
! with the first pair of () with "submatch(1)".  Likewise for further
  sub-matches in ().
! Be careful: The separation character must not appear in the expression!
! Consider using a character like "@" or "|".
  Example: >
  	:s@\n@\="\r" . expand("$HOME") . "\r"@
  This replaces an end-of-line with a new line containing the value of $HOME.
--- 640,655 ----
  
  						*sub-replace-special*
  When the {string} starts with "\=" it is evaluated as an expression.  The
! special meaning for characters as mentioned below does not apply then, except
! "<CR>", "\<CR>" and "\\".  Thus in the result of the expression you need to
! use two backslashes get one, put a backslash before a <CR> you want to insert
! and use a <CR> without a backslash where you want to break the line.
!    The whole matched text can be accessed with "submatch(0)".  The text
! matched with the first pair of () with "submatch(1)".  Likewise for further
  sub-matches in ().
!    Be careful: The separation character must not appear in the expression!
! Consider using a character like "@" or "|".  There is no problem if the result
! of the expression contains the separation character.
  Example: >
  	:s@\n@\="\r" . expand("$HOME") . "\r"@
  This replaces an end-of-line with a new line containing the value of $HOME.
***************
*** 663,671 ****
    ~	  \~	  replaced with the {string} of the previous substitute
   \~	   ~	  replaced with ~ 
        \u	  next character made uppercase
!       \U	  following characters made uppercase
        \l	  next character made lowercase
!       \L	  following characters made lowercase
        \e	  end of \u, \U, \l and \L (NOTE: not <Esc>!)
        \E	  end of \u, \U, \l and \L
        <CR>	  split line in two at this point (Type the <CR> as CTRL-V
--- 667,675 ----
    ~	  \~	  replaced with the {string} of the previous substitute
   \~	   ~	  replaced with ~ 
        \u	  next character made uppercase
!       \U	  following characters made uppercase, until \E
        \l	  next character made lowercase
!       \L	  following characters made lowercase, until \E
        \e	  end of \u, \U, \l and \L (NOTE: not <Esc>!)
        \E	  end of \u, \U, \l and \L
        <CR>	  split line in two at this point (Type the <CR> as CTRL-V
*** ../vim60.123/src/version.c	Wed Jan  9 16:29:27 2002
--- src/version.c	Thu Jan 10 19:38:14 2002
***************
*** 608,609 ****
--- 608,611 ----
  {   /* Add new patch number below this line */
+ /**/
+     124,
  /**/

-- 
A M00se once bit my sister ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 ///  Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net  \\\
(((   Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim   )))
 \\\  Help me helping AIDS orphans in Uganda - http://iccf-holland.org  ///