* * File: MACROS.TXT -- Miscellaneous useful macros for use with QEdit * * Last revised: 4-November-1993 * * To use these macros, select the ones you like, copy them to your keyboard * configuration file (QCONFIG.DAT), (editing the key assignment if need be) * and then run the configuration program (QCONFIG) to install the new key * assignments into your copy of QEdit. * * Most of these macros assume you are using QEdit 3.0 or greater. * (Or the equivalent QEdit TSR 3.0 or QEdit for OS/2 3.0 or greater). * * * Title: Fancy home macro. * * If already at the start of a line, go to the first non-white character * on the line; otherwise, if not already at the start of a line, go to the * start of the line. * Home BegLine MacroQuitTrue FirstNonWhite * * Title: Block Cut with blank fill * * This does the same thing as Cut , but it fills the original block * with spaces. This is most useful with column blocks, when you don't want * the text "around" the block to "fill in" where the removed text was. The * macro assumes a block is already marked. The block will be [Cut] to the * clipboard or system scrap buffer. You can then insert the block where you * like by pressing the [Paste] key . * * Note: the block must be closed before this macro will work. * f10 GotoBlockBeg MacroQuitFalse Cut Paste FillBlock ' ' Return UnmarkBlock * * Title: Find with Options prompt removed. * * The first one forces a forward case-insensitive search, the second backward. * f7 Find Pause Return 'i' Return #f7 Find Pause Return 'ib' Return * * Title: Find next occurrence of the Word sitting at the cursor position * Note: if cursor is not in a word, we check left and right for a word, * if we still can't find a word, we quit. * @= MarkWord MacroQuitFalse Copy Find Paste Return Return * * Title: Find Word at cursor backwards * ^f1 MarkWord MacroQuitFalse Copy Find Paste Return "ib" Return * * Title: "Safer" WriteBlock * * All the file prompts come up with a default of the last file loaded. * However, when using WriteBlock, accepting the default could overwrite * a file you have in the editor. Here's a macro to replace that * makes sure the prompt comes up blank, and that the Overwrite/Append always * comes up defaulted to Append no matter what. * @w WriteBlock DelLine Pause Return Jump done: EndLine done: * * Title: Delete to beginning of line * ^backspace SplitLine DelLine BegLine * * Title: Duplicate "n" Lines * * The built in DupLine function duplicates the current line, and moves the * cursor down onto the duplicate. This macro does the same thing for X lines * starting from the cursor line going "UP". It will stop and prompt for the * number of lines. Press ESCAPE twice at the prompt to abort. * @d UnmarkBlock MarkLine AddLine 2 CursorUp RepeatCmd Pause Return MarkLine GotoBlockEnd CopyBlock GotoBlockEnd CursorDown DelLine 2 CursorUp * * If "Insert line blocks ABOVE cursor line?" is set to YES, use this instead: * *@d UnmarkBlock MarkLine AddLine 2 CursorUp RepeatCmd Pause Return MarkLine GotoBlockEnd CursorDown CopyBlock GotoBlockEnd CursorDown DelLine 2 CursorUp * * Title: Alternate Help File * * This allows you to have a help file much larger than one screen, by loading * it into QEdit into an editing buffer. * * Change the directory & filename here to the help or doc file that you use. * f1 EditFile 'c:\qedit\help.dat' Return * * Title: Load a file whose name is at the cursor * * This picks up a filename that is sitting at the cursor position in the * editor, and loads it into another buffer. * ^] AltWordSet MarkWord jFalse done: Copy EditFile Paste Return done: DefaultWordSet * * Title: Alternate WrapPara * * WrapPara assumes you have moved the cursor to the top of the paragraph * you wish to wrap. This macro removes this requirement by moving the * cursor there for you. This macro will re-wrap the current paragraph, no * matter where the cursor is currently sitting in it. * @b CursorDown PrevPara WrapPara NextPara * * Title: Wrap entire file * * WrapPara only affects the current paragraph. This macro repeats WrapPara * from the cursor position to the end of the file, reformatting the entire * file. NOTE: all paragraphs will be reformatted to the same margins, so * be sure this is what you want. * ^f6 EndFile AddLine BegFile BegLine again: WrapPara JTrue again: EndFile DelLine CursorUp * * Title: Absolutely Quit the Editor * * This key, when hit, will absolutely discard all files from the editor, * and exit to the DOS prompt, no questions asked. * * !WARNING!: Be careful with this one-- it will NOT prompt you to save your * work. You will lose all your work if you haven't saved it! * ^f12 again: Quit JTrue again: Escape * * Title: Delete redundant blank lines in entire file * * This macro deletes all blank lines that are adjacent to another blank line. * Useful for cleaning up files or screen captures that have too much excess * white space in them. * ^f11 fndnxt: EndPara CursorDown 2 JFalse end: blank: EndLine BegLine JTrue fndnxt: DelLine JTrue blank: end: * * Title: Worry-free Sort * * Sort only works if there is a single, non-zoomed window on the screen. * Well, rather than worry about that, how about have a macro take care of it: * #f3 GotoBlockBeg OneWindow Sort * * Title: Reload Current file * * QEdit normally never reloads a file from disk once in memory. But * sometimes the copy on disk might change while you are inside QEdit, and you * may want to see the new copy. (This could happen on a network, or if you * run a utility that can modify files, from inside QEdit using "Dos"). * * Hit this key, and no matter the state of the editing buffer, the * original copy of this file will be reloaded into the editor. This * will LOSE any and all changes you haven't saved, so BE CAREFUL! * ^f2 SplitLine EditFile CurrentFilename Return NewFile "N" Return * Here's a safer version: this one stops to let you answer the * "Save Changes?" prompt. You will have to hit RETURN to confirm the * reload of the file. * ^f3 EditFile CurrentFilename Return NewFile * * Title: An Editing Log macro * * This macro allows you to keep a "log" of the files you have edited with * QEdit. This could be useful to keep track of large multi-file projects. * * It keeps the log in the file C:\Q.LOG. When you are "done" with a file, * hit this key and it will be saved to disk, and the time and date recorded * in the LOG file. * ^f5 HorizontalWindow EditFile "C:\Q.LOG" Return EndFile AddLine BegLine InsertDate InsertTime " @" BegLine PrevWindow FindReplace "@" Return CurrentFilename Return Escape NextWindow FindReplace Return Return "N" Return SaveFile CloseWindow File * * Title: Run a Compiler Macro * * As written here, this macro will run the Turbo Pascal compiler (TPC) on the * current file, and bring the resulting error messages into a window below * the current one. Edit where it says "TPC /Q >ERRS.LST " to invoke whichever * language compiler you most often use. * @f9 OneWindow UnmarkBlock DropAnchor EditFile 'ERRS.LST' Return KillFile Quit GotoBlockBeg UnmarkBlock Dos 'TPC /Q >ERRS.LST ' CurrentFilename Return Return HorizontalWindow EditFile Return PrevWindow * Title: Delete all blank lines in a marked block * * The cursor should be at the beginning of the block when the macro is * invoked. * #f9 SetScreenOff * turn off screen for speed begin: isCursorInBlock * MacroQuitFalse * exit if not in block isEmptyLine jFalse next: * skip if not empty line isLastLine jTrue last: * special handling for last line DelLine jump begin: * delete empty lines next: CursorDown jTrue begin: * try next line MacroQuit * that's all, folks! last: DelLine * delete the last line * * Title: WordStar-like cursor left/right * * Left and Right cursor definitions that wrap to previous/next line * like WordStar does * cursorleft CursorLeft * try to go left MacroQuitTrue * succeed! then we are done CursorUp * else try to go to prev line MacroQuitFalse * if fail, then at top of file. done EndLine * jump to end of previous line. cursorright isEndLine jTrue Down: * are we at end of line? Go down CursorRight * else right one MacroQuit * Quit macro Down: CursorDown * try to go to next line MacroQuitFalse * if not goto end BegLine * else goto beginning of line * * Title: repeat GetPrev down * * A very useful QEdit command, GetPrev, copies a character from the line * immediately above the cursor line, onto the cursor line. Often it is * necessary to copy this character to several succeeding lines in the * same column. The GetPrev command, used in a macro, makes this * function easy. Assign this macro to the key (for example) in * QCONFIG.DAT as follows: * @4 GetPrev CursorLeft CursorDown * * Title: enhanced AddLine/DelLine * * QEdit's AddLine and DelLine commands do not change the cursor * position. Many would prefer that the cursor move to column one when * these commands are executed. A solution is to change the QCONFIG.DAT * file as follows: * * Default QCONFIG.DAT file: * * f2 AddLine * ^y DelLine * * Customized QCONFIG.DAT file: * f2 AddLine BegLine ^y DelLine BegLine * * Title: Enhanced Copy/Move block * * QEdit's CopyBlock and MoveBlock commands leave the copied or moved * Block marked. Many would prefer the Block to be unmarked. A solution * is to change the QCONFIG.DAT file as follows: * * Default QCONFIG.DAT file: * * @c CopyBlock * @m MoveBlock * * Customized QCONFIG.DAT file: * @c CopyBlock UnmarkBlock @m MoveBlock UnmarkBlock * Title: Alternate DropAnchor * * QEdit's DropAnchor command ends or extends a Block if executed after a * Block has been initially or entirely marked. Some editors have a * similar command, except that it acts as a toggle. That is, if you are * already marking a Block, and you press DropAnchor again, the Block is * unmarked and marking begins again at the current cursor position. To * implement this behavior, change the QCONFIG.DAT file as follows: * * Default QCONFIG.DAT file: * * @a DropAnchor * * Customized QCONFIG.DAT file: * @a UnmarkBlock DropAnchor * Title: Load sorted list of files in the current directory. * * This macro allows you to edit a sorted list of files of the current * directory. Assign this macro to the key (for example) in * QCONFIG.DAT as follows: * @5 Dos "dir *.* | sort>filedir.tmp" Return Return EditFile "filedir.tmp" Return DelLine 4 * * Title: Transpose character * * macro to "twiddle" the character at the cursor, and the one to the right * of the cursor * @f10 UnMarkBlock DropAnchor StoreScrBuff "%%%" return DelCh CursorRight GetScrBuff "%%%" return UnMarkBlock CursorLeft * * Title: PE2 like joinline * * Macro to make QEdit's joinline act line PE's joinline, e.g., force * QEdit's joinline to always concatenate the next line to the end of the * current line, regardless of the current cursor position. * Notes: Requires QEdit 2.1. * Must be on one line if processed by qconfig.exe. * Works better if "removing trailing spaces=yes" (our default) in qconfig.exe * @j isLastLine * force blank removal, and check for eof MacroQuitTrue * if at eof, we can get out now CursorRight * force some movement that we can easily undo EndLine * JoinLine * concatenate the lines PrevPosition * back to where we were before the endline CursorLeft * and undo the cursorright * * Title: Copy line above to EOL * @f1 top: GetPrev JTrue top: