home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / GLEN / SRCH18.ZIP / SRCH18.QM < prev    next >
Text File  |  1990-09-17  |  39KB  |  798 lines

  1. *                               (SRCH18).QM
  2. *┌──────────────────(INDEX) Search/Replace Macros ─────────────────────────────┐
  3. *│@(0) - Srch/rplc from command line, loads file w/SR.BAT, no prompt   <-chg
  4. *│@(7) - Srch ONLY from command line, load files w/SRL.BAT, no replace
  5. *│@(1) - Makes FileList of files containing search text while editing
  6. *│@(2) - Loads FileList of files containing search text while editing
  7. *│@(5) - Srch/rplc while editing, finds/loads files, prompts           <-new
  8. *│@(8) - Srch/rplc while editing loaded files only,  prompts,
  9. *│       saves ONLY & keeps loaded ONLY files w/replacements
  10. *│@(9) - Srch ONLY loaded files, keep loaded ONLY files w/found text   <-chg
  11. *│@(h) - Finds first word on cursor line in Index in document below    <-new
  12. *│
  13. *│(F4) - RepeatFind
  14. *│(F6) - NextFile
  15. *│
  16. *│(Index) Use      - How to locate macro or item below from Index using @h
  17. *│(Description)    - Search/Replace Macros
  18. *│(Startup)        - What's required
  19. *│(Macros)         - Search/Repace Macros
  20. *│(Other) Macros   - not included
  21. *│(Version) history
  22. *└────────[ be sure to leave at least one blank line at end of Index  ]────────┘
  23.  
  24.  
  25. *                Confirms  Saves    Must Be
  26. *                Replace-  Loaded   First                       Byte
  27. *     Run While  ment?     Files?   Macro?      Comments        Size
  28. * ──  ─────────  ────────  ──────   ────── ───────────────────  ────
  29. * @0  cmnd line  no        yes      yes    s/r w/SR.bat         192 <-chg
  30. * @7  cmnd line  n/a       n/a      yes    load only w/SRL.bat   37
  31. * @1  editing    n/a       n/a      no     makes FileList only   99
  32. * @2  editing    n/a       n/a      no     loads files only      19
  33. * @5  editing    yes       rpl only no     s/r finds files      260 <-new
  34. * @8  editing    yes       rpl only no     s/r loaded files      62
  35. * @9  editing    srch only no       no     s/o loaded files      62 <-chg
  36. * @h  editing    -         -        -      Help locate macros    47
  37.  
  38. * (Index) Use;
  39. *
  40. * To locate a macro or item in this file, place the cursor line on the
  41. * desired item in the Index above and press @h.
  42. * See BOOK15.ZIP for more details.
  43.  
  44.  
  45. * (Description):
  46. *
  47. * (SRCH18) are QEdit macros to search/replace only files containing
  48. * search text from a FileList of file search patterns. Only files
  49. * containing the search text are loaded automatically, and then the
  50. * desired search/replace is performed. Search/replace may also be run
  51. * from the command line and while editing files.
  52.  
  53.  
  54.  
  55. * To BEGIN, just type START-SR. All pertinent files will be loaded
  56. * for viewing. SRCH18.MAC is also read. Read the instructions below.
  57.  
  58.  
  59. * (Startup):
  60. *
  61. * In order for these macros to run, first  make a FileList,
  62. * SRCH-FG.LST, of the file patterns to be searched. Here's mine in:
  63. *
  64. *         *.qm
  65. *         *.ql
  66. *         *.inf
  67. *         *.bat
  68. *         *.lst
  69. *         *.me
  70. *         *.doc
  71. *         *.syn
  72. *         e:\syn\sa.syn
  73.  
  74.  
  75.  
  76. * The last entry is my PCED synonym file.
  77.  
  78. * You may want to consider putting only one single file name in the list
  79. * to try these macros, eg TEST.QM.
  80.  
  81. * To perform a search/replace from the command line, type SR, and
  82. * answer the prompts for search and replace text. To perform a SEARCH
  83. * ONLY from the command line, type SRL, and answer the prompts for
  84. * search text. All searches with these macros and batch files are
  85. * non-case sensitive. To perform a case sensitive search, change "IGN"
  86. * to "GN"in the macros below and "-f" to "-fc" in the batch files.
  87.  
  88. * Chris Dunford's excellent FGREP and William Parke's INPUT.COM must be
  89. * located in the path. These programs are NOT included with SRCH18.ZIP.
  90. * FGREP can be found on CompuServe IBMAPP Lib 1 as FGREP.ARC, v1.71,
  91. * and on Exec-PC as FGREP172.ZIP. INPUT can be found on Exec-PC as
  92. * INPUT.ZIP. They are probably on many other BBS's also.
  93.  
  94. * Search text may be single or multiple words.
  95. *
  96. * Replacing C: with your ram disk will make the macros run faster.
  97.  
  98. * QEdit MUST be configured with the second General option as follows:
  99. * Should PQuit, Exit and File return to the edit file prompt (Y/N)? [Y]
  100.  
  101. * Alt_0/7 set and use the Dos environment variables FGS and FGR. The
  102. * letters "FGS" and "FGR" must NOT occur in any other Dos environment
  103. * variable name or value. You must have enough environment space to
  104. * store both the search and replacement text.
  105.  
  106. * Any file containing the text ('asterisk'Fi) will stop loading with
  107. * SR and SRL. If you have a problem, check for this.
  108.  
  109. * QEdit must be named Q.EXE.
  110.  
  111. * Insert should be ON.
  112.  
  113. * For (other) macros, see ALLMACRO.INF.
  114.  
  115.  
  116. * (Macros):--------------------------------------------------------
  117. *
  118. *┌─────────────────────────────────────────────────────────────────────┐
  119. *│ @(0) Macro for search/replace from command line with SR.BAT         │
  120. *└─────────────────────────────────────────────────────────────────────┘
  121. *  ******** MUST BE FIRST MACRO IN FILE FOR START UP IN SR.BAT*********
  122. *            ****** MUST RUN SR.BAT TO USE THIS MACRO******
  123. *
  124. * To do a search/replace from command line, just type SR, and answer
  125. * prompts for search and replacement text.
  126. *
  127. * TEST.QM is included to show how this macro works. Type/enter at the
  128. * command line as follows:
  129. *
  130. *  1.   "SR"  return
  131. *  2.   "aaa" space "bbb" return       (answer SEARCH text prompt)
  132. *  3.   "AAA" space "BBB" return       (answer REPLACEMENT text prompt)
  133.  
  134. * This version of @0 differs from v1.0j in that the FGREP output of
  135. * found file names and found text is is also loaded after replacement,
  136. * and is in window #1. The files after replacement are in the other
  137. * windows. This helps show what text was actually replaced.
  138.  
  139. * When finished running with the batch file or PCED, the following
  140. * files are loaded for viewing or editing:
  141. *
  142. * Window 1       -list of files found & search text (output from FGREP)
  143. * Window 2...n+1 -files containing search text, n = (# files found)
  144. *
  145. *
  146. * Temporary file names are:
  147. *
  148. * c:$.ql  List of files found & search text (output from FGREP)
  149. * c:!     Same as c:$.ql
  150. *
  151. * This version of @0 uses the "Once-Around the ring" technique of Kyle
  152. * Watkins. This macro is faster than Version 1.6 and prior because
  153. * files do not have to be re-loaded after replacement. They are not
  154. * QUIT from the ring during replacement.
  155. *
  156. * Entering "IGN" when prompted will automatically make the replacement
  157. * in all files. Swapping the two lines ** in this macro and
  158. * reconverting with QMAC will make the search/replace totally automatic
  159. * after entering the search and replace text when promted.
  160. *
  161. @0      MacroBegin
  162. ***************************************** LOAD FILES
  163.         altwordset                      * for all file names
  164.         endfile                         * get to end of file
  165.  LOADAGAIN:                             *
  166.         unmarkblock                     * unmark last file name
  167.         find #42 "Fi" return "B"  return* Find file name
  168.  jfalse  END:                           * no find ? quit
  169.         wordright                       * move to space
  170.         wordright                       * move to file name
  171.         markcolumn                      * mark it
  172.         endline                         * get all name in block
  173.         copy                            * cut file name to scrap
  174.         EditFile                        * get ready to load
  175.         CurrentFilename " "             * to force return *here*
  176.         Paste Return                    * paste file name & do it!
  177.         cursorup                        * go to next line
  178.  jfalse ENDLOAD:                        * No more file names? End
  179.  jump LOADAGAIN:                        * check again
  180.  ENDLOAD:                               *
  181.         quit                            * quit c:! from ring so no rplc
  182. ***************************************** GET SEARCH TEXT TO SCRATCH
  183.         DOS "SET>c:$"                   * get SET output to tempfile
  184.         return return                   *
  185.         editfile "c:$" return           * load tempfile w/ set output
  186.         find  "FGS" return return       * find FGS
  187.         wordright                       * get to SEARCH text
  188.         markcolumn                      * begin mark
  189.         endline                         * mark SEARCH text
  190.         cursorleft                      * no trailing space in block
  191.         storescrbuff "FGS" return       * store SEARCH text to scratch
  192. ***************************************** GET REPLACE TEXT TO SCRATCH
  193.         unmarkblock                     * get ready
  194.         begfile                         * get to top
  195.         find  "FGR" return return       * find FGR
  196.         wordright                       * get to REPLACE text
  197.         markcolumn                      * begin mark
  198.         endline                         * mark it all
  199.         cursorleft                      * no trailing space in block
  200.         storescrbuff "FGR" return       * store REPLACE text to scratch
  201.         killfile                        * kill c:$ for next time
  202.         quit                            * remove c:$ from ring
  203. ***************************************** BEGIN SEARCH/REPLACE
  204.         Editfile 'NUL' Return           * Insert -or- GoTo NUL File
  205.         getscrbuff "FGS" return cut     * cut search text from scratch
  206.         Find paste Return return        * initialize find prompt
  207.         getscrbuff "FGR" return cut     * cut replace text from scratch
  208.         FindReplace return              * begin replacement
  209.         paste RETURN                    ** paste REPLACEMENT text
  210. **         "IGN" Return                    ** Replace, no prompt
  211.         Pause Return                    * Allow user input of Options
  212.         Begline Cursorright      * Put cursor in Col. 2 of NUL File
  213.         LOOP:                    * Main test loop
  214.             Nextfile             * Move to next file in Ring
  215.             Cursorleft           * Move cursor left (need for NUL test)
  216.             Jfalse DOIT:         * If couldn't move to left, it's not
  217.                                  * the NUL File AND cursor position
  218.                                  * has not changed -- GO with the
  219.                                  * FindReplace
  220.                                  *ELSE
  221.                                  * Check to see if in the NUL File
  222.             Editfile
  223.             'NUL ' Currentfilename Return * GoTo NUL File -- AND--
  224.                                           * Preload File to Edit
  225.                                           * Buffer so can Return
  226.                                           * to Current File
  227.             Cursorleft           * Move cursor left for NUL Test
  228.             Jfalse ENDLOOP:      * If couldn't move left -- We
  229.                                  * ARE in the NUL File and Need
  230.                                  * to ENDLOOP
  231.                                  *ELSE
  232.             Cursorright          * Move back to Col. 2 in NUL File
  233.             Editfile
  234.             Begline Delch Delch Delch Return  * Bring up EditFile Prompt
  235.                                               * and delete NUL and
  236.                                               * Return to File we left
  237.             Cursorright          * Restore Cursor to its previous
  238.                                  * position and GO with the FindReplace
  239.         DOIT:                    * FindReplace Loop
  240.             Repeatfind           * Do the FindReplace
  241.             Jtrue SAVE:          * If CHANGES are made -- SAVE the File
  242.             Quit                 * If NO CHANGES are made -- QUIT the
  243.                                  * File
  244.             Jump LOOP:           * Return to the Main Loop
  245.         SAVE:                    * Routine to Save a File with Changes
  246.             Savefile             * Save the file
  247.             Jump LOOP:           * Return to Main Loop
  248.         ENDLOOP:                 * Loop is DONE
  249.             Quit                 * Quit the NUL File
  250.   END:                           *
  251.         defaultwordset           * set default
  252. *
  253. * 191 bytes Sun  09-16-1990  15:09:40
  254.  
  255.  
  256.  
  257.  
  258. *┌─────────────────────────────────────────────────────────┐
  259. *│ @(1) - makes FileList of files containing search text   │
  260. *└─────────────────────────────────────────────────────────┘
  261. @1      MacroBegin
  262.         Dos 'FGREP -f0 "'               * make FileList
  263.         Pause                           *
  264.         '">c:! @SRCH-FG.lst'            *
  265.         return return                   *
  266.         editfile "c:!" return quit      * edit FileList
  267.         editfile return                 *
  268.         begfile                         *
  269.         MarkColumn                      * mark begfile c:!
  270.         endfile begline                 * mark endfile col 1
  271.         wordright wordright             * get to file name
  272.         cursorleft                      * move off file name
  273.         DeleteBlock                     * delete file name
  274.         SaveFile                        * save FileList
  275.         begfile                         * get to begin
  276.         MarkColumn                      * mark begfile c:!
  277.         EndFile                         * get to end
  278.         gotocolumn "12" return          * get all file names in block
  279.         Sort                            * sort FileList
  280.         KILLFILE                        * kill c:!
  281.                 begfile                 * see FileList
  282.                 unmarkblock             * without block mark
  283. *
  284. * 99 bytes Thu  09-13-1990  16:30:45
  285.  
  286.  
  287.  
  288.  
  289. *┌──────────────────────────────────────────────────────────────┐
  290. *│ @(2) - loads FileList of files containing search text        │
  291. *└──────────────────────────────────────────────────────────────┘
  292. * Written by Kyle Watkins, SemWare.
  293. *
  294. @2      MacroBegin
  295. ***************************************** LOAD FileList (from QLSTxx)
  296.         EndFile BegLine                 * start at last line
  297.  REPEAT:
  298.         UnmarkBlock MarkLine Copy       * grab this name
  299.         EditFile                        * get ready to load
  300.         CurrentFilename " "             * to force return *here*
  301.         Paste Return                    * paste file name & do it!
  302.         CursorUp                        * more lines above?
  303.         JTrue REPEAT:                   * if yes, repeat.
  304. *
  305. * 19 bytes Mon  09-03-1990  00:56:04
  306.  
  307.  
  308.  
  309.  
  310. *┌────────────────────────────────────────────────────────────────┐
  311. *│ @(5) - loads FileList of files containing search text,         │
  312. *│      then search/replace loaded files while editing            │
  313. *└────────────────────────────────────────────────────────────────┘
  314. *
  315. @5     MacroBegin
  316. ***************************************** GET SEARCH TEXT
  317.         unmarkblock                     *
  318.         Editfile 'NUL' Return           * Insert -or- GoTo NUL File
  319.        "Search Text=" markcolumn pause  * search text?
  320.         storescrbuff "1" return copy    * copy search text to scrap
  321. ***************************************** GET REPLACE TEXT
  322.         RETURN                          * move to next line
  323.        "Replace Text=" markcolumn pause * replacement text?
  324.         storescrbuff "2" return         * store replacement to scratch
  325.         quit                            * quit NUL
  326. ***************************************** MAKE FileList
  327.         DOS 'FGREP -f0 "'               * make FileList
  328.         paste                           * paste search text
  329.         '">c:! @SRCH-FG.lst'            *
  330.         return return                   *
  331.         editfile "c:!" return quit      * edit FileList
  332.         editfile return                 *
  333.         begfile MarkColumn              * mark begfile c:!
  334.         endfile begline                 * mark endfile col 1
  335.  jfalse END:                            * End if no search text found
  336.         wordright wordright             * get to file name
  337.         cursorleft                      * move off file name
  338.         DeleteBlock                     * delete file name
  339.         begfile                         * get to begin
  340.         MarkColumn                      * mark begfile c:!
  341.         EndFile                         * get to end
  342.         gotocolumn "12" return          * get all file names in block
  343.         Sort                            * sort FileList
  344. ***************************************** LOAD FileList (from QLSTxx)
  345.         EndFile BegLine                 * start at last line
  346.  REPEAT:
  347.         UnmarkBlock MarkLine Copy       * grab this name
  348.         EditFile                        * get ready to load
  349.         CurrentFilename " "             * to force return *here*
  350.         Paste Return                    * paste file name & do it!
  351.         CursorUp                        * more lines above?
  352.         JTrue REPEAT:                   * yes ? repeat
  353. ***************************************** FIND/REPLACE
  354.         killfile                        * kill c:!
  355.         quit                            * quit c:!
  356.         Editfile 'NUL' Return           * Insert -or- GoTo NUL File
  357.         getscrbuff "1" return cut       * cut search text from scratch
  358.         Find paste Return return        * initialize find prompt
  359.         getscrbuff "2" return cut       * cut replace text from scratch
  360.         FindReplace return              * begin replacement
  361.         paste RETURN                    ** paste REPLACEMENT text
  362. **         "IGN" Return                    ** Replace, no prompt
  363.         Pause Return                    * Allow user input of Options
  364.         Begline Cursorright      * Put cursor in Col. 2 of NUL File
  365.                                  *
  366.         LOOP:                    * Main test loop
  367.                                  *
  368.             Nextfile             * Move to next file in Ring
  369.             Cursorleft           * Move cursor left (need for NUL test)
  370.             Jfalse DOIT:         * If couldn't move to left, it's not
  371.                                  * the NUL File AND cursor position
  372.                                  * has not changed -- GO with the
  373.                                  * FindReplace
  374.                                  *
  375.                                  *ELSE
  376.                                  * Check to see if in the NUL File
  377.                                  *
  378.             Editfile
  379.             'NUL ' Currentfilename Return * GoTo NUL File -- AND--
  380.                                           * Preload File to Edit
  381.                                           * Buffer so can Return
  382.                                           * to Current File
  383.                                  *
  384.             Cursorleft           * Move cursor left for NUL Test
  385.             Jfalse END:          * If couldn't move left -- We
  386.                                  * ARE in the NUL File and Need
  387.                                  * to END the Macro
  388.                                  *
  389.                                  *ELSE
  390.             Cursorright          * Move back to Col. 2 in NUL File
  391.                                  *
  392.             Editfile
  393.             Begline Delch Delch Delch Return  * Bring up EditFile Prompt
  394.                                               * and delete NUL and
  395.                                               * Return to File we left
  396.                                  *
  397.             Cursorright          * Restore Cursor to its previous
  398.                                  * position and GO with the FindReplace
  399.                                  *
  400.         DOIT:                    * FindReplace Loop
  401.                                  *
  402.             Repeatfind           * Do the FindReplace
  403.             Jtrue SAVE:          * If CHANGES are made -- SAVE the File
  404.                                  *
  405.             Quit                 * If NO CHANGES are made -- QUIT the
  406.                                  * File
  407.                                  *
  408.             Jump LOOP:           * Return to the Main Loop
  409.                                  *
  410.                                  *
  411.         SAVE:                    * Routine to Save a File with Changes
  412.                                  *
  413.             Savefile             * Save the file
  414.             Jump LOOP:           * Return to Main Loop
  415.                                  *
  416.         END:                     * Macro is DONE
  417.                                  *
  418.             Quit                 * Quit the NUL File
  419. *
  420. * 260 bytes Sun  09-16-1990  14:48:58
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428. * ┌──────────────────────────────────────────────────────────────────┐
  429. * │ @(7) -Start up macro, loads only found files, no replacement     │
  430. * └──────────────────────────────────────────────────────────────────┘
  431. * *** IF USED, MUST BE FIRST MACRO FOR START UP WITH SRL.BAT or PCED***
  432. * ****** MUST RUN SRL.BAT OR PCED TO USE THIS MACRO******
  433.  
  434.  
  435. * This version of this macro is about half the size of @7 in v1.0i and
  436. * runs about twice as fast.
  437.  
  438. * To run, type SRL at the command line and answer prompt for search
  439. * text.
  440. *
  441. * SRL.BAT will accept SRL [search text] as long as [search text] is a
  442. * SINGLE word. This bypasses the need to respond to the INPUT prompt
  443. * for Search Text=. (added in v1.4)
  444. *
  445. * An alternative to using the batch file SRL.BAT is to use the
  446. * following PCED synonym instead:
  447. *
  448. * SYN     SRLFG 'echo off^break on^FGREP -f "&A" @SRCH-FG.LST >c:!
  449. *                ^Q. c:! /Esrl.mac /LSRCH18.mac^break off^echo on'
  450. *
  451. * Just add this synonym to the bottom of your synonym file on one line,
  452. * or type CED SYN SRLFG 'echo ...............'.
  453. *
  454. * To run using PCED, type SRLFG [search text] at the command line.
  455. *
  456. * When finished running with the batch file or PCED, the following
  457. * files are loaded for viewing or editing:
  458. *
  459. * Window 1       -list of files found & search text (output from FGREP)
  460. * Window 2...n+1 -files containing search text, n = (# files found)
  461. *
  462. *
  463. * Temporary file names are:
  464. *
  465. * c:$.ql  List of files found & search text (output from FGREP)
  466. * c:!     Same as c:$.ql
  467. *
  468. @7 macrobegin
  469. ***************************************** LOAD FOUND FILES
  470.         altwordset                      * for all file names
  471.         endfile                         * get to end of file
  472.  CHECKAGAIN:                            *
  473.         unmarkblock                     * clear last file name
  474.         find #42 "Fi" return "B"  return* Find file name
  475.         wordright                       * move to space
  476.         wordright                       * move to file name
  477.         markcolumn                      * mark it
  478.         endline                         * get all name in block
  479.         copy                            * copy file name to scrap
  480.         EditFile                        * get ready to load
  481.         CurrentFilename " "             * to force return *here*
  482.         Paste Return                    * paste file name & do it!
  483.         cursorup                        * go to next line
  484.  jfalse END:                            * No more file names? End
  485.  jump CHECKAGAIN:                       * check again
  486.  END:                                   *
  487.         defaultwordset                  * set default
  488. *
  489. * 37 bytes Thu  09-06-1990  13:53:04
  490.  
  491. * ┌────────────────────────────────────────────────────────────────────┐
  492. * │@(8)  MACRO TO EXECUTE THE FindReplace ACROSS ENTIRE RING OF FILES  │
  493. * └────────────────────────────────────────────────────────────────────┘
  494. *
  495. * The following macro was written by Kyle Watkins of SemWare in
  496. * response to my request for a macro to search/replace all loaded
  497. * files, but also:
  498. *         - save to disk only those files that had a replacement, and
  499. *         - keep loaded  only those files that had a replacement made.
  500. * It is an excellent and creative macro which I urge you to study
  501. * because of the unique and powerful use of a NUL file as a
  502. * place-marker.
  503.  
  504. * ==============================================================================
  505. * Date: 09-14-90 (11:49)           Number: 9940         SemWare Support BBS
  506. *   To: TOM HOGSHEAD               Refer#: NONE
  507. * From: KYLE WATKINS                 Read: NO
  508. * Subj: ONCE AROUND THE FILE-RING    Conf: (0) Main Board
  509. * ------------------------------------------------------------------------
  510. * TH>I have been trying for several months to either modify the following
  511. * TH>macro or come up with another way to search & replace all loaded
  512. * TH>files but also to:
  513. * TH>
  514. * TH>        - save to disk only those files that had a replacement, and
  515. * TH>        - keep loaded  only those files that had a replacement made.
  516. *
  517. * Hi Tom,
  518. *     You may need to adjust this macro at the point where I quit the file
  519. * if no replacements were made to it (The macro can be adjusted to save
  520. * those files, if there were some pre-existing changes that were present
  521. * before the macro was envolked). I wasn't sure what you wanted (my own
  522. * preference is to retain other changes that I made before I envolked this
  523. * macro -- BUT I wrote the macro to just Quit those files, since that is
  524. * what I am guessing you want).
  525. *     Basically, the macro will use the NUL file as a placeholder in the
  526. * Ring-of-Files. With cursor manipulation, I will determine when you
  527. * arrive at the NUL file again. Once you get back to the NUL file, the
  528. * macro will end. Your starting point for the FindReplace throughout the
  529. * entire Ring will be at the file immediately after the NUL file -- So if
  530. * you do not have a NUL file already loaded, the starting point will be at
  531. * the next file from the one that you are currently in. Otherwise, the
  532. * starting point will be at the next file from the present location of the
  533. * NUL file.
  534. *     Note that I always return to the original cursor position, before
  535. * the FindReplace is executed (allowing you to select any Option for the
  536. * FindReplace routine).
  537. *
  538. * ------------------------------------------------------------------------
  539. *     MACRO TO EXECUTE THE FindReplace ACROSS THE ENTIRE RING OF FILES
  540. *     ----------------------------------------------------------------
  541. *
  542. @8      Macrobegin
  543.         Editfile 'NUL' Return    * Insert -or- GoTo NUL File
  544.         Findreplace Pause Return * Allow user input of Find Item
  545.         Pause Return             * Allow user input of Replace Item
  546.         Pause Return             * Allow user input of Options
  547.         Begline Cursorright      * Put cursor in Col. 2 of NUL File
  548.                                  *
  549.         LOOP:                    * Main test loop
  550.                                  *
  551.             Nextfile             * Move to next file in Ring
  552.             Cursorleft           * Move cursor left (need for NUL test)
  553.             Jfalse DOIT:         * If couldn't move to left, it's not
  554.                                  * the NUL File AND cursor position
  555.                                  * has not changed -- GO with the
  556.                                  * FindReplace
  557.                                  *
  558.                                  *ELSE
  559.                                  * Check to see if in the NUL File
  560.                                  *
  561.             Editfile
  562.             'NUL ' Currentfilename Return * GoTo NUL File -- AND--
  563.                                           * Preload File to Edit
  564.                                           * Buffer so can Return
  565.                                           * to Current File
  566.                                  *
  567.             Cursorleft           * Move cursor left for NUL Test
  568.             Jfalse END:          * If couldn't move left -- We
  569.                                  * ARE in the NUL File and Need
  570.                                  * to END the Macro
  571.                                  *
  572.                                  *ELSE
  573.             Cursorright          * Move back to Col. 2 in NUL File
  574.                                  *
  575.             Editfile
  576.             Begline Delch Delch Delch Return  * Bring up EditFile Prompt
  577.                                               * and delete NUL and
  578.                                               * Return to File we left
  579.                                  *
  580.             Cursorright          * Restore Cursor to its previous
  581.                                  * position and GO with the FindReplace
  582.                                  *
  583.         DOIT:                    * FindReplace Loop
  584.                                  *
  585.             Repeatfind           * Do the FindReplace
  586.             Jtrue SAVE:          * If CHANGES are made -- SAVE the File
  587.                                  *
  588.             Quit                 * If NO CHANGES are made -- QUIT the
  589.                                  * File
  590.                                  *
  591.             Jump LOOP:           * Return to the Main Loop
  592.                                  *
  593.                                  *
  594.         SAVE:                    * Routine to Save a File with Changes
  595.                                  *
  596.             Savefile             * Save the file
  597.             Jump LOOP:           * Return to Main Loop
  598.                                  *
  599.         END:                     * Macro is DONE
  600.                                  *
  601.             Quit                 * Quit the NUL File
  602. *
  603. * 62 bytes Sat  09-15-1990  11:17:57 (added TH)
  604.  
  605.  
  606. *      ----------------------------------------------------------------
  607. *     I hope this is what you need Tom. Feel free to optimize and alter
  608. * the macro. The main Body of this macro can be used to allow any kind of
  609. * ONE-TIME File Ring Sweep. I have already used the main body of the macro
  610. * (with the neccessary adjustments) to Load all files that DO NOT cause a
  611. * PRESS ESCAPE message -- So I hope it proves useful to you.
  612. *
  613. *                              --... ...--
  614. * .......Kyle Watkins (SemWare Technical Support)
  615.  
  616.  
  617.  
  618.  
  619. * ┌────────────────────────────────────────────────────────┐
  620. * │@(9) Keep loaded only files with "found" text.          │
  621. * └────────────────────────────────────────────────────────┘
  622. *
  623. * This macro uses the same technique developed by Kyle Watkins in @8,
  624. * to keep loaded ONLY files with "found" text. No replacement or save
  625. * is made (@8 makes replacement and saves files with replacements, but
  626. * files without any replacement are QUIT from ring).
  627. *
  628. * Version 1.6 of this macro used RepeatFind in the DOIT loop. If that
  629. * version was executed more than once and the cursor was on the last
  630. * occurence of the search text in a file, RepeatFind would NOT find the
  631. * search text again, and the file was QUIT from the ring. Apparently
  632. * RepeatFind does NOT remember the "G" option with Find.
  633. *
  634. * This version replaces RepeatFind with Find "G". Now, if @9 is executed
  635. * more than once, any file with any occurence of the search text is
  636. * correctly kept loaded.
  637. *
  638. @9      Macrobegin
  639.         Editfile 'NUL' Return    * Insert -or- GoTo NUL File
  640.         Find Pause Return "G"    * Allow user input of Find Item
  641.         Pause Return             * Allow user input of Options
  642.         Begline Cursorright      * Put cursor in Col. 2 of NUL File
  643.         LOOP:                    * Main test loop
  644.             Nextfile             * Move to next file in Ring
  645.             Cursorleft           * Move cursor left (need for NUL test)
  646.             Jfalse DOIT:         * If couldn't move to left, it's not
  647.                                  * the NUL File AND cursor position
  648.                                  * has not changed -- GO with the
  649.                                  * FindReplace
  650.                                  *ELSE
  651.                                  * Check to see if in the NUL File
  652.             Editfile
  653.             'NUL ' Currentfilename Return * GoTo NUL File -- AND--
  654.                                           * Preload File to Edit
  655.                                           * Buffer so can Return
  656.                                           * to Current File
  657.             Cursorleft           * Move cursor left for NUL Test
  658.             Jfalse END:          * If couldn't move left -- We
  659.                                  * ARE in the NUL File and Need
  660.                                  * to END the Macro
  661.                                  *ELSE
  662.             Cursorright          * Move back to Col. 2 in NUL File
  663.             Editfile
  664.             Begline Delch Delch Delch Return  * Bring up EditFile Prompt
  665.                                               * and delete NUL and
  666.                                               * Return to File we left
  667.             Cursorright          * Restore Cursor to its previous
  668.                                  * position and GO with the FindReplace
  669.         DOIT:                    * Find Loop
  670.             Find Return "G" return * Do the Find
  671.             Jtrue LOOP:          * If FOUND   -- Return to Main Loop
  672.             Quit                 * If NO FIND -- QUIT the file
  673.             Jump LOOP:           * Return to the Main Loop
  674.         END:                     * Macro is DONE
  675.             Quit                 * Quit the NUL File
  676. *
  677. * 62 bytes Sun  09-16-1990  23:44:00
  678.  
  679.  
  680.  
  681. *┌───────────────────────────────────────────────────────────────────┐
  682. *│@(h) Finds first word on cursor line marked in document below      │
  683. *└───────────────────────────────────────────────────────────────────┘
  684. *
  685. *        @h macro has 2 steps:
  686. *
  687. *        1. Press @ and h at the same time. An ! shows at the
  688. *        end of the top line. Cursor down to desired line in Index.
  689. *
  690. *        2. Press Enter. The macro first erases the !, and
  691. *        then finds the first word on the cursor line in the document
  692. *        below marked with (...).
  693. *
  694. * See BOOK15.ZIP for more details.
  695. *
  696. @h macrobegin
  697.         unmarkblock                     * unmark any marked blocks
  698.         begfile endline                 * go to file begin endline
  699.         "!"                             * put ! at endline
  700.         begline
  701.         find "!" return return begline  * highlight !
  702.         pause                           * pause for Index selection
  703.         wordright markword              * mark first word on line
  704.         copy                            * copy word to scrap buffer
  705.         begfile                         * begfile
  706.         find "!" return return delch    * find & delete !
  707.         endpara                         * go to end of Index
  708.         makectrofscreen                 * cursor line center of window
  709.         find "(" paste ")"
  710.         return "I" return               * find first marked word in doc
  711.  jfalse NOMARK:
  712.         begline                         * if mark found go to begline
  713.  jump END:
  714.  NOMARK:
  715.         begfile                         * if no mark found go to begfile
  716.  END:
  717. *
  718. * 47 bytes Fri  09-14-1990  14:06:26
  719.  
  720.  
  721. * (F4)
  722. f4      RepeatFind
  723.  
  724.  
  725. * (F6)
  726. f6      NextFile
  727.  
  728.  
  729. * (VERSION) HISTORY:
  730. *
  731. *       1.0a - Corrected @5 to use @SRCH-FG.lst, not SRCH.lst.
  732. *       1.0b - Modified to not use optional batch file.
  733. *            - Removed @5.
  734. *       1.0c - Added Alt_0 for search/replace from command line.
  735. *            - Modified SRC.BAT, @1 & @4 for case sensitive search.
  736. *            - Modified @4 to re-load search files after replacement.
  737. *            - Corrected @1 byte size.
  738. *       1.0d - Removed redundant lines from @0, shortened 31 bytes
  739. *            - added START-SR.BAT for quick start.
  740. *            - Changed c:srch.ql to c:$.qm in macros and batch files.
  741. *              so as to not overwrite qsrch.ql supplied in SRCHxx.ZIP.
  742. *            - Added killfile c:$.ql to @1 and @4.
  743. *            - Changed FC0 to fc0 in macros and batch files for better
  744. *            - visibility.
  745. *       1.0e - Added @5 for prompted replacement from command line
  746. *            - Added @6 for prompted replacement while editing
  747. *            - Added F4/F6 repeatfind/nextfile
  748. *            - Modified @4 for single search/replacement text input.
  749. *       1.0f - Modified SR.BAT and SRC.BAT
  750. *       1.0g - Modified SR.BAT, SRC.BAT and START-SR.BAT.
  751. *            - Removed INPUT.COM and INPUT.DOC pending author
  752. *              permission to include.
  753. *       1.0h - Removed SRC.BAT, Modified all macros and batch files for
  754. *              NON-case sensitive search
  755. *            - Added @7 and SRL.BAT to only load files with search text,
  756. *              no replacement
  757. *            - Modified SR.BAT to load SRCHxx.MAC on start up.
  758. *       1.0i - Modified @3 to re-load files after replacement.
  759. *            - Modified all macros and batch files for NON-case
  760. *              sensitive search, some had not been changed in v1.0h.
  761. *            - Corrected some macro byte sizes
  762. *       1.0j - Modified comments in SR.BAT, SRL.BAT
  763. *            - Modified @7 to about half the size and twice the speed.
  764. *            - Included a PCED synonym to search/load files with @7.
  765. *       1.1  - Corrected @7 macro size
  766. *            - Removed savefile from old @0
  767. *            - Modified @0 to load FGREP found text, after replacement.
  768. *            - Added [copy c:$.ql c:!] to SR.BAT
  769. *            - Changed FGREP "-f0" to "-f" in SR.BAT, loads found text
  770. *            - Removed @5, same thing can be done with @1/2 and
  771. *              manual search/replace.
  772. *            - Modified srch.ql load filelist for quicker file loading.
  773. *       1.2  - Changed "c:$.ql" to "c:!" in macros @1/4/6, shortened
  774. *              each macro 12 bytes.
  775. *       1.3  - Modified @3 to be smaller and faster.
  776. *       1.4  - Changed "*F" to #42 "Fi" in @0 and @7 to be able to load
  777. *              this file and SRL.QM with SR and SRL.
  778. *            - Modified SRL.BAT to accept SRL [search text] from command
  779. *              as long as [search text] is a SINGLE word.
  780. *            - Added altwordset to @0 and @7 to correctly load file names
  781. *              containing the following characters: !#$%&'(),-./@{}~
  782. *            - Changed .lst and .ql files.
  783. *       1.5  - Removed E:\up from SR.BAT & SRL.BAT
  784. *       1.6  - Added @8 and @9, modified SR.BAT and SRL.BAT.
  785. *            - @3 was deleting first character in loaded files,
  786. *              corrected.
  787. *       1.7  - Added @h to help locate items or macros from Index.
  788. *            - Added @5.
  789. *            - Removed @3, same thing is done better by @8.
  790. *            - Removed @4 and @6, same thing is done better with @5.
  791. *            - Modified @0 to use the "Once-Around the ring"
  792. *              technique developed by Kyle Watkins of SemWare.
  793. *            - Modified SR.BAT and SRL.BAT.
  794. *       1.8  - Replaced RepeatFind w/ Find "G" in @9.
  795. *            - Modified SR.BAT and SRL.BAT.
  796.  
  797. * Tom Hogshead  Mon  09-17-1990
  798.