Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/mqrepl.emacs
There are no other files named mqrepl.emacs in the archive.
!* -*-TECO-*-!
!~Filename~:! !Perform multiple replacements on a file.!
MQREPL
!Multi Query Replace:! !C Performs several query replaces conveniently.
This macro takes as its argument the name of a buffer containing
substitutions, one per line, in the form <old><new>.
It starts applying those substitutions to the current buffer.
It exits when you exit any query replace, leaving C-. set up
as a continuation macro to resume the query replace sequence at
the query replace which was exited.
If given numeric arg, then Replace String without querying.!

    Q:.B(:i* M(m.m &_Find_Buffer)+4)	    !* Remember the control buffer
!   m.v  Multi_Query_Replace_Buffer
    m.m &_Multi_Query_Replace_1u..	    !* Bind C-. to the continuation.!
    qMulti_Query_Replace_Buffer[..o j	    !* Go to beginning of the list so start with 1st one!
    ]..o J FF"N ':m..	    !* Call continuation to start doing it!
!& Multi Query Replace 1:! !S Continue doing a Multi Query Replace.
QMulti Query Replace Buffer is a TECO buffer containing the list
of replacements, with point pointing at the one to be resumed.
If given numeric arg, then Replace String without querying.!

  [1[2 !top!
  QMulti_Query_Replace_Buffer[..o	    !* Select control buffer.!
  .-z"E ^ft_Done_ fg '		    !* Finished with last replacement?!
  1fb  :x2 r 0x1			    !* Q1 = old string, Q2 = new string!
  0L ]..o				    !* Current subst is the one to resume after exit!
  :S1"E
 !EOF!
    QMulti_Query_Replace_Buffer[..o	    !* But if there are no occurrences, skip it.!
    L ]..o BJ otop '
  fkc					    !* Found an occurrence => make Query Replace!
					    !* find it right away.!
  fs Echo Display C fs Echo Display
  ^ft1_==>_2_			    !* Announce which replacement we are now processing.!
  M(FF"E M.M Query_Replace'"# M.M Replace_String')12"L	!* do query or string replace!
     o EOF'				    !* -1 returned means done, go do next!
  0					    !* Otherwise, return to ^R!
!Tags Multi Query Replace:! !C Perform multiple replacements on many files.
Given as an argument the name of a buffer containing
a list of replacements a la Multi Query Replace,
we process the first file in the current tag table
and set C-, to a macro to process the next file.
If this macro or C-, given numeric arg, then Replace String without querying.!

    :I*[0
    ^:i.,`
      m(m.m Next_File)		    !* First select next file.!
      F			    !* Tell ^R buffer completely changed.!
      FF"N ' m(m.m Multi_Query_Replace)0 !* Do multi query replace on buffer whose name!
					    !* is substituted in from our argument.!
      j 0`				    !* Then return.!
    1M(M.M Next_File)		    !* Select first file !
    F
    FF"N ' m(m.m Multi_Query_Replace)0
    J 0