emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/man/search.texi


From: David Kastrup
Subject: [Emacs-diffs] Changes to emacs/man/search.texi
Date: Thu, 24 Jun 2004 10:06:00 -0400

Index: emacs/man/search.texi
diff -c emacs/man/search.texi:1.44 emacs/man/search.texi:1.45
*** emacs/man/search.texi:1.44  Wed May 19 18:50:38 2004
--- emacs/man/search.texi       Thu Jun 24 14:05:59 2004
***************
*** 977,985 ****
    What if you want to exchange @samp{x} and @samp{y}: replace every @samp{x} 
with a @samp{y} and vice versa?  You can do it this way:
  
  @example
! M-x query-replace @key{RET} x @key{RET} @@TEMP@@ @key{RET}
! M-x query-replace @key{RET} y @key{RET} x @key{RET}
! M-x query-replace @key{RET} @@TEMP@@ @key{RET} y @key{RET}
  @end example
  
  @noindent
--- 977,985 ----
    What if you want to exchange @samp{x} and @samp{y}: replace every @samp{x} 
with a @samp{y} and vice versa?  You can do it this way:
  
  @example
! M-x replace-string @key{RET} x @key{RET} @@TEMP@@ @key{RET}
! M-< M-x replace-string @key{RET} y @key{RET} x @key{RET}
! M-< M-x replace-string @key{RET} @@TEMP@@ @key{RET} y @key{RET}
  @end example
  
  @noindent
***************
*** 1016,1021 ****
--- 1016,1064 ----
  @noindent
  performs the inverse transformation.
  
+   You can also use arbitrary Lisp expressions evaluated at replacement
+ time by placing @samp{\,} before them in the replacement string.  Inside
+ of those expressions, the symbols @samp{\&} and @address@hidden refer to
+ match and submatch strings like described above (a submatch not matching
+ anything will be @samp{nil}), and @samp{\&#} and @address@hidden to
+ those strings converted to numbers.  @samp{\#} is short for
+ @samp{replace-count}, the number of already completed replacements.
+ This particular shorthand can also be used outside of @samp{\,}.
+ 
+   Repeating our example to exchange @samp{x} and @samp{y}, we can thus
+ do it also this way:
+ 
+ @example
+ M-x replace-regexp @key{RET} \(x\)\|y @key{RET}
+ \,(if \1 "y" "x") @key{RET}
+ @end example
+ 
+   Another feature you can use in the replacement string of Regexp
+ commands is @samp{\?}.  In that case you will be allowed to edit the
+ replacement string at the given position before the replacement gets
+ performed.  Lisp style replacements have already been done before
+ @samp{\?} is executed.  For example,
+ 
+ @example
+ M-x replace-regexp @key{RET} address@hidden @key{RET}
+ \&address@hidden:address@hidden @key{RET}
+ @end example
+ 
+ @noindent
+ will add labels starting with @address@hidden:address@hidden to occurences of
+ @address@hidden, but letting you edit each replacement before
+ performing it.  If you want labels starting at 1, use @samp{\,(1+ \#)}
+ instead of @samp{\#}.
+ 
+ As another example, to add consecutively numbered strings like
+ @samp{ABC00042} to column 73 to~80 (unless they are already occupied),
+ you can use
+ 
+ @example
+ M-x replace-regexp @key{RET} address@hidden,address@hidden @key{RET}
+ \,(format "%-72sABC%05d" \& \#) @key{RET}
+ @end example
+ 
  @node Replacement and Case, Query Replace, Regexp Replace, Replace
  @subsection Replace Commands and Case
  
***************
*** 1126,1134 ****
  
  @item ^
  to go back to the position of the previous occurrence (or what used to
! be an occurrence), in case you changed it by mistake.  This works by
! popping the mark ring.  Only one @kbd{^} in a row is meaningful, because
! only one previous replacement position is kept during @code{query-replace}.
  
  @item C-r
  to enter a recursive editing level, in case the occurrence needs to be
--- 1169,1176 ----
  
  @item ^
  to go back to the position of the previous occurrence (or what used to
! be an occurrence), in case you changed it by mistake or want to
! reexamine it.
  
  @item C-r
  to enter a recursive editing level, in case the occurrence needs to be




reply via email to

[Prev in Thread] Current Thread [Next in Thread]