The XDME Excelsior Suite v1.25 by Fergus Duniho Copyright © 1994 Fergus Duniho DESCRIPTION XES is the new name for XDMD, which stood for "XDME Macros by Duniho." I changed the name, because I want to encourage other people to contribute to it. XES is the successor to DMD, which was released for the last time a couple years ago. I recently released XDME v1.00, and I sent Aaron Digulla, the main author of XDME, a copy of XDMD v1.10. XES picks up the version numbering from XDME. XES is an integrated suite of macros, menus, keymappings, programs, and ARexx scripts for XDME. Most of XES's more commonly used features can be accessed from the menus. Here is a list of some of XES's features. Read the HISTORY for more of its features. I. Outlining II. Localized major modes A. Text mode B. Two C modes, ANSI and K&R, complete with automatic line indentation. C. A general programming mode for other languages. D. An outline mode for writing outlines, like this one. E. A proofs mode for writing logical proofs. (I'm a philosophy major.) III. Automatic major mode selection upon loading. IV. The maintenance of a "Windows" menu that keeps track of all of XDME's windows. V. Different styles of editing integrated with each other. A. Cutting and copying for all block types. B. Regions and rectangles, ala Emacs. VI. XPK support, including automatic packing or encryption upon saving, and decryption with a password requester. VII. The maintenance of a personal diary, complete with password encryption and decryption. VIII. Spellchecking via the AlphaSpell program and its accompanying dictionary. IX. Automatic pagination via the Paginate program. X. Various find and replace routines, including a Find requester and a Replace requester. The Replace requester lets you replace the word at the cursor, every occurance of the find string in the text, or every occurance in a block. XI. Various Emacs like keymappings. XII. Sundry other features. INSTALLATION To install XES, click on the install icon. This will copy files to your S:, REXX:, and C: drawers. If you don't want something overwritten, such as your current .edrc file, back it up first. Copy the dictionary to your harddrive, to a high density disk, or to a double sided diskspare disk. It is too large for a normal Amiga double sided disk. Change the value of $Dict in ".edrc" and the values of path and name in "Diary.xdme" to suit your own needs. To make full use of all its features, you will need some programs and libraries that I haven't included with XDMD. These include "xpack," "RexxArpLibrary.library," "arp.library," "rexxreqtools.library," "xpkmaster.library," various xpk compressor libraries, "rexxmast," and "move." HISTORY I. 29 October 1994 - XDMD v1.00 released. II. 1 November 1994 - XDMD v1.10 A. By taking a short detour through ARexx, I implemented arrays in XDME. The macros "set-array," "get-array," "free-array," "unset-array," and "unset-member" all work with arrays. The ARexx script LoadArray loads a file into an array. B. I used the array capability to redo how spell-checking works in XDME. Instead of using a requester, it uses LoadArray to put the list of unfound words into an array. It then redefines some keys on the numeric keypad. 1. nk1 goes to the last word in the array. 2. nk7 goes to the first word in the array. 3. nk+ moves forward through the array. 4. nk- moves backwards through the array. 5. nk2, nk4, nk6, and nk8 work as cursor keys. 6. nk3 and nk9 search forwards and backwards for the find string, which gets set to the current word in the array whenever you move through the array. 7. nk( puts the numeric keypad back in number mode. C. Yesterday, before I figured out how to implement arrays, I did some new spell-checking routines with twin variable stacks. I left the code in .edrc for anyone interested in looking at it. 1. I added the "empty-stack" macro, because "purgevar" doesn't work. D. I fixed some bugs in s-bs and s-del. I added a-d, which works like M-d in Emacs. 1. I added the "delstr" macro. E. I reset toggle 0 and set toggle 1, so that I can use variables as flags with "if," "ifelse," and "while." F. I added some numeric keypad modes. 1. "keypad-numbers" - your ordinary numeric keypad 2. "keypad-move" - the cursor movements written on the front. nk5 recenters the screen. 3. "keypad-spell" - the mode for spell checking, which I described earlier. III. 9 November 1994 - XES v1.20 A. Overhauled the menus. 1. Checkmarks indicate whether different settings are set. These get updated for whichever window you are in if you change windows with the menu. 2. Amiga key symbols have replaced "A-"s. 3. The menus have been rearranged somewhat. B. New macros: 1. "Intcmp" macro compares two numbers. With its help, nk+ and nk- never take you out of bounds when spell-checking. 2. "Prev2" macro serches backwards for the closest of two different strings. 3. "Prevf" macro searches backwards for a string, and it sets a flag if the search fails. 4. "Pos" takes a column and line number as arguments and goes there. 5. "Pos-line" indents the current line n columns from the left. 6. "Text-format" formats a paragraph according to values stored in $indcol and $parcol. $Indcol indicates how much the first line of a paragraph should be indented. The outlining macros set these values and use text-format. i. "Setindcol" sets the value of $indcol. C. New major modes: 1. Fundamental - What used to be called "Programming." 2. Programming - The tab key indents code in a general way that is helpful for programming in any language. Use a more specific mode if one is available for the language you are programming in. 3. ARexx - The tab key properly indents ARexx code so long as the strings "do" and "select" are not parts of longer strings in the code. 4. Manual - For writing manuals. D. Miscellaneous changes here and there. IV. 17 November 1994 - XES v1.25 A. An asynchronous gadtools find and replace requester. B. More Emacs and Quasi-Emacs keymappings. 1. Registers sort of like in Emacs. 2. Many keymappings converted to equivalent in Emacs. For example, "Save As" is now mapped to c-x c-w instead of to f9. 3. C-q works like it does in Emacs. After pressing c-q, you can type any character. C-x k is now the key combination for closing a window. 4. The case conversion macros now work like the equivalent in Emacs, and they have the same keymappings. 5. Major modes can easily be chosen with a c-x m combination. 6. Rectangle operations now have the same keymappings as they have in Emacs. Those which have no keymappings in Emacs are also mapped to a c-x r combination. C. #?.xsrc files for each file saved. These are files that XDME sources for an individual file after it loads it. D. The right and left Amiga keys are recognized as different. E. Clipfiles. F. The AppIcon can be turned on and off from the Settings menu. G. Automatic recognition of files encrypted with xpkIDEA.library or with xpkFEAL.library. V. 6 December 1994 - XES v1.30 A. More GadToolsBox requesters: Pens, Print, Margins, and Windows. The Windows requester replaces the Windows menu. B. A new "block-type?" macro. This one reads $block and even tells whether there is a block. Editing commands no longer require the cursor to be in the block to recognize that there is a block. C. Paginate updated. The new version indents the text body at the same column as it does the footers and headers. I have not updated the documentation for it. D. Shortlines added to Settings menu. This is like my Smartkeys mode, but it is currently exhibiting some unwanted behavior. So I put Smartkeys back in. COPYRIGHT The dictionary is public domain. Everything else in the archive is copyright © 1994 by Fergus Duniho. XES is freeware. DISTRIBUTABILITY You may freely distribute this archive so long as you leave it unchanged and make no profit from its distribution. Sale of XES is strictly prohibited. DISCLAIMER There is no guarantee that XES will do anything you want it to. I am not responsible for any damage that results from using XES. You use it entirely at your own risk. ABOUT THE AUTHOR I am Fergus Duniho. I am also the author of the DDLI, a computerized personality indicator. Get ddli341.lha from the aminet and try it out.