[Top][All Lists]
[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
- [Emacs-diffs] Changes to emacs/man/search.texi,
David Kastrup <=