home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-07-02 | 232.3 KB | 7,195 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MicroEMACS
-
- Full Screen Text Editor
- Reference Manual
-
- Version 3.10
- March 19, 1989
-
- (C)opyright 1988, 1989 by Daniel M. Lawrence
- Reference Manual (C)opyright 1988, 1989
- by Brian Straight and Daniel M.
- Lawrence
- All Rights Reserved
-
- MicroEMACS 3.10 can be copied and
- distributed freely
- for any non-commercial purposes. MicroEMACS
- 3.10 can
- only be incorporated into commercial
- software with
- the permission of the current author.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Introduction
-
- MicroEMACS is a tool for creating and changing
- documents, programs, and other text files. It is both
- relatively easy for the novice to use, but also very
- powerful in the hands of an expert. MicroEMACS can be
- extensively customized for the needs of the individual user.
-
- MicroEMACS allows several files to be edited at the
- same time. The screen can be split into different windows,
- and text may be moved freely from one window to the next.
- Depending on the type of file being edited, MicroEMACS can
- change how it behaves to make editing simple. Editing
- standard text files, program files and word processing
- documents are all possible at the same time.
-
- There are extensive capabilities to make word
- processing and editing easier. These include commands for
- string searching and replacing, paragraph reformatting and
- deleting, automatic word wrapping, word move and deletes,
- easy case controlling, and automatic word counts.
-
- For complex and repetitive editing tasks editing
- macroes can be written. These macroes allow the user a
- great degree of flexibility in determining how MicroEMACS
- behaves. Also, any and all the commands can be used by any
- keystroke by changing, or rebinding, what commands various
- keys invoke.
-
- Special features are also available to perform a
- diverse set of operations such as file encryption, automatic
- backup file generation, entabbing and detabbing lines,
- executing operating system commands and filtering of text
- through other programs (like SORT to allow sorting text).
-
- History
-
- EMACS was originally a text editor written by
- Richard Stallman at MIT in the early 1970s for Digital
- Equipment computers. Various versions, rewrites and clones
- have made an appearance since.
-
- This version of MicroEMACS is derived from code
- written by Dave G. Conroy in 1985. Later modifications were
- performed by Steve Wilhite and George Jones. In December of
- 1985 Daniel Lawrence picked up the then current source
- (version 2.0) and made extensive modifications and additions
- to it over the course of the next three years. Updates and
- support for the current version are still available.
- Commercial support and usage licences are also available.
- The current program author can be contacted by writing to:
-
- USMAIL: Daniel Lawrence
- 617 New York St
-
-
-
-
-
-
-
-
-
-
-
- Lafayette, IN 47901
-
- UUCP: pur-ee!pur-phy!j.cc.purdue.edu!nwd
- ARPA: nwd@j.cc.purdue.edu
- FIDO: Opus 201/10 The Programmer's Room (317) 742-5533
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Credits
-
- Many people have been involved in creating this
- software and we wish to credit some of them here. Dave
- Conroy, of course, wrote the very first version of
- MicroEMACS, and it is a credit to his clean coding that so
- much work was able to be done to expand it. John Gamble is
- responsible for writing the MAGIC mode search routines, and
- for maintaining all the search code. Dana Hoggatt supplied
- the encryption routines for encrypt mode and continues to
- answer really hard questions about MSDOS and UNIX. Jeff
- Lomicka wrote the appendix on DEC VMS and has supplied a lot
- of code to support VMS and the ATARI 1040ST versions. Curtis
- Smith wrote the original VMS code and help support the
- Commodore AMIGA. Also Lance Jones has done a lot of work on
- the AMIGA code. Professor Suresh Konda at Purdue University
- has put a lot of effort into writing complex macros and
- finding all the bugs in the macro language before anyone
- else does.
-
- As to people sending source code and text
- translations over computer networks like USENET and ARPA
- net, there are simply more than can be listed here. [The
- comments in the edit history in the main.c file mention each
- and the piece they contributed]. All these people should be
- thanked for the hard work they have put into MicroEMACS.
-
-
- Daniel M. Lawrence
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Basic Concepts MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 1
-
- Basic Concepts
-
-
- The current version of MicroEMACS is 3.10 (Third
- major re-write, tenth public release), and for the rest of
- this document, we shall simply refer to this version as
- "EMACS". Any modifications for later versions will be in the
- file README on the MicroEMACS distribution disk.
-
-
- 1.1 Keys and the Keyboard
-
-
- Many times throughout this manual we will be talking
- about commands and the keys on the keyboard needed to use
- them. There are a number of "special" keys which can be
- used and are listed here:
-
- <NL> NewLine which is also called RETURN or ENTER,
- this key is used to end different commands.
-
- ^ The control key can be used before any
- alphabetic character and some symbols. For
- example, ^C means to hold down the <CONTROL>
- key and type the C key at the same time.
-
- ^X The CONTROL-X key is used at the beginning of
- many different commands.
-
- META or M- This is a special EMACS key used to begin many
- commands as well. This key is pressed and then
- released before typing the next character. On
- most systems, this is the <ESC> key, but it
- can be changed. (consult appendix E to learn
- what key is used for META on your computer).
-
- Whenever a command is described, the manual will
- list the actual keystrokes needed to execute it in boldface
- using the above conventions, and also the name of the
- command in italics.
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
- MicroEMACS Reference Manual Basic Concepts
-
-
- 1.2 Getting Started
-
-
- In order to use EMACS, you must call it up from your
- system or computer's command prompt. On UNIX and MSDOS
- machines, just type "emacs" from the main command prompt and
- follow it with the <RETURN> or <ENTER> key (we will refer to
- this key as <NL> for "new-line" for the remainder of this
- manual). On the Macintosh, the Amiga, the ATARI ST and
- other icon based operating systems, double click on the
- uEMACS icon. Shortly after this, a screen similar to the one
- below should appear.
-
-
- 1.3 Parts and Pieces
-
-
- The screen is divided into a number of areas or
- windows. On some systems the top window contains a function
- list of unshifted and shifted function keys. We will discuss
- these keys later. Below them is an EMACS mode line which, as
- we will see, informs you of the present mode of operation of
- the editor--for example "(WRAP)" if you set EMACS to wrap at
- the end of each line. Under the mode line is the text window
- where text appears and is manipulated. Since each window
- has its own mode line, below the text window is it's mode
- line. The last line of the screen is the command line where
- EMACS takes commands and reports on what it is doing.
-
- ===============================================================================
- f1 search-> f2 <-search | MicroEMACS: Text Editor
- f3 hunt-> f4 <-hunt |
- f5 fkeys f6 help | Available function key Pages include:
- f7 nxt wind f8 pg[ ] | WORD BOX EMACS PASCAL C
- f9 save f10 exit | [use the f8 key to load Pages]
- ===============================================================================
- MicroEMACS 3.10 () Function Keys
- ===============================================================================
-
-
-
-
-
-
-
-
-
-
-
- ===============================================================================
- ---- MicroEMACS 3.10 () -- Main
- ----------------------------------------------
- ===============================================================================
-
-
-
- 2
-
-
-
-
-
-
- Basic Concepts MicroEMACS Reference Manual
-
-
- Fig 1: EMACS screen on an IBM-PC
-
-
- 1.4 Entering Text
-
-
- Entering text in EMACS is simple. Type the
- following sentence fragment:
-
- Fang Rock lighthouse, center of a series of
- mysterious and
-
- The text is displayed at the top of the text window. Now
- type:
-
- terrifying events at the turn of the century
-
- Notice that some of your text has dissapeared off
- the left side of the screen. Don't panic--your text is
- safe!!! You've just discovered that EMACS doesn't "wrap"
- text to the next line like most word processors unless you
- hit <NL>. But since EMACS is used for both word processing,
- and text editing, it has a bit of a dual personality. You
- can change the way it works by setting various modes. In
- this case, you need to set WRAP mode, using the add-mode
- command, by typing ^XM. The command line at the base of the
- screen will prompt you for the mode you wish to add. Type
- wrap followed by the <NL> key and any text you now enter
- will be wrapped. However, the command doesn't wrap text
- already entered. To get rid of the long line, press and
- hold down the <BACKSPACE> key until the line is gone. Now
- type in the words you deleted, watch how EMACS goes down to
- the next line at the right time. (In some versions of
- EMACS, WRAP is a default mode in which case you don't have
- to worry about the instructions relating to adding this
- mode.)
-
- Now let's type a longer insert. Hit <NL> a couple
- of times to tab down from the text you just entered. Now
- type the following paragraphs. Press <NL> twice to indicate
- a paragraph break.
-
- Fang Rock lighthouse, center of a series of
- mysterious and terrifying events at the turn of
- the century, is built on a rocky island a few
- miles of the Channel coast. So small is the
- island that wherever you stand its rocks are wet
- with sea spray.
-
- The lighthouse tower is in the center of the
- island. A steep flight of steps leads to the
- heavy door in its base. Winding stairs lead up to
- the crew room.
-
-
-
- 3
-
-
-
-
-
-
- MicroEMACS Reference Manual Basic Concepts
-
-
- 1.5 Basic cursor movement
-
-
- Now let's practice moving around in this text.
- To move the
- cursor back
- to the word "Winding," enter M-B previous-word.
- This command moves the cursor
- backwards by one
- word at a time. Note you have to press the key combination
- every time the cursor steps back by one word. Continuously
- pressing META and toggling B produces an error message. To
- move forward to the word "stairs" enter M-F next-word, which
- moves the cursor forward by one word at a time.
-
- Notice that EMACS commands are usually mnemonic--F
- for forward, B for backward, for example.
-
- To move the cursor up one line, enter ^P previous-
- line, down one line ^N next-line. Practice this movement by
- moving the cursor to the word "terrifying" in the second
- line.
-
- The cursor may also be moved forward or backward in
- smaller increments. To move forward by one character, enter
- ^F forward-character, to move backward, ^B backward-
- character. EMACS also allows you to specify a number which
- is normally used to tell a command to execute many times.
- To repeat most commands, press META and then the number
- before you enter the command. Thus, the command META 5 ^F
- (M-5^F) will move the cursor forward by five characters.
- Try moving around in the text by using these commands. For
- extra practice, see how close you can come to the word
- "small" in the first paragraph by giving an argument to the
- commands listed here.
-
- Two other simple cursor commands that are useful to
- help us move around in the text are M-N next-paragraph which
- moves the cursor to the second paragraph, and M-P previous-
- paragraph which moves it back to the previous paragraph.
- The cursor may also be moved rapidly from one end of the
- line to the other. Move the cursor to the word "few" in the
- second line. Press ^A beginning-of-line. Notice the cursor
- moves to the word "events" at the beginning of the line.
- Pressing ^E end-of-line moves the cursor to the end of the
- line.
-
- Finally, the cursor may be moved from any point in
- the file to the end or beginning of the file. Entering M->
- end-of-file moves the cursor to the end of the buffer, M-<
- beginning-of-file to the first character of the file.
-
- On the IBM-PC, the ATARI ST and many other machines,
- the cursor keys can also be used to move the cursor.
-
-
- 4
-
-
-
-
-
-
- Basic Concepts MicroEMACS Reference Manual
-
-
- Practice moving the cursor in the text until you are
- comfortable with the commands we've explored in this
- chapter.
-
-
- 1.6 Saving your text
-
-
- When you've finished practicing cursor movement,
- save your file. Your file currently resides in a BUFFER.
- The buffer is a temporary storage area for your text, and is
- lost when the computer is turned off. You can save the
- buffer to a file by entering ^X^S save-file. Notice that
- EMACS informs you that your file has no name and will not
- let you save it.
-
- To save your buffer to a file with a different name
- than it's current one (which is empty), press ^X^W write-
- file. EMACS will prompt you for the filename you wish to
- write. Enter the name fang.txt and press return. On a
- micro, the drive light will come on, and EMACS will inform
- you it is writing the file. When it finishes, it will
- inform you of the number of lines it has written to the
- disk.
-
- Congratulations!! You've just saved your first EMACS
- file!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
- MicroEMACS Reference Manual Basic Concepts
-
-
-
-
-
-
- Chapter 1 Summary
-
-
- In chapter 1, you learned how to enter text, how to
- use wrap mode, how to move the cursor, and to save a buffer.
- The following is a table of the commands covered in this
- chapter and their corresponding key bindings:
-
- Key Binding Keystroke Effect
-
- abort-command ^G aborts current command
-
- add-mode ^XM allows addition of EMACS
- mode such as WRAP
-
- backward-character ^B moves cursor left one
- character
-
- beginning-of-file M-< moves cursor to beginning of
- file
-
- beginning-of-line ^A moves cursor to beginning of
- line
-
- end-of-file M-> moves cursor to end of file
-
- end-of-line ^E moves cursor to end of line
-
- forward-character ^F moves cursor right one
- character
-
- next-line ^N moves cursor to next line
-
- next-paragraph M-N moves cursor to next paragraph
-
- next-word M-F moves cursor forward one word
-
- previous-line ^P moves cursor backward by one
- line
-
- previous-paragraph M-P moves cursor to previous
- paragraph
-
- previous-word M-B moves cursor backward by one
- word
-
- save-file ^X^S saves current buffer to a file
-
- write-file ^X^W save current buffer under a
- new name
-
-
- 6
-
-
-
-
-
-
- Basic Editing--Simple Insertions and Deletions MicroEMACS
- Reference Manual
-
-
-
-
-
-
-
-
- Chapter 2
-
- Basic Editing--Simple Insertions and Deletions
-
-
- 2.1 A Word About Windows, Buffers, Screens, and Modes
-
-
- In the first chapter, you learned how to create and
- save a file in EMACS. Let's do some more editing on this
- file. Call up emacs by typing in the following command.
-
- emacs fang.txt
-
- On icon oriented systems, double click on the uEMACS
- icon, usually a file dialog box of some sort will appear.
- Choose FANG.TXT from the appropriate folder.
-
- Shortly after you invoke EMACS, the text should
- appear on the screen ready for you to edit. The text you are
- looking at currently resides in a buffer. A buffer is a
- temporary area of computer memory which is the primary unit
- internal to EMACS -- this is the place where EMACS goes to
- work. The mode line at the bottom of the screen lists the
- buffer name, FANG.TXT and the name of the file with which
- this buffer is associated, FANG.TXT
-
- The computer talks to you through the use of its
- screen. This screen usually has an area of 24 lines each of
- 80 characters across. You can use EMACS to subdivide the
- screen into several separate work areas, or windows, each of
- which can be 'looking into' different files or sections of
- text. Using windows, you can work on several related texts
- at one time, copying and moving blocks of text between
- windows with ease. To keep track of what you are editing,
- each window is identified by a mode line on the last line of
- the window which lists the name of the buffer which it is
- looking into, the file from which the text was read, and how
- the text is being edited.
-
- An EMACS mode tells EMACS how to deal with user
- input. As we have already seen, the mode 'WRAP' controls
- how EMACS deals with long lines (lines with over 79
- characters) while the user is typing them in. The 'VIEW'
- mode, allows you to read a file without modifying it. Modes
- are associated with buffers and not with files; hence, a
- mode needs to be explicitly set or removed every time you
-
-
- 7
-
-
-
-
-
-
- MicroEMACS Reference Manual Basic Editing--Simple
- Insertions and Deletions
-
-
- edit a file. A new file read into a buffer with a
- previously specified mode will be edited under this mode.
- If you use specific modes frequently, EMACS allows you to
- set the modes which are used by all new buffers, called
- global modes.
-
-
- 2.2 Insertions
-
-
- Your previously-saved text should look like this:
-
- Fang Rock lighthouse, center of a series of
- mysterious and terrifying events at the turn of
- the century, is built on a rocky island a few
- miles of the Channel coast. So small is the
- island that wherever you stand its rocks are wet
- with sea spray.
-
- The lighthouse tower is in the center of the
- island. A steep flight of steps leads to the
- heavy door in its base. Winding stairs lead up to
- the crew room.
-
- Let's assume you want to add a sentence in the
- second paragraph after the word "base." Move the cursor
- until it is on the "W" of "Winding". Now type the following:
-
- This gives entry to the lower floor where the big
- steam generator throbs steadily away, providing
- power for the electric lantern.
-
- If the line fails to wrap and you end up with a '$'
- sign in the right margin, just enter M-Q fill-paragraph to
- reformat the paragraph. This new command attempts to fill
- out a paragraph. Long lines are divided up, and words are
- shuffled around to make the paragraph look nicer.
-
- Notice that all visible EMACS characters are self-
- inserting -- all you had to do was type the characters to
- insert and the existing text made space for it. With a few
- exceptions discussed later, all non-printing characters
- (such as control or escape sequences) are commands. To
- insert spaces, simply use the space bar. Now move to the
- first line of the file and type ^O open-line (Oh, not zero).
- You've just learned how to insert a blank line in your text.
-
-
- 2.3 Deletions
-
-
- EMACS offers a number of deletion options. For
- example, move the cursor until it's under the period at the
-
-
- 8
-
-
-
-
-
-
- Basic Editing--Simple Insertions and Deletions MicroEMACS
- Reference Manual
-
-
- end of the insertion you just did. Press the backspace key.
- Notice the "n" on "lantern" disappeared. The backspace
- implemented on EMACS is called a destructive backspace--it
- removes text immediately before the current cursor position
- from the buffer. Now type ^H delete-previous-character.
- Notice that the cursor moves back and obliterates the "r"--
- either command will backspace the cursor.
-
- Type in the two letters you erased to restore your
- text and move the cursor to the beginning of the buffer M->
- beginning-of-file. Move the cursor down one line to the
- beginning of the first paragraph.
-
- To delete the forward character, type ^D delete-
- next-character. The "F" of "Fang" disappears. Continue to
- type ^D until the whole word is erased EMACS also permits
- the deletion of larger elements of text. Move the cursor to
- the word "center" in the first line of text. Pressing
- M-<backspace> delete-previous-word kills the word
- immediately before the cursor. M-^H has the same effect.
-
- Notice that the commands are very similar to the
- control commands you used to delete individual letters. As
- a general rule in EMACS, control sequences affect small
- areas of text, META sequences larger areas. The word
- forward of the cursor position can therefore be deleted by
- typing M-D delete-next-word. Now let's take out the
- remainder of the first line by typing ^K kill-to-end-of-line
- . You now have a blank line at the top of your screen.
- Typing ^K again or ^X^O delete-blank-lines deletes the blank
- line and flushes the second line to the top of the text.
- Now exit EMACS by typing ^X^C exit-emacs. Notice EMACS
- reminds you that you have not saved your buffer. Ignore the
- warning and exit. This way you can exit EMACS without
- saving any of the changes you just made.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 9
-
-
-
-
-
-
- MicroEMACS Reference Manual Basic Editing--Simple
- Insertions and Deletions
-
-
-
-
-
-
- Chapter 2 Summary
-
-
- In Chapter 2, you learned about the basic 'building
- blocks' of an EMACS text file--buffers, windows, and files.
-
- Key binding Keystroke Effect
- delete-previous-character
- ^H deletes character immediately
- before
- the current cursor position
-
- delete-next-character ^D deletes character immediately
- after
- current cursor position
-
- delete-previous-word M-^H deletes word immediately
- before
- current cursor position
-
- delete-next-word M-D deletes word immediately after
- current cursor position
-
- kill-to-end-of-line ^K deletes from current cursor
- position to end of line
-
- insert-space ^C inserts a space to right of
- cursor
-
- open-line ^O inserts blank line
-
- delete-blank-lines ^X^O removes blank line
-
- exit-emacs ^X^C exits emacs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
- Using Regions MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 3
-
- Using Regions
-
-
- 3.1 Defining and Deleting a Region
-
-
- At this point its time to familiarize ourselves with
- two more EMACS terms--the point and the mark. The point is
- located directly behind the current cursor position. The
- mark (as we shall see shortly) is user defined. These two
- elements together are called the current region and limit
- the region of text on which EMACS performs many of its
- editing functions.
-
- Let's begin by entering some new text.
- Don't forget to add
- wrap
- mode if its not set on this buffer. Start EMACS and open a
- file called PUBLISH.TXT. Type in the following text:
-
- One of the largest growth areas in personal
- computing is electronic publishing. There are
- packages available for practically every machine
- from elegantly simple programs for the humble
- Commodore 64 to sophisticated professional
- packages for PC and Macintosh computers.
-
- Electronic publishing is as revolutionary in its
- way as the Gutenburg press. Whereas the printing
- press allowed the mass production and distribution
- of the written word, electronic publishing puts
- the means of production in the hands of nearly
- every individual. From the class magazine to the
- corporate report, electronic publishing is
- changing the way we produce and disseminate
- information.
-
- Personal publishing greatly increases the utility
- of practically every computer. Thousands of
- people who joined the computer revolution of this
- decade only to hide their machines unused in
- closets have discovered a new use for them as
- dedicated publishing workstations.
-
- Now let's do some editing. The last paragraph seems
- a little out of place. To see what the document looks like
-
-
- 11
-
-
-
-
-
-
- MicroEMACS Reference Manual Using Regions
-
-
- without it we can cut it from the text by moving the cursor
- to the beginning of the paragraph. Enter M-<space> set-mark
- . EMACS will respond with "[Mark set]". Now move the
- cursor to the end of the paragraph. You have just defined a
- region of text. To remove this text from the screen, type
- ^W kill-region. The paragraph disappears from the screen.
-
- On further consideration, however, perhaps the
- paragraph we cut wasn't so bad after all. The problem may
- have been one of placement. If we could tack it on to the
- end of the first paragraph it might work quite well to
- support and strengthen the argument. Move the cursor to the
- end of the first paragraph and enter ^Y yank. Your text
- should now look like this:
-
- One of the largest growth areas in personal
- computing is electronic publishing. There are
- packages available for practically every machine
- from elegantly simple programs for the humble
- Commodore 64 to sophisticated professional
- packages for PC and Macintosh computers. Personal
- publishing greatly increases the utility of
- practically every computer. Thousands of people
- who joined the computer revolution of this decade
- only to hide their machines unused in closets have
- discovered a new use for them as dedicated
- publishing workstations.
-
- Electronic publishing is as revolutionary in its
- way as the Gutenburg press. Whereas the printing
- press allowed the mass production and distribution
- of the written word, electronic publishing puts
- the means of production in the hands of nearly
- every individual. From the class magazine to the
- corporate report, electronic publishing is
- changing the way we produce and disseminate
- information.
-
-
- 3.2 Yanking a Region
-
-
- The text you cut initially didn't simply just
- disappear, it was cut into a buffer that retains the
- 'killed' text appropriately called the kill buffer. ^Y
- "yanks" the text back from this buffer into the current
- buffer. If you have a long line (indicated, remember, by the
- "$" sign), simply hit M-Q to reformat the paragraph.
-
- There are other uses to which the kill buffer can be
- put. Using the method we've already learned, define the
- last paragraph as a region. Now type M-W copy-region.
- Nothing seems to have happened; the cursor stays blinking at
-
-
-
- 12
-
-
-
-
-
-
- Using Regions MicroEMACS Reference Manual
-
-
- the point. But things have changed, even though you may not
- be able to see any alteration.
-
- To see what has happened to the contents of the kill
- buffer, move the cursor down a couple of lines and "yank"
- the contents of the kill buffer back with ^Y. Notice the
- last paragraph is now repeated. The region you defined is
- "tacked on" to the end of your file because M-W copies a
- region to the kill buffer while leaving the original text in
- your working buffer. Some caution is needed however,
- because the contents of the kill buffer are updated when you
- delete any regions, lines or words. If you are moving large
- quantities of text, complete the operation before you do any
- more deletions or you could find that the text you want to
- move has been replaced by the most recent deletion.
- Remember--a buffer is a temporary area of computer memory
- that is lost when the machine is powered down or switched
- off. In order to make your changes permanent, they must be
- saved to a file before you leave EMACS. Let's delete the
- section of text we just added and save the file to disk.
-
-
-
-
- Chapter 3 Summary
-
-
- In Chapter 3, you learned how to achieve longer
- insertions and deletions. The EMACS terms point and mark
- were introduced and you learned how to manipulate text with
- the kill buffer.
-
- Key Binding Keystroke Effect
-
- set-mark M-<space> Marks the beginning of a region
-
- delete-region ^W Deletes region between point and mark
- and
- places it in KILL buffer
-
- copy-region M-W Copies text between point and mark
- into
- KILL buffer
-
- yank-text ^Y Inserts a copy of the KILL buffer into
- current buffer at point
-
-
-
-
-
-
-
-
-
-
- 13
-
-
-
-
-
-
- MicroEMACS Reference Manual Search and Replace
-
-
-
-
-
-
-
-
- Chapter 4
-
- Search and Replace
-
-
- 4.1 Forward Search
-
-
- Load EMACS and bring in the file you just saved.
- Your file should look like the one below.
-
- One of the largest growth areas in personal
- computing is electronic publishing. There are
- packages available for practically every machine
- from elegantly simple programs for the humble
- Commodore 64 to sophisticated professional
- packages for PC and Macintosh computers. Personal
- publishing greatly increases the utility of
- practically every computer. Thousands of people
- who joined the computer revolution of this decade
- only to hide their machines unused in closets have
- discovered a new use for them as dedicated
- publishing workstations.
-
- Electronic publishing is as revolutionary in its
- way as the Gutenburg press. Whereas the printing
- press allowed the mass production and distribution
- of the written word, electronic publishing puts
- the means of production in the hands of nearly
- every individual. From the class magazine to the
- corporate report, electronic publishing is
- changing the way we produce and disseminate
- information.
-
- Let's use EMACS to search for the word
- "revolutionary" in the second paragraph. Because EMACS
- searches from the current cursor position toward the end of
- buffers, and we intend to search forward, move the cursor to
- the beginning of the text. Enter ^S search-forward. Note
- that the command line now reads
-
- "Search [] <META>:"
-
- EMACS is prompting you to enter the search string --
- the text you want to find. Enter the word revolutionary and
- hit the META key. The cursor moves to the end of the word
- "revolutionary."
-
-
-
- 14
-
-
-
-
-
-
- Search and Replace MicroEMACS Reference Manual
-
-
- Notice that you must enter the <META> key to start
- the search. If you simply press <NL> the command line
- responds with "<NL>". Although this may seem infuriating to
- users who are used to pressing the return key to execute any
- command, EMACS' use of <META> to begin searches allows it to
- pinpoint text with great accuracy. After every line wrap or
- carriage return, EMACS 'sees' a new line character (<NL>).
- If you need to search for a word at the end of a line, you
- can specify this word uniquely in EMACS.
-
- In our sample text for example, the word "and"
- occurs a number of times, but only once at the end of a
- line. To search for this particular occurrence of the word,
- move the cursor to the beginning of the buffer and type ^S.
- Notice that EMACS stores the last specified search string as
- the default string. If you press <META> now, EMACS will
- search for the default string, in this case,
- "revolutionary."
-
- To change this string so we can search for our
- specified "and" simply enter the word and followed by <NL>.
- The command line now shows:
-
- "search [and<NL>]<META>:"
-
- Press <META> and the cursor moves to "and" at the
- end of the second last line.
-
-
- 4.2 Exact Searches
-
-
- If the mode EXACT is active in the current buffer,
- EMACS searches on a case sensitive basis. Thus, for example
- you could search for Publishing as distinct from publishing.
-
-
- 4.3 Backward Search
-
-
- Backward searching is very similar to forward
- searching except that it is implemented in the reverse
- direction. To implement a reverse search, type ^R search-
- reverse. Because EMACS makes no distinction between forward
- and backward stored search strings, the last search item you
- entered appears as the default string. Try searching back
- for any word that lies between the cursor and the beginning
- of the buffer. Notice that when the item is found, the
- point moves to the beginning of the found string (i.e., the
- cursor appears under the first letter of the search item).
-
- Practice searching for other words in your text.
-
-
-
-
- 15
-
-
-
-
-
-
- MicroEMACS Reference Manual Search and Replace
-
-
- 4.4 Searching and Replacing
-
-
- Searching and replacing is a powerful and quick way
- of making changes to your text. Our sample text is about
- electronic publishing, but the correct term is 'desktop'
- publishing. To make the necessary changes we need to
- replace all occurrences of the word "electronic" with
- "desktop." First, move the cursor to the top of the current
- buffer with the M-< command. Then type M-R replace-string.
- The command line responds:
-
- "Replace []<META>:"
-
- where the square brackets enclose the default
- string. Type the word electronic and hit <META>. The
- command line responds:
-
- "with []<META>"
-
- type desktop<META>. EMACS replaces all instances of
- the original word with your revision. Of course, you will
- have to capitalize the first letter of "desktop" where it
- occurs at the beginning of a sentence.
-
- You have just completed an unconditional replace.
- In this operation, EMACS replaces every instance of the
- found string with the replacement string.
-
-
- 4.5 Query-Replace
-
-
- You may also replace text on a case by case basis.
- The M-^R query-replace-string command causes EMACS to pause
- at each instance of the found string.
-
- For example, assume we want to replace some
- instances of the word "desktop" with the word "personal." Go
- back to the beginning of the current buffer and enter the M-
- ^R query-replace command. The procedure is very similar to
- that which you followed in the unconditional search/replace
- option. When the search begins however, you will notice that
- EMACS pauses at each instance of "publishing" and asks
- whether you wish to replace it with the replacement string.
- You have a number of options available for response:
-
- Response Effect
- Y(es) Make the current replacement and skip to the next
- occurrence of the search string
-
- N(o) Do not make this replacement but continue
-
- ! Do the rest of the replacements with no more queries
-
-
- 16
-
-
-
-
-
-
- Search and Replace MicroEMACS Reference Manual
-
-
- U(ndo) Undo just the last replacement and query for it
- again (This can only go back ONE time)
-
- ^G Abort the replacement command (This action does not
- undo previously-authorized replacements
-
- . Same effect as ^G, but cursor returns to the point at
- which the replacement command was given
-
- ? This lists help for the query replacement command
-
- Practice searching and searching and replacing until
- you feel comfortable with the commands and their effects.
-
-
-
-
- Chapter 4 Summary
-
-
- In this chapter, you learned how to search for
- specified strings of text in EMACS. The chapter also dealt
- with searching for and replacing elements within a buffer.
-
- Key Binding Keystroke Effect
-
- search-forward ^S Searches from point to end of buffer.
- Point is moved from current location
- to
- the end of the found string
-
- search-backward ^R Searches from point to beginning of
- buffer.
- Point is moved from current location
- to
- beginning of found string
-
- replace M-R Replace ALL occurrences of search string
- with
- specified (null) string from point to
- the
- end of the current buffer
-
- query-replace M-^R As above, but pause at each found string
- and query for action
-
-
-
-
-
-
-
-
-
-
-
- 17
-
-
-
-
-
-
- MicroEMACS Reference Manual Windows
-
-
-
-
-
-
-
-
- Chapter 5
-
- Windows
-
-
- 5.1 Creating Windows
-
-
- We have already met windows in an earlier chapter.
- In this chapter, we will explore one of EMACS' more powerful
- features -- text manipulation through multiple windowing.
- Windows offer you a powerful and easy way to edit text. By
- manipulating a number of windows and buffers on the screen
- simultaneously, you can perform complete edits and revisions
- on the computer screen while having your draft text or
- original data available for reference in another window.
-
- You will recall that windows are areas of buffer
- text that you can see on the screen. Because EMACS can
- support several screen windows simultaneously you can use
- them to look into different places in the same buffer. You
- can also use them to look at text in different buffers. In
- effect, you can edit several files at the same time.
-
- Let's invoke EMACS and pull back our file on desktop
- publishing by typing
-
- emacs publish.txt
-
- When the text appears, type the ^X2 split-current-
- window command. The window splits into two windows. The
- window where the cursor resides is called the current window
- -- in this case the bottom window. Notice that each window
- has a text area and a mode line. The command line is
- however, common to all windows on the screen.
-
- The two windows on your screen are virtually mirror
- images of each other because the new window is opened into
- the same buffer as the one you are in when you issue the
- open-window command. All commands issued to EMACS are
- executed on the current buffer in the current window.
-
- To move the cursor to the upper window (i.e., to
- make that window the current window, type ^XP previous-
- window. Notice the cursor moves to the upper or previous
- window. Entering ^XO next-window moves to the next window.
- Practice moving between windows. You will notice that you
-
-
-
- 18
-
-
-
-
-
-
- Windows MicroEMACS Reference Manual
-
-
- can also move into the Function Key menu by entering these
- commands.
-
- Now move to the upper window. Let's open a new
- file. On the EMACS disk is a tutorial file. Let's call it
- into the upper window by typing:
-
- ^X^F
-
- and press return.
-
- Enter the filename emacs.tut.
-
- In a short time, the tutorial file will appear in
- the window. We now have two windows on the screen, each
- looking into different buffers. We have just used the ^X^F
- find-file command to find a file and bring it into our
- current window.
-
- You can scroll any window up and down with the
- cursor keys, or with the commands we've learned so far.
- However, because the area of visible text in each window is
- relatively small, you can scroll the current window a line
- at a time.
-
- Type ^X^N move-window-down
-
- The current window scrolls down by one line -- the
- top line of text scrolls out of view, and the bottom line
- moves towards the top of the screen. You can imagine, if
- you like, the whole window slowly moving down to the end of
- the buffer in increments of one line. The command ^X^P
- move-window-up scrolls the window in the opposite direction.
-
- As we have seen, EMACS editing commands are executed
- in the current window, but the program does support a useful
- feature that allows you to scroll the next window. M-^Z
- scroll-next-up scrolls the next window up, M-^V scroll-next-
- down scrolls it downward. From the tutorial window,
- practice scrolling the window with the desktop publishing
- text in it up and down.
-
- When you're finished, exit EMACS without saving any
- changes in your files.
-
-
- Experiment with splitting the windows on your
- screen. Open windows into different buffers and experiment
- with any other files you may have. Try editing the text in
- each window, but don't forget to save any changes you want
- to keep -- you still have to save each buffer separately.
-
-
-
-
-
- 19
-
-
-
-
-
-
- MicroEMACS Reference Manual Windows
-
-
- 5.2 Deleting Windows
-
-
- Windows allow you to perform complex editing tasks with
- ease. However, they become an inconvenience when your
- screen is cluttered with open windows you have finished
- using. The simplest solution is to delete unneeded windows.
- The command ^X0 delete-window will delete the window you are
- currently working in and move you to the next window.
-
- If you have a number of windows open, you can delete
- all but the current window by entering ^X1 delete-other-
- windows.
-
-
- 5.3 Resizing Windows
-
-
- During complex editing tasks, you will probably find
- it convenient to have a number of windows on the screen
- simultaneously. However this situation may present
- inconveniences because the more windows you have on the
- screen the smaller they are; in some cases, a window may
- show only a couple of lines of text. To increase the
- flexibility and utility of the window environment, EMACS
- allows you to resize the window you are working in (called,
- as you will recall, the current window) to a convenient size
- for easier editing, and then shrink it when you no longer
- need it to be so large.
-
- Let's try an example. Load in any EMACS text file
- and split the current window into two. Now type
- ^X^(Shift-6), grow-window. Your current window should be
- the lower one on the screen. Notice that it increases in
- size upwards by one line. If you are in the upper window,
- it increases in size in a downward direction. The command
- ^X^Z, shrink-window correspondingly decreases window size by
- one line at a time.
-
- EMACS also allows you to resize a window more
- precisely by entering a numeric argument specifying the size
- of the window in lines. To resize the window this way,
- press the META key and enter a numeric argument (remember to
- keep it smaller than the number of lines on your screen
- display) then press ^XW resize-window. The current window
- will be enlarged or shrunk to the number of lines specified
- in the numeric argument. For example entering:
-
- M-8 ^XW
-
- will resize the current window to 8 lines.
-
-
-
-
-
- 20
-
-
-
-
-
-
- Windows MicroEMACS Reference Manual
-
-
- 5.4 Repositioning within a Window
-
-
- The cursor may be centered within a window by
- entering M-! or M-^L redraw-display. This command is
- especially useful in allowing you to quickly locate the
- cursor if you are moving frequently from window to window.
- You can also use this command to move the line containing
- the cursor to any position within the current window. This
- is done by using a numeric argument before the command. Type
- M-<n> M-^L where <n> is the number of the line within the
- window that you wish the current line to be displayed.
-
- The ^L Refresh-screen command is useful for
- 'cleaning up' a 'messy' screen that can result of using
- EMACS on a mainframe system and being interrupted by a
- system message.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 21
-
-
-
-
-
-
- MicroEMACS Reference Manual Windows
-
-
- Chapter 5 summary
-
- In Chapter 5 you learned how to manipulate windows
- and the editing flexibility they offer.
-
- Key Binding Keystroke Effect
-
- open-window ^X2 Splits current window into two windows
- if
- space available
-
- close-windows ^X1 Closes all windows except current
- window
-
- next-window ^XO[oh] Moves point into next (i.e. downward)
- window
-
- previous-window ^XP Moves point to previous (i.e. upward)
- window
-
- move-window-down ^X^N Scrolls current window down one line
-
- move-window-up ^X^P Scrolls current window up one line
-
- redraw-display M ! or Window is moved so line with point
- M ^L (with cursor) is at center of window
-
- grow-window M-X ^ Current window is enlarged by one
- line and nearest window is shrunk by
- one line
-
- shrink-window ^X^Z Current window is shrunk by one line
- and nearest window is enlarged by one
- line
-
- clear-and-redraw ^L Screen is blanked and redrawn. Keeps
- screen updates in sync with your
- commands
-
- scroll-next-up M-^Z Scrolls next window up by one line
-
- scroll-next-down M-^V Scrolls next window down by one line
-
- delete-window ^X0 Deletes current window
-
- delete-other-windows ^X1 Deletes all but current window
-
- resize-window ^X^W Resizes window to a given numeric
- argument
-
-
-
-
-
-
-
- 22
-
-
-
-
-
-
- Using a Mouse MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 6
-
- Using a Mouse
-
-
- On computers equipped with a mouse, the mouse can
- usually be used to make editing easier. If your computer
- has a mouse, let's try using it. Start MicroEMACS by
- typing:
-
- emacs publish.txt
-
- This brings EMACS up and allows it to edit the file
- from the last chapter. If the function key window is
- visible on the screen, press the F5 key to cause it to
- disappear. Now use the ^X2 split-current-window command to
- split the screen into two windows. Next use the ^X^F find-
- file command to read in the fang.txt file. Now your screen
- should have two windows looking into two different files.
-
- Grab the mouse and move it around. On the screen an
- arrow, or block of color appears. This is called the mouse
- cursor and can be positioned on any character on the screen.
- On some computers, positioning the mouse cursor in the
- extreme upper right or left corner may bring down menus
- which allow you to access that computers utilities,
- sometimes called Desk Accessories.
-
-
- 6.1 Moving around with the mouse
-
-
- Using the mouse button (or the left button if the
- mouse has more than one), position the mouse over some
- character in the current window. Click the mouse button
- once. The point will move to where the mouse cursor is. If
- you place the mouse cursor past the end of a line, the point
- will move to the end of that line.
-
- Move the mouse cursor into the other window and
- click on one of the characters there. MicroEMACS will
- automatically make this window the current window (notice
- that the mode line changes) and position the point to the
- mouse cursor. This makes it very easy to use the mouse to
- switch to a different window quickly.
-
-
-
-
-
- 23
-
-
-
-
-
-
- MicroEMACS Reference Manual Using a Mouse
-
-
- 6.2 Dragging around
-
-
- Besides just using the mouse to move around on the
- screen, you can use the same button to move text. Move the
- mouse cursor to a character in one of the windows, and click
- down... but don't let the button up yet! The point will move
- to where the mouse cursor is. Now move the mouse cursor up
- or down on the screen, and release the button. The point
- will again move to where the mouse cursor is, but this time
- it will bring the text under it along for the ride. This is
- called dragging, and is how you can make the text appear
- just where you want it to. If you try to drag text out of
- the current window, EMACS will ignore your attempt and leave
- the point where you first clicked down.
-
- Now, click down on a word in one of the windows, and
- drag it directly to the left. Release the button and watch
- as the entire window slides, or scrolls to the left. The
- missing text has not been deleted, it is simply not visible,
- off the left hand side of the screen. Notice the mode line
- has changed and now looks like:
-
- ==== MicroEMACS 3.10 [<12] () == fang.txt == File: fang.txt
- =========
-
- The [] delimits a new field which indicates that the
- screen is now scrolled 12 characters from the left margin.
-
- Now grab the same text again, and drag it to the
- right, pulling the rest of the text back into the current
- window. The [<] field will disappear, meaning that the
- window is no longer scrolled to the left. This feature is
- very useful for looking at wide charts and tables.
- Remember, MicroEMACS will only scroll the text in the
- current window sideways if you drag it straight to the side,
- otherwise it will drag the text vertically.
-
- Now, place the mouse cursor over a character on the
- upper mode line, click down, move the mouse cursor up or
- down a few lines and let go of the button. The mode line
- moves to where you dragged it, changing the size of the
- windows above and below it. If you try to make a window
- with less than one line, EMACS will not let you. Dragging
- the mode lines can make it very fast and easy for you to
- rearrange the windows as you would like.
-
- If you have a number of different windows visible on
- the screen, positioning the mouse over the mode line of one
- window and clicking the right mouse button will cause that
- window to be deleted.
-
-
-
-
-
- 24
-
-
-
-
-
-
- Using a Mouse MicroEMACS Reference Manual
-
-
- 6.3 Cut and Paste
-
-
- If your mouse has two buttons, then you can use the
- right button to do some other things as well. Earlier, we
- learned how to define a region by using the M-<space> set-
- mark command. Now, position the mouse over at the beginning
- of a region you would like to copy. Next click and hold
- down the right mouse button. Notice that the point jumps to
- the mouse cursor and EMACS reports "[Mark Set]". Holding
- the button down move the mouse to the end of the text you
- wish to copy and release the mouse button. Emacs reports
- "[Region Copied]" to let you know it has copied the region
- into the KILL buffer. If you now click the right mouse
- button, without moving the mouse, the region you defined
- would be deleted or cut from the current buffer.
-
- If you move the mouse again, and click the right
- mouse button down and up without moving the mouse, the text
- in the KILL buffer gets inserted, or pasted into the current
- buffer at the point.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 25
-
-
-
-
-
-
- MicroEMACS Reference Manual Using a Mouse
-
-
-
-
-
-
- Chapter 6 Summary
-
-
- In Chapter 6, you learned how to use the mouse to
- move the point, switch windows, drag text, and resize
- windows. You also learned how to use the right mouse button
- in order to copy and delete regions and yank them back at
- other places.
-
- Action Mouse Directions
-
- Move Cursor position mouse cursor over desired location
- click down and up with left button
-
- Drag Text position mouse cursor over desired text
- click left button down
- move to new screen location for text
- release mouse button
-
- Resize Windows position mouse cursor over mode line to move
- click left button down
- move to new location for mode line
- release mouse button
-
- Delete Window position mouse cursor over mode line of window to
- delete
- click right mouse button
-
- Resize Screen position mouse cursor over last character on message
- line
- click left button down
- move to new lower right corner of screen
- release mouse button
-
- Copy Region position mouse at beginning of region
- click right button down
- move to end of region
- release mouse button
-
- Cut Region position mouse at beginning of region
- click right button down
- move to end of region
- release mouse button
- click right button down and up
-
- Paste region Position mouse at place to paste
- click right button down and up
-
-
-
-
-
- 26
-
-
-
-
-
-
- Buffers MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 7
-
- Buffers
-
-
- We have already learned a number of things about
- buffers. As you will recall, they are the major internal
- entities in EMACS -- the place where editing commands are
- executed. They are characterized by their names, their
- modes, and by the file with which they are associated. Each
- buffer also "remembers" its mark and point. This convenient
- feature allows you to go to other buffers and return to the
- original location in the "current" buffer.
-
- Advanced users of EMACS frequently have a number of
- buffers in the computer's memory simultaneously. In the
- last chapter, for example, you opened at least two buffers
- -- one into the text you were editing, and the other into
- the EMACS on-line tutorial. If you deal with complex text
- files -- say, sectioned chapters of a book, you may have
- five or six buffers in the computer's memory. You could
- select different buffers by simply calling up the file with
- ^X^F find-file, and let EMACS open or reopen the buffer.
- However, EMACS offers fast and sophisticated buffering
- techniques that you will find easy to master and much more
- convenient to use.
-
- Let's begin by opening three buffers. You can open
- any three you choose, for example call the following files
- into memory: fang.txt, publish.txt, and emacs.tut in the
- order listed here. When you've finished this process,
- you'll be looking at a screen showing the EMACS tutorial.
- Let's assume that you want to move to the fang.txt buffer.
- Enter:
-
- ^XX next-buffer
-
- This command moves you to the next buffer.
- B ec a u s e
- EMACS cycles
- through the buffer list, which is alphabetized, you will now
- be in the fang.txt buffer. Using ^XX again places you in the
- publish.txt buffer. If you are on a machine that supports
- function keys, using ^XX again places you in the Function
- Keys buffer. Using ^XX one last time cycles you back to the
- beginning of the list.
-
-
-
-
- 27
-
-
-
-
-
-
- MicroEMACS Reference Manual Buffers
-
-
- If you have a large number of buffers to deal with,
- this cycling process may be slow and inconvenient. The
- command ^XB select-buffer allows you to specify the buffer
- you wish to be switched to. When the command is entered,
- EMACS prompts, "Use buffer:". Simply enter the buffer name
- (NOT the file name), and that buffer will then become the
- current buffer. If you type in part of the file name and
- press the space bar, EMACS will attempt to complete the name
- from the list of current buffers. If it succeeds, it will
- print the rest of the name and you can hit <NL> to switch to
- that buffer. If EMACS beeps the bell, there is no such
- buffer, and you may continue editing the name on the command
- line.
-
- Multiple buffer manipulation and editing is a
- complex activity, and you will probably find it very
- inconvenient to re-save each buffer as you modify it. The
- command ^X^B list-buffers creates a new window that gives
- details about all the buffers currently known to EMACS.
- Buffers that have been modified are identified by the
- "buffer changed" indicator (an asterisk in the second
- column). You can thus quickly and easily identify buffers
- that need to be saved to files before you exit EMACS. The
- buffer window also provides other information -- buffer
- specific modes, buffer size, and buffer name are also
- listed. To close this window, simply type the close-windows
- command, ^X1.
-
- To delete any buffer, type ^XK delete-buffer.
- EMACS prompts you "Kill buffer:".
- Enter the
- buffer name you want to delete. As this is destructive
- command, EMACS will ask for confirmation if the buffer was
- changed and not saved. Answer Y(es) or N(o). As usual ^G
- cancels the command.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 28
-
-
-
-
-
-
- Buffers MicroEMACS Reference Manual
-
-
-
-
-
-
- Chapter 7 Summary
-
-
- In Chapter 7 you learned how to manipulate buffers.
-
- Key Binding Keystroke Effect
- next-buffer ^X^X Switch to the next buffer in
- the
- buffer list
-
- select-buffer ^XB Switch to a particular buffer
-
- list-buffers ^X^B List all buffers
-
- delete-buffer ^XK Delete a particular buffer if
- it
- is off-screen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 29
-
-
-
-
-
-
- MicroEMACS Reference Manual Modes
-
-
-
-
-
-
-
-
- Chapter 8
-
- Modes
-
-
- EMACS allows you to change the way it works in order
- to customized it to the style of editing you are using. It
- does this by providing a number of different modes. These
- modes can effect either a single buffer, or any new buffer
- that is created. To add a mode to the current buffer, type
- ^XM add-mode. EMACS will then prompt you for the name of a
- mode to add. When you type in a legal mode name, and type a
- <NL>, EMACS will add the mode name to the list of current
- mode names in the mode line of the current buffer.
-
- To remove an existing mode, typing the ^X^M delete-
- mode will cause EMACS to prompt you for the name of a mode
- to delete from the current buffer. This will remove that
- mode from the mode list on the current mode line.
-
- Global modes are the modes which are inherited by
- any new buffers which are created. For example, if you wish
- to always do string searching with character case being
- significant, you would want global mode EXACT to be set so
- that any new files read in inherent the EXACT mode. Global
- modes are set with the M-M add-global-mode command, and
- unset with the M-^M delete-global-mode command. Also, the
- current global modes are displayed in the first line of a
- ^X^B list-buffers command.
-
- On machines which are capable of displaying colors,
- the mode commands can also set the background and foreground
- character colors. Using add-mode or delete-mode with a
- lowercase color will set the background color in the current
- window. An uppercase color will set the foreground color in
- the current window. Colors that EMACS knows about are:
- white, cyan, magenta, yellow, blue, red, green, and black.
- If the computer you are running on does not have eight
- colors, EMACS will attempt to make some intelligent guess at
- what color to use when you ask for one which is not there.
-
-
- 8.1 ASAVE mode
-
-
- Automatic Save mode tells EMACS to automatically
- write out the current buffer to its associated file on a
- regular basis. Normally this will be every 256 characters
-
-
- 30
-
-
-
-
-
-
- Modes MicroEMACS Reference Manual
-
-
- typed into the file. The environment variable $ACOUNT
- counts down to the next auto-save, and $ASAVE is the value
- used to reset $ACOUNT after a save occurs.
-
-
- 8.2 CMODE mode
-
-
- CMODE is useful to C programmers. When CMODE is
- active, EMACS will try to assist the user in a number of
- ways. This mode is set automatically with files that have a
- .c or .h extension.
-
- The <NL> key will normally attempt to return the
- user to the next line at the same level of indentation as
- the last non blank line, unless the current line ends with a
- open brace ({) in which case the new line will be further
- indented by one tab position.
-
- A close brace (}) will search for the corresponding
- open brace and line up with it.
-
- A pound sign (#) with only leading white space will
- delete all the white space preceding itself. This will
- always bring preprocessor directives flush to the left
- margin.
-
- Whenever any close fence is typed, IE )]>}, if the
- matching open fence is on screen in the current window, the
- cursor will briefly flash to it, and then back. This makes
- balancing expressions, and matching blocks much easier.
-
-
- 8.3 CRYPT mode
-
-
- When a buffer is in CRYPT mode, it is encrypted
- whenever it is written to a file, and decrypted when it is
- read from the file. The encryption key can be specified on
- the command line with the -k switch, or with the M-E set-
- encryption-key command. If you attempt to read or write a
- buffer in crypt mode and now key has not been set, EMACS
- will execute set-encryption-key automatically, prompting you
- for the needed key. Whenever EMACS prompts you for a key,
- it will not echo the key to your screen as you type it (IE
- make SURE you get it right when you set it originally).
-
- The encryption algorithm used changes all characters
- into normal printing characters, thus the resulting file is
- suitable for sending via electronic mail. All version of
- MicroEMACS should be able decrypt the resulting file
- regardless of what machine encrypted it. Also available
- with EMACS is the stand alone program, MicroCRYPT, which can
- en/decrypt the files produced by CRYPT mode in EMACS.
-
-
- 31
-
-
-
-
-
-
- MicroEMACS Reference Manual Modes
-
-
- 8.4 EXACT mode
-
-
- All string searches and replacements will take
- upper/lower case into account. Normally the case of a string
- during a search or replace is not taken into account.
-
-
- 8.5 MAGIC mode
-
-
- In the MAGIC mode certain characters gain special
- meanings when used in a search pattern. Collectively they
- are know as regular expressions, and a limited number of
- them are supported in MicroEmacs. They grant greater
- flexibility when using the search command. However, they do
- not affect the incremental search command.
-
- The symbols that have special meaning in MAGIC mode
- are ^, $, ., &, *, [ (and ], used with it), and \.
-
- The characters ^ and $ fix the search pattern to the
- beginning and end of line, respectively. The ^ character
- must appear at the beginning of the search string, and the $
- must appear at the end, otherwise they loose their meaning
- and are treated just like any other character. For example,
- in MAGIC mode, searching for the pattern "t$" would put the
- cursor at the end of any line that ended with the letter
- 't'. Note that this is different than searching for
- "t<NL>", that is, 't' followed by a newline character. The
- character $ (and ^, for that matter) matches a position, not
- a character, so the cursor remains at the end of the line.
- But a newline is a character that must be matched, just like
- any other character, which means that the cursor is placed
- just after it - on the beginning of the next line.
-
- The character . has a very simple meaning -- it
- matches any single character, except the newline. Thus a
- search for "bad.er" could match "badger", "badder" (slang),
- or up to the 'r' of "bad error".
-
- The character * is known as closure, and means that
- zero or more of the preceding character will match. If
- there is no character preceding, * has no special meaning,
- and since it will not match with a newline, * will have no
- special meaning if preceded by the beginning of line symbol
- ^ or the literal newline character <NL>.
-
- The notion of zero or more characters is important.
- If, for example, your cursor was on the line
-
- This line is missing two vowels.
-
-
-
-
- 32
-
-
-
-
-
-
- Modes MicroEMACS Reference Manual
-
-
- and a search was made for "a*", the cursor would not
- move, because it is guaranteed to match no letter 'a' ,
- which satisfies the search conditions. If you wanted to
- search for one or more of the letter 'a', you would search
- for "aa*", which would match the letter a, then zero or more
- of them.
-
- The character [ indicates the beginning of a
- character class. It is similar to the 'any' character .,
- but you get to choose which characters you want to match.
- The character class is ended with the character ]. So,
- while a search for "ba.e" will match "bane", "bade", "bale",
- "bate", et cetera, you can limit it to matching "babe" and
- "bake" by searching for "ba[bk]e". Only one of the
- characters inside the [ and ] will match a character. If in
- fact you want to match any character except those in the
- character class, you can put a ^ as the first character. It
- must be the first character of the class, or else it has no
- special meaning. So, a search for [^aeiou] will match any
- character except a vowel, but a search for [aeiou^] will
- match any vowel or a ^.
-
- If you have a lot of characters in order that you
- want to put in the character class, you may use a dash (-)
- as a range character. So, [a-z] will match any letter (or
- any lower case letter if EXACT mode is on), and [0-9a-f]
- will match any digit or any letter 'a' through 'f', which
- happen to be the characters for hexadecimal numbers. If the
- dash is at the beginning or end of a character class, it is
- taken to be just a dash.
-
- The character & (ampersand) is a replacement
- character, and represents the characters which matched the
- search string. When used in the M-R replace-string or the
- M-^R query-replace-string commands, the & will be
- substituted for the search string.
-
- The escape character \ is for those times when you
- want to be in MAGIC mode, but also want to use a regular
- expression character to be just a character. It turns off
- the special meaning of the character. So a search for
- "it\." will search for a line with "it.", and not "it"
- followed by any other character. The escape character will
- also let you put ^, -, or ] inside a character class with no
- special side effects.
-
-
- 8.6 OVER mode
-
-
- OVER mode stands for overwrite mode. When in this
- mode, when characters are typed, instead of simply inserting
- them into the file, EMACS will attempt to overwrite an
-
-
-
- 33
-
-
-
-
-
-
- MicroEMACS Reference Manual Modes
-
-
- existing character past the point. This is very useful for
- adjusting tables and diagrams.
-
-
- 8.7 WRAP mode
-
-
- Wrap mode is used when typing in continuous text.
- Whenever the cursor is past the currently set fill column
- (72 by default) and the user types a space or a <NL>, the
- last word of the line is brought down to the beginning of
- the next line. Using this, one just types a continuous
- stream of words and EMACS automatically inserts <NL>s at
- appropriate places.
-
- NOTE to programmers:
-
- The EMACS variable $wraphook contains the name of
- the function which executes when EMACS detects it
- is time to wrap. This is set to the function wrap-
- word by default, but can be changed to activate
- different functions and macros at wrap time.
-
-
- 8.8 VIEW mode
-
-
- VIEW mode disables all commands which can change the
- current buffer. EMACS will display an error message and
- ring the bell every time you attempt to change a buffer in
- VIEW mode.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 34
-
-
-
-
-
-
- Modes MicroEMACS Reference Manual
-
-
-
-
-
-
- Chapter 8 Summary
-
-
- In Chapter 8 you learned about modes and their
- effects.
-
- Key Binding Keystroke Effect
- add-mode ^XM Add a mode to the current
- buffer
-
- delete-mode ^X^M Delete a mode from the current
- buffer
-
- add-global-mode M-M Add a global mode to the
- current buffer
-
- delete-global-mode M-^M Delete a global mode from the
- current buffer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 35
-
-
-
-
-
-
- MicroEMACS Reference Manual Files
-
-
-
-
-
-
-
-
- Chapter 9
-
- Files
-
-
- A file is simply a collection of related data.
- In EMACS we
- are dealing
- with text files -- named collections of text residing on a
- disk (or some other storage medium). You will recall that
- the major entities EMACS deals with are buffers. Disk-based
- versions of files are only active in EMACS when you are
- reading into or writing out of buffers. As we have already
- seen, buffers and physical files are linked by associated
- file names. For example, the buffer "ch7.txt" which is
- associated with the physical disk file "ch7.txt." You will
- notice that the file is usually specified by the drive name
- or (in the case of a hard drive) a path. Thus you can
- specify full file names in EMACS,
-
- e.g. disk:\directories\filename.extension
-
- If you do not specify a disk and directories, the
- default disk and the current directory is used.
-
- IMPORTANT -- If you do not explicitly save your
- buffer to a file, all your edits will be lost when you leave
- EMACS (although EMACS will prompt you when you are about to
- lose edits by exiting). In addition, EMACS does not protect
- your disk-based files from overwriting when it saves files.
- Thus when you instruct EMACS to save a file to disk, it will
- create a file if the specified file doesn't exist, or it
- will overwrite the previously saved version of the file thus
- replacing it. Your old version is gone forever.
-
- If you are at all unsure about your edits, or if
- (for any reason) you wish to keep previous versions of a
- file, you can change the name of the associated file with
- the command ^XN change-file-name. When this file is saved
- to disk, EMACS will create a new physical file under the new
- name. The earlier disk file will be preserved.
-
- For example, let's load the file fang.txt into
- EMACS. Now, type ^XN. The EMACS command line prompts
- "Name:". Enter a new name for the file -- say new.txt and
- press <NL>. The file will be saved under the new filename,
- and your disk directory will show both fang.txt and new.txt.
-
-
-
- 36
-
-
-
-
-
-
- Files MicroEMACS Reference Manual
-
-
- An alternative method is to write the file directly
- to disk under a new filename. Let's pull our "publish.txt"
- file into EMACS. To write this file under another filename,
- type ^X^W write-file. EMACS will prompt you "write file:".
- Enter an alternate filename -- desktop.txt. Your file will
- be saved as the physical file "desktop.txt".
-
- Note that in the examples above, although you have
- changed the names of the related files, the buffer names
- remain the same. However, when you pull the physical file
- back into EMACS, you will find that the buffer name now
- relates to the filename.
-
- For example -- You are working with a buffer
- "fang.txt" with the related file "fang.txt". You change the
- name of the file to "new.txt". EMACS now shows you working
- with the buffer "fang.txt" and the related file "new.txt".
- Now pull the file "new.txt" into EMACS. Notice that the
- buffer name has now changed to "new.txt".
-
- If for any reason a conflict of buffer names
- occurs,(if you have files of the same name on different
- drives for example) EMACS will prompt you "use buffer:".
- Enter an alternative buffer name if you need to.
-
- For a list of file related commands (including some
- we`ve already seen), see the summary page.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 37
-
-
-
-
-
-
- MicroEMACS Reference Manual Files
-
-
-
-
-
-
- Chapter 9 Summary
-
-
- In Chapter 9 you learned some of the more advanced
- concepts of file naming and manipulation. The relationship
- between files and buffers was discussed in some detail.
-
- Key Binding Keystroke Effect
-
- save-file ^X^S Saves contents of current buffer with
- associated filename on default disk/
- directory (if not specified)
-
- write-file ^X^W Current buffer contents will be
- saved under specified name
-
- change-file-name
- ^XN The associated filename is changed
- (or associated if not previously
- specified) as specified
-
- find-file ^X^F Reads specified file into buffer and
- switches you to that buffer, or
- switches
- to buffer in which the file has
- previously
- been read
-
- read-file ^X^R Reads file into buffer thus
- overwriting
- buffer contents. If file has already
- been read into another buffer, you
- will
- be switched to it
-
- view-file ^X^V The same as read-file except the
- buffer
- is automatically put into VIEW mode
- thus
- preventing any changes from being made
-
-
-
-
-
-
-
-
-
-
-
-
- 38
-
-
-
-
-
-
- Screen Formatting MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 10
-
- Screen Formatting
-
-
- 10.1 Wrapping Text
-
-
- As we learned in the introduction, EMACS is not a
- word processor, but an editor. Some simple formatting
- options are available however, although in most cases they
- will not affect the appearance of the finished text when it
- is run through the formatter. We have already encountered
- WRAP mode which wraps lines longer than a certain length
- (default is 75 characters). You will recall that WRAP is
- enabled by entering ^XM and responding to the command line
- prompt with wrap.
-
- You can also set your own wrap margin with the
- command ^XF set-fill-column. Notice EMACS responds "[Fill
- column is 1]." Now try typing some text. You'll notice some
- very strange things happening -- your text wraps at every
- word!! This effect occurs because the set wrap margin
- command must be preceded by a numeric argument or EMACS sets
- it to the first column. Thus any text you type that extends
- past the first column will wrap at the most convenient line
- break.
-
- To reset the wrap column to 72 characters, press the
- <META> key and enter 72. EMACS will respond "Arg: 72". Now
- press ^XF. EMACS will respond "[Fill column is 72]". Your
- text will again wrap at the margin you've been using up to
- this point.
-
-
- 10.2 Reformatting Paragraphs
-
-
- After an intensive editing session, you may find
- that you have paragraphs containing lines of differing
- lengths. Although this disparity will not affect the
- formatted text, aesthetic and technical concerns may make it
- desirable to have consistent paragraph blocks on the screen.
- If you are in WRAP mode, you can reformat a paragraph with
- the command M-Q fill-paragraph. This command 'fills' the
- current paragraph reformatting it so all the lines are
- filled and wrap logically.
-
-
-
- 39
-
-
-
-
-
-
- MicroEMACS Reference Manual Screen Formatting
-
-
- 10.3 Changing Case
-
-
- There may be occasions when you find it necessary to
- change the case of the text you've entered. EMACS allows
- you to change the case of even large amounts of text with
- ease. Let's try and convert a few of the office
- traditionalists to the joy of word processing. Type in the
- following text:
-
- Throw away your typewriter and learn to use a word
- processor. Word processing is relatively easy to
- learn and will increase your productivity
- enormously. Enter the Computer Age and find out
- just how much fun it can be!!
-
- Let's give it a little more impact by capitalizing
- the first four words. The first step is to define the
- region of text just as you would if you were doing an
- extensive deletion. Set the mark at the beginning of the
- paragraph with M-<space> set-mark and move the cursor to the
- space beyond "typewriter." Now enter ^X^U case-region-upper.
- Your text should now look like this:
-
- THROW AWAY YOUR TYPEWRITER and learn to use a word
- processor. Word processing is relatively easy to
- learn and will increase your productivity
- enormously. Enter the Computer Age and find out
- just how much fun it can be!!
-
- If you want to change the text back to lower case,
- type ^X^L case-region-lower. You can also capitalize
- individual words. To capitalize the word "fun", position
- the cursor in front of the word and type M-U case-word-upper
- . The word is now capitalized. To change it ck to lower
- case, move the cursor back to the beginning of the word and
- type M-L case-word-lower.
-
- You may also capitalize individual letters in EMACS.
- The command M-C case-word-capitalize capitalizes the first
- letter after the point. This command would normally be
- issued with the cursor positioned in front of the first
- letter of the word you wish to capitalize. If you issue it
- in the middle of a word, you can end up with some strAnge
- looking text.
-
-
- 10.4 Tabs
-
-
- Unless your formatter is instructed to take screen
- text literally (as MicroSCRIBE does in the 'verbatim'
- environment for example), tabs in EMACS generally affect
- screen formatting only.
-
-
- 40
-
-
-
-
-
-
- Screen Formatting MicroEMACS Reference Manual
-
-
- When EMACS is first started, it sets the default tab
- to every eighth column. As long as you stay with default,
- every time you press the tab key a tab character, ^I is
- inserted. This character, like other control characters, is
- invisible -- but it makes a subtle and significant
- difference to your file and editing.
-
- For example, in default mode, press the tab key and
- then type the word Test. "Test" appears at the eighth
- column. Move your cursor to the beginning of the word and
- delete the backward character. The word doesn't move back
- just one character, but flushes to the left margin. The
- reason for this behavior is easily explained. In tab
- default, EMACS inserts a 'real' tab character when you press
- the tab key. This character is inserted at the default
- position, but NO SPACES are inserted between the tab
- character and the margin (or previous tab character). As
- you will recall, EMACS only recognizes characters (such as
- spaces or letters) and thus when the tab character is
- removed, the text beyond the tab is flushed back to the
- margin or previous tab mark.
-
- This situation changes if you alter the default
- configuration. The default value may be changed by entering
- a numeric argument before pressing the tab key. As we saw
- earlier, pressing the META key and entering a number allows
- you to specify how EMACS performs a given action. In this
- case, let's specify an argument of 10 and hit the tab key.
-
- Now hit the tab key again and type Test. Notice the
- word now appears at the tenth column. Now move to the
- beginning of the word and delete the backward character.
- "Test" moves back by one character.
-
- EMACS behaves differently in these circumstances
- because the ^I handle-tab function deals with tabbing in two
- distinct ways. In default conditions, or if the numeric
- argument of zero is used, handle-tab inserts a true tab
- character. If, however, a non-zero numeric argument is
- specified, handle-tab inserts the correct number of spaces
- needed to position the cursor at the next specified tab
- position. It does NOT insert the single tab character and
- hence any editing functions should take account of the
- number of spaces between tabbed columns.
-
- The distance which a true tab character moves the
- cursor can be modified by changing the value of the $hardtab
- environment variable. Initially set to 8, this will
- determine how far each tab stop is placed from the previous
- one. (Use the ^XA set command to set the value of an
- environment variable).
-
- Many times you would like to take text which has
- been created using the tab character and change it to use
-
-
- 41
-
-
-
-
-
-
- MicroEMACS Reference Manual Screen Formatting
-
-
- just spaces. The command ^X^D detab-region changes any tabs
- in the currently selected region into the right number of
- spaces so the text does not change. This is very useful for
- times when the file must be printed or transferred to a
- machine which does not understand tabs.
-
- Also, the inverse command, ^X^E entab-region changes
- multiple spaces to tabs where possible. This is a good way
- to shrink the size of large documents, especially with data
- tables. Both of these commands can take a numeric argument
- which will be interpreted as the number of lines to
- en/detab.
-
- Another function, related to those above is provided
- for by the ^X^T trim-region when invoked will delete any
- trailing white space in the selected region. A preceding
- numeric argument will do this for that number of lines.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 42
-
-
-
-
-
-
- Screen Formatting MicroEMACS Reference Manual
-
-
-
-
-
-
- Chapter 10 Summary
-
-
- In Chapter 10 introduced some of the formatting
- features of EMACS. Text-wrap, paragraph reformatting, and
- tabs were discussed in some detail. The commands in the
- following table were covered in the chapter.
-
-
- Key Binding Keystroke Effect
- add-mode/WRAP ^XM[WRAP] Add wrap mode to current
- buffer
-
- delete-mode/WRAP ^X^M[WRAP] Remove wrap mode from current
- buffer
-
- set-fill-column ^XF Set fill column to given
- numeric
- argument
-
- fill-paragraph M-Q Logically reformats the
- current
- paragraph
-
- case-word-upper M-U Text from point to end of the
- current word is changed to
- uppercase
-
- case-word-lower M-L Text from point to end of the
- current word is changed to
- lowercase
-
- case-word-capitalize M-C First word (or letter) after
- the
- point is capitalized
-
- case-region-upper ^X^U The current region is
- uppercased
-
- case-region-lower ^X^L The current region is
- lowercased
-
- handle-tab ^I Tab interval is set to the
- given
- numeric argument
-
- entab-region ^X^E Changes multiple spaces to
- tabs
- characters where possible
-
-
-
- 43
-
-
-
-
-
-
- MicroEMACS Reference Manual Screen Formatting
-
-
- detab-region ^X^D Changes tab characters to the
- appropriate number of spaces
-
- trim-region ^X^T Trims white space from the end
- of the lines in the current
- region
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 44
-
-
-
-
-
-
- Access to the Outside World MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Chapter 11
-
- Access to the Outside World
-
-
- EMACS has the ability to interface to other programs
- and the environment of the computer outside of itself. It
- does this through a series of commands that allow it to talk
- to the computer's command processor or shell. Just what
- this is varies between different computers. Under MSDOS or
- PCDOS this is the command.com command processor. Under UNIX
- it is the csh shell. On the Atari ST is can be the Mark
- Williams MSH or the Beckmeyer shell. In each case, it is
- the part of the computer's operating system that is
- responsible for determining what programs are executed, and
- when.
-
- The ^X! shell-command command prompts the user for a
- command line to send out to the shell to execute. This can
- be very useful for doing file listings and changing the
- current directory or folder. EMACS gives control to the
- shell, which executed the command, and then types [END] and
- waits for the user to type a character before redrawing the
- screen and resuming editing. If the shell-command command is
- used from within the macro language, there is no pause.
-
- ^X@ pipe-command command allows EMACS to execute a
- shell command, and if the particular computer allows it,
- send the results into a buffer which is automatically
- displayed on the screen. The resulting buffer, called
- "command" can be manipulated just like any other editing
- buffer. Text can be copied out of it or rearranged as
- needed. This buffer is originally created in VIEW mode, so
- remember to ^X^Mview<NL> in order to change it.
-
- Many computers provide tools which will allow you to
- filter text, making some modifications to it along the way.
- A very common tool is the SORT program which accepts a file,
- sorts it, and prints the result out. The EMACS command, ^X#
- filter-buffer sends the current buffer through such a
- filter. Therefore, if you wished to sort the current buffer
- on a system which supplied a sort filter, you would type
- ^X#sort<NL>. You can also create your own filters by
- writing programs and utilities which read text from the
- keyboard and display the results. EMACS will use any of
- these which would normally be available from the current
- shell.
-
-
-
- 45
-
-
-
-
-
-
- MicroEMACS Reference Manual Access to the Outside World
-
-
- If you would like to execute another program
- directly, without the overhead of an intervening shell, you
- can use the ^X$ execute-program command. It will prompt you
- for an external program and its arguments and attempt to
- execute it. Like when EMACS looks for command files, EMACS
- will look first in the HOME directory, then down the execute
- PATH, and finally in the current directory for the named
- program. On some systems, it will automatically tack the
- proper extension on the file name to indicate it is a
- program. On some systems that don't support this function,
- ^X$ will be equivalent to ^X! shell-command.
-
- Sometimes, you would like to get back to the shell
- and execute other commands, without losing the current
- contents of EMACS. The ^XC i-shell command shells out of
- EMACS, leaving EMACS in the computer and executing another
- command shell. Most systems would allow you to return to
- EMACS with the "exit" command.
-
- On some systems, mainly advanced versions of UNIX,
- you can
- direct EMACS to "go into the background" with the ^XD
- suspend-emacs command. This places EMACS in the background
- returning you to the original command shell. EMACS can then
- be returned to at any time with the "fg" foreground command.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 46
-
-
-
-
-
-
- Access to the Outside World MicroEMACS Reference Manual
-
-
-
-
-
-
- Chapter 11 Summary
-
-
- In Chapter 11 introduced different ways to access
- the computers shell or command processor from within EMACS.
- The commands in the following table were covered in the
- chapter.
-
-
- Key Binding Keystroke Effect
- execute-program ^X$ Execute an external program
- directly
-
- filter-command ^X# Send the current buffer
- through
- a shell filter
-
- i-shell ^XC Escape to a new shell
-
- pipe-command ^X@ Send the results of an
- external
- shell command to a buffer
-
- shell-command ^X! Execute one shell command
-
- suspend-emacs ^XD Place EMACS in the background
- (some UNIX systems only)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 47
-
-
-
-
-
-
- MicroEMACS Reference Manual Keyboard Macros
-
-
-
-
-
-
-
-
- Chapter 12
-
- Keyboard Macros
-
-
- In many applications, it may be necessary to repeat
- a series of characters or commands frequently. For example,
- a paper may require the frequent repetition of a complex
- formula or a long name. You may also have a series of EMACS
- commands that you invoke frequently. Keyboard macros offer
- a convenient method of recording and repeating these
- commands.
-
- Imagine, for example, you are writing a scholarly
- paper on Asplenium platyneuron, the spleenwort fern. Even
- the dedicated botanist would probably find it a task
- bordering on the agonizing to type Asplenium platyneuron
- frequently throughout the paper. An alternative method is
- 'record' the name in a keyboard macro. Try it yourself.
-
- The command ^X( begin-macro starts recording the all
- the keystrokes and commands you input. After you've typed
- it, enter Asplenium platyneuron. To stop recording, type
- ^X) end-macro. EMACS has stored all the keystrokes between
- the two commands. To repeat the name you've stored, just
- enter ^XE execute-macro, and the name "Asplenium
- platyneuron" appears. You can repeat this action as often
- as you want, and of course as with any EMACS command, you
- may precede it with a numerical argument.
-
- Because EMACS records keystrokes, you may freely
- intermix commands and text. Unfortunately, you can only
- store one macro at a time. Thus, if you begin to record
- another macro, the previously defined macro is lost. Be
- careful to ensure that you've finished with one macro before
- defining another. If you have a series of commands that you
- would like to 'record' for future use, use the macro or
- procedure facilities detailed in chapter <X>.
-
-
-
-
-
-
-
-
-
-
-
-
- 48
-
-
-
-
-
-
- Keyboard Macros MicroEMACS Reference Manual
-
-
-
-
-
-
- Chapter 12 Summary
-
-
- Chapter 12 covered keyboard macros. You learned how
- to record keystrokes and how to repeat the stored sequence.
-
- Key Binding Keystroke Effect
-
- start-macro ^X( Starts recording all keyboard
- input
-
- end-macro ^X) Stops recording keystrokes for
- macro
-
- execute-macro ^XE Entire sequence of recorded
- keystrokes is replayed
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 49
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
-
-
-
-
-
-
- Chapter 13
-
- MicroEMACS Macros
-
-
- Macros are programs that are used to customize the
- editor and to perform complicated editing tasks. They may
- be stored in files or buffers and may be executed using an
- appropriate command, or bound to a particular keystroke.
- Portions of the standard start-up file are implemented via
- macros, as well as the example menu system. The execute-
- macro-<n> commands cause the macro, numbered from 1 to 40,
- to be executed. The execute-file command allows you to
- execute a macro stored in a disk file, and the execute-
- buffer command allows you to execute a macro stored in a
- buffer. Macros are stored for easy execution by executing
- files that contain the store-macro command.
-
- If you need more than 40 macros, named macroes,
- called procedures, can be used. The store-procedure command
- takes a string argument which is the name of a procedure to
- store. These procedures than can be executed with the M-^E
- execute-procedure or the run commands. Also, giving the
- name of a stored procedure within another macro will
- executed that named procedure as if it had been called up
- with the run command.
-
- Some fairly length examples of MicroEMACS macroes
- can be seen by examining the standard files that come with
- EMACS. The emacs.rc file (called .emacsrc) under UNIX) is
- the EMACS macro file which is executed when EMACS is
- normally run. It contains a number of different stored
- macroes along with the lines to setup and display the
- Function key window and to call up other commands and macro
- files using function keys.
-
- There are many different aspects to the macro
- language within MicroEMACS. Editor commands are the various
- commands that manipulate text, buffers, windows, et cetera,
- within the editor. Directives are commands which control
- what lines get executed within a macro. Also there are
- various types of variables. Environmental variables both
- control and report on different aspects of the editor. User
- variables hold string values which may be changed and
- inspected. Buffer variables allow text to be placed into
- variables. Interactive variable allow the program to prompt
- the user for information. Functions can be used to
- manipulate all these variables.
-
-
- 50
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- 13.1 Constants
-
-
- All constants and variable contents in EMACS are
- stored as strings of characters. Numbers are stored digit by
- digit as characters. This allows EMACS to be "typeless", not
- having different variables types be legal in different
- contexts. This has the disadvantage of forcing the user to
- be more careful about the context of the statements
- variables are placed in, but in turn gives them more
- flexibility in where they can place variables. Needless to
- say, this also allows EMACS's expression evaluator to be
- both concise and quick.
-
- Wherever statements need to have arguments, it is
- legal to place constants. A constant is a double quote
- character, followed by a string of characters, and
- terminated by another double quote character. To represent
- various special characters within a constant, the tilde (~)
- character is used. The character following the tilde is
- interpreted according to the following table:
-
- Sequence Result
- ~n EMACS newline character (breaks lines)
- ~r ^M carriage return
- ~l ^J linefeed
- ~~ ~ tilde
- ~b ^H backspace
- ~f ^L formfeed
- ~t ^I tab
- ~" " quote
-
- Any character not in the table which follows a tilde
- will be passed unmodified. This action is similar to the ^Q
- quote-character command available from the keyboard.
-
- EMACS may use different characters for line
- terminators on different computers. The ~n combination will
- always get the proper line terminating sequence for the
- current system.
-
- The double quotes around constants are not needed if
- the constant contains no internal white space and it also
- does not happen to meet the rules for any other EMACS
- commands, directives, variables, or functions. This is
- reasonable useful for numeric constants.
-
-
- 13.2 Variables
-
-
- Variables in MicroEMACS can be used to return values
- within expressions, as repeat counts to editing commands, or
- as text to be inserted into buffers and messages. The value
-
-
- 51
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- of these variables is set using the set (^XA) command. For
- example, to set the current fill column to 64 characters,
- the following macro line would be used:
-
- set $fillcol 64
-
- or to have the contents of %name inserted at the
- point in the current buffer, the command to use would be:
-
- insert-string %name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 52
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
-
- 13.2.1 Environmental Variables
-
-
- "What good is a quote if you can't change it?"
-
- These variables are used to change different aspects
- of the way the editor works. Also they will return the
- current settings if used as part of an expression. All
- environmental variable names begin with a dollar sign ($)
- and are in lower case.
-
- $acount The countdown of inserted characters until the
- next save-file
-
- $asave The number of inserted characters between
- automatic file-saves in ASAVE mode
-
- $bufhook The function named in this variable is run
- when a buffer is entered. It can be used to
- implement modes which are specific to a
- paricular file or file type.
-
- $cbflags Current buffer attribute flags (See appendix G
- for details)
-
- $cbufname Name of the current buffer
-
- $cfname File name of the current buffer
-
- $cmdhook Name of function to run before accepting a
- command. This is by default set to nop
-
- $cmode Integer containing the mode of the current
- buffer. (See Appendix F for values)
-
- $curchar Ascii value of the character currently at the
- point
-
- $curcol Current column of point in current buffer
-
- $curline Current line of point in current buffer
-
- $curwidth Number of columns used currently
-
- $cwline Current display line in current window
-
- $debug Flag to trigger macro debugging
-
- $diagflag If set to TRUE, diagonal dragging of text and
- mode lines is enabled. If FALSE, text and
- modelines can only be dragged horizontally or
- vertically at one time.
-
-
-
- 53
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- $discmd Flag to disable the echoing of messages on the
- command line
-
- $disinp Flag to disable the echoing of characters
- during command line input
-
- $exbhook This variable holds the name of a function or
- macro which is run whenever you are switching
- out of a buffer.
-
- $fcol The current line position being displayed in
- the first column of the current window.
-
- $fillcol Current fill column
-
- $flicker Flicker Flag set to TRUE if IBM CGA set to
- FALSE for most others
-
- $gflags Global flags controlling some EMACS internal
- functions (See appendix G for details)
-
- $gmode Global mode flags. (See Appendix F for values)
-
- $hardtab Number of spaces between hard tab stops.
- Normally 8, this can be used to change
- indentation only within the editor.
-
- $hjump The number in here tells EMACS how many
- columns to scroll the screen horizontally when
- a horizontal scroll is required.
-
- $hscroll This flag determines if EMACS will scroll the
- entire current window horizontally, or just
- the current line. The default value, TRUE,
- results in the entire current window being
- shifted left and right when the cursor goes
- off the edge of the screen.
-
- $kill This contains the first 127 characters
- currently in the kill buffer and can be used
- to set the contents of the kill buffer
-
- $language [READ ONLY]Contains the name of the language
- which the current EMACS's message will
- display. (Currently EMACS is available in
- English, French, Spanish, Pig Latin,
- Portuguese, Dutch, German and Esperonto).
-
- $lastkey [READ ONLY]Last keyboard character typed
-
- $lastmesg [READ ONLY]Contains the text of the last
- message which emacs wrote on the command line
-
-
-
-
- 54
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- $line The current line in the current buffer can be
- retrieved and set with this environment
- variable
-
- $lwidth [READ ONLY]Returns the number of characters in
- the current line
-
- $match [READ ONLY]Last string matched in a magic mode
- search
-
- $modeflag Determines if mode lines are currently
- displayed
-
- $msflag If TRUE, the mouse (if present) is active. If
- FALSE, no mouse cursor is displayed, and no
- mouse actions are taken.
-
- $pagelen Number of screen lines used currently
-
- $palette string used to control the palette register
- settings on graphics versions. The usually
- form consists of groups of three octal digits
- setting the red, green, and blue levels.
-
- $pending [READ ONLY]Flag to determine if there are user
- keystrokes waiting to be processed.
-
- $progname [READ ONLY]Always contains the string
- "MicroEMACS" for standard MicroEMACS. Could
- be something else if EMACS is incorporated as
- part of someone else's program
-
- $readhook This variable holds the name of a function to
- execute whenever a file is read into EMACS.
- Normally, using the standard emacs.rc file,
- this is bound to a function which places EMACS
- into CMODE if the extension of the file read
- is .c or .h
-
- $replace Current default replace string
-
- $rval This contains the return value from the last
- subprocess which was invoked from EMACS
-
- $search Current default search string
-
- $seed Integer seed of the random number generator
-
- $softtab Number of spaces inserted by EMACS when the
- handle-tab command (which is normally bound to
- the TAB key) is invoked.
-
- $sres Current screen resolution (CGA, MONO, EGA or
- VGA on the IBM-PC driver. LOW, MEDIUM, HIGH
-
-
- 55
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- or DENSE on the Atari ST1040, NORMAL on all
- others)
-
- $ssave If TRUE, when EMACS is asked to save the
- current file, it writes all files out to a
- temporary file, deletes the original, and then
- renames the temporary to the old file name.
- The default value of this is TRUE.
-
- $sscroll Changes EMACS, when set to TRUE, to smoothly
- scroll windows (one line at a time) when
- cursoring off the ends of the current window.
-
- $status [READ ONLY]Status of the success of the last
- command (TRUE or FALSE). This is usually used
- with !force to check on the success of a
- search, or a file operation.
-
- $sterm This is the character used to terminate search
- string inputs. The default for this is the
- last key bound to meta-prefix
-
- $target Current target for line moves (setting this
- fool's EMACS into believing the last command
- was a line move)
-
- $time [READ ONLY]Contains a string corresponding to
- the current date and time. Usually this is in
- a form similar to "Mon May 09 10:10:58 1988".
- Not all operating systems will support this.
-
- $tpause Controls the length of the pause to display a
- matched fence when the current buffer is in
- CMODE and a close fence has been typed
-
- $version [READ ONLY]Contains the current MicroEMACS
- version number
-
- $wline Number of display lines in current window
-
- $wraphook This variable contains the name of an EMACS
- function which is executed when a buffer is in
- WRAP mode and it is time to wrap. By default
- this is bound to wrap-word.
-
- $writehook This variable contains the name of an EMACS
- function or macro which is invoked whenever
- EMACS attempts to write a file out to disk.
- This is executed before the file is written,
- allowing you to process a file on the way out.
-
- $xpos The column the mouse was at the last mouse
- button press
-
-
-
- 56
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- $ypos The line which the mouse was on during the
- last mouse button press
-
- Obviously, many more of these variables will be
- available in future releases of MicroEMACS. (Yes, send a
- vote for your favorite new environmental variables today).
-
-
- 13.2.2 User variables
-
-
- User variables allow you, the user, to store strings
- and manipulate them. These strings can be pieces of text,
- numbers (in text form), or the logical values TRUE and
- FALSE. These variables can be combined, tested, inserted
- into buffers, and otherwise used to control the way your
- macros execute. At the moment, up to 255 user variables may
- be in use in one editing session. All users variable names
- must begin with a percent sign (%) and may contain any
- printing characters. Only the first 10 characters are
- significant (IE differences beyond the tenth character are
- ignored). Most operators will truncate strings to a length
- of 128 characters.
-
-
- 13.2.3 Buffer Variables
-
-
- Buffer variables are special in that they can only
- be queried and cannot be set. What buffer variables are is
- a way to take text from a buffer and place it in a variable.
- For example, if I have a buffer by the name of RIGEL2, and
- it contains the text:
-
- Richmond
- Lafayette
- <*>Bloomington (where <*> is the current point)
- Indianapolis
- Gary
- =* MicroEMACS 3.10 (WRAP) == rigel2 == File: /data/rigel2.txt
- =====
-
- and within a command I reference #rigel2, like:
-
- insert-string #rigel2
-
- MicroEMACS would start at the current point in the
- RIGEL2 buffer and grab all the text up to the end of that
- line and pass that back. Then it would advance the point to
- the beginning of the next line. Thus, after our last command
- executes, the string "Bloomington" gets inserted into the
- current buffer, and the buffer RIGEL2 now looks like this:
-
-
-
-
- 57
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- Richmond
- Lafayette
- Bloomington
- <*>Indianapolis (where <*> is the current point)
- Gary
- =* MicroEMACS 3.10 (WRAP) == rigel2 == File: /data/rigel2.txt
- =====
-
- as you have probably noticed, a buffer variable
- consists of the buffer name, preceded by a pound sign (#).
-
-
- 13.2.4 Interactive variables
-
-
- Interactive variables are actually a method to
- prompt the user for a string. This is done by using an at
- sign (@) followed either with a quoted string, or a variable
- containing a string. The string is the placed on the bottom
- line, and the editor waits for the user to type in a string.
- Then the string typed in by the users is returned as the
- value of the interactive variable. For example:
-
- set %quest "What file? "
- find-file @%quest
-
- will ask the user for a file name, and then attempt
- to find it. Note also that complex expressions can be built
- up with these operators, such as:
-
- @&cat &cat "File to decode[" %default "]: "
-
- which prompts the user with the concatenated string.
-
-
- 13.3 Functions
-
-
- Functions can be used to manipulate variables in
- various ways. Functions can have one, two, or three
- arguments. These arguments will always be placed after the
- function on the current command line. For example, if we
- wanted to increase the current fill column by two, using
- emacs's set (^XA) command, we would write:
-
- set $fillcol &add $fillcol 2
- \ \ \ \ \____second operand
- \ \ \ \_________first operand
- \ \ \_______________function to execute
- \ \_____________________variable to set
- \___________________________set (^XA) command
-
- Function names always begin with the ampersand (&)
- character, and are only significant to the first three
-
-
- 58
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- characters after the ampersand. Functions will normal
- expect one of three types of arguments, and will
- automatically convert types when needed.
-
- <num> an ascii string of digits which is interpreted
- as a numeric value. Any string which does not
- start with a digit or a minus sign (-) will be
-
- considered zero.
-
-
- <str> An arbitrary string of characters. At the
- moment, strings are limited to 128 characters
- in length.
-
- <log> A logical value consisting of the string
- "TRUE" or "FALSE". Numeric strings will also
- evaluate to "FALSE" if they are equal to zero,
- and "TRUE" if they are non-zero. Arbitrary
- text strings will have the value of "FALSE".
-
- A list of the currently available functions follows:
- (Once again, send in those votes on what kind of functions
- you would like to see added!) Functions are always used in
- lower case, the uppercase letters in the function table are
- the short form of the function (IE &div for ÷).
-
- Numeric Functions: (returns <num>)
-
- &ADD <num> <num> Add two numbers
- &SUB <num> <num> Subtract the second number from the
- first
- &TIMes <num> <num> Multiply two numbers
- &DIVide <num> <num> Divide the first number by the second
- giving an integer result
- &MOD <num> <num> Return the reminder of dividing the
- first number by the second
- &NEGate <neg> Multiply the arg by -1
- &LENgth <str> Returns length of string
- &SINdex <str1> <str2> Finds the position of <str2> within
- <str1>. Returns zero if not found.
- &ASCii <str> Return the ascii code of the first
- character in <str>
- &RND <num> Returns a random integer between 1 and
- <num>
- &ABS <num> Returns the absolute value of <num>
- &BANd <num> <num> Bitwise AND function
- &BOR <num> <num> Bitwise OR function
- &BXOr <num> <num> Bitwise XOR function
- &BNOt <num> Bitwise NOT function
-
- String manipulation functions: (returns <str>)
-
-
-
-
- 59
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- &CAT <str> <str> Concatenate the two strings to form
- one
- &LEFt <str> <num> return the <num> leftmost characters
- from <str>
- &RIGht <str> <num> return the <num> rightmost characters
- from <str>
- &MID <str> <num1> <num2>
- Starting from <num1> position in
- <str>,
- return <num2> characters.
- &UPPer <str> Uppercase <str>
- &LOWer <str> lowercase <str>
- &CHR <num> return a string with the character
- represented by ascii code <num>
- >C returns a string of characters
- containing a EMACS command input from
- the user
- >K return a string containing a single
- keystroke from the user
- &ENV <str> If the operating system is capable,
- this
- returns the environment string
- associated
- with <str>
- &BIND <str> return the function name bound to the
- keystroke <str>
- &XLATE <str1> <str2> <str3>
- &FINd <str> Find the named file <str> along the
- path and return its full file
- specification
- or an empty string if none exists
- &TRIM <str> Trim the trailing whitespace from a
- string
-
- Logical Testing functions: (returns <log>)
-
- &NOT <log> Return the opposite logical value
- &AND <log1> <log2> Returns TRUE if BOTH logical arguments
- are TRUE
- &OR <log1> <log2> Returns TRUE if either argument
- is TRUE
- &EQUal <num> <num> If <num> and <num> are numerically
- equal, return TRUE
- &LESs <num1> <num2> If <num1> is less than <num2>, return
- TRUE.
- &GREater <num1> <num2> If <num1> is greater than, or equal to
- <num2>, return TRUE.
- &SEQual <str1> <str2> If the two strings are the same,
- return
- TRUE.
- &SLEss <str1> <str2> If <str1> is less alphabetically than
- <str2>, return TRUE.
-
-
-
-
- 60
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- &SGReater <str1> <str2> If <str1> is alphabetically greater
- than
- or equal to <str2>, return TRUE.
- &EXIst <str> Does the named file <str> exist?
-
- Special Functions:
-
- &INDirect <str> Evaluate <str> as a variable.
-
- This last function deserves more explanation. The
- &IND function evaluates its argument, takes the resulting
- string, and then uses it as a variable name. For example,
- given the following code sequence:
-
- ; set up reference table
-
- set %one "elephant"
- set %two "giraffe"
- set %three "donkey"
-
- set %index "two"
- insert-string &ind %index
-
- the string "giraffe" would have been inserted at the
- point in the current buffer. This indirection can be safely
- nested up to about 10 levels.
-
-
- 13.4 Directives
-
-
- Directives are commands which only operate within an
- executing macro, IE they do not make sense as a single
- command. As such, they cannot be called up singly or bound
- to keystroke. Used within macros, they control what lines
- are executed and in what order.
-
- Directives always start with the exclamation mark
- (!) character and must be the first thing placed on a line.
- Directives executed interactively (via the execute-command-
- line command) will be ignored.
-
-
- 13.4.1 !ENDM Directive
-
-
- This directive is used to terminate a macro being
- stored. For example, if a file is being executed contains
- the text:
-
- ; Read in a file in view mode, and make the window red
-
- 26 store-macro
- find-file @"File to view: "
-
-
- 61
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- add-mode "view"
- add-mode "red"
- !endm
-
- write-message "[Consult macro has been loaded]"
-
- only the lines between the store-macro command and
- the !ENDM directive are stored in macro 26. Both numbered
- macroes and named procedures (via the store-procedure
- command) should be terminated with this directive.
-
-
- 13.4.2 !FORCE Directive
-
-
- When MicroEMACS executes a macro, if any command
- fails, the macro is terminated at that point. If a line is
- preceded by a !FORCE directive, execution continues whether
- the command succeeds or not. For example:
-
- ; Merge the top two windows
-
- save-window ;remember what window we are at
- 1 next-window ;go to the top window
- delete-window ;merge it with the second window
- !force restore-window ;This will continue regardless
- add-mode "red"
-
-
- 13.4.3 !IF, !ELSE, and !ENDIF Directives
-
-
- This directive allows statements only to be executed
- if a condition specified in the directive is met. Every
- line following the !IF directive, until the first !ELSE or
- !ENDIF directive, is only executed if the expression
- following the !IF directive evaluates to a TRUE value. For
- example, the following macro segment creates the portion of
- a text file automatically. (yes believe me, this will be
- easier to understand then that last explanation....)
-
- !if &sequal %curplace "timespace vortex"
- insert-string "First, rematerialize~n"
- !endif
- !if &sequal %planet "earth" ;If we have landed on earth...
- !if &sequal %time "late 20th century" ;and we are
- then
- write-message "Contact U.N.I.T."
- !else
- insert-string "Investigate the
- situation....~n"
- insert-string "(SAY 'stay here Sara')~n"
- !endif
- !else
-
-
- 62
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
- set %conditions @"Atmosphere conditions outside? "
- !if &sequal %conditions "safe"
- insert-string &cat "Go outside......" "~n"
- insert-string "lock the door~n"
- !else
- insert-string "Dematerialize..try somewhen
- else"
- newline
- !endif
- !endif
-
-
- 13.4.4 !GOTO Directive
-
-
- Flow can be controlled within a MicroEMACS macro
- using the !GOTO directive. It takes as an argument a label.
- A label consists of a line starting with an asterisk (*) and
- then an alphanumeric label. Only labels in the currently
- executing macro can be jumped to, and trying to jump to a
- non-existing label terminates execution of a macro. For
- example..
-
- ;Create a block of DATA statements for a BASIC program
-
- insert-string "1000 DATA "
- set %linenum 1000
-
- *nxtin
- update-screen ;make sure we see the changes
- set %data @"Next number: "
- !if &equal %data 0
- !goto finish
- !endif
-
- !if &greater $curcol 60
- 2 delete-previous-character
- newline
- set %linenum &add %linenum 10
- insert-string &cat %linenum " DATA "
- !endif
-
- insert-string &cat %data ", "
- !goto nxtin
-
- *finish
-
- 2 delete-previous-character
-
-
-
-
-
-
-
-
- 63
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Macros
-
-
- newline
-
-
- 13.4.5 !WHILE and !ENDWHILE Directives
-
-
- This directive allows you to set up repetitive tasks
- easily and efficiently. If a group of statements need to be
- executed while a certain condition is true, enclose them
- with a while loop. For example,
-
- !while &less $curcol 70
- insert-string &cat &cat "[" #stuff "]"
- !endwhile
-
- places items from buffer "item" in the current line
- until the cursor is at or past column 70. While loops may
- be nested and can contain and be the targets of !GOTOs with
- no ill effects. Using a while loop to enclose a repeated
- task will run much faster than the corresponding construct
- using !IFs.
-
-
- 13.4.6 !BREAK Directive
-
-
- This directive allows the user to abort out of the
- currently most inner while loop, regardless of the
- condition. It is often used to abort processing for error
- conditions. For example:
-
- ; Read in files and substitute "begining" with "beginning"
-
- set %filename #list
- !while ¬ &seq %filename "<end>"
- !force find-file %filename
- !if &seq $status FALSE
- write-message "[File read error]"
- !break
- !endif
- beginning-of-file
- replace-string "begining" "beginning"
- save-file
- set %filename #list
- !endwhile
-
- This while loop will process files until the list is
- exhausted or there is an error while reading a file.
-
-
-
-
-
-
-
-
- 64
-
-
-
-
-
-
- MicroEMACS Macros MicroEMACS Reference Manual
-
-
-
- 13.4.7 !RETURN Directive
-
-
- The !RETURN Directive causes the current macro to
- exit, either returning to the caller (if any) or to
- interactive mode. For example:
-
- ; Check the monitor type and set %mtyp
-
- !if &sres "CGA"
- set %mtyp 1
- !return
- !else
- set %mtyp 2
- !endif
-
- insert-string "You are on a MONOCHROME machine!~n"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 65
-
-
-
-
-
-
- MicroEMACS Reference Manual Debugging MicroEMACS macroes
-
-
-
-
-
-
-
-
- Chapter 14
-
- Debugging MicroEMACS macroes
-
-
- When developing new macroes, it is very convenient
- to be able to trace their execution to find errors. The
- $debug environment variable enables macro debugging. While
- this variable is TRUE, emacs will stop at each macro line it
- intends to execute and allow you to view it, and issue a
- number of different commands to help determine how the macro
- is executing.
-
- For example, we will step through the macro which
- toggles the function key window off. The first thing to do,
- is to set $debug, using the ^XA set command. Type ^XA and
- emacs will prompt you on the command line with "Variable to
- set: ". Type in "$debug" and press the enter key. Emacs
- will then ask "Value: ". Type in "TRUE" (in capital
- letters) and press the enter key.
-
- While macro debugging is enabled (as it is now)
- emacs will report each time a variable is assigned a value,
- by displaying the variable and its value on the command
- line. Right now,
-
- ((($debug <- TRUE)))
-
- appears on the command line to tell you that $debug
- now has been assigned the value of TRUE. Press the space
- bar to continue.
-
- Now, lets try to debug a macro. Press function key
- 5 which normally toggles the function key window. The first
- thing that appears is:
-
- <<<[Macro 01]:!if %rcfkeys>>>
-
- At this point, emacs is waiting for a command. I t
- i s
- prepared
- to see if the user variable %rcfkeys is TRUE, and execute
- some lines if they are. Suppose we want to see the value of
- this variable, type the letter "e" to evaluate an
- expression. Emacs will prompt with "EXP: ". Type
- "%rcfkeys" followed by the enter key. Emacs should then
- respond with "TRUE" to indicate that the function key window
- is currently on screen.
-
-
- 66
-
-
-
-
-
-
- Debugging MicroEMACS macroes MicroEMACS Reference Manual
-
-
- Press the space bar to allow the !if directive to
- execute. Emacs will decide that it is TRUE, and then
- display the next macro command to execute.
-
- <<<[Macro 01]:!goto rcfoff>>>
-
- Notice emacs tells us what macro we are currently
- executing (in this case, the macro bound to execute-
- macro-1). Press the space bar again to execute the !goto
- directive.
-
- <<<[Macro 01]:save-window>>>
-
- Emacs is saving the position of the current window
- so that it can attempt to return to it after it has brought
- up the function key window.
-
- [...THIS CHAPTER IS NOT FINISHED...]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 67
-
-
-
-
-
-
- MicroEMACS Reference Manual Key Bindings, What they are and
- why
-
-
-
-
-
-
-
-
- Chapter 15
-
- Key Bindings, What they are and why
-
-
- One of the features which makes MicroEMACS very
- adaptable is its ability to use different keystrokes to
- execute different commands. The process of changing the
- particular command a key invokes is called rebinding. This
- allows us to make the editor look like other popular editors
- and programs.
-
- Each command in MicroEMACS has a name which is used
- for binding purposes. For example, the command to move the
- cursor down one page is called next-line and is normally
- bound to the ^N key. If you decided that you also wanted to
- use the ^D key to move the cursor down one line, you would
- use the M-K bind-to-key command. EMACS would respond with
- ": bind-to-key " on the command line and allow you to type
- in a command name. Then type in the name of the command
- you want to change, in this case next-line, followed by the
- <NL> key. EMACS will then wait for you to type in the keys
- you want to activate the named function. Type a single ^D.
- From now on, typing ^D will cause EMACS to move down one
- line, rather than its original function of deleting
- characters.
-
- To find out the name of a command, consult the list
- of valid EMACS commands in Appendix B. Also, you can use
- the ^X? describe-key command to look up the name of a
- command. Type ^X? and then the key to use that command, and
- EMACS will show you the name of the command.
-
- After you have experimented with changing your key
- bindings, you may decide that you want to change some
- bindings permanently. To have EMACS rebind keys to your
- pleasure each time you start EMACS, you can add statements
- to the end of your startup file (emacs.rc or .emacsrc
- depending on the system). For example,
-
- bind-to-key next-line ^D
-
- Notice, that control D character in the startup file
- is represented visibly as an uparrow key followed by a
- capital D. To know how to represent any keys you want to
- bind, use the describe-key command on the key, and use the
- sequence that is displayed.
-
-
- 68
-
-
-
-
-
-
- Key Bindings, What they are and why MicroEMACS Reference
- Manual
-
-
- bind-to-key split-current-window FN1
-
- This example would make function key 1 activate the
- command that splits the current window in two.
-
- EMACS will let you define a large number of keys,
- but will report "Binding table FULL!" when it runs out of
- space to bind keys. Normally EMACS will allow up to 512
- key bindings (including approx. 300 originally bound keys).
-
- If you want to get a current listing of all the
- commands and the keys bound to them, use the describe-
- bindings command. Notice, that this command is not bound to
- any keys!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 69
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Command Line
- Switches and Startup Files
-
-
-
-
-
-
-
-
- Appendix A
-
- MicroEMACS Command Line Switches and Startup Files
-
-
- When EMACS first executes, it always searches for a
- file, called .emacsrc under most UNIX systems or emacs.rc on
- most other systems which it will execute as EMACS macros
- before it reads in the named source files. This file
- normally contains EMACS macroes to bind the function keys to
- useful functions and load various useful macros. The
- contents of this file will probably vary from system to
- system and can be modified by the user as desired.
-
- When searching for this file, EMACS looks for it in
- this order. First, it attempts to find a definition for
- "HOME" in the environment. It will look in that directory
- first. Then it searches all the directories listed in the
- "PATH" environment variable. Then it looks through a list
- of predefined standard directories which vary from system to
- system. Finally, failing all of these, it looks in the
- current directory. This is also the same method EMACS uses
- to look up any files to execute, and to find it's help file
- EMACS.HLP.
-
- On computers that call up EMACS via a command line
- process, such as MSDOS and UNIX, there are different things
- that can be added to the command line to control the way
- EMACS operates. These can be switches, which are a dash
- ('-') followed by a letter, and possible other parameters,
- or a startup file specifier, which is an at sign '@'
- followed by a file name.
-
- @<file> This causes the named file to be executed
- instead of the standard emacs.rc file before
- emacs reads in any other files. More than one
- of these can be placed on the command line,
- and they will be executed in the order that
- they appear.
-
- -C The following source files on the command line
- can be changed (as opposed to being in VIEW
- mode). This is mainly used to cancel the
- effects of the -v switch used previously in
- the same command line.
-
-
-
-
- 70
-
-
-
-
-
-
- MicroEMACS Command Line Switches and Startup
- Files MicroEMACS Reference Manual
-
-
- -E This flag causes emacs to automatically run
- the startup file "error.cmd" instead of
- emacs.rc. This is used by various C compilers
- for error processing (for example, Mark
- Williams C).
-
- -G<num> Upon entering EMACS, position the cursor at
- the <num> line of the first file.
-
- -I<var> <value>
- Initialize an EMACS variable with <value>.
- This can be useful to force EMACS to start in
- a particular mode. (For example, invoke EMACS
- with "emacs -i$sres VGA foo.bar" to edit file
- foo.bar in VGA 50 line mode on an IBM-PC).
-
- -K<key> This key tells emacs to place the source files
- in CRYPT mode and read it in using <key> as
- the encryption key. If no key is listed
- immediately after the -K switch, EMACS will
- prompt for a key, and not echo it as it is
- typed.
-
- -R This places EMACS in "restricted mode" where
- any commands allowing the user to read or
- write any files other than the ones listed on
- the command line are disabled. Also all
- commands allowing the user access to the
- operating system are disabled. This makes
- EMACS very useful as a "safe" environment for
- use within other applications and especially
- used as a remote editor for a BBS or
- electronic bulletin board system.
-
- -S<string> After EMACS is started, it automatically
- searches for <string> in the first source
- file.
-
- -V This tells EMACS that all the following
- sources files on the command line should be in
- VIEW mode to prevent any changes being made to
- them.
-
-
-
-
-
-
-
-
-
-
-
-
-
- 71
-
-
-
-
-
-
- MicroEMACS Reference Manual Command Completion
-
-
-
-
-
-
-
-
- Chapter 16
-
- Command Completion
-
-
- Some versions of MicroEMACS will allow you to
- abbrieviate buffer names, command names and file names as
- you enter them. To use this, type in the first few
- characters of the name you wish, and then hit either the
- space bar, the META key or the TAB key. MicroEMACS will
- then attempt to look at the list of all the availible names
- and if there is only one which will fit, it will choose that
- name. If there are several names that quailify, as many
- characters as are common to ALL of them will be entered. If
- there are no possible matches, the bell will ring to
- indicate MicroEMACS can not complete the command.
-
- For example, if you have several files in your
- current directory with the following names:
-
- prog1.c
- prog1.obj
- prog1.exe
- prog1.doc
- program.one
- project.one
- test.c
- tes
-
- and you enter the ^X^F find-file command, if you
- type 'p' and then hit the space bar, EMACS will respond by
- typing the 'r' that is common to all the above file names
- begining with 'p'. If you then type 'ogr' and hit the tab
- key, EMACS will respond with 'am.one' and automatically hit
- the enter key for you.
-
- If you were to instead type an 'a' and hit the space
- bar, EMACS will beep, informing you that there is no
- possible match.
-
- If you type a 'te' and hit the space bar, EMACS will
- then type the following 's', but it will not automatically
- enter it because it is possible you mean to get to the
- test.c file.
-
- Buffer name, and command name completion is
- available in all versions of MicroEMACS. File name
-
-
-
- 72
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS commands
-
-
- completion is available on UNIX BSD4.3, the Atari ST, the
- AMIGA and under MSDOS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 74
-
-
-
-
-
-
- MicroEMACS commands MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Appendix B
-
- MicroEMACS commands
-
-
- Below is a complete list of the commands in EMACS,
- the keys normally used to do the command, and what the
- command does. Remember, on some computers there may also be
- additional ways of using a command (cursor keys and special
- function keys for example).
-
- Command Binding Meaning
- abort-command ^G This allows the user to abort out of
- any
- command that is waiting for input
-
- add-mode ^XM Add a mode to the current buffer
-
- add-global-mode M-M Add a global mode for all new buffers
-
- apropos M-A List out commands whose name contains
- the string specified
-
- backward-character ^B Move one character to the left
-
- begin-macro ^X( Begin recording a keyboard macro
-
- beginning-of-file M-< Move to the beginning of the file in
- the current buffer
-
- beginning-of-line ^A Move to the beginning of the current
- line
-
- bind-to-key M-K Bind a key to a function
-
- buffer-position ^X= List the position of the cursor in the
- current window on the command line
-
- case-region-lower ^X^L Make a marked region all lower case
-
- case-region-upper ^X^U Make a marked region all upper case
-
- case-word-capitalize M-C Capitalize the following word
-
- case-word-lower M-L Lower case the following word
-
- case-word-upper M-U Upper case the following word
-
-
-
- 75
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS commands
-
-
- change-file-name ^XN Change the name of the file in the
- current buffer
-
- change-screen-size (none) Change the number of lines of the
- screen
- currently being used
-
- change-screen-width (none) Change the number of columns of the
- screen currently being used
-
- clear-and-redraw ^L Clear the physical screen and redraw
- it
-
- clear-message-line (none) Clear the command line
-
- copy-region M-W Copy the currently marked region into
- the kill buffer
-
- count-words M-^C Count how many words, lines and
- characters are in the current marked
- region
-
- ctlx-prefix ^X Change the key used as the ^X prefix
-
- delete-blank-lines ^X^O Delete all blank lines around the
- cursor
-
- delete-buffer ^XK Delete a buffer which is not being
- currently displayed in a window
-
- delete-mode ^X^M Turn off a mode in the current buffer
-
- delete-global-mode M-^M Turn off a global mode
-
- delete-next-character ^D Delete the character following the
- cursor
-
- delete-next-word M-D Delete the word following the cursor
-
- delete-other-windows ^X1 Make the current window cover the
- entire
- screen
-
- delete-previous-character^H Delete the character to the left of
- the
- cursor
-
- delete-previous-word M-^H Delete the word to the left of the
- cursor
-
- delete-window ^X0 Remove the current window from the
- screen
-
- describe-bindings (none) Make a list of all legal commands
-
-
- 76
-
-
-
-
-
-
- MicroEMACS commands MicroEMACS Reference Manual
-
-
- describe-key ^X? Describe what command is bound to a
- keystroke sequence
-
- detab-region ^X^D Change all tabs in a region to the
- equivalent spaces
-
- display ^XG Prompts the user for a variable and
- displays its current value
-
- dump-variables none Places into a buffer the current
- values
- of all environment and user variables
-
- end-macro ^X) stop recording a keyboard macro
-
- end-of-file M-> Move cursor to the end of the current
- buffer
-
- end-of-line ^E Move to the end of the current line
-
- entab-region ^X^E Change multiple spaces to tabs where
- possible
-
- exchange-point-and-mark ^X^X Move cursor to the last marked spot,
- make the original position be marked
-
- execute-buffer (none) Execute a buffer as a macro
-
- execute-command-line (none) Execute a line typed on the command
- line as a macro command
-
- execute-file (none) Execute a file as a macro
-
- execute-macro ^XE Execute the keyboard macro (play back
- the recorded keystrokes)
- execute-macro-<n> (none) Execute numbered macro <N> where <N>
- is
- an integer from 1 to 40
-
- execute-named-command M-X Execute a command by name
-
- execute-procedure M-^E Execute a procedure by name
-
- execute-program ^X$ Execute a program directly (not
- through
- an intervening shell)
-
- exit-emacs ^X^C Exit EMACS. If there are unwritten,
- changed buffers EMACS will ask to
- confirm
-
- fill-paragraph M-Q Fill the current paragraph
-
-
-
-
- 77
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS commands
-
-
- filter-buffer ^X# Filter the current buffer through an
- external filter
-
- find-file ^X^F Find a file to edit in the current
- window
-
- forward-character ^F Move cursor one character to the right
-
- goto-line M-G Goto a numbered line
-
- goto-matching-fence M-^F Goto the matching fence
-
- grow-window ^X^ Make the current window larger
-
- handle-tab ^I Insert a tab or set tab stops
-
- hunt-forward A-S Hunt for the next match of the last
- search string
-
- hunt-backward A-R Hunt for the last match of the last
- search string
-
- help M-? Read EMACS.HLP into a buffer and
- display it
-
- i-shell ^XC Shell up to a new command processor
-
- incremental-search ^XS Search for a string, incrementally
-
- insert-file ^X^I insert a file at the cursor in the
- current file
-
- insert-space ^C Insert a space to the right of the
- cursor
-
- insert-string (none) Insert a string at the cursor
-
- kill-paragraph M-^W Delete the current paragraph
-
- kill-region ^W Delete the current marked region,
- moving
- it to the kill buffer
-
- kill-to-end-of-line ^K Delete the rest of the current line
-
- list-buffers ^X^B List all existing buffers
-
- meta-prefix <ESC> Key used to precede all META commands
-
- mouse-move-down MSa
-
- mouse-move-up MSb
-
- mouse-resize-screen MS1
-
-
- 78
-
-
-
-
-
-
- MicroEMACS commands MicroEMACS Reference Manual
-
-
- mouse-region-down MSe
-
- mouse-region-up MSf
-
- move-window-down ^X^N Move all the lines in the current
- window down
-
- move-window-up ^X^P Move all the lines in the current
- window up
-
- name-buffer M-^N Change the name of the current buffer
-
- narrow-to-region ^X< hides all text not in the current
- region
-
- newline ^M Insert a <NL> at the cursor
-
- newline-and-indent ^J Insert a <NL> at the cursor and indent
- the new line the same as the preceding
- line
-
- next-buffer ^XX Bring the next buffer in the list into
- the current window
-
- next-line ^N Move the cursor down one line
-
- next-page ^V Move the cursor down one page
-
- next-paragraph M-N Move cursor to the next paragraph
-
- next-window ^XO Move cursor to the next window
-
- next-word M-F Move cursor to the beginning of the
- next word
-
- nop (none) Does nothing
-
- open-line ^O Open a line at the cursor
-
- overwrite-string (none) Overwrite a string at the cursor
-
- pipe-command ^X@ Execute an external command and place
- its output in a buffer
-
- previous-line ^P Move cursor up one line
-
- previous-page ^Z Move cursor up one page
-
- previous-paragraph M-P Move back one paragraph
-
- previous-window ^XP Move the cursor to the last window
-
-
-
-
-
- 79
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS commands
-
-
- previous-word M-B Move the cursor to the beginning of
- the
- word to the left of the cursor
-
- print (none) Display a string on the command line
- (a synonim to write-message)
-
- query-replace-string M-^R Replace all of one string with another
- string, interactively querying the
- user
-
- quick-exit M-Z Exit EMACS, writing out all changed
- buffers
-
- quote-character ^Q Insert the next character literally
-
- read-file ^X^R Read a file into the current buffer
-
- redraw-display M-^L Redraw the display, centering the
- current line
-
- resize-window ^XW Change the number of lines in the
- current window
-
- restore-window (none) Move cursor to the last saved window
-
- replace-string M-R Replace all occurrences of one string
- with another string from the cursor
- to the end of the buffer
-
- reverse-incremental-search^XR Search backwards, incrementally
-
- run M-^E Execute a named procedure
-
- save-file ^X^S Save the current buffer if it is
- changed
-
- save-window (none) Remember current window (to restore
- later)
-
- scroll-next-up M-^Z Scroll the next window up
-
- scroll-next-down M-^V Scroll the next window down
-
- search-forward ^S Search for a string
-
- search-reverse ^R Search backwards for a string
-
- select-buffer ^XB Select a buffer to display in the
- current window
-
- set ^XA Set a variable to a value
-
-
-
-
- 80
-
-
-
-
-
-
- MicroEMACS commands MicroEMACS Reference Manual
-
-
- set-encryption-key M-E Set the encryption key of the current
- buffer
-
- set-fill-column ^XF Set the current fill column
-
- set-mark Set the mark
-
- shell-command ^X! Causes an external shell to execute
- a command
-
- shrink-window ^X^Z Make the current window smaller
-
- source (none) Execute a file as a macro
-
- split-current-window ^X2 Split the current window in two
-
- store-macro (none) Store the following macro lines to a
- numbered macro
-
- store-procedure (none) Store the following macro lines to a
- named procedure
-
- transpose-characters ^T Transpose the character at the cursor
- with the character to the left
-
- trim-region ^X^T Trim any trailing white space from a
- region
-
- unbind-key M-^K Unbind a key from a function
-
- universal-argument ^U Execute the following command 4 times
-
- unmark-buffer M-~ Unmark the current buffer (so it is
- no longer changed)
-
- update-screen (none) Force a screen update during macro
- execution
-
- view-file ^X^V Find a file,and put it in view mode
-
- widen-from-region ^X> restores hidden text (see narrow-to-
- region)
-
- wrap-word (none) Wrap the current word, this is an
- internal function
-
- write-file ^X^W Write the current buffer under a new
- file name
-
- write-message (none) Display a string on the command line
-
- yank ^Y yank the kill buffer into the current
- buffer at the cursor
-
-
-
- 81
-
-
-
-
-
-
- MicroEMACS Reference Manual MicroEMACS Bindings
-
-
-
-
-
-
-
-
- Appendix C
-
- MicroEMACS Bindings
-
-
- Below is a complete list of the key bindings used in
- MicroEMACS. This can be used as a wall chart reference for
- MicroEMACS commands.
-
- Default Key Bindings for MicroEmacs 3.10
-
- ^A Move to start of line ESC A Apropos (list some
- commands)
- ^B Move backward by characters ESC B Backup by words
- ^C Insert space ESC C Initial capitalize word
- ^D Forward delete ESC D Delete forward word
- ^E Goto end of line ESC E Reset Encryption Key
- ^F Move forward by characters ESC F Advance by words
- ^G Abort out of things ESC G Go to a line
- ^H Backward delete
- ^I Insert tab/Set tab stops
- ^J Insert <NL>, then indent
- ^K Kill forward ESC K Bind Key to function
- ^L Refresh the screen ESC L Lower case word
- ^M Insert <NL> ESC M Add global mode
- ^N Move forward by lines ESC N Goto End paragraph
- ^O Open up a blank line
- ^P Move backward by lines ESC P Goto Begining of
- paragraph
- ^Q Insert literal ESC Q Fill current paragraph
- ^R Search backwards ESC R Search and replace
- ^S Search forward ESC S Suspend (BSD only)
- ^T Transpose characters
- ^U Repeat command four times ESC U Upper case word
- ^V Move forward by pages ESC V Move backward by pages
- ^W Kill region ESC W Copy region to kill
- buffer
- ^Y Yank back from killbuffer ESC X Execute named command
- ^Z Move backward by pages ESC Z Save all buffers and
- exit
-
- ESC ^C Count words in region ESC ~ Unmark current buffer
- ESC ^E Execute named procedure
- ESC ^F Goto matching fence ESC ! Reposition window
- ESC ^H Delete backward word ESC < Move to start of buffer
- ESC ^K Unbind Key from function ESC > Move to end of buffer
- ESC ^L Reposition window ESC . Set mark
- ESC ^M Delete global mode ESC space Set mark
-
-
- 82
-
-
-
-
-
-
- MicroEMACS Bindings MicroEMACS Reference Manual
-
-
- ESC ^N Rename current buffer ESC rubout Delete backward
- word
- ESC ^R Search & replace w/query rubout Backward delete
- ESC ^S Source command file
- ESC ^V Scroll next window down
- ESC ^W Delete Paragraph
- ESC ^X Execute command line
- ESC ^Z Scroll next window up
-
- ^X < Narrow-to-region ^X ? Describe a key
- ^X > Widen-from-region ^X ! Run 1 command in a shell
- ^X = Show the cursor position ^X @ Pipe shell command to
- buffer
- ^X ^ Enlarge display window ^X # Filter buffer thru shell
- filter
- ^X 0 Delete current window ^X $ Execute an external program
- ^X 1 Delete other windows ^X ( Begin macro
- ^X 2 Split current window ^X ) End macro
- ^X A Set variable value
- ^X ^B Display buffer list ^X B Switch a window to a buffer
- ^X ^C Exit MicroEMACS ^X C Start a new command
- processor
- ^X ^D Detab line ^X D Suspend MicroEMACS (BSD4.2
- only)
- ^X ^E Entab line ^X E Execute macro
- ^X ^F Find file ^X F Set fill column
- ^X ^I Insert file
- ^X K Delete buffer
- ^X ^L Lower case region
- ^X ^M Delete Mode ^X M Add a mode
- ^X ^N Move window down ^X N Rename current filename
- ^X ^O Delete blank lines ^X O Move to the next window
- ^X ^P Move window up ^X P Move to the previous window
- ^X ^R Get a file from disk ^X R Incremental reverse search
- ^X ^S Save current file ^X S Incremental forward search
- ^X ^T Trim line (Incremental search
- ^X ^U Upper case region not always available)
- ^X ^V View file
- ^X ^W Write a file to disk ^X W resize Window
- ^X ^X Swap "." and mark ^X X Use next buffer
- ^X ^Z Shrink window ^X Z Enlarge display window
-
- Usable Modes
- WRAP Lines going past right margin "wrap" to a new line
- VIEW Read-Only mode where no modifications are allowed
- CMODE Change behavior of some commands to work better with C
- EXACT Exact case matching on search strings
- OVER Overwrite typed characters instead of inserting them
- CRYPT Current buffer will be encrypted on write, decrypted on read
- MAGIC Use regular expression matching in searches
- ASAVE Save the file every 256 inserted characters
-
- WHITE/CYAN/MAGENTA/YELLOW/BLUE/RED/GREEN/BLACK Sets foreground color
- white/cyan/magenta/yellow/blue/red/green/black Sets background color
-
-
- 83
-
-
-
-
-
-
- MicroEMACS Reference Manual Supported machines
-
-
-
-
-
-
-
-
- Appendix D
-
- Supported machines
-
-
- The following table lists all the hardware/compilers
- for which I currently support MicroEMACS. This is not
- exclusive of all machines which MicroEMACS will run on, but
- I have either run it myself, or had a first hand report of
- it running.
-
- Hardware OS Compiler Comments
- VAX 780 UNIX V5 native
- UNIX V7 native
- BSD 4.2 native job control supported
- *VMS native
-
- NCR Tower UNIX V5 native
-
- IBM-RT PC BSD 4.3 native
-
- HP9000 UNIX V5 native
-
- Fortune 32:16 UNIX V7 native
-
- IBM-PC MSDOS LATTICE 2.15 Large CODE/Large DATA
- 2.0 & 3.2 AZTEC 3.4e Large CODE/Large DATA
- TURBO C v1.5 LARGE memory model
- MSC 4.0
- *MWC 86
- SCO XENIX native
-
- HP150 MSDOS Lattice 2.15 Function key labels
- for the touch screen
-
- HP110 MSDOS Lattice 2.15
- Aztec 3.4e
-
- *Data General 10
- MSDOS Lattice 2.1 Texas Instruments
- Professional
- MSDOS Lattice 2.15
-
- Amiga Intuition Lattice 3.03
- Aztec 3.6
-
- ST520 TOS Mark Williams C Spawns under MSH
- Lattice 3.10 (no shell commands)
-
-
- 84
-
-
-
-
-
-
- Supported machines MicroEMACS Reference Manual
-
-
- Systems to be supported (IE some code is already written:)
- Macintosh Finder 5.0 Aztec
-
- *means that I do not own or have access to the listed compiler and/or
- machine and must rely upon others to help support it.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 85
-
-
-
-
-
-
- MicroEMACS Reference Manual Function Keys
-
-
-
-
-
-
-
-
- Appendix E
-
- Function Keys
-
-
- On the IBMPC, the ATARI ST, the Commodore AMIGA and
- UNIX now support a set of machine independant bindings for
- function keys. Below is a list of these bindings (not all
- of these are supported on all systems).
-
- Function keys in MicroEmacs
-
- function Function ^function Alt-function
- f1) FN1 S-FN1 FN^1 A-FN1
- f2) FN2 S-FN2 FN^2 A-FN2
- f3) FN3 S-FN3 FN^3 A-FN3
- f4) FN4 S-FN4 FN^4 A-FN4
- f5) FN5 S-FN5 FN^5 A-FN5
- f6) FN6 S-FN6 FN^6 A-FN6
- f7) FN7 S-FN7 FN^7 A-FN7
- f8) FN8 S-FN8 FN^8 A-FN8
- f9) FN9 S-FN9 FN^9 A-FN9
- f10) FN0 S-FN0 FN^0 A-FN0
-
- home) FN< FN^<
- CsUp) FNP FN^P
- PgUp) FNZ FN^Z
- CsLf) FNB FN^B
- 5 )
- CsRt) FNF FN^F
- End) FN> FN^>
- CsDn) FNN FN^N
- PgDn) FNV FN^V
- Ins) FNC FN^C
- Del) FND FN^D
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 86
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Appendix F
-
- Machine Dependent Notes
-
-
- This appendix lists some notes specific to
- individual implementations of MicroEMACS. Every attempt has
- been made to allow EMACS to be identical on all machines,
- but we have also tried to take advantage of function keys,
- cursor keys, mice, and special screen modes where possible.
-
-
- F.1 IBM-PC/XT/AT and its clones
-
-
- The IBM-PC family of computers is supported with a
- variety of different display adapters. EMACS will attempt
- to discover what adapter is connected and use the proper
- driver for it. Below is a list of the currently supported
- video adapters:
-
- Adapter $sres Original mode used
- Monochrome Graphics Adapter MONO MONO
- Color Graphics Adapter CGA CGA
- Enhanced Graphics Adapter EGA CGA
- Video Graphics Adapter VGA CGA
-
- If a driver for a Microsoft compatable mouse is
- installed on the system, EMACS will use the mouse in text
- mode and allow the user all the standard mouse functions.
- The mouse cursor will appear to be a block of color in the
- color opposite of it's background.
-
- EMACS also takes advantage of various function keys
- and the keys on the keypad on an IBM-PC. The function keys
- are initially not bound to any particular functions (except
- by the emacs.rc startup file), but the keypad keys do
- default to the following:
-
- Keypad key Function
- Home beginning-of-file
- CSRS UP previous-line
- Pg Up previous-page
- CSRS LEFT backward-character
- CSRS RIGHT forward-character
- End end-of-file
- CSRS DOWN next-line
-
-
-
- 87
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
- Pg Dn Next-page
-
- All these special keys are indicated in EMACS
- macroes by use of the FN prefix. Below is a list of many of
- the keys and the codes used to specify them. Also the codes
- may be gotten by using the describe-key (^X ?) command on
- the suspect key.
-
- Compiling under TURBO C
-
- To compile MicroEMACS under TURBO C, set the TURBO
- integrated environment with the following options:
-
- Memory model LARGE
- Floating point NONE
- Default char type UNSIGNED
- Data alignment BYTE
- Merge duplicate strings ON
- Standard stack frame off
- Test stack overflow off
-
- Optimize for SIZE
- Use register optimization ON
- Register optimization ON
- Jump optimization ON
-
- Initialize segments OFF
- Stack warnings OFF
-
- Names: Code names
- Segment name *
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 88
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
-
-
- F.2 HP 150
-
-
- This machine from Hewlett Packard is very unusual
- for an MSDOS machine. It has a touch screen and is very
- function key oriented. An additional command, label-
- function-key allows you to place labels on the on screen
- function key labels. A numeric argument indicates which
- function key to label (one through eight) and then the
- program prompts for a 16 character label, which will be used
- as two lines of eight characters. To label function key
- three with "save file" from a macro, you would use:
-
- 3 label-function-key "save file"
-
- Notice the 4 spaces after "save". This forces
- "file" to begin on the second line of the label.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 89
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
-
-
- F.3 Atari 520/1040ST
-
-
- The ATARI ST family of computers have a dual
- personality. They may use either a monochrome or a color
- screen. EMACS supports two screen resolutions on each
- monitor.
-
- NOTE
-
- When you set MicroEMACS up on your system, please
- remember to install it on the desktop as a GEM
- application. If you have EMACS set as a TOS
- application, the mouse will not function properly,
- and EMACS will alert you to this problem by
- beeping the bell.
-
- Monitor $sres size #color $palette format
- Color LOW 40x25 16 000111222333444555666777
- MEDIUM 80x25 4 000111222333
- Mono HIGH 80x25 2 000
- DENSE 80x50 2 000
-
- The $palette environment variable can be used to
- change what color is associated with each color name. With
- a color monitor, each group of three digits indicates an
- octal number specifying the RED, GREEN and BLUE levels of
- that color. Each color digit can vary from 0 to 7. For
- example, the initial setting of $palette in LOW resolution
- is:
-
- 000700070770007707077777
-
- which broken up is:
-
- 000 700 070 770 007 707 077 777
-
- which means:
-
- 000 Black
- 700 Red
- 070 Green
- 770 Yellow
- 007 Blue
- 707 Magenta
- 077 Cyan
- 777 White
-
- Also the mouse buttons are bound to mouse functions
- as described in the chapter about mice. The cursor keys and
- the function keys are bound similarly to IBM-PC.
-
-
-
- 90
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
- Files generated by EMACS on the ATARI ST have a
- single return character at the end of each line, unlike the
- desktop files which want to have two returns. This makes it
- display files strangely from GEM's [SHOW] option, but makes
- the files port to other computers much nicer. When compiling
- MicroEMACS, the ADDCR symbol in estruct.h will cause emacs
- to generate line ending sequences compatible with GEM.
-
- Currently, when operating under the Mark Williams
- MSH program, EMACS can shell out and perform external
- commands. This capability will be added later for the
- Beckmeyer shell and under GEMDOS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 91
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
-
-
- F.4 Amiga 1000
-
-
- The Commodore AMIGA 1000 version of MicroEMACS does
- fully support the mouse, window resizing and the close
- gadget. It runs in medium resolution, using the colors
- defined for the workbench.
-
- Note about Compiling MicroEMACS
-
- If you are compiling the sources on the
- AMIGA to produce an executable image, and you are
- using the Lattice compiler, be sure to give the
- CLI command 'STACK 40000' before compiling to make
- sure the compiler has sufficient stack space to
- successfully complete compilation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 92
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
-
-
- F.5 UNIX V5, V7, and BSD4.[23]
-
-
- MicroEMACS under UNIX utilizes the TERMCAP library
- to provide machine independent screen functions. Make sure
- that termcap is available and properly set on your account
- before attempting to use MicroEMACS.
-
- Under systems which support job control, you can use
- the ^XD suspend-emacs command to place EMACS into the
- background. This carries a much smaller overhead than
- bringing up a new shell under EMACS. EMACS will properly
- redraw the screen when you bring it back to the foreground.
-
- If the symbol VT100 has been set to 1 in the
- estruct.h options file, EMACS will recognize the key
- sequence <ESC>[ as the lead in sequence for the FN function
- key prefix.
-
- With the addition of some very machine/operating
- system specific code, EMACS can prevent two or more people
- from modifying the same file at the same time. The upper
- level of a set of functions to provide file locking exist in
- the source file LOCK.C. It requires two machine specific
- functions written and linked into EMACS for it to operate
- properly.
-
- char *dolock(fname)
-
- char *fname;
-
- dolock() locks a file, preventing others from modifying it. If
- it succeeds, it returns NULL, otherwise it returns a pointer
- to
- a string in the form "LOCK ERROR: explanation".
-
- char *undolock(fname)
-
- char *fname;
-
- undolock() unlocks a file, allowing others to modifying it. If
- it succeeds, it returns NULL, otherwise it returns a pointer
- to
- a string in the form "LOCK ERROR: explanation".
-
-
-
-
-
-
-
-
-
-
- 93
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
-
-
- F.6 DEC VMS operating system
-
-
- TERMINALS
-
- MicroEMACS uses the capabilities of VMS SMG, and
- should work with any terminal that is defined in
- SMGTERMS.TXT or TERMTABLE.TXT. (See your SMG manual for
- more information.) Full keyboard support, with function keys
- and everything, is provided for VT100 and VT200 series
- compatible terminals. Mouse support is provided for the
- VSII workstation's VT220 terminal emulator, and other
- terminal emulators that use the same escape sequences for
- mouse control. (There is some partial support for the BBN
- BitGraph mouse sequences in the sources, but this is not yet
- complete.) Terminals may have up to 100 lines and 160
- columns.
-
- KEYBOARD
-
- The VMS version understands the LK201 functions of
- VT200 series, vt300 series, and compatible terminals and
- terminal emulators, and allows you to bind to them as
- function keys. In addition, the VT100 numeric keypad, in
- application mode, is available as function keys. MicroEMACS
- does not, however, put the keypad into application mode for
- you. This is done by issuing the command "SET TERM
- /APPLICATION" before entering MicroEMACS.
-
- VT200 keys
-
- F6 = FN^Q F7 = FN^R F8 = FN^S F9 = FN^T F10 =
- FN^U
- F11 = FN^W F12 = FN^X F13 = FN^Y F14 = FN^Z HELP =
- FN^\
- DO = FN^] F17 = FN^_ F18 = "FN " F19 = FN! F20 =
- FN"
- FIND = FN^A INSERT = FN^B REMOVE = FN^C SELECT = FN^D PREV =
- FN^E
- NEXT = FN^F
-
- VT100 and VT200 Arrow keys
-
- Up = FNA Down = FNB Right = FNC Left = FND
-
- VT100 and VT200 numeric keypad in SET TERM /APPLICATION mode
-
- PF1 = FNP9 PF2 = FNQ PF3 = FNR PF4 = FNS
- 7 = FNw 8 = FMx 9 = FNy - = FNm
- 4 = FNt 5 = FNu 6 = FNv , = FNl
- 1 = FNq 2 = FNr 3 = FNs ENTER = FNM
-
-
-
- 94
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
- 0 = FNp . = FNn
-
- WARNING
-
- The VMS version contains code for
- interpreting function keys that are sent as Ansi
- sequences that begin with the ESC character.
- Because of this, MicroEMACS cannot process an
- incoming ESC until it knows what character follows
- it. This can cause problems with terminating
- search and replace strings. If you use ESC as the
- meta-prefix character (which is the default) you
- must type one additional keystroke following ESC
- before emacs will recognize that you have edited
- the search command prompt, and are continuing.
- (The additional character is processed normally be
- MicroEMACS, it is NOT discarded.)
-
- Flow control
-
- Some terminals will require the use of XON/XOFF flow
- control when used with MicroEMACS. When XON/XOFF flow
- control is used, you will not be able to use functions bound
- to ^S or ^Q, and should use bind-to-key to put these
- functions on other keys. MicroEMACS does not change the
- flow control characteristics of your terminal line while it
- is running. If your terminal requires flow control, you
- should:
-
- $ SET TERM/HOSTSYNC/TTSYNC
-
- before entering MicroEMACS. If you are on a VSII
- emulated workstation terminal, are using the SSU multi-
- session protocol (VT330 and VT340 with SSU enabled), or are
- certain that your terminal does not require XON/XOFF flow
- control, you should
-
- $ SET TERM /HOSTSYNC/NOTTSYNC
-
- This will allow you to use ^S and ^Q for MicroEMACS
- commands. Note that if you are using a VSII with VWS V3.2 or
- later, you must leave the /HOSTSYNC enabled in order for the
- cross/session cut and paste capability to work properly.
-
-
- Search List for EMACS.RC
-
- VMS MicroEMACS will first search logical name
- MICROEMACS$LIB:, and then "sys$sysdevice:[vmstools]" when
- looking for startup files or help files.
-
- Please use MICROEMACS$LIB:, and allow the secondary
- search of [vmstools] to become archaic. If desired,
- MICROEMACS$LIB may be defined to be a VMS search list that
-
-
- 95
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
- first searches a user directory, and then a system
- directory.
-
- Generally, you should create a private directory
- where you keep all your .CMD files, and in your LOGIN.COM
- $DEFINE a logical name to point to this area.
-
- Using MicroEMACS with VMS MAIL and NOTES
-
- There are two ways of using MicroEMACS with MAIL and
- NOTES. The first way requires the cooperation of your
- system manager, but is faster and less taxing on system
- resources. The second way can be done by any random user
- that has PRCLM quota that is greater than 1, but it creates
- a new subprocess each time MicroEMACS is called up from the
- application, and is therefore slower to invoke and more
- demanding on system resources. Obviously, the first way is
- recommended.
-
- First way
-
- 1. $ SET PROC/PRIV=ALL
- 2. $ Copy MESHR.EXE SYS$SHARE:MESHR.EXE/PROT=WO:RE
- 3. $ INSTALL :== $INSTALL
- 4. $ INSTALL/COMMAND ADD SYS$SHARE:MESHR.EXE
-
- Step 4, and possibly step 3, must be incorporated
- into the system-wide startup command file, usually
- SYS$MANAGER:SYSTARTUP.COM, so that MicroEMACS will be
- installed each time the system boots. Note that the
- filename MUST be "MESHR.EXE".
-
- 5. $ DEFINE MAIL$EDIT CALLABLE_ME
-
- Step 5 must be added to the LOGIN.COM of each user
- that wishes to have MicroEMACS as their MAIL editor.
- Additionally, they may wish to have the line $ ME :==
- $SYS$SHARE:MESHR.EXE, which will allow them to use the "ME"
- command for invoking MicroEMACS from DCL.
-
- 6. $ NOTES
- NOTES> SET PROFILE/EDIT=(ME,CALL)
-
- Step 6 must be performed by each user that wishes to
- have MicroEMACS as their NOTES editor.
-
- NOTE: If you already have a version of MicroEMACS
- installed, and you wish to install a new version in a
- running system, you must REMOVE the old image and INSTALL
- the new one before MAIL or NOTES will recognize it. To
- perform the upgrade, use following sequence of commands:
-
- $ install :== $install
- $ set proc /priv=all
-
-
- 96
-
-
-
-
-
-
- Machine Dependent Notes MicroEMACS Reference Manual
-
-
- $ install/command remove sys$share:meshr.exe
- $ copy meshr.exe sys$share:/log/prot=wo:re
- $ install/command add sys$share:meshr.exe
-
- Second way
-
- In the event that you cannot get your system manager
- to INSTALL MicroEMACS as known image, you can use the
- following technique:
-
- 1. In MICROEMACS$LIB:MEMAIL.COM, put the following command file:
-
- $! Use on VAX/VMS as MAIL$EDIT for using MicroEMACS as mail editor.
- $ if "''P1'" .NES. "_NL:" then if "''P1'" .NES. "" then copy 'P1' 'P2'
- $ define/user sys$input sys$output
- $ me 'P2'
- $ exit
-
- This file may have come with your MicroEMACS kit.
-
- 2. In your LOGIN.COM, put the following lines:
-
- $ me :== $MICROEMACS$LIB:MESHR.EXE ! Assumes meshr.exe is there
- $ define mail$edit microemacs$lib:me_edit.com
-
- 3. In NOTES, give the command
-
- NOTES> SET PROFILE/EDIT=(@MicroEMACS$lib:me_edit.com,SPAWN)
-
- Building MicroEMACS for VMS
-
- The configuration options are set in file estruct.h:
-
- - Under the category of "Machine/OS definitions", set VMS to "1" and
- all
- others to "0".
-
- - Under "Compiler definitions", set all selections to "0". Selecting
- VMS implies that you are using VAXC.
-
- - Under "Special keyboard definitions", be sure "VT100" is set to "0".
- This option is not required for the VMS version, it is for versions
- linked with ANSI terminal support. VMSVT already handles the special
- characteristics of Ansi keyboards.
-
- - Under "Terminal Output definitions", set VMSVT to "1" and all others
- to "0".
-
- - Under "Configuration options", you may select as you wish, with the
- following notes:
-
- - COLOR support does not exist for VMS, even when using
- color workstations.
-
-
-
- 97
-
-
-
-
-
-
- MicroEMACS Reference Manual Machine Dependent Notes
-
-
- - MOUSE support should be enabled if you have any VSII
- workstations
-
- If you have MMS, you can use the supplied
- DESCRIP.MMS to build MicroEMACS. If you do not have MMS,
- simply compile each module with "CC", and link with the
- command:
-
- $ LINK MESHR/OPTION/SHARE
-
- Note that the executable filename must end in "SHR"
- in order for MicroEMACS to be used as a callable editor from
- MAIL or NOTES. (Method 1 above.)
-
- If you edit any of the Emacs sources, note that any
- global or external data must be declared as "noshare" in
- order for the VMS callable editor support to work properly.
- This applies to all global data used in the VMS version, but
- not to routines or to "static "data. The "noshare"
- declaration is #define'd away on non-VMS systems. If you
- fail to do this, VMS will not allow you to INSTALL
- MicroEMACS as a sharable library.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 98
-
-
-
-
-
-
- Mode Flags MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Appendix G
-
- Mode Flags
-
-
- The two environment variables, $cmode and $gmode,
- contain a number the corresponds to the modes set for the
- current buffer and the editor as a whole. These are encoded
- as the sum of the following numbers for each of the possible
- modes:
-
- WRAP 1 Word wrap
- CMODE 2 C indentation and fence match
- SPELL 4 Interactive spell checking (Not Implemented
- Yet)
- EXACT 8 Exact matching for searches
- VIEW 16 Read-only buffer
- OVER 32 Overwrite mode
- MAGIC 64 Regular expressions in search
- CRYPT 128 Encryption mode active
- ASAVE 256 Auto-save mode
-
- So, if you wished to set the current buffer to have
- CMODE, EXACT, and MAGIC on, and all the others off, you
- would add up the values for those three, CMODE 2 + EXACT 8
- + MAGIC 64 = 74, and use a statement like:
-
- set $cmode 74
-
- or, use the binary or operator to combine the
- different modes:
-
- set $cmode &bor &bor 2 8 64
-
- Internal Flags
-
- Some of the ways EMACS controls its internal
- functions can be modified by the value in the $gflags
- environment variable. Each bit in this variable will be
- used to control a different function.
-
-
-
-
-
-
-
-
-
-
- 99
-
-
-
-
-
-
- MicroEMACS Reference Manual Mode Flags
-
-
- GFFLAG 1 If this bit is set to zero, EMACS will not
- automatically switch to the buffer of the
- first file after executing the startup macros.
-
- Current buffer flags
-
- The $cbflags environment variable allows the user to
- modify some of the characteristics of the current buffer.
- The various characteristics are encoded as the sum of the
- following numbers:
-
- BFINVS 1 Internal invisible buffer
- BFCHG 2 Changed since last write
- BFTRUNC 4 buffer was truncated when read
- BFNAROW 8 buffer has been narrowed
-
- Only the invisible and changed flags can be modified
- by setting the $cbflags variable. The truncated file and
- narrowed flags are read only.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 100
-
-
-
-
-
-
- Index MicroEMACS Reference Manual
-
-
-
-
-
-
-
-
- Index
-
-
- $cbflags 99 cut 25
- $debug 66
- $gflags 99 D
- .emacsrc 50, 70 debugging 66
- <NL> 15 default string 15
- delete-blank-lines
- A 9
- add-global-mode 30 delete-buffer 28
- add-mode 3, 30 delete-global-mode
- ASAVE mode 30 30
- delete-mode 30
- B delete-next-
- backward-character character 9
- 4 delete-next-word 9
- BBS 71 delete-previous-
- begin-macro 48 character 9
- beginning-of-file delete-previous-
- 4, 9 word 9
- beginning-of-line describe-bindings
- 4 69
- bind-to-key 68 describe-key 68
- buffer 5, 7, 27 desk accessories
- 23
- C detab-region 42
- case-region-lower dragging 24
- 40
- case-word- E
- capitalize 40 emacs.rc 50, 70
- case-word-lower 40 encryption 31
- case-word-upper 40 end-macro 48
- change-file-name end-of-file 4
- 36 end-of-line 4
- CMODE mode 31 entab-region 42
- color 30 error parsing 71
- color pallette 55 EXACT mode 32
- command.com 45 execute-buffer 50
- command line 18 execute-file 50
- command processor execute-macro 48
- 45 execute-macro-<n>
- control-x 1 50
- control key 1 execute-procedure
- copy-region 12 50
- CRYPT mode 31, 71 execute-program 46
- cshell 45 exit-emacs 9
- cursor keys 4
-
-
- 101
-
-
-
-
-
-
- MicroEMACS Reference Manual Index
-
-
- next-buffer 27
- F next-line 4
- file locking 93 next-paragraph 4
- fill-paragraph 8, next-word 4
- 39
- fill column 34 O
- filter 45 open-line 8
- filter-buffer 45 open-window 18
- find-file 19, 27 OVER mode 33
- forward-character
- 4 P
- function key paste 25
- window 50 PATH environment
- variable 70
- G pipe-command 45
- grow-window 20 point 11
- previous-line 4
- H previous-paragraph
- handle-tab 41 4
- Help File 70 previous-window 18
- HOME environment previous-word 4
- variable 70 procedures 50
- horizontal
- scrolling 24 Q
- query-replace 16
- I query-replace-
- i-shell 46 string 16, 33
-
- K R
- kill-region 12 rebinding 68
- kill-to-end-of- redraw-display 21
- line 9 refresh-screen 21
- kill buffer 12 region 25
- replace-string 16,
- L 33
- label-function-key resize-window 20
- 89 restricted mode 71
- list-buffers 28, run 50
- 30
- S
- M save-file 5
- MAGIC mode 32 screen 7
- mark 11 screen resolution
- meta key 1 56
- mode line 2, 7 scroll-next-down
- modes 3, 30 19
- mouse 23, 55 scroll-next-up 19
- mouse cursor 23 search-forward 14
- move-window-down search-reverse 15
- 19 select-buffer 28
- move-window-up 19 set 41
- set-encryption-key
- N 31
- newline 1 set-fill-column 39
-
-
- 102
-
-
-
-
-
-
- Index MicroEMACS Reference Manual
-
-
- set-mark 12 VIEW mode 34
- shell 45
- shell-command 45 W
- shrink-window 20 window 7
- special keys 1 windows 2, 18
- split-current- Creating 18
- window 18 Deleting 20
- startup files 70 Resizing 20
- store-procedure 50 wrap-word 34
- suspend-emacs 46, WRAP mode 34
- 93 wrapping text 39
- switches 70 write-file 5
- writefile 37
- T
- tab handling 41 Y
- tabs 54, 55 yank 12
- termcap 93
- text window 2
- trim-region 42
-
- V
- vertical scrolling
- 24
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 103
-
-
-
-
-
-
-
-
-
-
-
-
- Table of Contents
-
-
-
-
-
- Chapter 1 Basic Concepts 1
- 1.1 Keys and the Keyboard . . . . . . . . . 1
- 1.2 Getting Started . . . . . . . . . . . . 1
- 1.3 Parts and Pieces . . . . . . . . . . . . 2
- 1.4 Entering Text . . . . . . . . . . . . . 3
- 1.5 Basic cursor movement . . . . . . . . . 4
- 1.6 Saving your text . . . . . . . . . . . . 5
-
- Chapter 2 Basic Editing--Simple Insertions and
- Deletions 7
- 2.1 A Word About Windows, Buffers, Screens,
- and Modes . . . . . . . . . . . . . . . . . . 7
- 2.2 Insertions . . . . . . . . . . . . . . . 8
- 2.3 Deletions . . . . . . . . . . . . . . . 8
-
- Chapter 3 Using Regions 11
- 3.1 Defining and Deleting a Region . . . . 11
- 3.2 Yanking a Region . . . . . . . . . . . 12
-
- Chapter 4 Search and Replace 14
- 4.1 Forward Search . . . . . . . . . . . . 14
- 4.2 Exact Searches . . . . . . . . . . . . 15
- 4.3 Backward Search . . . . . . . . . . . 15
- 4.4 Searching and Replacing . . . . . . . 16
- 4.5 Query-Replace . . . . . . . . . . . . 16
-
- Chapter 5 Windows 18
- 5.1 Creating Windows . . . . . . . . . . . 18
- 5.2 Deleting Windows . . . . . . . . . . . 20
- 5.3 Resizing Windows . . . . . . . . . . . 20
- 5.4 Repositioning within a Window . . . . 21
-
- Chapter 6 Using a Mouse 23
- 6.1 Moving around with the mouse . . . . . 23
- 6.2 Dragging around . . . . . . . . . . . 24
- 6.3 Cut and Paste . . . . . . . . . . . . 25
-
- Chapter 7 Buffers 27
-
- Chapter 8 Modes 30
- 8.1 ASAVE mode . . . . . . . . . . . . . . 30
- 8.2 CMODE mode . . . . . . . . . . . . . . 31
- 8.3 CRYPT mode . . . . . . . . . . . . . . 31
- 8.4 EXACT mode . . . . . . . . . . . . . . 32
- 8.5 MAGIC mode . . . . . . . . . . . . . . 32
-
-
- i
-
-
-
-
-
-
-
-
- 8.6 OVER mode . . . . . . . . . . . . . . . 33
- 8.7 WRAP mode . . . . . . . . . . . . . . . 34
- 8.8 VIEW mode . . . . . . . . . . . . . . . 34
-
- Chapter 9 Files 36
-
- Chapter 10 Screen Formatting 39
- 10.1 Wrapping Text . . . . . . . . . . . . 39
- 10.2 Reformatting Paragraphs . . . . . . . 39
- 10.3 Changing Case . . . . . . . . . . . . 40
- 10.4 Tabs . . . . . . . . . . . . . . . . . 40
-
- Chapter 11 Access to the Outside World 45
-
- Chapter 12 Keyboard Macros 48
-
- Chapter 13 MicroEMACS Macros 50
- 13.1 Constants . . . . . . . . . . . . . . 51
- 13.2 Variables . . . . . . . . . . . . . . 51
- 13.2.1 Environmental Variables . . . . . 53
- 13.2.2 User variables . . . . . . . . . 57
- 13.2.3 Buffer Variables . . . . . . . . 57
- 13.2.4 Interactive variables . . . . . . 58
- 13.3 Functions . . . . . . . . . . . . . . 58
- 13.4 Directives . . . . . . . . . . . . . . 61
- 13.4.1 !ENDM Directive . . . . . . . . . 61
- 13.4.2 !FORCE Directive . . . . . . . . 62
- 13.4.3 !IF, !ELSE, and !ENDIF
- Directives . . . . . . . . . . . . . . . 62
- 13.4.4 !GOTO Directive . . . . . . . . . 63
- 13.4.5 !WHILE and !ENDWHILE Directives . 64
- 13.4.6 !BREAK Directive . . . . . . . . 64
- 13.4.7 !RETURN Directive . . . . . . . . 64
-
- Chapter 14 Debugging MicroEMACS macroes 66
-
- Chapter 15 Key Bindings, What they are and why 68
-
- Appendix A MicroEMACS Command Line Switches and
- Startup Files 70
-
- Chapter 16 Command Completion 72
-
- Appendix B MicroEMACS commands 75
-
- Appendix C MicroEMACS Bindings 82
-
- Appendix D Supported machines 84
-
- Appendix E Function Keys 86
-
- Appendix F Machine Dependent Notes 87
- F.1 IBM-PC/XT/AT and its clones . . . . . . 87
- F.2 HP 150 . . . . . . . . . . . . . . . . 89
- F.3 Atari 520/1040ST . . . . . . . . . . . 90
-
-
- ii
-
-
-
-
-
-
-
-
- F.4 Amiga 1000 . . . . . . . . . . . . . . 92
- F.5 UNIX V5, V7, and BSD4.[23] . . . . . . 93
- F.6 DEC VMS operating system . . . . . . . 94
-
- Appendix G Mode Flags 99
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- iii
-
-
-
-