Annotation of researchv9/cmd/emacs/recent_changes, revision 1.1

1.1     ! root        1: SUBJECT: new features and old bugs
        !             2: 
        !             3: Version 2.4 will soon be installed as EMACS (it is now NEMACS). 
        !             4: This version allows longer files to be edited (up to about 9,000
        !             5: lines), and has several other changes.
        !             6: 
        !             7: The M-w command puts a "wall chart" of commands (the combined output
        !             8: of "M-?*" and "M-?^X*" into the current buffer.  This is a handy reference.
        !             9: 
        !            10: If you try to quit via ^X^C and tell emacs to write a buffer that
        !            11: has been modified, it will not quit if it encounters a problem (such
        !            12: as a protection violation).
        !            13: 
        !            14: Several problems in the manual have been fixed.  These were first
        !            15: discovered when Brad, a new user totally unfamiliar with emacs,
        !            16: tried to learn emacs from the manual.  The manual is in
        !            17: /n1/warren/emacs/emacs.doc
        !            18: 
        !            19: SUBJECT: Version 2.6
        !            20: 
        !            21: Version 2.6 (now /usr/obin/nemacs) has several new features.  This
        !            22: version has some modifications to the file and buffer handling, and
        !            23: there may be bugs that cause garbled files.  It will probably stay
        !            24: as nemacs for some time until I am sure that it is sound.
        !            25: 
        !            26: Non-Destructive buffer reading:  The ^X^R and M-$ commands now take
        !            27: the value of their argument to specify whether or not clear the buffer
        !            28: before reading.  If no argument is given (just
        !            29: invoke ^X^R or M-$), they clear, as they did in past versions.  If
        !            30: an argument is given, the text read is inserted into the buffer at
        !            31: the current cursor position, or at the end for M-$.   Thus if you
        !            32: type ^U^X^R and a file name, it is inserted.  If you type ^UM-$ and
        !            33: a command line, the output of the command is appended to the buffer .exec.
        !            34: 
        !            35: (almost) Unlimited Kill Buffer.  The limit on the amount of text you
        !            36: can kill and still receive is now 256K characters.  The kill buffer
        !            37: is kept in a file, and the only limit is the amount of stuff you
        !            38: want to clutter up the file system with.  As before, only the last 8
        !            39: deletions are remembered.
        !            40: 
        !            41: Reading a file without re-initializing the buffer, or retrieving
        !            42: lots of killed text, take lots of time if the cursor is in the
        !            43: middle of a line (i.e. there is text to the right of the cursor). 
        !            44: You can save a lot of time by opening up a line, doing the read or
        !            45: retrieval, and then killing the leftovers.
        !            46: 
        !            47: SUBJECT: version 2.7
        !            48: 
        !            49: version 2.7 contains many non-visible changes to reduce memory usage
        !            50: and improve efficiency.  The visible changes in version 2.7 are
        !            51: 
        !            52: support for HP terminals (terminal type hp)
        !            53: 
        !            54: An improved re-display algorithm that sometimes scrolls the screen.
        !            55: 
        !            56: ^Z now does exactly what ^X^C did.
        !            57: 
        !            58: The ^X^T command takes the marked region in the current buffer and
        !            59: inserts it into a second buffer.
        !            60: 
        !            61: Mail will now take any number of lines starting TO: or CC: for the
        !            62: destination of the mail.
        !            63: 
        !            64: EMACS will not try to write buffers with a null file name after ^X^C
        !            65: or ^X^S
        !            66: 
        !            67: SUBJECT: new features in EMACS 2.8
        !            68: 
        !            69: New commands:
        !            70: 
        !            71:        ^X= will print out the character position of the cursor in
        !            72: the buffer and the total number of characters in the buffer.
        !            73: 
        !            74:        M-" will re-adjust the lines in the buffer so that each line 
        !            75: has 72 or fewer characters.  Blank lines, or lines starting with '.'
        !            76: or '`' are not changed (these are nroff control lines).
        !            77: 
        !            78: Other new features:
        !            79:        You now have 12 marks available for the commands dealing
        !            80: with marks.  If you specify no argument to commands using marks,
        !            81: they will use a different mark in each buffer.  By specifying an
        !            82: argument to commands using marks, you can explicitly set two or more
        !            83: marks in the same buffer.  See the documentation for more details.
        !            84: 
        !            85:        You can now set default modes for a file by putting the
        !            86: string EMACS_MODES: anywhere in the first 10 lines of a file,
        !            87: followed by a description of the modes to set.  For example, the string
        !            88: /* EMACS_MODES: c, !fill, tabstop=3 */
        !            89: in a c source file will turn on c mode, turn off fill mode, and set
        !            90: the number of spaces per tab in the display to 3.  For more details,
        !            91: see the document.
        !            92: 
        !            93:        When EMACS asks "continue?" after executing a unix command
        !            94: or listing active buffers, if you type 'y', ' ', or (return), EMACS
        !            95: will go back to the buffer.  Otherwise, it will ask for another unix
        !            96: command or another buffer name.  You can also get a list of active
        !            97: buffers by entering (return) in response to any of the commands
        !            98: that ask for a buffer name.
        !            99: 
        !           100: SUBJECT: new features in EMACS 3.0
        !           101: 
        !           102: There is now a way to pass the contents of the current buffer as
        !           103: standard input to a command.  Preceding meta-! (execute unix
        !           104: command) with ^U causes it to pass the buffer as standard input. 
        !           105: This does not work for meta-$.  (Sorry, but there is no obvious way
        !           106: to do this without the possibility of deadlock.)
        !           107: 
        !           108: There are several minor bug fixes in this version.
        !           109: 
        !           110: The undocumented game of life command (M-#) has been deleted.  If
        !           111: there is any interest in it, I will keep a version that has this feature.
        !           112: 
        !           113: The big change here is the ability to define new commands.  Basically,
        !           114: any sequence of emacs commands can be defined as a command.  There
        !           115: are additional commands for sequencing execution, and for obtaining
        !           116: information from the terminal.  A brief description of the new
        !           117: commands is available in /n1/warren/emacs/macro.mm (mm source) or
        !           118: /n1/warren/emacs/macro.xopr (xopr'able copy).  Some sample macro
        !           119: definitions are available in the directory /n1/warren/emacs/macros.
        !           120: 
        !           121: SUBJECT: new features in EMACS 3.1
        !           122: 
        !           123: Several new features relating to macros:
        !           124:        The ^X% command which exchanges the top of the kill stack with
        !           125:        the item identified by the argument.
        !           126: 
        !           127:        All of the commands that access the kill stack
        !           128:        (^Y,^X-,^X>,^X%, etc) now return 1 as a result if successful
        !           129:        and 0 if there are not enough items in the kill stack to
        !           130:        satisfy the request.
        !           131:        
        !           132:        EMACS will not ask Continue? after commands, buffer display,
        !           133:        statistics, and similar commands when the command is invoked
        !           134:        in a macro.  You can use ^X< to ask Continue? if you like.
        !           135:        
        !           136:        M-s now displays the amount of buffer space left for editing
        !           137:        or macro text.  You need a minimum of 1024 characters.
        !           138: 
        !           139:        The buffer name ... is now special.  If you create a buffer
        !           140:        named ..., it will create a new buffer with a unique name
        !           141:        instead.  This is useful for creating temporary buffers in macros.
        !           142:        
        !           143:        M-x can now be used to call macros by names, rather than always
        !           144:        invoking a macro by a character.  This should help in the
        !           145:        construction of macro libraries.
        !           146:        
        !           147:        ^X& compares two strings for a macro
        !           148: 
        !           149: SUBJECT: new features in EMACS 3.2
        !           150: 
        !           151: Several miscelaneous display bugs have been fixed
        !           152: 
        !           153: A new mode parameter (keepscroll) has been added.  This is initially
        !           154: 0 and can be set to the number of lines that you wish to keep from
        !           155: the last screen when going forward or backward by pages (^V or M-V)
        !           156: 
        !           157: If you give an argument to ^L, it specifies the number of lines to
        !           158: appear on the screen before the current line when the display is rereshed.
        !           159: 
        !           160: The command ^X^^ causes one line to be added to the current window
        !           161: when in two window mode.
        !           162: 
        !           163: The command ^X^U causes the display to be updated and causes EMACS
        !           164: to delay for n seconds, where n is the argument to ^X^U.  This is
        !           165: useful in macros.
        !           166: 
        !           167: The command M-] causes the last numeric argument to a macro to be
        !           168: passed as the argument to the current command.
        !           169: 
        !           170: By popular demand, EMACS will now ask whether or not to write a
        !           171: buffer that contains text and has no file name associated with it.
        !           172: 
        !           173: SUBJECT: new features in EMACS 3.3
        !           174: 
        !           175: The command ^X! starts a case statement in a macro (see the macros
        !           176: memo for details)
        !           177: 
        !           178: The redisplay heuristics have been improved for terminals that have
        !           179: insert/delete line and insert/delete character capabilities (hp,
        !           180: adm31, vt100, etc.)
        !           181: 
        !           182: The command M-~ marks a buffer as not being up to date without
        !           183: writing it out.
        !           184: 
        !           185: The .emacs_init file is now run before reading in a file specified
        !           186: on the command line.  This should reduce unwanted display on
        !           187: starting up.
        !           188: 
        !           189: I am now maintaining a library of macros in /n1/warren/emacs/macros.
        !           190: There are macros for various purposes, such as dealing with unix
        !           191: mail, keeping track of refrences for mm, a help function for emacs
        !           192: commands, balancing parentheses, etc.  Anyone interested in
        !           193: submitting macros should follow the rules outlined in the
        !           194: LIBRARY_RULES file, and send them to me.
        !           195: 
        !           196: SUBJECT: new features in EMACS 3.4
        !           197: 
        !           198: EMACS will now expand environment variables, such as $HOME or $MAIL,
        !           199: in pathnames for reading, writing, and finding files.  Asteristisks
        !           200: in file names (ie *.c) are still not expanded.
        !           201: 
        !           202: EMACS will not print prompts from commands read from an init file or
        !           203: form files read with ^X^I. This should cut down on annoying output
        !           204: at startup.
        !           205: 
        !           206: A negative argument to a command can be specified with escape, '-',
        !           207: followed by the number.  Most commands treat their argument as
        !           208: unsigned, so a negative argument is treated like a large positive
        !           209: argument.  For some commands, negative arguments cause special effects.
        !           210: 
        !           211: Passing a negative argument to ^X< causes a prompt to be given, and
        !           212: a single character to be read from the terminal as the result.
        !           213: 
        !           214: The command M-: allows you to re-map character commands.  It prompts
        !           215: for a character (or a meta or ^X sequence) and a command  (also a
        !           216: character sequence) to put on that character.  This allows you to
        !           217: re-configure EMACS to your liking.
        !           218: 
        !           219: The regular expression search facility (M-^S) has been improved.  You can
        !           220: now search forward or backward, either ending at the beginning or end of
        !           221: buffer, or wrapping around (like ed).  With a positive argument, the
        !           222: search is forward, while a negative argument searches backwards.  An
        !           223: argument of 1 or -1 causes the search to wrap, failing only if there
        !           224: is no occurance of the expression in the buffer.  Any other argument
        !           225: causes the search to stop at the beginning or end of file.  Note
        !           226: that the default (argument = 1) does exactly what the old one did.
        !           227: Entering ^S or ^R immediately following a regular expression search
        !           228: will find the next or previous occurance of the expression.
        !           229: 
        !           230: ***********Note to EMACS maintainers*************
        !           231: 
        !           232: As of version 3.4, the file regexp.h is no longer needed.  The
        !           233: makefile has been updated to reflect this, and you will not receive
        !           234: this file in future updates.
        !           235: 
        !           236: Beginning with version 3.5, EMACS will maintain error messages in a
        !           237: separate file (errfile).  This is produced like the helpfile.  Also
        !           238: beginning with this version the pathnames for the help and error
        !           239: files will be automatically set to the directory from which make is
        !           240: invoked.  Thus you do not need to change any pathnames unless you
        !           241: plan to keep the error, help, and statistics files in some other
        !           242: location on your system.  This should simplify making EMACS.
        !           243: 
        !           244: ***************************************************************
        !           245: 
        !           246: SUBJECT: new features in EMACS 3.5
        !           247: 
        !           248: Passing an argument to ^X^W (i.e. ^U^X^W) will cause the contents of the
        !           249: buffer to be appended to the specified file, rather than replacing it.
        !           250: 
        !           251: There is a new mode: caseless.  Setting this mode will cause case to be
        !           252: ignored in searches and replaces.
        !           253: 
        !           254: EMACS will now periodically check to see if you have received mail. 
        !           255: If so, it will print a warning at the bottom of the screen and beep.
        !           256: 
        !           257: You can now use \ folowed by a single digit in the "To? " string for
        !           258: regular expression query replace to specify replacement by a
        !           259: sub-expression of what was matched.  This works just like it does in ed.
        !           260: 
        !           261: You can now have local variables within a macro.  This is done through
        !           262: the ^] ad M-^] commands.  ^] returns as its result the value of a
        !           263: local variable selected by its argument.  M-^] assigns the result of
        !           264: the following command to a local variable selected by the argument
        !           265: to M-^] and returns as its result the previous value held by the
        !           266: variable.  You can have up to 10 local variables in each macro.  For
        !           267: compatibility with the previous definition of ^], local variable
        !           268: number 1 in each macro invocation is initialized to the argument
        !           269: given to the macro.
        !           270: 
        !           271: There is a new mode, rigid_newline, that will cause a newline or carriage
        !           272: return to always insert a newline into the file, even if the
        !           273: following line is blank.
        !           274: 
        !           275: Typing ^Z in response to an error message will no longer result in a
        !           276: core dump, but will ask if you want to write out modified buffers
        !           277: before exiting.
        !           278: 
        !           279: Regular expression querry replace will check for matching something
        !           280: at the end of a line, and move to the next line if so, so that you
        !           281: will not get into an infinite loop replacing the end of a line with
        !           282: something else.
        !           283: 
        !           284: ^N will no longer go beyond the end of the buffer.
        !           285: 
        !           286: The displays for search and querry replace have been changed somewhat to
        !           287: give you immediate feedback in response to characters typed before
        !           288: long searches.
        !           289: 
        !           290: SUBJECT: new features in EMACS 3.6
        !           291: 
        !           292: There is now a default match in the macro case construct.  See the
        !           293: macro memo for details.
        !           294: 
        !           295: The display algorithm has been changed somewhat to avoid centering
        !           296: the window every time that you change buffers.  This should make
        !           297: macros like abbrev, that changes to another buffer to look up the
        !           298: abbreviation, more acceptable on slow terminals.
        !           299: 
        !           300: The special character sequences \< and \> can be used to delimit a
        !           301: word in a regular expression.  The regular expression "\<the\>"
        !           302: matches an occurance of the word "the" (but not the delimiters on
        !           303: either side).  Words are delimited by line boundaries, white space,
        !           304: punctuation, and control characters.
        !           305: 
        !           306: The new command ^X+ causes the next item put in the kill stack to be
        !           307: appended to the last item put in the kill stack.  See the macros manual for
        !           308: more details and cautions.
        !           309: 
        !           310: Minor changes:  
        !           311: 
        !           312:        ^X^S on a buffer without a file name will fail in a
        !           313:        macro, rather than asking for a file name.
        !           314: 
        !           315:        The algorithm used to find sentence beginning and end has
        !           316:        been changed somewhat.
        !           317: 
        !           318:        The change mode command (^X^M) now returns the previous value of
        !           319:        the mode set as its result.  
        !           320: 
        !           321:        There is a new mode (end_newline) which when set causes ^N
        !           322:        at the end of a buffer to extend the buffer by one line like
        !           323:        it used to before version 3.5.
        !           324: 
        !           325: New Macros:
        !           326:        
        !           327:        There is a new macro package called tags in
        !           328:        /n1/warren/emacs/macros that facilitates working with a
        !           329:        group of related files.  See /n1/warren/emacs/macros/CATALOG
        !           330:        for details
        !           331: 
        !           332: DIRED changes:
        !           333:        If you give dired an argument beginning with a dash, it is taken
        !           334:        as additional arguments to the ls -al command used to
        !           335:        produce a listing for dired.  Thus "dired -t" produces a
        !           336:        time sorted listing of the current directory, "dired -t
        !           337:        /usr/bin" produces a similar listing of /usr/bin.
        !           338: 
        !           339: SUBJECT: new features in EMACS 4.0
        !           340: 
        !           341: There is a new terminal support mechanism in EMACS 3.7.  This allows
        !           342: me (or anyone) to construct terminal description files for terminals
        !           343: without re-compiling.  This will allow many more terminal
        !           344: descriptions and synonyms, easing compatibility problems with EX. 
        !           345: It also lets us define "funny" terminals, such as vt100 in 80 column mode.
        !           346: 
        !           347: This version makes use of the (crude) terminal improvements in UNIX
        !           348: 3.0 to read-ahead, and hopefully reduce re-display somewhat on slow
        !           349: terminals.  System support for this is still very poor, thus there
        !           350: is little I can do.
        !           351: 
        !           352: There are lots of new features for DIRED, see the manual page or
        !           353: memo for details.
        !           354: 
        !           355: ^X= has been changed to give lots more information.
        !           356: 
        !           357: There are two new modes, tspeed and usilent.  
        !           358: 
        !           359: tspeed is the speed of
        !           360: your terminal in miliseconds per character.  tspeed is used by emacs
        !           361: in determining how to update the screen, and is set automatically
        !           362: whenever you enter or exit emacs.
        !           363: 
        !           364: usilent causes emacs not to display the command line or output of
        !           365: M-$ commands.  This is useful for running unix commands silently
        !           366: from macros.
        !           367: 
        !           368: The new command ^X^N allows you to change the buffer name or the
        !           369: file name associated with a buffer without changing the contents of
        !           370: the buffer.
        !           371: 
        !           372: The buffer re-display algorithm has been changed.  This should eliminate
        !           373: several display bugs and make it much easier to maintain.  Report
        !           374: any bugs in terminal support or display.
        !           375: 
        !           376: There is a new macro library (/n1/warren/emacs/macros/crypt) for
        !           377: those who like encrypted files.  See /n1/warren/emacs/macros/CATALOG
        !           378: for details.
        !           379: 
        !           380: SUBJECT: new features in EMACS 4.2
        !           381: 
        !           382: There is a new command line option, "-i <filename>" which lets you specify
        !           383: an additional initialization file.  The file <filename> will be run after
        !           384: your standard init file and before any file name specified on the
        !           385: command line is read in.  Recall that init files contain sequences
        !           386: of emacs commands.
        !           387: 
        !           388: The algorithm for determining terminal type has changed slightly. It
        !           389: first checks $TERM, then runs your init file, and if terminal type
        !           390: still hasn't been determined, asks for it.
        !           391: 
        !           392: The command ^X= has been changed to return status information when
        !           393: invoked in a macro, depending on its argument.  You can get file or screen
        !           394: line and character positions. See the macros document for details.
        !           395:  
        !           396: ^X^F or ^X^R will not give an error if the file cannot be read when
        !           397: invoked with a negative argument.
        !           398: 
        !           399: You can now re-map any command using M-:.  This allows, for example,
        !           400: mapping some more convenient key to escape on a terminal where
        !           401: escape is not in a convenient place.
        !           402: 
        !           403: NEW modes:
        !           404: 
        !           405:        notabs mode causes emacs to display tabs as ^I (rather than
        !           406:        white space), and to insert spaces up to the next tab
        !           407:        boundary when the tab key is pressed (unless the tab is
        !           408:        quoted with ^Q).
        !           409:        
        !           410:        readonly mode causes emacs to refuse to save the current
        !           411:        buffer back to the associated file and to not save the
        !           412:        buffer in auto save mode.  You can still save by writting to
        !           413:        a file explicitly with ^X^W.
        !           414:        
        !           415:        controlify mode allows you to use the character ^^ 
        !           416:        (control-uparrow) to make the next character a control
        !           417:        character.  This is primarily useful for using emacs over cu
        !           418:        (uucall, cuu) links, which swallow ^S and ^Q, or on a
        !           419:        console terminal, which swallows ^O.
        !           420:        
        !           421: SUBJECT: new features in EMACS 4.3
        !           422: 
        !           423: Failing Searches inside of macros no longer beep.
        !           424: 
        !           425: The mail command has been modified to support the header format used
        !           426: by other unix tools and by the arpanet community.  The principal
        !           427: changes are to define the header of a mail item to be all of the
        !           428: lines up to the first blank line, and to have M-^M look for lines
        !           429: beginning To: or Cc: (Instead of TO: and CC:) to specify the recipients.
        !           430: The old format will continue to be supported for some time, and old
        !           431: header lines will be converted to new headers before the mail is sent.
        !           432: 
        !           433: New support has been added for terminals that underline, and terminals with
        !           434: a forms-editing style insert character mode (like the concept-100). 
        !           435: On terminals with underlining capabilities, the backspace mode is on
        !           436: by default, and positions that are over struck with an underscore
        !           437: will be underscored on the display.  Turning backspace mode off
        !           438: causes backspaces to appear as ^H, and nothing to be underscored.
        !           439: 
        !           440: Emacs will now send you mail when it is killed (i.e. hung up on from
        !           441: a dialup terminal) and saves buffers.
        !           442: 
        !           443: Emacs will only ring the terminal bell after the first "you have
        !           444: mail" warning.  If you don't read the mail, the warning will stay on
        !           445: the screen but emacs will not beep.
        !           446: 
        !           447: Emacs will now preserve owner and group when writing files.  It also
        !           448: warns you when you try to write to a file that you do not own.
        !           449: 
        !           450: New command: ^X^A.  This command puts the first un-processed command
        !           451: line argument on the kill stack.  See macros document for details.
        !           452: 
        !           453: MACRO changes:
        !           454: 
        !           455: rmail has been extended to provide local, btl-wide, and arpanet signatures,
        !           456: for mail replies depending on the destination.  It has also been
        !           457: modified to support standard mail headers.
        !           458: 
        !           459: There is a new macro package (vmail) that automatically responds to
        !           460: your mail while you are on vacation.
        !           461: 
        !           462: SUBJECT: changes in emacs_4.4
        !           463: 
        !           464: Several bugs in regular expressions having to do with ranges of
        !           465: repeats (\{n,m\}) have been fixed.  Also, a new operator '+' has
        !           466: been defined to mean 1 or more occurance of what preceeds it, as it
        !           467: does in common use of regular expressions.
        !           468: 
        !           469: The newline function has been changed so that the only time it does
        !           470: not insert a new line is when you are at the end of the current
        !           471: line, the next line is blank, and you are not in "rigid_newline" mode.
        !           472: 
        !           473: Autofill and fill buffer have been slightly modified.  Autofill will
        !           474: now consider the whole line for possible breaking whenever you type
        !           475: a space or tab.  This means that if the line is several words over
        !           476: the line length, and you type space, several words will move to the
        !           477: next line instead of just the last word.  
        !           478: 
        !           479: Fill buffer will now act
        !           480: just on the marked region (Actually the first character of the first
        !           481: line marked to the last character of the last line marked)  when
        !           482: given an argument.  The whole region is considered as one block to
        !           483: fill, irrespective of paragraph boundaries or blank lines, although
        !           484: it still avoids breaking lines in such a way that a '.' or ''' is
        !           485: put at the front of a line.
        !           486: 
        !           487: The new command ^X@ works just like ^^X<, except that it takes the
        !           488: string used for prompting
        !           489: from the kill stack (or from the user if invoked from the
        !           490: terminal)  This allows you to alter the string used for prompting
        !           491: rather than compiling it in.
        !           492: 
        !           493: The ^X^O command now returns 1 if both windows contain the same
        !           494: buffer, 0 if the windows contain different buffers, and -1 if it is
        !           495: called in one window mode.
        !           496: 
        !           497: Querry replace will now display the from and to strings at the
        !           498: bottom of the screen.  It also has a new option 'b' which causes it
        !           499: to go backwards to the previous occurance of the To string.  (Note
        !           500: that this means find the previous occurance in the current file and
        !           501: does not find something that has already been replaced!).  Query
        !           502: replace also remembers the most recent replacement string and will
        !           503: substitute it for a replacement string consisting of a single '%'
        !           504: character.  
        !           505: 
        !           506: The grow/shrink window  command (^X^^) will now expand or contract
        !           507: the display window while in 1 window mode as well as two window
        !           508: mode. The mode and echo lines remain at the bottom of the screen
        !           509: independent of window size.
        !           510: 
        !           511: Emacs will now expand all of the usual shell meta characters in
        !           512: filenames.  Thus you can read "*.c", or `logdir usa`/.profile.  In
        !           513: all cases, only the first "word" (up to the first whitespace
        !           514: character) is used from the expansion.  Thus when specifying files
        !           515: with "*", only the first match is found.  The expansion of shell
        !           516: meta characters is slow, since emacs runs a subshell to do it.
        !           517: 
        !           518: There is a new mode (display_percent) which will display the current
        !           519: file position as a percentage of the number of lines in the file
        !           520: when turned on.
        !           521: 
        !           522: Two new operators have been added to convert between numeric and
        !           523: string values.  With an argument of 16, ^X~ will convert the result
        !           524: of the next command to a string and put it on the kill stack.  With
        !           525: an argument of 17, The top item on the kill stack is converted to an
        !           526: integer and returned as the result of ^X~.  See the macros document
        !           527: for details.
        !           528: 
        !           529: Emacs now strips leading tabs and blanks from macro definitions when
        !           530: they are loaded in order to reduce storage requirements.  Although
        !           531: it is possible to construct a macro that would be effected by this
        !           532: change, it does not occur with normal coding practices.
        !           533: 
        !           534: SUBJECT: changes in emacs_4.5
        !           535: 
        !           536: Added a new command (M-E) which expands an environment variable and
        !           537: returns its value (or a null string) on the kill stack.  The return
        !           538: value of M-E is 1 if the string fed to it matched an environment
        !           539: variable, and 0 otherwise. (12/22/81)
        !           540: 
        !           541: Added a new option to query replace.  When you respond with ".",
        !           542: query replace replaces the current occurance and exits query
        !           543: replace. (12/29/81)
        !           544: 
        !           545: New Meta character for file names: (12/30/81)
        !           546: 
        !           547: Emacs now interprets the tilde character (~) in filenames as meaning
        !           548:        "home directory" like the C shell.  Emacs will take the
        !           549:        characters following the ~ up to the next word separator as
        !           550:        the login name of a user and translate the entire sequence
        !           551:        to that user's home directory.  A null user name is taken as
        !           552:        your own, while the special user name EMACS is mapped to the
        !           553:        emacs data directry (contains the macro library and other
        !           554:        emacs related files).  Thus ~/.profile references
        !           555:        your .profile, ~foo/.profile references the .profile for
        !           556:        user foo, and ~EMACS/macros/crypt references the crypt macro
        !           557:        package.
        !           558: 
        !           559: Emacs will now take a full path name to specify the terminal
        !           560:        description file either in the TERM environment variable or
        !           561:        with the M-t command.  This allows a user who does not have
        !           562:        control of the terminals database to customize his own
        !           563:        terminal description to meet special needs.
        !           564: 
        !           565: Emacs now responds to a break signal.  When a break is detected,
        !           566: emacs stops what it is doing and prompts the user.  You have 5 options:
        !           567: 
        !           568:        'y' or ' ' causes a "recursive edit" to be invoked on top of
        !           569:        whatever you were doing.  Entering ^Z from the recursive
        !           570:        edit will return you to the break message.
        !           571:        
        !           572:        'n' (no break) causes emacs to resume whatever was in
        !           573:        progress when break was detected.
        !           574:        
        !           575:        '^G' (quit) causes emacs to abandon what was interrupted and
        !           576:        unwind to the top level.  Any macros or init files being
        !           577:        executed are abandoned.
        !           578:        
        !           579:        '^Z' Causes emacs to exit, after asking about saving any
        !           580:        modified buffers.
        !           581: 
        !           582:        '^]' Causes emacs to crash leaving behind a core dump.  (Not
        !           583:        terribly useful except for my debugging!)
        !           584: 
        !           585: This allows you to interrupt a looping macro or long running search
        !           586: and to escape from it if necessary.
        !           587: 
        !           588: MAILER parameter:  If you set the environment variable $MAILER,
        !           589: emacs will take it as the name of the command to run to send mail
        !           590: when M-^M is invoked.
        !           591: 
        !           592: More editing for string parameters: (3/1/82)
        !           593: 
        !           594:        You can now edit string-valued parameters (Like filenames or
        !           595:        unix commands) Using ^A, ^E, ^F, ^B, ^D, ^K ^U and ^?
        !           596:        If you type characters in the middle of a line, they are
        !           597:        inserted in place.
        !           598: 
        !           599: Keyboard Macros: (6/15/82)
        !           600: 
        !           601:        You can now tell emacs to remember a sequence of keystrokes
        !           602:        to be re-executed whenever you want.  ^X( tells emacs to
        !           603:        start remembering, ^X) ends the remembered sequence, and ^XE
        !           604:        executes it.  ^X( and ^X) do not interfere with normal
        !           605:        editing, however the saving causes some overhead, as
        !           606:        characters received from the keyboard are written one at a
        !           607:        time into a file ($HOME/.emacs_kbd) to be re-invoked.  Note
        !           608:        that you can use this feature to record a backup script of
        !           609:        your editing session.
        !           610:        
        !           611: Picture Editing Modes:  (6/6/82)
        !           612: 
        !           613:        Two new modes have been added to facilitate editing of pictures:
        !           614: 
        !           615:        "picture" mode treats the buffer as an electronic blackboard
        !           616:        extending infinitely to the right and down.  The screen is a
        !           617:        window into this blackboard.  Text to the right of the window is
        !           618:        not shown  (As in normal mode, a ! appears at the right margin,
        !           619:        but the rest of the line is invisible.)  The horizontal position
        !           620:        of the left most character position displayed is given on the
        !           621:        mode line to the left of the editor name, if it is not zero. 
        !           622:        The screen automatically scrolls left or right to keep the
        !           623:        cursor in view.  Several commands behave differently in
        !           624:        picture mode:
        !           625:        
        !           626:        ^N/^P   These keep the same character position.  If the line
        !           627:                being moved to is not long enough, it is extended.
        !           628: 
        !           629:        ^F/^B   These will not go off of the current line.  Movement
        !           630:                to the right causes the line to extend, movement to
        !           631:                the left stops at the left margin.
        !           632:                
        !           633:        Deletions and ^Y.  These treat the region to be deleted as a
        !           634:                rectangle on the screen.  For example, ^W takes the
        !           635:                mark as one corner and the cursor position as the
        !           636:                other corner of a rectangle and deletes its
        !           637:                contents.  Likewise, ^Y retrieves text in the same
        !           638:                fashion.  (This makes most sense with nodelete mode
        !           639:                and overwrite mode.  See below).
        !           640:                
        !           641:        "nodelete" mode directs emacs not to remove text that is
        !           642:        deleted via text deletion commands, but to overwrite it with
        !           643:        blanks.  This should probably be the behavior associated
        !           644:        with overwrite mode, but for compatibility, they are treated
        !           645:        separaterly.
        !           646:        
        !           647:        These two modes are intended to work together with overwrite
        !           648:        mode to give you an editor designed to work with two
        !           649:        dimensional displays of textual information.  Using these
        !           650:        modes in other combinations may cause somewhat strange
        !           651:        behavior.  In addition, commands may not behave exactly as
        !           652:        expected if the file being edited contains tabs, backspaces,
        !           653:        or control and meta characters.  If this is a serious
        !           654:        problem, I can consider fixing it, but this would not be a
        !           655:        simple fix!
        !           656:        
        !           657:        Enjoy
        !           658:        
        !           659: SUBJECT: changes in emacs_4.6
        !           660: 
        !           661: Dired now does recursive edits in the same process, allowing you to
        !           662: peruse a directory structure much quicker.  If you try to read a
        !           663: file with dired, it will display the contents, not the directory
        !           664: listing.  
        !           665: 
        !           666: Emacs has some hooks to interface to the blit terminal.  These
        !           667: include a new command (^Xg) for use in positioning from input from
        !           668: the mouse, and a new method of spewing out raw text to the terminal
        !           669: (M-3^X<) that can be used to download control information directly
        !           670: into the terminal, and a feature that enables emacs to discover the
        !           671: window size of the current layer.  For more information, see the
        !           672: blit.info file in the macros directory.
        !           673: 
        !           674: Emacs will read and write encrypted files via the unix crypt
        !           675: program.  The command ^Xk prompts for an encryption key.  All
        !           676: subsequent reads, writes, and saves use that key in saving.  This
        !           677: also applies to files saved in case of crashes, and to the temporary
        !           678: files used by emacs (though the encryption algorithm used for
        !           679: temporary files is not the standard one).  Running emacs with the
        !           680: command line flag "-x" will cause emacs to prompt for a key name
        !           681: before reading the file specified on the command line.  For both
        !           682: this and ^Xk, the key is echoed on the screen, but disappears as
        !           683: soon as you hit return.
        !           684: 
        !           685: Performance on editing large files should be improved substantially.
        !           686: Startup for all size files should be faster.
        !           687: 
        !           688: There is a new option to querry replace.  Typing <escape> to the
        !           689: prompt during querry replace will cause it to ask for a new string
        !           690: to substitute.  Unless you type ^G, this will become the new string
        !           691: to substitute in subsequent instances (^G exits querry replace).
        !           692: 
        !           693: Lowercase letter command: M-l.  Converts the next character to lower
        !           694:        case.
        !           695: 
        !           696: Screen goto command: ^Xg
        !           697: 
        !           698:        This command goes to a screen position.  It is intended to
        !           699:        help interface to terminals with a mouse, or other
        !           700:        positioning device.  The command takes its argument and
        !           701:        decodes it as: Row=arg%128,Col=arg/128, where row 0,col 0 is
        !           702:        the upper left hand corner of the screen.  It then goes to
        !           703:        the requested position, changing windows if appropriate. 
        !           704:        Attempts to position to most "illegal" positions result in
        !           705:        going to the nearest legal position, however positioning
        !           706:        into the echo area or off the bottom of the screen result in
        !           707:        no movement.
        !           708:        
        !           709: The display of time and "you have mail" has been changed somewhat. 
        !           710: The effect should be that both messages will now appear on the line
        !           711: below the mode line when appropriate, and both will be updated when
        !           712: your terminal sits idle.  You may notice the mail message appearing
        !           713: and disappearing at different times than it did before.
        !           714: 
        !           715: New Modes:
        !           716: 
        !           717: ctl_char:      The character to be used to specify that the next
        !           718:                character is to be made a control character when
        !           719:                controlify mode is on.  The mode is the ascii value
        !           720:                of the character.
        !           721: 
        !           722: flow_lim:      An integer specifying control over xon/xoff flow
        !           723:                control.  If flow_lim is non-zero, emacs will enable
        !           724:                xon/xoff flow control whenever more than flow_lim
        !           725:                characters are sent to the terminal at one time. 
        !           726:                This will also cause typeahead of ^S or ^Q to be
        !           727:                mis-interpreted.  This mode should be set only if
        !           728:                xon/xoff flow control is absolutely required for
        !           729:                correct operation.  Under normal conditions, emacs
        !           730:                supplies sufficient padding to terminals to allow
        !           731:                operation at all speeds without xon/xoff flow
        !           732:                control.
        !           733:                
        !           734: eofnl:         an on/off mode specifying that a newline will be
        !           735:                appended to any file written from a buffer not
        !           736:                containing a newline.  This mode defaults to ON.  If
        !           737:                you want to edit files that you do not want to end
        !           738:                in a newline, turn this mode off.
        !           739:        
        !           740: SUBJECT: changes in emacs_4.7
        !           741: 
        !           742: 4.6a,b,c:      Added checks on reading/writing files for concurrent
        !           743:                access by other processes.  Emacs will complain if
        !           744:                you try and write to something that someone modified
        !           745:                while you were editing it.  It will not let you
        !           746:                overwrite the other changes.  You must save your
        !           747:                buffer in some other file, then find out what's
        !           748:                wrong.
        !           749:                
        !           750: 4.6d:          Lots of minor bug fixes, including fixes to dired.
        !           751: 
        !           752: 
        !           753: 4.6d:          Macro trace command (^XT).  This command traces the
        !           754:                execution of the next command. Each primitave
        !           755:                command is printed as it is executed, along with the
        !           756:                argument and result.  Retrievals from the kill stack
        !           757:                are also displayed so that you can see the arguments
        !           758:                passed to commands that take string arguments. 
        !           759:                Emacs pauses after every command for you to hit a
        !           760:                key.
        !           761: 
        !           762: 4.7:           Improved macro capabilities.  A macro compiler that
        !           763:                compiles a lisp like language into the familiar and
        !           764:                uncomprehensible macro language of the past.  This
        !           765:                is separately described (in the nroff file
        !           766:                ecompile).  In connection with this change, the
        !           767:                following additions/changes were made to the basic
        !           768:                macro language:
        !           769:                
        !           770:                a)      Expanded naming.  There is now no limit on
        !           771:                        the number of named macros.  calling/called
        !           772:                        names must matched exactly now.  (The old
        !           773:                        system allowed any prefix, and just caused
        !           774:                        confusion.)
        !           775:                b)      New numeric operations for bitwise and, or,
        !           776:                        and xor.  (see macro.mm for details)
        !           777:                        
        !           778:                c)      New string operations for append strings,
        !           779:                        substring, index, and string length.
        !           780: 
        !           781:                d)      New operation to convert strings to pointers
        !           782:                        and vice versa.  This supports the string
        !           783:                        variables.
        !           784:                        
        !           785:                e)      Named global variables (seem macro
        !           786:                        documentation for details)
        !           787:                        
        !           788:        new modes:
        !           789:        
        !           790:        autoload mode (defaults to on) 
        !           791:        
        !           792:                causes a call of a macro by name from another macro
        !           793:                to try to load a file with the same name as the
        !           794:                macro from either the directory specified by
        !           795:                environment variable $EMACS_LIB, or the directory
        !           796:                ~EMACS/macros.
        !           797: 
        !           798: 4.7:   Display enhancement.  Emacs will now display the current line
        !           799:        first whenever re-drawing a large portion of the screen, provided
        !           800:        that your terminal has either insert/delete line or selective
        !           801:        scrolling capability.
        !           802: 
        !           803: Subject: New features in emacs versions 4.8 and 4.9
        !           804: 
        !           805: 1)     Undo command.  M-u will undo the last significant text
        !           806:        change.  Deletions, insertions, the effect of m-y, can all
        !           807:        be undone.  Replacements can sometimes be undone.  (If there
        !           808:        weren't more than about 10 individual replacements done). 
        !           809:        Undo is it's own inverse.  
        !           810:        
        !           811: 2)     Macro hooks.  Macros defined with particular names will be
        !           812:        invoked automatically under appropriate circumstances,
        !           813:        allowing you to customize the behavior of emacs.
        !           814:        
        !           815: 3)     New macro programming commands:
        !           816: 
        !           817:                format -- do  string format conversion, substituting
        !           818:                parameter strings for format specifiers.
        !           819: 
        !           820:        (unget-character <arg>) pushes a character back onto the
        !           821:                input queue.
        !           822:        
        !           823:        input-count Returns the number of characters typed and not
        !           824:                yet processed by emacs.
        !           825: 
        !           826:        window-top      screen-line of top of window
        !           827:        window-bottom   screen-line at bottom of window
        !           828:        first-visible-line      file-line at top of window
        !           829:        last-visible-line       file-line at bottom of window
        !           830: 
        !           831:        (format <format> <string 1> <string 2 > ...)
        !           832:                This is a kind of primitive printf allowing you to
        !           833:                substitute string arguments into a format string.
        !           834:                
        !           835:        Several macro compiler bugs were fixed, allowing more
        !           836:        flexible syntax and avoiding errors that caused coredumps in
        !           837:        earlier versions.               
        !           838: 
        !           839:        Due to changes in the ways that key bindings are done,
        !           840:        macros should now run about 3 times as fast as they did in
        !           841:        previous versions.
        !           842: 
        !           843: 4)     Berkeley unix tty I/O changes.  Emacs now supports flow_lim
        !           844:        mode, handles break from the keyboard, and updates the time
        !           845:        and mail messages while the terminal is idle on 4.2BSD
        !           846:        systems as well as on AT&T unix.  As a result of this
        !           847:        change, the mark command cannot be typed as ^@ on the
        !           848:        keyboard from berkeley unix systems.  Please use meta-space
        !           849:        instead.  (^@ and meta-space both continue to work in macros
        !           850:        as usual).
        !           851: 
        !           852: 5 (11/1) 7bit_ascii mode:  This mode changes the display of meta
        !           853:        characters, showing them as underlined rather than prefixed
        !           854:        with M-, to make displays of files using the high order bit
        !           855:        for graphics or format control more readable.
        !           856: 
        !           857: 
        !           858: 6 New command: M-^Z.  This command causes emacs to try to suspend
        !           859:                itself and return control to the shell on any system
        !           860:                using berkeley job control, or on a system using
        !           861:                "shl".  On systems using "shl", emacs will print a
        !           862:                message requesting you to type your normal character
        !           863:                for suspending jobs, while on berkeley systems,
        !           864:                emacs suspends itself automatically.
        !           865: 
        !           866: 7 New command -- M-0M-$.  This command runs a sub-process in a buffer
        !           867:                on emacs.  The process is started and runs
        !           868:                assynchronously.  All output that is produced is
        !           869:                appended to the buffer.  You can send input to the
        !           870:                sub-process by entering a line of text and hitting
        !           871:                return in the buffer in which it is run, or by using
        !           872:                the ^X^T command to send text to that buffer.  The
        !           873:                mark in this buffer is maintained at the end of the
        !           874:                last output from the process.  When you hit return,
        !           875:                if you are on the same line as the mark, everything
        !           876:                after the mark is sent.  This avoids sending back
        !           877:                prompts typed by the process.  (If you are anywhere
        !           878:                else, it sends the whole line.)
        !           879:                
        !           880: Key Bindings:  As of version 4.9, the key bindings used by macros
        !           881:                are different from those of the terminal.  This
        !           882:                allows you to re-map the keyboard without
        !           883:                interfering with the execution of macros.  Macro
        !           884:                code will use the built-in command attached to a key
        !           885:                (if any), no matter how the keyboard may have been
        !           886:                re-mapped by changing key bindings around with M-:,
        !           887:                and no matter what macros have been bound to
        !           888:                keyboard keys.  If there is no default binding, and
        !           889:                if there is a macro bound to the key, then it will
        !           890:                execute the macro.  You can restore the default
        !           891:                keyboard key bindings with by invoking the M-:
        !           892:                command with an argument of 0.
        !           893: 
        !           894: 
        !           895: Macros:                Many macros have been enhanced, and source is now
        !           896:                available for more of them.
        !           897:                
        !           898: 
        !           899:                Of particular interest are the new netty and
        !           900:                emacsterm macros for use with blits and dmd 5620
        !           901:                terminals.  For documentation, see
        !           902:                ~EMACS/macro_source/blit-or-dmd.  Also included are
        !           903:                new macros for lisp editing and for editing of emacs
        !           904:                macros.  These provide the parentheses matching and
        !           905:                indenting functions of the old lisp macros, plus
        !           906:                some new functions for navigating in a lisp file and
        !           907:                interacting with a lisp interpreter running in a
        !           908:                buffer.
        !           909: 
        !           910: Documentation: The users manual and macros manual have both been
        !           911:                completely rewritten to try to achieve a logical
        !           912:                organization rather than a historical one.
        !           913: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.