#
This commit is contained in:
parent
a7bfd66f45
commit
a933dad155
56 changed files with 40220 additions and 0 deletions
2
etc/.gitignore
vendored
2
etc/.gitignore
vendored
|
@ -1 +1,3 @@
|
|||
fns-*
|
||||
*.ps
|
||||
*.log
|
||||
|
|
75
etc/3B-MAXMEM
Normal file
75
etc/3B-MAXMEM
Normal file
|
@ -0,0 +1,75 @@
|
|||
Date: Mon, 16 Feb 87 15:04:41 EST
|
||||
From: katinsky@gauss.rutgers.edu (David Katinsky)
|
||||
To: rms@prep.ai.mit.edu
|
||||
Subject: 3b2 procedure to raise MAXMEM
|
||||
|
||||
Below is the procedure I followed to allow enough memory for GnuEmacs to run
|
||||
on my 3b2/400. The end result of this is that a process can snarf up to 2Mb
|
||||
of memory. This can be a bit dangerous on a 2Mb machine, but I tried it and
|
||||
it worked ok.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
In the simplest case, these are the procedures to reconfigure a 3bx kernel.
|
||||
|
||||
|
||||
|
||||
1] cd /etc/master.d
|
||||
|
||||
`ls` shows the files to be:
|
||||
|
||||
README ctc* hdelog idisk ipc iuart kernel mau
|
||||
mem msg ports* prf sem shm stubs sxt
|
||||
sys xt
|
||||
|
||||
2] Edit the file which contains the parameter[s] you wish to change.
|
||||
In the following excerpt from /etc/master.d/kernel the value MAXMEM
|
||||
was raised from 256 to 1024.
|
||||
|
||||
In V.3.0 and later releases, the parameter in question is MAXUMEM
|
||||
instead of MAXMEM.
|
||||
|
||||
|
||||
*
|
||||
* The following entries form the tunable parameter table.
|
||||
*
|
||||
|
||||
|
||||
NCALL = 30
|
||||
NPROC = 60
|
||||
NTEXT = 58
|
||||
NCLIST = 188
|
||||
* maxmem is number of pages (2K) was 256 --dmk
|
||||
MAXMEM = 1024
|
||||
MAXUP = 25
|
||||
* hashbuf must be a power of 2
|
||||
NHBUF = 128
|
||||
NPBUF = 8
|
||||
|
||||
3] cd /boot
|
||||
|
||||
4] mkboot -k KERNEL
|
||||
|
||||
5] shutdown -i5 -g0 -y
|
||||
|
||||
This will take the machine down and bring it back up into firmware
|
||||
mode. When you see that the machine has reached this state, type the
|
||||
firmware password (default=mcp). The machine will ask for the name of
|
||||
a program to execute. At this prompt enter /etc/system . The machine
|
||||
should start to boot and display its configuration data.
|
||||
|
||||
|
||||
|
||||
8701271222 dmk
|
||||
|
||||
[katinsky@topaz.rutgers.edu]
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
I do not feel that having the default firmware password is a
|
||||
problem... but if you wish to edit it out, feel free.
|
||||
|
||||
dmk
|
||||
|
||||
|
221
etc/AIX.DUMP
Normal file
221
etc/AIX.DUMP
Normal file
|
@ -0,0 +1,221 @@
|
|||
The following text was written by someone at IBM to describe an older
|
||||
version of the code for dumping on AIX. It does NOT apply to
|
||||
the current version of Emacs. It is included in case someone
|
||||
is curious.
|
||||
|
||||
|
||||
I (rms) couldn't understand the code, and I can't fully understand
|
||||
this text either. I rewrote the code to use the same basic
|
||||
principles, as far as I understood them, but more cleanly. This
|
||||
rewritten code does not always work. In fact, the basic method
|
||||
seems to be intrinsically flawed.
|
||||
|
||||
Since then, someone else implemented a different way of dumping on
|
||||
the RS/6000, which does seem to work. None of the following
|
||||
applies to the way Emacs now dumps on the 6000. However, the
|
||||
current method fails to use shared libraries. Anyone who might be
|
||||
interested in trying to resurrect the previous method might still
|
||||
find the following information useful.
|
||||
|
||||
|
||||
It seems that the IBM dumping code was simply set up to detect when
|
||||
the dumped data cannot be used, and in that case to act approximately
|
||||
as if CANNOT_DUMP had been defined all along. (This is buried in
|
||||
paragraph 1.) It seems simpler just to define CANNOT_DUMP, since
|
||||
Emacs is not set up to decide at run time whether there is dumping or
|
||||
not, and doing so correctly would be a lot of work.
|
||||
|
||||
Note that much of the other information, such as the name and format
|
||||
of the dumped data file, has been changed.
|
||||
|
||||
|
||||
--rms
|
||||
|
||||
|
||||
|
||||
A different approach has been taken to implement the
|
||||
"dump/load" feature of GNU Emacs for AIX 3.1. Traditionally the
|
||||
unexec function creates a new a.out executable file which contains
|
||||
preloaded Lisp code. Executing the new a.out file (normally called
|
||||
xemacs) provides rapid startup since the standard suite of Lisp code
|
||||
is preloaded as part of the executable file.
|
||||
|
||||
AIX 3.1 architecture precludes the use of this technique
|
||||
because the dynamic loader cannot guarantee a fixed starting location
|
||||
for the process data section. The loader loads all shared library
|
||||
data BEFORE process data. When a shared library changes its data
|
||||
space, the process initial data section address (_data) will change
|
||||
and all global process variables are automatically relocated to new
|
||||
addresses. This invalidates the "dumped" Emacs executable which has
|
||||
data addresses which are not relocatable and now corrupt. Emacs would
|
||||
fail to execute until rebuilt with the new libraries.
|
||||
|
||||
To circumvent the dynamic loader feature of AIX 3.1, the dump process
|
||||
has been modified as follows:
|
||||
|
||||
1) A new executable file is NOT created. Instead, both pure and
|
||||
impure data are saved by the dump function and automatically
|
||||
reloaded during process initialization. If any of the saved data
|
||||
is unavailable or invalid, loadup.el will be automatically loaded.
|
||||
|
||||
2) Pure data is defined as a shared memory segment and attached
|
||||
automatically as read-only data during initialization. This
|
||||
allows the pure data to be a shared resource among all Emacs
|
||||
processes. The shared memory segment size is PURESIZE bytes.
|
||||
If the shared memory segment is unavailable or invalid, a new
|
||||
shared memory segment is created and the impure data save file
|
||||
is destroyed, forcing loadup.el to be reloaded.
|
||||
|
||||
3) The ipc key used to create and access Emacs shared memory is
|
||||
SHMKEY and can be overridden by the environment symbol EMACSSHMKEY.
|
||||
Only one ipc key is allowed per system. The environment symbol
|
||||
is provided in case the default ipc key has already been used.
|
||||
|
||||
4) Impure data is written to the ../bin/.emacs.data file by the
|
||||
dump function. This file contains the process' impure data
|
||||
at the moment of load completion. During Emacs initialization,
|
||||
the process' data section is expanded and overwritten
|
||||
with the .emacs.data file contents.
|
||||
|
||||
The following are software notes concerning the GNU Emacs dump function under AIX 3.1:
|
||||
|
||||
1) All of the new dump/load code is activated by the #ifdef SHMKEY
|
||||
conditional.
|
||||
|
||||
2) The automatic loading of loadup.el does NOT cause the dump function
|
||||
to be performed. Therefore once the pure/impure data is discarded,
|
||||
someone must remake Emacs to create the saved data files. This
|
||||
should only be necessary when Emacs is first installed or whenever
|
||||
AIX is upgraded.
|
||||
|
||||
3) Emacs will exit with an error if executed in a non-X environment
|
||||
and the dump function was performed within a X window. Therefore
|
||||
the dump function should always be performed in a non-X
|
||||
environment unless the X environment will ALWAYS be available.
|
||||
|
||||
4) Emacs only maintains the lower 24 bits of any data address. The
|
||||
remaining upper 8 bits are reset by the XPNTR macro whenever any
|
||||
Lisp object is referenced. This poses a serious problem because
|
||||
pure data is stored in segment 3 (shared memory) and impure data
|
||||
is stored in segment 2 (data). To reset the upper 8 address bits
|
||||
correctly, XPNTR must guess as to which type of data is represented
|
||||
by the lower 24 address bits. The technique chosen is based upon
|
||||
the fact that pure data offsets in segment 3 range from
|
||||
0 -> PURESIZE-1, which are relatively small offsets. Impure data
|
||||
offsets in segment 2 are relatively large (> 0x40000) because they
|
||||
must follow all shared library data. Therefore XPNTR adds segment
|
||||
3 to each data offset which is small (below PURESIZE) and adds
|
||||
segment 2 to all other offsets. This algorithm will remain valid
|
||||
as long as a) pure data size remains relatively small and b) process
|
||||
data is loaded after shared library data.
|
||||
|
||||
To eliminate this guessing game, Emacs must preserve the 32-bit
|
||||
address and add additional data object overhead for the object type
|
||||
and garbage collection mark bit.
|
||||
|
||||
5) The data section written to .emacs.data is divided into three
|
||||
areas as shown below. The file header contains four character
|
||||
pointers which are used during automatic data loading. The file's
|
||||
contents will only be used if the first three addresses match
|
||||
their counterparts in the current process. The fourth address is
|
||||
the new data segment address required to hold all of the preloaded
|
||||
data.
|
||||
|
||||
|
||||
.emacs.data file format
|
||||
|
||||
+---------------------------------------+ \
|
||||
| address of _data | \
|
||||
+---------------------------------------+ \
|
||||
| address of _end | \
|
||||
+---------------------------------------+ file header
|
||||
| address of initial sbrk(0) | /
|
||||
+---------------------------------------+ /
|
||||
| address of final sbrk(0) | /
|
||||
+---------------------------------------+ /
|
||||
\ \
|
||||
\ \
|
||||
all data to be loaded from
|
||||
_data to _end
|
||||
\ \
|
||||
\ \
|
||||
+---------------------------------------+
|
||||
\ \
|
||||
\ \
|
||||
all data to be loaded from
|
||||
initial to final sbrk(0)
|
||||
\ \
|
||||
+---------------------------------------+
|
||||
|
||||
|
||||
Sections two and three contain the preloaded data which is
|
||||
restored at locations _data and initial sbrk(0) respectively.
|
||||
|
||||
The reason two separate sections are needed is that process
|
||||
initialization allocates data (via malloc) prior to main()
|
||||
being called. Therefore _end is several kbytes lower than
|
||||
the address returned by an initial sbrk(0). This creates a
|
||||
hole in the process data space and malloc will abort if this
|
||||
region is overwritten during the load function.
|
||||
|
||||
One further complication with the malloc'd space is that it
|
||||
is partially empty and must be "consumed" so that data space
|
||||
malloc'd in the future is not assigned to this region. The malloc
|
||||
function distributed with Emacs anticipates this problem but the
|
||||
AIX 3.1 version does not. Therefore, repeated malloc calls are
|
||||
needed to exhaust this initial malloc space. How do you know
|
||||
when malloc has exhausted its free memory? You don't! So the
|
||||
code must repeatedly call malloc for each buffer size and
|
||||
detect when a new memory page has been allocated. Once the new
|
||||
memory page is allocated, you can calculate the number of free
|
||||
buffers in that page and request exactly that many more. Future
|
||||
malloc requests will now be added at the top of a new memory page.
|
||||
|
||||
One final point - the initial sbrk(0) is the value of sbrk(0)
|
||||
after all of the above malloc hacking has been performed.
|
||||
|
||||
|
||||
The following Emacs dump/load issues need to be addressed:
|
||||
|
||||
1) Loadup.el exits with an error message because the xemacs and
|
||||
emacs-xxx files are not created during the dump function.
|
||||
|
||||
Loadup.el should be changed to check for the new .emacs.data
|
||||
file.
|
||||
|
||||
2) Dump will only support one .emacs.data file for the entire
|
||||
system. This precludes the ability to allow each user to
|
||||
define his/her own "dumped" Emacs.
|
||||
|
||||
Add an environment symbol to override the default .emacs.data
|
||||
path.
|
||||
|
||||
3) An error message "error in init file" is displayed out of
|
||||
startup.el when the dumped Emacs is invoked by a non-root user.
|
||||
Although all of the preloaded Lisp code is present, the important
|
||||
purify-flag has not been set back to Qnil - precluding the
|
||||
loading of any further Lisp code until the flag is manually
|
||||
reset.
|
||||
|
||||
The problem appears to be an access violation which will go
|
||||
away if the read-write access modes to all of the files are
|
||||
changed to rw-.
|
||||
|
||||
4) In general, all file access modes should be changed from
|
||||
rw-r--r-- to rw-rw-rw-. They are currently setup to match
|
||||
standard AIX access modes.
|
||||
|
||||
5) The dump function is not invoked when the automatic load of
|
||||
loadup.el is performed.
|
||||
|
||||
Perhaps the command arguments array should be expanded with
|
||||
"dump" added to force an automatic dump.
|
||||
|
||||
6) The automatic initialization function alloc_shm will delete
|
||||
the shared memory segment and .emacs.data file if the "dump"
|
||||
command argument is found in ANY argument position. The
|
||||
dump function will only take place in loadup.el if "dump"
|
||||
is the third or fourth command argument.
|
||||
|
||||
Change alloc_shm to live by loadup.el rules.
|
||||
|
176
etc/BABYL
Normal file
176
etc/BABYL
Normal file
|
@ -0,0 +1,176 @@
|
|||
Format of Version 5 Babyl Files:
|
||||
|
||||
Warning:
|
||||
|
||||
This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli),
|
||||
based on looking at a particular Babyl file and recalling various
|
||||
issues. Therefore it is not guaranteed to be complete, but it is a
|
||||
start, and I will try to point the reader to various Babyl functions
|
||||
that will serve to clarify certain format questions.
|
||||
|
||||
Also note that this file will not contain control-characters,
|
||||
but instead have two-character sequences starting with Uparrow.
|
||||
Unless otherwise stated, an Uparrow <character> is to be read as
|
||||
Control-<character>, e.g. ^L is a Control-L.
|
||||
|
||||
Versions:
|
||||
|
||||
First, note that each Babyl file contains in its BABYL OPTIONS
|
||||
section the version for the Babyl file format. In principle, the
|
||||
format can be changed in any way as long as we increment the format
|
||||
version number; then programs can support both old and new formats.
|
||||
|
||||
In practice, version 5 is the only format version used, and the
|
||||
previous versions have been obsolete for so long that Emacs does not
|
||||
support them.
|
||||
|
||||
|
||||
Overall Babyl File Structure:
|
||||
|
||||
A Babyl file consists of a BABYL OPTIONS section followed by
|
||||
0 or more message sections. The BABYL OPTIONS section starts
|
||||
with the line "BABYL OPTIONS:". Message sections start with
|
||||
Control-Underscore Control-L Newline. Each section ends
|
||||
with a Control-Underscore. (That is also the first character
|
||||
of the starter for the next section, if any.) Thus, a three
|
||||
message Babyl file looks like:
|
||||
|
||||
BABYL OPTIONS:
|
||||
...the stuff within the Babyl Options section...
|
||||
^_^L
|
||||
...the stuff within the 1st message section...
|
||||
^_^L
|
||||
...the stuff within the 2nd message section...
|
||||
^_^L
|
||||
...the stuff within the last message section...
|
||||
^_
|
||||
|
||||
Babyl is tolerant about some whitespace at the end of the
|
||||
file -- the file may end with the final ^_ or it may have some
|
||||
whitespace, e.g. a newline, after it.
|
||||
|
||||
|
||||
The BABYL OPTIONS Section:
|
||||
|
||||
Each Babyl option is specified on one line (thus restricting
|
||||
string values these options can currently have). Values are
|
||||
either numbers or strings. The format is name, colon, and the
|
||||
value, with whitespace after the colon ignored, e.g.:
|
||||
|
||||
Mail: ~/special-inbox
|
||||
|
||||
Unrecognized options are ignored.
|
||||
|
||||
Here are those options and the kind of values currently expected:
|
||||
|
||||
MAIL Filename, the input mail file for this
|
||||
Babyl file. You may also use several file names
|
||||
separated by commas.
|
||||
Version Number. This should always be 5.
|
||||
Labels String, list of labels, separated by commas.
|
||||
|
||||
|
||||
Message Sections:
|
||||
|
||||
A message section contains one message and information
|
||||
associated with it. The first line is the "status line", which
|
||||
contains a bit (0 or 1 character) saying whether the message has
|
||||
been reformed yet, and a list of the labels attached to this
|
||||
message. Certain labels, called basic labels, are built into
|
||||
Babyl in a fundamental way, and are separated in the status line
|
||||
for convenience of operation. For example, consider the status
|
||||
line:
|
||||
|
||||
1, answered,, zval, bug,
|
||||
|
||||
The 1 means this message has been reformed. This message is
|
||||
labeled "answered", "zval", and "bug". The first, "answered", is
|
||||
a basic label, and the other two are user labels. The basic
|
||||
labels come before the double-comma in the line. Each label is
|
||||
preceded by ", " and followed by ",". (The last basic label is
|
||||
in fact followed by ",,".) If this message had no labels at all,
|
||||
it would look like:
|
||||
|
||||
1,,
|
||||
|
||||
Or, if it had two basic labels, "answered" and "deleted", it
|
||||
would look like:
|
||||
|
||||
1, answered, deleted,, zval, bug,
|
||||
|
||||
The & Label Babyl Message knows which are the basic labels.
|
||||
Currently they are: deleted, unseen, recent, and answered.
|
||||
|
||||
After the status line comes the original header if any.
|
||||
Following that is the EOOH line, which contains exactly the
|
||||
characters "*** EOOH ***" (which stands for "end of original
|
||||
header"). Note that the original header, if a network format
|
||||
header, includes the trailing newline. And finally, following the
|
||||
EOOH line is the visible message, header and text. For example,
|
||||
here is a complete message section, starting with the message
|
||||
starter, and ending with the terminator:
|
||||
|
||||
^_^L
|
||||
1,, wordab, eccmacs,
|
||||
Date: 11 May 1982 21:40-EDT
|
||||
From: Eugene C. Ciccarelli <ECC at MIT-AI>
|
||||
Subject: notes
|
||||
To: ECC at MIT-AI
|
||||
|
||||
*** EOOH ***
|
||||
Date: Tuesday, 11 May 1982 21:40-EDT
|
||||
From: Eugene C. Ciccarelli <ECC>
|
||||
To: ECC
|
||||
Re: notes
|
||||
|
||||
Remember to pickup check at cashier's office, and deposit it
|
||||
soon. Pay rent.
|
||||
^_
|
||||
|
||||
;;; Babyl File BNF:
|
||||
|
||||
;;; Overall Babyl file structure:
|
||||
|
||||
|
||||
Babyl-File ::= Babyl-Options-Section (Message-Section)*
|
||||
|
||||
|
||||
;;; Babyl Options section:
|
||||
|
||||
|
||||
Babyl-Options-Section
|
||||
::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator
|
||||
|
||||
Babyl-Option ::= Option-Name ":" Horiz-Whitespace BOptValue newline
|
||||
|
||||
BOptValue ::= Number | 1-Line-String
|
||||
|
||||
|
||||
|
||||
;;; Message section:
|
||||
|
||||
|
||||
Message-Section ::= Message-Starter Status-Line Orig-Header
|
||||
EOOH-Line Message Terminator
|
||||
|
||||
Message-Starter ::= "^L" newline
|
||||
|
||||
Status-Line ::= Bit-Char "," (Basic-Label)* "," (User-Label)* newline
|
||||
|
||||
Basic-Label ::= Space BLabel-Name ","
|
||||
|
||||
User-Label ::= Space ULabel-Name ","
|
||||
|
||||
EOOH-Line ::= "*** EOOH ***" newline
|
||||
|
||||
Message ::= Visible-Header Message-Text
|
||||
|
||||
|
||||
;;; Utilities:
|
||||
|
||||
Terminator ::= "^_"
|
||||
|
||||
Horiz-Whitespace
|
||||
::= (Space | Tab)*
|
||||
|
||||
Bit-Char ::= "0" | "1"
|
88
etc/CENSORSHIP
Normal file
88
etc/CENSORSHIP
Normal file
|
@ -0,0 +1,88 @@
|
|||
Censoring my Software
|
||||
Richard Stallman
|
||||
[From Datamation, 1 March 1996]
|
||||
|
||||
|
||||
Last summer, a few clever legislators proposed a bill to "prohibit
|
||||
pornography" on the Internet. Last fall, right-wing Christians made
|
||||
this cause their own. Last week, President Clinton signed the bill,
|
||||
and we lost the freedom of the press for the public library of the
|
||||
future. This week, I'm censoring GNU Emacs.
|
||||
|
||||
No, GNU Emacs does not contain pornography. It is a software package,
|
||||
an award-winning extensible and programmable text editor. But the law
|
||||
that was passed applies to far more than pornography. It prohibits
|
||||
"indecent" speech, which can include anything from famous poems, to
|
||||
masterpieces hanging in the Louvre, to advice about safe sex...to
|
||||
software.
|
||||
|
||||
Naturally, there was a lot of opposition to this bill. Not only from
|
||||
people who use the Internet, and people who appreciate erotica, but
|
||||
from everyone who cares about freedom of the press.
|
||||
|
||||
But every time we tried to tell the public what was at stake, the
|
||||
forces of censorship responded with a lie: they told the public that
|
||||
the issue was simply pornography. By embedding this lie as a
|
||||
presupposition in their statements about the issue, they succeeded in
|
||||
misinforming the public. So here I am, censoring my software.
|
||||
|
||||
You see, Emacs contains a version of the famous "doctor program",
|
||||
a.k.a. Eliza, originally developed by Professor Weizenbaum at MIT.
|
||||
This is the program that imitates a Rogerian psychotherapist. The
|
||||
user talks to the program, and the program responds--by playing back
|
||||
the user's own statements, and by recognizing a long list of
|
||||
particular words.
|
||||
|
||||
The Emacs doctor program was set up to recognize many common curse
|
||||
words, and respond with an appropriately cute message such as, "Would
|
||||
you please watch your tongue?" or "Let's not be vulgar." In order to
|
||||
do this, it had to have a list of curse words. That means the source
|
||||
code for the program was indecent.
|
||||
|
||||
Because of the censorship law, I had to remove this feature. (I
|
||||
replaced it with a message announcing that the program has been
|
||||
censored for your protection.) The new version of the doctor doesn't
|
||||
recognize the indecent words. If you curse at it, it curses right
|
||||
back to you--for lack of knowing better.
|
||||
|
||||
Now that people are facing the threat of two years in prison for
|
||||
indecent network postings, it would be helpful if they could access
|
||||
precise rules via the Internet for how to avoid imprisonment.
|
||||
However, this is impossible. The rules would have to mention the
|
||||
forbidden words, so posting them on the Internet would be against the
|
||||
rules.
|
||||
|
||||
Of course, I'm making an assumption about just what "indecent" means.
|
||||
I have to do this, because nobody knows for sure. The most obvious
|
||||
possibile meaning is the meaning it has for television, so I'm using
|
||||
that as a tentative assumption. However, there is a good chance that
|
||||
our courts will reject that interpretation of the law as
|
||||
unconstitutional.
|
||||
|
||||
We can hope that the courts will recognize the Internet as a medium of
|
||||
publication like books and magazines. If they do, they will entirely
|
||||
reject any law prohibiting "indecent" publications on the Internet.
|
||||
|
||||
What really worries me is that the courts might take a muddled
|
||||
in-between escape route--by choosing another interpretation of
|
||||
"indecent", one that permits the doctor program or a statement of the
|
||||
decency rules, but prohibits some of the books that children can
|
||||
browse through in the public library and the bookstore. Over the
|
||||
years, as the Internet replaces the public library and the bookstore,
|
||||
some of our freedom of the press will be lost.
|
||||
|
||||
Just a few weeks ago, another country imposed censorship on the
|
||||
Internet. That was China. We don't think well of China in this
|
||||
country--its government doesn't respect basic freedoms. But how well
|
||||
does our government respect them? And do you care enough to preserve
|
||||
them here?
|
||||
|
||||
If you care, stay in touch with the Voters Telecommunications Watch.
|
||||
Look in their Web site http://www.vtw.org/ for background information
|
||||
and political action recommendations. Censorship won in February, but
|
||||
we can beat it in November.
|
||||
|
||||
|
||||
Copyright 1996 Richard Stallman
|
||||
Verbatim copying and distribution is permitted in any medium
|
||||
provided this notice is preserved.
|
57
etc/CHARSETS
Normal file
57
etc/CHARSETS
Normal file
|
@ -0,0 +1,57 @@
|
|||
#########################
|
||||
## LIST OF CHARSETS
|
||||
## Each line corresponds to one charset.
|
||||
## The following attributes are listed in this order
|
||||
## separated by a colon `:' in one line.
|
||||
## CHARSET-SYMBOL-NAME,
|
||||
## CHARSET-ID,
|
||||
## DIMENSION (1 or 2)
|
||||
## CHARS (94 or 96)
|
||||
## BYTES (of multibyte form: 1, 2, 3, or 4),
|
||||
## WIDTH (occupied column numbers: 1 or 2),
|
||||
## DIRECTION (0:left-to-right, 1:right-to-left),
|
||||
## ISO-FINAL-CHAR (character code of ISO-2022's final character)
|
||||
## ISO-GRAPHIC-PLANE (ISO-2022's graphic plane, 0:GL, 1:GR)
|
||||
## DESCRIPTION (describing string of the charset)
|
||||
tibetan-1-column:241:2:94:4:1:0:56:0:Tibetan 1 column glyph
|
||||
tibetan:252:2:94:4:2:0:55:0:Tibetan characters
|
||||
lao:167:1:94:3:1:0:49:0:Lao characters (ISO10646 0E80..0EDF)
|
||||
indian-1-column:240:2:94:4:1:0:54:0:Indian charset for 2-column width glypps
|
||||
indian-2-column:251:2:94:4:2:0:53:0:Indian charset for 2-column width glyphs
|
||||
indian-is13194:225:1:94:3:2:0:53:1:Generic Indian charset for data exchange with IS 13194
|
||||
ascii-right-to-left:166:1:94:3:1:1:66:0:ASCII (left half of ISO8859-1) with right-to-left direction
|
||||
chinese-cns11643-7:250:2:94:4:2:0:77:0:CNS11643 Plane 7 Chinese Traditional
|
||||
chinese-cns11643-6:249:2:94:4:2:0:76:0:CNS11643 Plane 6 Chinese Traditional
|
||||
chinese-cns11643-5:248:2:94:4:2:0:75:0:CNS11643 Plane 5 Chinese Traditional
|
||||
chinese-cns11643-4:247:2:94:4:2:0:74:0:CNS11643 Plane 4 Chinese Traditional
|
||||
chinese-cns11643-3:246:2:94:4:2:0:73:0:CNS11643 Plane 3 Chinese Traditional
|
||||
ethiopic:245:2:94:4:2:0:51:0:Ethiopic characters
|
||||
arabic-2-column:224:1:94:3:2:1:52:0:Arabic 2-column
|
||||
arabic-1-column:165:1:94:3:1:1:51:0:Arabic 1-column
|
||||
arabic-digit:164:1:94:3:1:0:50:0:Arabic digit
|
||||
vietnamese-viscii-upper:163:1:96:3:1:0:50:1:VISCII1.1 upper-case
|
||||
vietnamese-viscii-lower:162:1:96:3:1:0:49:1:VISCII1.1 lower-case
|
||||
ipa:161:1:96:3:1:0:48:1:IPA (International Phonetic Association)
|
||||
chinese-sisheng:160:1:94:3:1:0:48:0:SiSheng characters for PinYin/ZhuYin
|
||||
chinese-big5-2:153:2:94:3:2:0:49:0:Big5 Level-2 Chinese traditional
|
||||
chinese-big5-1:152:2:94:3:2:0:48:0:Big5 Level-1 Chinese traditional
|
||||
chinese-cns11643-2:150:2:94:3:2:0:72:0:CNS11643 Plane 2 Chinese traditional
|
||||
chinese-cns11643-1:149:2:94:3:2:0:71:0:CNS11643 Plane 1 Chinese traditional
|
||||
japanese-jisx0212:148:2:94:3:2:0:68:0:JISX0212 Japanese supplement
|
||||
korean-ksc5601:147:2:94:3:2:0:67:0:KSC5601 Korean Hangul and Hanja
|
||||
japanese-jisx0208:146:2:94:3:2:0:66:0:JISX0208.1983/1990 Japanese Kanji
|
||||
chinese-gb2312:145:2:94:3:2:0:65:0:GB2312 Chinese simplified
|
||||
japanese-jisx0208-1978:144:2:94:3:2:0:64:0:JISX0208.1978 Japanese Kanji (so called "old JIS")
|
||||
latin-iso8859-9:141:1:96:2:1:0:77:1:ISO8859-9 (Latin-5)
|
||||
cyrillic-iso8859-5:140:1:96:2:1:0:76:1:ISO8859-5 (Cyrillic)
|
||||
latin-jisx0201:138:1:94:2:1:0:74:0:JISX0201.1976 Japanese Roman
|
||||
katakana-jisx0201:137:1:94:2:1:0:73:1:JISX0201.1976 Japanese Kana
|
||||
hebrew-iso8859-8:136:1:96:2:1:1:72:1:ISO8859-8 (Hebrew)
|
||||
arabic-iso8859-6:135:1:96:2:1:1:71:1:ISO8859-6 (Arabic)
|
||||
greek-iso8859-7:134:1:96:2:1:0:70:1:ISO8859-7 (Greek)
|
||||
thai-tis620:133:1:96:2:1:0:84:1:TIS620.2529 (Thai)
|
||||
latin-iso8859-4:132:1:96:2:1:0:68:1:ISO8859-4 (Latin-4)
|
||||
latin-iso8859-3:131:1:96:2:1:0:67:1:ISO8859-3 (Latin-3)
|
||||
latin-iso8859-2:130:1:96:2:1:0:66:1:ISO8859-2 (Latin-2)
|
||||
latin-iso8859-1:129:1:96:2:1:0:65:1:ISO8859-1 (Latin-1)
|
||||
ascii:000:1:94:1:1:0:66:0:ASCII (ISO646 IRV)
|
74
etc/CODINGS
Normal file
74
etc/CODINGS
Normal file
|
@ -0,0 +1,74 @@
|
|||
#########################
|
||||
## LIST OF CODING SYSTEMS
|
||||
## Each line corresponds to one coding system
|
||||
## Format of a line is:
|
||||
## NAME:TYPE:MNEMONIC:EOL:FLAGS:DOCSTRING,
|
||||
## where
|
||||
## TYPE = nil (no conversion), t (auto conversion),
|
||||
## 0 (Mule internal), 1 (SJIS), 2 (ISO2022), 3 (BIG5), or 4 (CCL)
|
||||
## EOL = 0 (LF), 1 (CRLF), 2 (CR), or 3 (Automatic detection)
|
||||
## FLAGS =
|
||||
## if TYPE = 2 then
|
||||
## comma (`,') separated data of the followings:
|
||||
## G0, G1, G2, G3, SHORT-FORM, ASCII-EOL, ASCII-CNTL, SEVEN,
|
||||
## LOCKING-SHIFT, SINGLE-SHIFT, USE-ROMAN, USE-OLDJIS, NO-ISO6429
|
||||
## else if TYPE = 4 then
|
||||
## comma (`,') separated CCL programs for read and write
|
||||
## else
|
||||
## 0
|
||||
##
|
||||
no-conversion:nil:=:0:0:Do no conversion
|
||||
undecided:t:+:3:0:Detect coding-system automatically
|
||||
hz:0:z:3:0:Codins-system of Hz/ZW used for Chinese (GB).
|
||||
emacs-mule:0:=:3:0:Internal coding system used in a buffer.
|
||||
shift_jis:1:S:3:0:Coding-system of Shift-JIS used in Japan.
|
||||
sjis:1:S:3:0:Coding-system of Shift-JIS used in Japan.
|
||||
euc-japan-1990:2:E:3:ascii,japanese-jisx0208,katakana-jisx0201,japanese-jisx0212,1,1,1,0,0,1,0,0,0:Coding-system of Japanese EUC (Extended Unix Code).
|
||||
iso-2022-lock:2:i:3:(ascii,t),-2,-1,-1,0,1,1,1,0,0,0,0,0:ISO-2022 coding system using Locking-Shift for 96-charset.
|
||||
iso-2022-ss2-7:2:I:3:(ascii,t),-1,-2,-1,1,1,1,1,0,1,0,0,0:ISO-2022 coding system using SS2 for 96-charset in 7-bit code.
|
||||
iso-2022-ss2-8:2:I:3:(ascii,t),-1,-2,-1,0,1,1,0,0,1,0,0,0:ISO-2022 coding system using SS2 for 96-charset in 8-bit code.
|
||||
iso-2022-cjk:2:I:3:(ascii,t),(nil,korean-ksc5601,chinese-gb2312,chinese-cns11643-1,t),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),1,1,1,1,1,1,0,0,0:Mixture of ISO-2022-JP, ISO-2022-KR, and ISO-2022-CN
|
||||
cn-gb-2312:2:C:3:(ascii,t),chinese-gb2312,chinese-sisheng,-1,0,1,1,0,0,1,0,0,0:Coding-system of Chinese EUC (so called GB Encoding).
|
||||
lao:2:T:3:(ascii,t),(lao,t),-1,-1,0,1,0,0,0,0,0,0,0:Coding-system used for ASCII(MSB=0) & LAO(MSB=1).
|
||||
iso-2022-jp-1978-irv:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,1,1,0:Coding-system used for old jis terminal.
|
||||
junet:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding.
|
||||
tis620:2:T:3:(ascii,t),(thai-tis620,t),-1,-1,0,1,0,0,0,0,0,0,0:Coding-system used for ASCII(MSB=0) & TIS620(MSB=1).
|
||||
euc-japan:2:E:3:ascii,japanese-jisx0208,katakana-jisx0201,japanese-jisx0212,1,1,1,0,0,1,0,0,0:Coding-system of Japanese EUC (Extended Unix Code).
|
||||
iso-2022-int-1:2:I:3:(ascii,t),(korean-ksc5601,t),-1,-1,1,1,1,1,1,0,0,0,0:ISO-2022-INT-1
|
||||
euc-china:2:C:3:(ascii,t),chinese-gb2312,chinese-sisheng,-1,0,1,1,0,0,1,0,0,0:Coding-system of Chinese EUC (so called GB Encoding).
|
||||
old-jis:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,1,1,0:Coding-system used for old jis terminal.
|
||||
iso-2022-7:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding.
|
||||
iso-2022-cn:2:C:3:ascii,(nil,chinese-gb2312,chinese-cns11643-1),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),0,1,1,1,1,1,0,0,0:Coding system ISO-2022-CN for Chinese (GB and CNS character sets).
|
||||
ctext:2:X:3:(ascii,t),(latin-iso8859-1,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-1 Compound Text Encoding.
|
||||
iso-2022-jp:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding.
|
||||
iso-2022-kr:2:k:3:ascii,(nil,korean-ksc5601),-1,-1,0,1,1,1,1,0,0,0,0:MIME ISO-2022-KR
|
||||
iso-2022-cn-ext:2:C:3:ascii,(nil,chinese-gb2312,chinese-cns11643-1),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),0,1,1,1,1,1,0,0,0:Coding system ISO-2022-CN for Chinese (GB and CNS character sets).
|
||||
iso-8859-1:2:X:3:(ascii,t),(latin-iso8859-1,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-1 Compound Text Encoding.
|
||||
iso-8859-2:2:2:3:(ascii,t),(latin-iso8859-2,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-2
|
||||
iso-8859-3:2:3:3:(ascii,t),(latin-iso8859-3,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-3
|
||||
iso-8859-4:2:4:3:(ascii,t),(latin-iso8859-4,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-4
|
||||
iso-8859-5:2:5:3:(ascii,t),(cyrillic-iso8859-5,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-5
|
||||
iso-8859-7:2:7:3:(ascii,t),(greek-iso8859-7,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-7
|
||||
iso-8859-8:2:8:3:(ascii,t),(hebrew-iso8859-8,t),-1,-1,0,1,1,0,0,0,0,0,1:MIME ISO-8859-8
|
||||
iso-8859-9:2:9:3:(ascii,t),(latin-iso8859-9,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-9
|
||||
euc-kr:2:K:3:(ascii,t),korean-ksc5601,-1,-1,0,1,1,0,0,0,0,0,0:Coding-system of Korean EUC (Extended Unix Code).
|
||||
euc-korea:2:K:3:(ascii,t),korean-ksc5601,-1,-1,0,1,1,0,0,0,0,0,0:Coding-system of Korean EUC (Extended Unix Code).
|
||||
cn-big5:3:B:3:0:Coding-system of BIG5.
|
||||
big5:3:B:3:0:Coding-system of BIG5.
|
||||
viscii:4:V:3: 3 106 e ffffff0b 100 0 1 19c6 3 4 19c7 19e7 7 8 9 a b c d e f 10 11 12 13 19d6 15 16 17 18 19db 1a 1b 1c 1d 19dc 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 19d5 19a1 19a2 19a3 19a4 19a5 19a6 19a7 19a8 19a9 19aa 19ab 19ac 19ad 19ae 19af 19b0 19b1 19b2 19b5 19fe 19be 19b6 19b7 19b8 19f6 19f7 19ef 19fc 19fb 19f8 19cf 19f5 1921 1922 1923 1924 1925 1926 1927 1928 1929 192a 192b 192c 192d 192e 192f 1930 1931 1932 19de 19bd 1935 1936 1937 1938 19f1 19d1 19d7 19d8 193d 193e 19df 19e0 19e1 19e2 19e3 19e4 19e5 1946 1947 19e8 19e9 19ea 19eb 19ec 19ed 19ee 194f 19f0 1951 19f2 19f3 19f4 1955 1956 1957 1958 19f9 19fa 195b 195c 19fd 195e 195f 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 196a 196b 196c 196d 196e 196f 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 197a 197b 197c 197d 197e 19e6 fffefd0c 16, 1 121 e 41b 10 80 fffffc07 fffffb0c 41b 15 9a fffff707 fffff60c 881d 12 a2 e 4017 80 ffffef0b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 0 0 b5 b6 b7 b8 0 0 0 0 bd be 0 0 0 0 0 0 0 c6 c7 0 0 0 0 0 0 0 cf 0 d1 0 0 0 d5 d6 d7 d8 0 0 db dc 0 de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe 0 ffff6d0c 881b 12 a3 e 4017 80 ffff660b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 0 0 93 96 97 98 0 0 0 0 b4 95 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 9f 0 ba 0 0 0 80 14 bb bc 0 0 19 1e 0 b3 bf c0 c1 c2 c3 c4 c5 ff 6 c8 c9 ca cb cc cd ce 9b d0 b9 d2 d3 d4 a0 99 9a 9e d9 da 9d 9c dd 94 0 fffee40c fffee307 fffee20c 16:Coding-system used for VISCII 1.1.
|
||||
koi8:4:K:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f 20 20 20 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e21 20 20 20 20 20 20 20 20 20 20 20 20 e6e e50 e51 e66 e54 e55 e64 e53 e65 e58 e59 e5a e5b e5c e5d e5e e5f e6f e60 e61 e62 e63 e56 e52 e6c e6b e57 e68 e6d e69 e67 e6a e4e e30 e31 e46 e34 e35 e44 e33 e45 e38 e39 e3a e3b e3c e3d e3e e3f e4f e40 e41 e42 e43 e36 e32 e4c e4b e37 e48 e4d e49 e47 e4a fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 b3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e1 e2 f7 e7 e4 e5 f6 fa e9 ea eb ec ed ee ef f0 f2 f3 f4 f5 e6 e8 e3 fe fb fd ff f9 f8 fc e0 f1 c1 c2 d7 c7 c4 c5 d6 da c9 ca cb cc cd ce cf d0 d2 d3 d4 d5 c6 c8 c3 de db dd df d9 d8 dc c0 d1 20 a3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for KOI8.
|
||||
koi8-r:4:K:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f 20 20 20 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e21 20 20 20 20 20 20 20 20 20 20 20 20 e6e e50 e51 e66 e54 e55 e64 e53 e65 e58 e59 e5a e5b e5c e5d e5e e5f e6f e60 e61 e62 e63 e56 e52 e6c e6b e57 e68 e6d e69 e67 e6a e4e e30 e31 e46 e34 e35 e44 e33 e45 e38 e39 e3a e3b e3c e3d e3e e3f e4f e40 e41 e42 e43 e36 e32 e4c e4b e37 e48 e4d e49 e47 e4a fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 b3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e1 e2 f7 e7 e4 e5 f6 fa e9 ea eb ec ed ee ef f0 f2 f3 f4 f5 e6 e8 e3 fe fb fd ff f9 f8 fc e0 f1 c1 c2 d7 c7 c4 c5 d6 da c9 ca cb cc cd ce cf d0 d2 d3 d4 d5 c6 c8 c3 de db dd df d9 d8 dc c0 d1 20 a3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for KOI8.
|
||||
alternativnyj:4:A:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f e30 e31 e32 e33 e34 e35 e36 e37 e38 e39 e3a e3b e3c e3d e3e e3f e40 e41 e42 e43 e44 e45 e46 e47 e48 e49 e4a e4b e4c e4d e4e e4f e50 e51 e52 e53 e54 e55 e56 e57 e58 e59 e5a e5b e5c e5d e5e e5f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e60 e61 e62 e63 e64 e65 e66 e67 e68 e69 e6a e6b e6c e6d e6e e6f e21 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 e70 fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef ff f1 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for Alternativnyj
|
||||
vscii:4:V:3: 3 106 e ffffff0b 100 0 19fa 19f8 3 19d7 19d8 19e6 7 8 9 a b c d e f 10 19d1 19df 19cf 19d6 19db 19fd 19dc 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 19e0 19e4 19e3 19e1 19d5 19a3 19a7 19e8 19eb 19a8 19e9 19a9 19ae 19ec 19ef 19ee 19ed 19b8 19f2 19f6 19f5 19f3 19f7 19b5 19b6 19b7 19de 19be 19fe 19f9 19fc 19fb a0 19e5 19e2 19ea 19f4 19bd 19df 19f0 1965 1962 196a 1974 193e 1979 1970 19a2 c0 c1 c2 c3 c4 1960 1964 1963 1961 1955 19c6 1922 1946 1947 1921 19c7 19a1 19a5 19a6 19e7 19a5 19ab 1923 1925 1926 1967 1924 1927 1968 19ac 196b 1928 1969 1929 192b 192c 192d 192a 192e 196c 196f 19ad 19aa 19b0 196e 196d 1938 1972 19b1 1976 1975 1973 1977 1930 1931 1932 192f 1935 1936 1937 195e 193e 197e 1979 19b2 197c 197b 197a 1978 1957 1958 1966 1951 1971 194f 1956 195b 197d 195c 19af fffefd0c 16, 1 121 e 41b 10 80 fffffc07 fffffb0c 41b 15 9a fffff707 fffff60c 881d 12 a2 e 4017 80 ffffef0b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 be bb c6 ca c7 c8 cb cf d1 d5 d2 d3 d4 d6 e8 e5 e6 e7 0 0 e9 ea eb de 0 0 0 0 0 ed 0 0 0 0 0 0 0 bc bd 0 0 0 0 0 0 0 fa 0 f8 0 0 0 b9 fb f5 f6 0 0 fc fe 0 ec 0 b5 b8 a9 b7 b6 a8 f7 c9 cc d0 aa ce d7 dd dc d8 ae f9 df e3 ab e2 e1 e4 f4 ef f3 f2 f1 fd ee 0 ffff6d0c 881b 12 a3 e 4017 80 ffff660b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 0 0 93 96 97 98 0 0 0 0 b4 95 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 9f 0 ba 0 0 0 80 14 bb bc 0 0 19 1e 0 b3 bf c0 c1 c2 c3 c4 c5 ff 6 c8 c9 ca cb cc cd ce 9b d0 b9 d2 d3 d4 a0 99 9a 9e d9 da 9d 9c dd 94 0 fffee40c fffee307 fffee20c 16:Coding-system used for VSCII-1.
|
||||
############################
|
||||
## LIST OF CODING CATEGORIES (ordered by priority)
|
||||
## CATEGORY:CODING-SYSTEM
|
||||
##
|
||||
coding-category-iso-7:iso-2022-7
|
||||
coding-category-iso-8-1:iso-8859-1
|
||||
coding-category-iso-8-2:iso-8859-1
|
||||
coding-category-iso-else:iso-2022-lock
|
||||
coding-category-emacs-mule:emacs-mule
|
||||
coding-category-sjis:sjis
|
||||
coding-category-big5:big5
|
||||
coding-category-binary:no-conversion
|
975
etc/ChangeLog
Normal file
975
etc/ChangeLog
Normal file
|
@ -0,0 +1,975 @@
|
|||
1999-07-12 Richard Stallman <rms@gnu.org>
|
||||
|
||||
* Version 20.4 released.
|
||||
|
||||
1999-06-27 Karl Heuer <kwzh@gnu.org>
|
||||
|
||||
* yow.lines: Fix indentation. Fix typo.
|
||||
|
||||
1999-01-19 Dave Love <fx@gnu.org>
|
||||
|
||||
* MORE.STUFF: Revamped.
|
||||
|
||||
1999-01-14 Dave Love <fx@gnu.org>
|
||||
|
||||
* FAQ: Merge posted updates.
|
||||
|
||||
1998-12-14 Dave Love <fx@gnu.org>
|
||||
|
||||
* FAQ: Somewhat edited copy of the most recently posted version.
|
||||
|
||||
1998-11-04 Kenichi Handa <handa@etl.go.jp>
|
||||
|
||||
* MACHINES (NEC EWS4800): New section.
|
||||
|
||||
1998-09-04 Karl Heuer <kwzh@gnu.org>
|
||||
|
||||
* TUTORIAL: Use C-x C-l, not M-:, as example of disabled command.
|
||||
|
||||
1998-08-19 Richard Stallman <rms@psilocin.ai.mit.edu>
|
||||
|
||||
* Version 20.3 released.
|
||||
|
||||
* TUTORIAL.ro: New file.
|
||||
|
||||
1998-04-10 Ken'ichi Handa <handa@melange.gnu.org>
|
||||
|
||||
* TUTORIAL.sl: Renamed back to the original.
|
||||
|
||||
1998-04-10 Kenichi Handa <handa@etl.go.jp>
|
||||
|
||||
* TUTORIAL.cs: Renamed from TUTORIAL.cz.
|
||||
* TUTORIAL.ja: Renamed from TUTORIAL.jp.
|
||||
* TUTORIAL.ka: Renamed from TUTORIAL.kr.
|
||||
* TUTORIAL.sk: Renamed from TUTORIAL.sl.
|
||||
|
||||
1998-04-06 Kenichi Handa <handa@etl.go.jp>
|
||||
|
||||
* TUTORIAL.jp: Re-translated for the latest TUTORIAL.
|
||||
|
||||
1998-03-26 Richard Stallman <rms@psilocin.gnu.org>
|
||||
|
||||
* TUTORIAL.sl: New file.
|
||||
|
||||
1997-09-19 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* Version 20.2 released.
|
||||
|
||||
1997-09-15 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* Version 20.1 released.
|
||||
|
||||
1997-06-02 Ken'ichi Handa <handa@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* CODINGS, CHARSETS: New files.
|
||||
|
||||
1996-08-11 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* Version 19.33 released.
|
||||
|
||||
1996-07-31 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* Version 19.32 released.
|
||||
|
||||
1996-06-23 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
|
||||
|
||||
* refcard.ps: File obtained from someone else;
|
||||
it was generated badly here.
|
||||
|
||||
1996-05-25 Karl Heuer <kwzh@gnu.ai.mit.edu>
|
||||
|
||||
* Version 19.31 released.
|
||||
|
||||
1996-05-25 Karl Heuer <kwzh@gnu.ai.mit.edu>
|
||||
|
||||
* TUTORIAL: Rephrase the first page to fit on a standard tty screen.
|
||||
|
||||
1996-05-03 Richard Stallman <rms@delasyd.gnu.ai.mit.edu>
|
||||
|
||||
* emacs.bash: Use >|.
|
||||
|
||||
1996-01-20 Geoff Voelker <voelker@cs.washington.edu>
|
||||
|
||||
* rgb.txt: New file.
|
||||
|
||||
1995-11-24 Richard Stallman <rms@mole.gnu.ai.mit.edu>
|
||||
|
||||
* Version 19.30 released.
|
||||
|
||||
1995-11-04 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
|
||||
|
||||
* gnus-tut.txt: New file.
|
||||
|
||||
1995-07-26 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
|
||||
|
||||
* Rename termcap to termcap.src, the historical name for an
|
||||
uninstalled termcap file.
|
||||
|
||||
1995-06-28 Eric S. Raymond <esr@spiff.gnu.ai.mit.edu>
|
||||
|
||||
* termcap.dat, termcap.ucb: deleted and replaced.
|
||||
|
||||
* termcap: New termcap file from the ncurses project; bigger,
|
||||
better, brighter, does away with waxy yellow buildup. Email
|
||||
me at terminfo@ccil.org if you have any trouble with this.
|
||||
|
||||
* README: Changed to track above change.
|
||||
|
||||
1995-05-24 Karl Heuer <kwzh@hal.gnu.ai.mit.edu>
|
||||
|
||||
* TUTORIAL: Delete reference to ALT. Change <Rubout> to <Delete>.
|
||||
|
||||
1995-04-26 Karl Heuer <kwzh@nutrimat.gnu.ai.mit.edu>
|
||||
|
||||
* Makefile (maintainer-clean): Renamed from realclean.
|
||||
|
||||
1995-04-09 Richard Stallman <rms@mole.gnu.ai.mit.edu>
|
||||
|
||||
* tpu-doc.el: File moved to etc dir and renamed.
|
||||
|
||||
1995-04-07 Boris Goldowsky <boris@cs.rochester.edu>
|
||||
|
||||
* enriched.doc: Rewritten and simplified.
|
||||
|
||||
1994-11-20 Richard Stallman <rms@mole.gnu.ai.mit.edu>
|
||||
|
||||
* Makefile (eterm): New rule.
|
||||
(TIC): New variable.
|
||||
|
||||
* e/eterm, e/eterm.ti: New files.
|
||||
|
||||
1994-10-24 Boris Goldowsky <boris@mole.gnu.ai.mit.edu>
|
||||
|
||||
* enriched.doc: New file.
|
||||
|
||||
1994-09-07 Richard Stallman <rms@mole.gnu.ai.mit.edu>
|
||||
|
||||
* Version 19.26 released.
|
||||
|
||||
1994-07-03 Richard Stallman (rms@gnu.ai.mit.edu)
|
||||
|
||||
* TUTORIAL: Talk about flow control along with C-x C-s and C-s.
|
||||
|
||||
1994-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.25 released.
|
||||
|
||||
1994-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.24 released.
|
||||
|
||||
1994-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.23 released.
|
||||
|
||||
1994-04-21 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Makefile (clean): Delete DOC*.
|
||||
|
||||
1993-11-27 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.22 released.
|
||||
|
||||
1993-11-16 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.21 released.
|
||||
|
||||
1993-11-11 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.20 released.
|
||||
|
||||
1993-08-14 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.19 released.
|
||||
|
||||
1993-08-08 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.18 released.
|
||||
|
||||
1993-07-06 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.16 released.
|
||||
|
||||
1993-06-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* version 19.15 released.
|
||||
|
||||
1993-06-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.14 released.
|
||||
|
||||
1993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
Bring mumbleclean targets into conformance with GNU coding standards.
|
||||
* Makefile (distclean): Don't remove backup and autosave files.
|
||||
These are easy to get rid of in other ways, and a pain to lose.
|
||||
(mostlyclean, realclean): New targets.
|
||||
|
||||
1993-06-08 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.13 released.
|
||||
|
||||
1993-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.10 released.
|
||||
|
||||
1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.9 released.
|
||||
|
||||
1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.8 released.
|
||||
|
||||
1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
|
||||
|
||||
* Version 19.7 released.
|
||||
|
||||
1993-05-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* MACHINES: Mention Linux.
|
||||
|
||||
1993-04-26 Jim Blandy (jimb@totoro.cs.oberlin.edu)
|
||||
|
||||
* MACHINES: Add section for NeXT, from Thorsten Ohl.
|
||||
|
||||
1993-04-28 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
|
||||
|
||||
* NEWS: Documented picture-mode improvements.
|
||||
|
||||
1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
|
||||
|
||||
* NEWS: Described the new properties of arrow keys and
|
||||
next-line-add-newlines. Fixed up the GUD description, it was
|
||||
out of date. This file referenced LNEWS when it should have
|
||||
said news.texi; fixed.
|
||||
|
||||
news.texi: invocation-name now exists.
|
||||
|
||||
1993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* MORE.STUFF: Added.
|
||||
|
||||
1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* NEWS: Preserved jimb's last change (documenting kill on
|
||||
read-only buffers).
|
||||
|
||||
Added documentation on new info features.
|
||||
|
||||
1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* spook.lines: Alpha-sorted this, and added some new hot buttons
|
||||
for the 1990s.
|
||||
|
||||
1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* MACHINES: Deleted some VMS caveats. If the src and lisp
|
||||
ChangeLogs are correct, dired and mail and process control are now
|
||||
fully supported.
|
||||
|
||||
* NEWS: Added finder news.
|
||||
|
||||
1993-03-19 Richard Stallman (rms@geech.gnu.ai.mit.edu)
|
||||
|
||||
* NEWS: Changed.
|
||||
|
||||
1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* sex.6: Added 900-line support
|
||||
|
||||
* NEWS: Added news about the package finder.
|
||||
|
||||
1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
* MACHINES: `Last updated 10 Feb 1992.' was obviously wrong, so
|
||||
I nuked it. Let the file mod date serve. Merged in APOLLO and
|
||||
SUNBUG files. Changed references to 18.* to past tense.
|
||||
|
||||
* emacs.names: merged into JOKES. I faked a mail header from the
|
||||
Unknown User to delimit the first (unheaded) bit.
|
||||
|
||||
* Makefile (relock, unlock): New productions.
|
||||
|
||||
1993-03-18 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
|
||||
|
||||
Augean-stable cleaning time. Partly to save space, but mostly to
|
||||
reduce the dizzying amount of *stuff* confronting someone exploring
|
||||
the Emacs distribution, I have the following changes in the etc
|
||||
directory:
|
||||
|
||||
* CHARACTERS: merged into TO-DO file under the heading "Long Range:"
|
||||
|
||||
* DIFF, CCADIFF and GOSDIFF: merged into a new outline file titled
|
||||
OTHER.EMACSES. The present names don't really convey anything.
|
||||
Various key bindings and feature descriptions have been updated.
|
||||
|
||||
* NICKLES.WORTH. Nuked. This is copyrighted material that could land
|
||||
FSF in hot water.
|
||||
|
||||
* INTERVAL.IDEAS: Nuked. RMS's thinking, and indeed the
|
||||
implementation of intervals, have progressed way beyond this.
|
||||
|
||||
* RCP: Nuked. It no longer said anything but "Ooops, sorry!"
|
||||
|
||||
* ED.WORSHIP, GNU.JOKES: merged into a mailbox called JOKES.
|
||||
Future jokes can accumulate there.
|
||||
|
||||
* DISTRIB: the actual domestic order form is now ORDERS.USA.
|
||||
The DISTRIB text now mentions 19.
|
||||
|
||||
* ORDERS.USA: created. This is just the order form. DISTRIB
|
||||
has a pointer to it at the beginning.
|
||||
|
||||
* EUROPE: renamed to ORDERS.EUROPE. DISTRIB now has a pointer
|
||||
to it at the beginning.
|
||||
|
||||
* OOOONEWS, OOOONEWS: Nuked. It's version 19 --- nobody needs the
|
||||
version 15 and 17 files anymore.
|
||||
|
||||
All files marked "Nuked" have actually been moved to =-prefixed
|
||||
names as per convention. Originals of all files merged still
|
||||
exist with =-names.
|
||||
|
||||
1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
|
||||
|
||||
* XENIX: nuked (moved to =XENIX). The hackery it describes is
|
||||
no longer necessary in the presence of 19's function-key-map
|
||||
feature; I've added an explanation to the beginning of the file.
|
||||
|
||||
1993-03-10 Jim Blandy (jimb@totoro.cs.oberlin.edu)
|
||||
|
||||
* MACHINES: Update description of SYSVr3 and r4 support, due to
|
||||
Eric Raymond's changes.
|
||||
|
||||
1993-03-09 Jim Blandy (jimb@totoro.cs.oberlin.edu)
|
||||
|
||||
* MACHINES: Mention that you have to edit the configure script
|
||||
when you add support for a new machine, to get it to recognize the
|
||||
configuration name.
|
||||
|
||||
1992-11-20 Jim Blandy (jimb@totoro.cs.oberlin.edu)
|
||||
|
||||
* MACHINES: Converted to use GCC-style configuration names,
|
||||
instead of listing m/*.h and s/*.h files. All knowledge of m/ and
|
||||
s/ files now lives in ../configure.
|
||||
|
||||
1992-10-06 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
|
||||
|
||||
* NEWS: Document included tags tables.
|
||||
|
||||
1992-07-22 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
|
||||
|
||||
* Corrected the news about VC to reflect reality.
|
||||
|
||||
1992-07-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
|
||||
|
||||
* etags.1: New file, from Richard K. Pixley at Cygnus.
|
||||
|
||||
1992-06-24 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* Makefile: Most of the contents of this file were only relevant
|
||||
to things in `../lib-src'; removed all but the `distclean' and
|
||||
`clean' targets.
|
||||
|
||||
1992-04-14 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* COPYING: Got June 1991 version of the GPL here.
|
||||
|
||||
* ChangeLog: Since the old etc contents have been split into etc
|
||||
and lib-src, the old etc's ChangeLog has been duplicated in the
|
||||
new etc and lib-src. That means that each contains complete and
|
||||
coherent information, although each contains extraneous
|
||||
information.
|
||||
|
||||
1992-04-08 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* lib-src/etags.c: "--no-warning" option renamed to "--no-warn",
|
||||
to be consistent with other GNU programs, like makeinfo.
|
||||
|
||||
* lib-src/Makefile: Renamed to Makefile.in; the configure script
|
||||
will edit this to produce Makefile.
|
||||
|
||||
1992-04-07 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* etags.c (print_help, print_version): New functions.
|
||||
(main): Options added to support them.
|
||||
|
||||
* etags.c (longopts): New array of long names for the options.
|
||||
(main): Recognize them.
|
||||
|
||||
1992-04-06 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* etags.c (C_entries): Removed comment saying that \" in a string
|
||||
isn't recognized as magic, because it is correctly handled.
|
||||
|
||||
* getopt.c, getopt.h: New files, from GNU C library.
|
||||
* etags.c: Rewritten to use getopt.
|
||||
#include "getopt.h".
|
||||
(file_num): Variable deleted; its role is now played by getopt's
|
||||
optind.
|
||||
(main): Argument processing loop rewritten to call getopt to get
|
||||
next option. Options which take parameters (-o and -i) rewritten
|
||||
to get parameter from optarg instead of argv[1]. Filename
|
||||
preprocessing loop and update command changed similarly.
|
||||
* Makefile (etags, ctags): Depend on and link with getopt.h,
|
||||
getopt.o, and getopt1.o.
|
||||
(getopt.o, getopt1.o): New targets for the GNU getopt routines.
|
||||
|
||||
* etags.c (outfflag): Variable deleted; it is non-zero iff outfile
|
||||
is non-zero.
|
||||
|
||||
(main): In the argument processing loop, the 'goto next_arg'
|
||||
statements are breaking out of the switch statement in exactly the
|
||||
same way that a simple 'break' statement would; replace the gotos
|
||||
with breaks, and remove the label.
|
||||
|
||||
1992-04-06 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* etags.c (C_entries): Clear tydef and next_token_is_func at start.
|
||||
(consider_token): Move next_token_is_func to global.
|
||||
|
||||
1992-04-02 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* Makefile: Conform with GNU coding standards:
|
||||
(mostlyclean): New target, synonymous with clean.
|
||||
(TAGS, check): New targets.
|
||||
(INSTALL, INSTALLFLAGS): New variables.
|
||||
|
||||
1992-03-31 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* lib-src/Makefile, etc/MACHINES, etc/NEWS: Changed references to
|
||||
`config.emacs' to `configure'.
|
||||
|
||||
* lib-src/Makefile: Adjusted for renaming of share-lib to etc.
|
||||
* etc/MACHINES: Same.
|
||||
|
||||
1992-03-30 Jim Blandy (jimb@pogo.cs.oberlin.edu)
|
||||
|
||||
* movemail.c (main): Allow tempname to be as long as necessary,
|
||||
instead of limiting it to 39 characters.
|
||||
|
||||
* movemail.c (main): Move declaration of buf from top of function
|
||||
to local block surrounding the copy loop. This makes it less
|
||||
likely to be confused with the buf used by the code which checks the
|
||||
permissions on outname's directory.
|
||||
|
||||
1992-03-20 Jim Kingdon (kingdon@albert.gnu.ai.mit.edu)
|
||||
|
||||
* SERVICE: Remove my entry.
|
||||
|
||||
1992-03-09 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
|
||||
|
||||
* Makefile (emacstool, nemacstool, xvetool): Use ${CFLAGS}, not
|
||||
hardcoded -g.
|
||||
|
||||
* movemail.c (xmalloc): Return char *, not int.
|
||||
(main) [!MAIL_USE_FLOCK]: Add a new conditional, MAIL_UNLINK_SPOOL,
|
||||
that is off by default -- normally don't unlink the mail spool
|
||||
file, just empty it. Pass creat mode 0600, not 0666.
|
||||
|
||||
1992-02-07 Jim Blandy (jimb at pogo.cs.oberlin.edu)
|
||||
|
||||
* Makefile (../arch-lib): Depend on ${EXECUTABLES}.
|
||||
(all): Instead of here.
|
||||
(install): Don't use the -s option, since people need symbols to
|
||||
debug code.
|
||||
|
||||
1992-01-19 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
|
||||
|
||||
* etags-vmslib.c (fn_exp): Add type cast.
|
||||
|
||||
1992-01-18 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
* movemail.c: Changes in comments.
|
||||
|
||||
1992-01-13 Jim Blandy (jimb at pogo.cs.oberlin.edu)
|
||||
|
||||
* Makefile: Make the distclean target erase the DOC files from
|
||||
../share-lib and the executables from ../arch-lib.
|
||||
|
||||
1992-01-09 Jim Blandy (jimb at pogo.cs.oberlin.edu)
|
||||
|
||||
* emacsclient.c: #include <sys/stat.h>
|
||||
(main): Do declare statbfr.
|
||||
|
||||
1991-12-21 Richard Stallman (rms at mole.gnu.ai.mit.edu)
|
||||
|
||||
* emacsserver.c, emacsclient.c [BSD]: Use either /tmp or ~
|
||||
for the socket, depending on SERVER_HOME_DIR.
|
||||
If using /tmp, put host name in the socket name.
|
||||
|
||||
* movemail.c (pfatal_and_delete): New function.
|
||||
(main, popmail): Use it.
|
||||
(popmail): Close output before deleting messages.
|
||||
Check for error on close and on fsync.
|
||||
Use `fatal' where appropriate.
|
||||
(main): Remove (void).
|
||||
|
||||
* aixcc.lex: New file. Not officially part of Emacs.
|
||||
* Makefile: Rules for that.
|
||||
|
||||
1991-12-04 Jim Blandy (jimb at pogo.gnu.ai.mit.edu)
|
||||
|
||||
* yow.c (main): Rename all references to PATH_EXEC to PATH_DATA.
|
||||
|
||||
* etags.c (main): Properly cast call to alloca that initializes
|
||||
included_files.
|
||||
|
||||
1991-08-17 Roland McGrath (roland@geech.gnu.ai.mit.edu)
|
||||
|
||||
* etags.c (files_are_tag_tables): Remove global var.
|
||||
(process_file): Don't test it. Also remove hack checking for a
|
||||
file named "TAGS".
|
||||
(main): -i now takes an arg which is the name of a file to include.
|
||||
Collect these names and emit include tags for them after processing
|
||||
all the argument files.
|
||||
|
||||
1991-07-30 Richard Stallman (rms at mole.gnu.ai.mit.edu)
|
||||
|
||||
* wakeup.c: Terminate if parent goes away.
|
||||
|
||||
1991-07-18 Richard Stallman (rms at mole.gnu.ai.mit.edu)
|
||||
|
||||
* etags.c (C_entries): Process token before handling end of line.
|
||||
When inner loops reach end of line, just back up.
|
||||
Let the real end of line processing happen in just one place.
|
||||
(consider_token): Likewise.
|
||||
|
||||
1991-04-11 Jim Blandy (jimb at geech.gnu.ai.mit.edu)
|
||||
|
||||
* etags.c (TEX_mode): Skip comments while scanning the text to see
|
||||
which escape character this file uses.
|
||||
|
||||
1991-03-29 Richard Stallman (rms at mole.gnu.ai.mit.edu)
|
||||
|
||||
* emacsserver.c [USG]: Terminate if msgrcv fails.
|
||||
|
||||
1991-03-03 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* emacsserver.c [BSD]: Check for errors on stdin after scanf.
|
||||
|
||||
1991-01-25 Jim Blandy (jimb at churchy.ai.mit.edu)
|
||||
|
||||
* make-docfile: Find the arguments to a C function correctly,
|
||||
by not ignoring the character that read_c_string returns. Don't
|
||||
even try to find argument names for functions that take MANY
|
||||
or UNEVALLED arguments, since they're a figment of the docstring's
|
||||
imagination.
|
||||
|
||||
1991-01-14 Jim Blandy (jimb at churchy.ai.mit.edu)
|
||||
|
||||
* make-docfile: Read the .elc files generated by the new byte
|
||||
compiler.
|
||||
|
||||
1990-12-31 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* refcard.tex: Use cm fonts, not am, in multi-column mode.
|
||||
|
||||
1990-11-29 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* movemail.c (mbx_delimit_begin): Put space before `unseen'.
|
||||
|
||||
1990-11-27 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* Makefile (install*): No need to install wakeup.
|
||||
|
||||
1990-11-26 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* Makefile (install*): Install emacsclient like etags.
|
||||
|
||||
1990-11-13 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* movemail.c (error): Handle 3 args.
|
||||
(main): Don't check input access if using pop.
|
||||
|
||||
1990-10-16 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* etags.c (find_entries): Check for numbers after Scheme suffix.
|
||||
|
||||
1990-10-14 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* termcap.dat (vt200-80): Fix ke and ks to frob flag 1.
|
||||
|
||||
1990-10-09 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* Makefile (nemacstool, xvetool): New targets.
|
||||
|
||||
1990-09-26 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* emacsclient.c: Include errno.h and define related variables.
|
||||
|
||||
1990-09-23 Richard Stallman (rms at mole.ai.mit.edu)
|
||||
|
||||
* emacsclient.c: Change usage message.
|
||||
|
||||
1990-08-30 David Lawrence (tale at pogo.ai.mit.edu)
|
||||
|
||||
* emacs.1: Add break before -nw option.
|
||||
|
||||
1990-08-19 David J. MacKenzie (djm at apple-gunkies)
|
||||
|
||||
* qsort.c: Replace with GNU version.
|
||||
|
||||
1990-08-14 David J. MacKenzie (djm at apple-gunkies)
|
||||
|
||||
* wakeup.c: New program replacing loadst.c.
|
||||
|
||||
1990-08-14 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c [USG]: Pass msgsnd only 4 args.
|
||||
|
||||
1990-08-09 David J. MacKenzie (djm at pogo.ai.mit.edu)
|
||||
|
||||
* etags.c: Rename `flag' variables for what they do instead of
|
||||
which option character sets them.
|
||||
|
||||
1990-05-28 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* loadst.c (main): Conditional to get load average on Apollo.
|
||||
|
||||
1990-05-22 Joseph Arceneaux (jla at churchy.ai.mit.edu)
|
||||
|
||||
* emacsserver.c: Set the permission on the socket to 0600.
|
||||
|
||||
1990-03-27 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c [BSD]: Print clean message for failing getwd.
|
||||
|
||||
1990-03-20 David Lawrence (tale at pogo.ai.mit.edu)
|
||||
|
||||
* getdate.y: Use the getdate.y from GNU tar for timer.
|
||||
|
||||
1990-03-18 Jim Kingdon (kingdon at pogo.ai.mit.edu)
|
||||
|
||||
* emacsclient.c (main): Don't put brackets around "filename" in
|
||||
usage message. It isn't optional.
|
||||
|
||||
1990-03-14 Joseph Arceneaux (jla at churchy.ai.mit.edu)
|
||||
|
||||
* etags.c (getit): Recognize '$' as beginning identifiers.
|
||||
|
||||
1990-02-22 David Lawrence (tale at pogo.ai.mit.edu)
|
||||
|
||||
* emacsserver.c: Renamed from server.c.
|
||||
* Makefile: Reference emacsserver rather than server.
|
||||
* MACHINES: Doc fix for new emacsserver name.
|
||||
|
||||
1990-01-25 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c: Print program name in error messages.
|
||||
|
||||
1990-01-19 David Lawrence (tale at cocoa-puffs)
|
||||
|
||||
* timer.c, getdate.y (new files) and Makefile:
|
||||
Sub-process support for run-at-time in timer.el.
|
||||
Doesn't yet work correctly for USG.
|
||||
|
||||
1990-01-10 Jim Kingdon (kingdon at pogo)
|
||||
|
||||
* MACHINES: Add HP 300 running BSD.
|
||||
|
||||
1990-01-02 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* yow.c: Dynamically allocate buffer; skip header before random
|
||||
choice to avoid bias toward first item.
|
||||
|
||||
1989-12-24 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (readline): Separate out init of `pend'.
|
||||
|
||||
1989-12-17 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Undo changes relating to isgoodhdr.
|
||||
|
||||
1989-12-16 Mosur Mohan (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (isgoodhdr): New macro.
|
||||
(_gdh, notgdh): New variable used by that.
|
||||
(init): Initialize _gdh.
|
||||
(find_entries): Set header_file.
|
||||
(consider_token): Use isgoodhdr if in header file.
|
||||
|
||||
* etags.c (total_size_of_entries):
|
||||
Was miscalculating by 1 in rewritten case.
|
||||
|
||||
* etags.c (PAS_funcs): One arg to pfnote was missing.
|
||||
|
||||
1989-12-05 Joseph Arceneaux (jla at spiff)
|
||||
|
||||
* MACHINES: Change for the ULTRIX entry.
|
||||
|
||||
1989-11-21 Joseph Arceneaux (jla at spiff)
|
||||
|
||||
* etags.c (process_file): If file is not regular, return.
|
||||
|
||||
1989-11-06 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* loadst.c (main): Handle FIXUP_KERNEL_SYMBOL_ADDR.
|
||||
|
||||
1989-10-30 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* loadst.c (load_average): If HAVE_GETLOADAVG, use getloadavg.
|
||||
(main): If HAVE_GETLOADAVG, don't call `nlist'.
|
||||
|
||||
1989-10-25 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (consider_token): Allow any number of typespec keywords
|
||||
after `typedef', before new type name.
|
||||
(enum sym_type): Add st_C_typespec.
|
||||
(C_create_stab): Put typespec kwds in table.
|
||||
|
||||
1989-08-27 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
|
||||
|
||||
* etags.c (main): Don't depend on name invoked by.
|
||||
If CTAGS is not defined, assume it is ETAGS.
|
||||
|
||||
1989-07-31 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (L_funcs): Allow package name in define construct,
|
||||
as in (foo::defmumble name-defined ...).
|
||||
|
||||
1989-07-30 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (find_entries): Stupid bug testing for C filename suffixes.
|
||||
|
||||
* Makefile (yow): Depends on ../src/paths.h.
|
||||
|
||||
1989-07-04 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
|
||||
|
||||
* etags.c: Fix compilation by moving Pascal after Fortran.
|
||||
|
||||
1989-06-15 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c [USG]: Define F_OK, etc., if not found in header.
|
||||
|
||||
1989-05-27 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* hexl.c: New file, supports hexl-mode.
|
||||
|
||||
1989-05-14 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: New compilation flag MAIL_USE_MMDF.
|
||||
|
||||
1989-05-08 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c: Use BSD code whenever HAVE_SOCKETS.
|
||||
* server.c: Likewise.
|
||||
|
||||
* make-docfile.c (scan_c_file): Output argument names at end of string.
|
||||
(write_c_args): New subroutine.
|
||||
|
||||
1989-04-27 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: Report failure of flock.
|
||||
|
||||
1989-04-19 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (find_entries): Allow multi-letter extensions for fortran.
|
||||
|
||||
1989-04-18 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* loadst.c: on bsd4.3, use gettimeofday instead of CPUSTATES.
|
||||
|
||||
1989-03-15 Jeff Peck (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacstool.c: setenv IN_EMACSTOOL=t, TERM=sun, TERMCAP=.
|
||||
|
||||
* emacsstool.1: update to document environment variables.
|
||||
|
||||
1989-02-21 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (PAS_funcs): New function by Mosur Mohan.
|
||||
|
||||
* movemail.c: On sysv, include unistd.h.
|
||||
|
||||
1989-02-18 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* b2m.c: New file.
|
||||
|
||||
1989-02-15 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Prolog support from Sunichirou Sugou
|
||||
|
||||
1989-02-03 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* Makefile (clean): New target.
|
||||
|
||||
1989-01-25 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* fakemail.c (put_line): Break header lines at 79 cols.
|
||||
|
||||
1989-01-19 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Greatly rewritten by Sam Kendall for C++ support and for
|
||||
multiple tags per line.
|
||||
|
||||
1989-01-03 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: Check access before doing real work.
|
||||
Check that outfile is in a writable directory.
|
||||
On fatal error, delete the lock file.
|
||||
|
||||
1988-12-31 Richard Mlynarik (mly at rice-chex.ai.mit.edu)
|
||||
|
||||
* env.c: Add decl for my-index
|
||||
* etags.c (file-entries): .oak => scheme
|
||||
|
||||
1988-12-30 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: Use `access' to check input and output files.
|
||||
|
||||
1988-12-28 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c (main): Ignore all of CWD before first slash.
|
||||
|
||||
1988-12-27 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (readline): Double linebuffer->size outside the xrealloc.
|
||||
|
||||
1988-12-22 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* server.c, emacsclient.c: Don't try to use gid_t; it isn't defined.
|
||||
* server.c: chmod the socket to 0700.
|
||||
|
||||
1988-12-09 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* fakemail.c (main): Let env var FAKEMAILER override pgm to run.
|
||||
(add_field): Delete comments and turn `<', `>' to spaces
|
||||
in header lines.
|
||||
(USE_FAKEMAIL): New customization macro says to make fakemail
|
||||
not be a no-op even on a BSD system.
|
||||
|
||||
1988-12-01 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c (consider_token): Skip comments just like whitespace.
|
||||
Notice `struct', etc. and set strtag for those tokens.
|
||||
Return 1 for the token following `struct' if an open-brace follows it.
|
||||
(C_entries): Special handling of token following `struct'
|
||||
needed because we have probably advanced to the following line
|
||||
to find the `{'.
|
||||
(main): New option `T' sets tflag and strflag.
|
||||
Set both of them by default if eflags.
|
||||
|
||||
1988-11-30 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: Do fsync before closing output.
|
||||
|
||||
1988-11-29 Richard Mlynarik (mly at pickled-brain.ai.mit.edu)
|
||||
|
||||
* movemail.c: Better error message when can't create tempname.
|
||||
This file needs a great deal of extra error-checking and lucid reporting...
|
||||
|
||||
1988-11-16 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Support assembler code for .s and .a files.
|
||||
(getit): Allow underscore in a tag.
|
||||
|
||||
1988-11-15 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* movemail.c: Close output and check errors before deleting input.
|
||||
|
||||
1988-10-01 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
|
||||
|
||||
* emacsclient.c [SYSVIPC]: Compute cwd only once; decide properly
|
||||
whether to prefix it. Handle line number args.
|
||||
|
||||
1988-09-24 Richard Stallman (rms at gluteus.ai.mit.edu)
|
||||
|
||||
* etags.c (main): default setting of eflag was backwards.
|
||||
|
||||
1988-09-23 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: New option -i. -f renamed -o.
|
||||
`-' as input file means read input file names from stdin.
|
||||
-i spec'd or input file named TAGS means the input file is another
|
||||
tag table; output an "include" line for it.
|
||||
|
||||
1988-09-19 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* Makefile: New vars DESTDIR, BINDIR, LIBDIR, MANDIR, MANEXT.
|
||||
New targets install, install.sysv, install.xenix.
|
||||
This makefile is now responsible for installing executables
|
||||
and documentation from this directory into system directories.
|
||||
|
||||
1988-09-16 Richard Stallman (rms at corn-chex.ai.mit.edu)
|
||||
|
||||
* server.c, emacsclient.c (main): Compute socket name from euid.
|
||||
|
||||
1988-08-04 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* emacsclient.c: Args like +DIGITS are passed through unchanged.
|
||||
|
||||
1988-07-12 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* server.c: If both BSD and HAVE_SYSVIPC, use the latter.
|
||||
* emacsclient.c: Likewise.
|
||||
In the HAVE_SYSVIPC alternative, if BSD, use getwd instead of getcwd.
|
||||
|
||||
1988-06-23 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Handle `typedef struct foo {' (price@mcc.com).
|
||||
(istoken) New string-comparison macro.
|
||||
(consider_token): New arg `level'. New state `tag_ok' in `tydef'.
|
||||
|
||||
1988-06-14 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* etags.c: Changes for VMS.
|
||||
Always define ETAGS on VMS.
|
||||
Define macros GOOD and BAD for success and failure exit codes.
|
||||
(begtk, intk): Allow `$' in identifiers
|
||||
(main): Don't support -B, -F or -u on VMS.
|
||||
Alternate loop for scanning filename arguments.
|
||||
(system): Delete definition of this function.
|
||||
|
||||
* etags-vmslib.c (system): Undefine this; VMS now provides it.
|
||||
|
||||
1988-06-08 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
|
||||
|
||||
* loadst.c: Prevent multiple-def errors on BSD and BSD4_3
|
||||
around include of param.h. (Like fns.c.)
|
||||
|
||||
1988-05-16 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
|
||||
|
||||
* loadst.c (load_average): Move load-average code to this new fn.
|
||||
Add conditionals to compute load ave on UMAX.
|
||||
|
||||
1988-05-14 Richard Stallman (rms at lucky-charms.ai.mit.edu)
|
||||
|
||||
* loadst.c: Change DK_HEADER_FILE to DKSTAT_HEADER_FILE
|
||||
with opposite sense.
|
||||
|
||||
1988-05-13 Chris Hanson (cph at kleph)
|
||||
|
||||
* emacsclient.c: Delete references to unused variable `out'. This
|
||||
caused a bus error when used under hp-ux.
|
||||
|
||||
1988-05-06 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
|
||||
|
||||
* loadst.c: Control dk.h conditional with DK_HEADER_FILE.
|
||||
|
||||
1988-05-04 Richard Stallman (rms at rice-krispies.ai.mit.edu)
|
||||
|
||||
* etags.c (find_entries): `.t' or `.sch' means scheme code.
|
||||
|
||||
1988-04-29 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
|
||||
|
||||
* loadst.c: Add BSD4_3 conditional for file dk.h instead of dkstat.h.
|
||||
|
||||
1988-04-28 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
|
||||
|
||||
* movemail.c: #undef close, since config can #define it on V.3.
|
||||
* emacsclient.c, fakemail.c, loadst.c, server.c: likewise.
|
||||
|
||||
1988-04-26 Richard Stallman (rms at lucky-charms.ai.mit.edu)
|
||||
|
||||
* etags.c (TEX_mode, etc.): Remove superfluous backslashes from
|
||||
invalid escape sequences such as `\{'.
|
||||
|
||||
* loadst.c: Add `sequent' conditional for file dk.h.
|
||||
|
||||
1988-03-20 Richard M. Stallman (rms at wilson)
|
||||
|
||||
* server.c [not BSD and not HAVE_SYSVIPC]: fix error message.
|
||||
|
||||
* loadst.c (main) [XENIX]: use /usr/spool/mail, not /usr/mail.
|
143
etc/DEBUG
Normal file
143
etc/DEBUG
Normal file
|
@ -0,0 +1,143 @@
|
|||
Debugging GNU Emacs
|
||||
Copyright (c) 1985 Richard M. Stallman.
|
||||
|
||||
Permission is granted to anyone to make or distribute verbatim copies
|
||||
of this document as received, in any medium, provided that the
|
||||
copyright notice and permission notice are preserved,
|
||||
and that the distributor grants the recipient permission
|
||||
for further redistribution as permitted by this notice.
|
||||
|
||||
Permission is granted to distribute modified versions
|
||||
of this document, or of portions of it,
|
||||
under the above conditions, provided also that they
|
||||
carry prominent notices stating who last changed them.
|
||||
|
||||
On 4.2 you will probably find that dbx does not work for
|
||||
debugging GNU Emacs. For one thing, dbx does not keep the
|
||||
inferior process's terminal modes separate from its own.
|
||||
For another, dbx does not put the inferior in a separate
|
||||
process group, which makes trouble when an inferior uses
|
||||
interrupt input, which GNU Emacs must do on 4.2.
|
||||
|
||||
dbx has also been observed to have other problems,
|
||||
such as getting incorrect values for register variables
|
||||
in stack frames other than the innermost one.
|
||||
|
||||
The Emacs distribution now contains GDB, the new source-level
|
||||
debugger for the GNU system. GDB works for debugging Emacs.
|
||||
GDB currently runs on vaxes under 4.2 and on Sun 2 and Sun 3
|
||||
systems.
|
||||
|
||||
|
||||
** Some useful techniques
|
||||
|
||||
`Fsignal' is a very useful place to stop in.
|
||||
All Lisp errors go through there.
|
||||
|
||||
It is useful, when debugging, to have a guaranteed way
|
||||
to return to the debugger at any time. If you are using
|
||||
interrupt-driven input, which is the default, then Emacs is using
|
||||
RAW mode and the only way you can do it is to store
|
||||
the code for some character into the variable stop_character:
|
||||
|
||||
set stop_character = 29
|
||||
|
||||
makes Control-] (decimal code 29) the stop character.
|
||||
Typing Control-] will cause immediate stop. You cannot
|
||||
use the set command until the inferior process has been started.
|
||||
Put a breakpoint early in `main', or suspend the Emacs,
|
||||
to get an opportunity to do the set command.
|
||||
|
||||
If you are using cbreak input (see the Lisp function set-input-mode),
|
||||
then typing Control-g will cause a SIGINT, which will return control
|
||||
to the debugger immediately unless you have done
|
||||
|
||||
ignore 3 (in dbx)
|
||||
or handle 3 nostop noprint (in gdb)
|
||||
|
||||
You will note that most of GNU Emacs is written to avoid
|
||||
declaring a local variable in an inner block, even in
|
||||
cases where using one would be the cleanest thing to do.
|
||||
This is because dbx cannot access any of the variables
|
||||
in a function which has even one variable defined in an
|
||||
inner block. A few functions in GNU Emacs do have variables
|
||||
in inner blocks, only because I wrote them before realizing
|
||||
that dbx had this problem and never rewrote them to avoid it.
|
||||
|
||||
I believe that GDB does not have such a problem.
|
||||
|
||||
|
||||
** Examining Lisp object values.
|
||||
|
||||
When you have a live process to debug, and it has not encountered a
|
||||
fatal error, you can use the GDB command `pr'. First print the value
|
||||
in the ordinary way, with the `p' command. Then type `pr' with no
|
||||
arguments. This calls a subroutine which uses the Lisp printer.
|
||||
|
||||
If you can't use this command, either because the process can't run
|
||||
a subroutine or because the data is invalid, you can fall back on
|
||||
lower-level commands.
|
||||
|
||||
Use the `xtype' command to print out the data type of the last data
|
||||
value. Once you know the data type, use the command that corresponds
|
||||
to that type. Here are these commands:
|
||||
|
||||
xint xptr xwindow xmarker xoverlay xmiscfree xintfwd xboolfwd xobjfwd
|
||||
xbufobjfwd xkbobjfwd xbuflocal xbuffer xsymbol xstring xvector xframe
|
||||
xwinconfig xcompiled xcons xcar xcdr xsubr xprocess xfloat xscrollbar
|
||||
|
||||
Each one of them applies to a certain type or class of types.
|
||||
(Some of these types are not visible in Lisp, because they exist only
|
||||
internally.)
|
||||
|
||||
Each x... command prints some information about the value, and
|
||||
produces a GDB value (subsequently available in $) through which you
|
||||
can get at the rest of the contents.
|
||||
|
||||
In general, most of the rest of the contents will be addition Lisp
|
||||
objects which you can examine in turn with the x... commands.
|
||||
|
||||
** If GDB does not run and your debuggers can't load Emacs.
|
||||
|
||||
On some systems, no debugger can load Emacs with a symbol table,
|
||||
perhaps because they all have fixed limits on the number of symbols
|
||||
and Emacs exceeds the limits. Here is a method that can be used
|
||||
in such an extremity. Do
|
||||
|
||||
nm -n temacs > nmout
|
||||
strip temacs
|
||||
adb temacs
|
||||
0xd:i
|
||||
0xe:i
|
||||
14:i
|
||||
17:i
|
||||
:r -l loadup (or whatever)
|
||||
|
||||
It is necessary to refer to the file `nmout' to convert
|
||||
numeric addresses into symbols and vice versa.
|
||||
|
||||
It is useful to be running under a window system.
|
||||
Then, if Emacs becomes hopelessly wedged, you can create
|
||||
another window to do kill -9 in. kill -ILL is often
|
||||
useful too, since that may make Emacs dump core or return
|
||||
to adb.
|
||||
|
||||
|
||||
** Debugging incorrect screen updating.
|
||||
|
||||
To debug Emacs problems that update the screen wrong, it is useful
|
||||
to have a record of what input you typed and what Emacs sent to the
|
||||
screen. To make these records, do
|
||||
|
||||
(open-dribble-file "~/.dribble")
|
||||
(open-termscript "~/.termscript")
|
||||
|
||||
The dribble file contains all characters read by Emacs from the
|
||||
terminal, and the termscript file contains all characters it sent to
|
||||
the terminal. The use of the directory `~/' prevents interference
|
||||
with any other user.
|
||||
|
||||
If you have irreproducible display problems, put those two expressions
|
||||
in your ~/.emacs file. When the problem happens, exit the Emacs that
|
||||
you were running, kill it, and rename the two files. Then you can start
|
||||
another Emacs without clobbering those files, and use it to examine them.
|
642
etc/JOKES
Normal file
642
etc/JOKES
Normal file
|
@ -0,0 +1,642 @@
|
|||
From: Don Chiasson <G.CHIASSON@DREA-XX.ARPA>
|
||||
Subject: Some gnu jokes
|
||||
To: jokes@DREA-XX.ARPA, gergely@DREA-XX.ARPA, broome@DREA-XX.ARPA
|
||||
cc: G.CHIASSON@DREA-XX.ARPA
|
||||
Message-ID: <12329394624.13.G.CHIASSON@DREA-XX.ARPA>
|
||||
|
||||
Richard M. Stallman (RMS, widely known for creating EMACS) is writing
|
||||
a UNIX clone called GNU (which means Gnu's Not Unix--a recursive acronym).
|
||||
This seems to open the way to a whole gnu class of jokes. For example:
|
||||
|
||||
Q: What do you call a person who hacks while wearing no clothes?
|
||||
A: A gnudist.
|
||||
|
||||
Q: What do you call an eligible young hacker?
|
||||
A: Gnubile.
|
||||
|
||||
Q: What is a hacker's favorite candy?
|
||||
A: Gnugat. (Though it contains little gnutrition.)
|
||||
|
||||
Q: What do you call a computer filled with air?
|
||||
A: Gnumatic.
|
||||
|
||||
Q: What do you call a novice hacker who keeps pestering you
|
||||
with foolish questions?
|
||||
A: A gnuisance.
|
||||
|
||||
Q: What do you call a subtle, clever hack in the favorite language?
|
||||
A: A gnuanCe.
|
||||
|
||||
Q: What do you use a supercomputer for?
|
||||
A: Gnumerical analysis.
|
||||
|
||||
Q: What do you call a hacker who collects coins?
|
||||
A: A gnumismatist.
|
||||
|
||||
Well, there are more, just too gnumerous to tell all at once. I think
|
||||
I'd better go before someone starts firing gnuclear weapons at me.
|
||||
Don
|
||||
|
||||
From: patl@athena.mit.edu (Patrick J. LoPresti)
|
||||
Message-ID: <1991Jul11.031731.9260@athena.mit.edu>
|
||||
Sender: news@athena.mit.edu (News system)
|
||||
Subject: The True Path (long)
|
||||
Date: 11 Jul 91 03:17:31 GMT
|
||||
Path: ai-lab!mintaka!olivea!samsung!zaphod.mps.ohio-state.edu!think.com!snorkelwacker.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!patl
|
||||
Newsgroups: alt.religion.emacs,alt.slack
|
||||
Organization: Massachusetts Institute of Technology
|
||||
Lines: 95
|
||||
Xref: ai-lab alt.religion.emacs:244 alt.slack:1935
|
||||
|
||||
When I log into my Xenix system with my 110 baud teletype, both vi
|
||||
*and* Emacs are just too damn slow. They print useless messages like,
|
||||
'C-h for help' and '"foo" File is read only'. So I use the editor
|
||||
that doesn't waste my VALUABLE time.
|
||||
|
||||
Ed, man! !man ed
|
||||
|
||||
ED(1) UNIX Programmer's Manual ED(1)
|
||||
|
||||
NAME
|
||||
ed - text editor
|
||||
|
||||
SYNOPSIS
|
||||
ed [ - ] [ -x ] [ name ]
|
||||
DESCRIPTION
|
||||
Ed is the standard text editor.
|
||||
---
|
||||
|
||||
Computer Scientists love ed, not just because it comes first
|
||||
alphabetically, but because it's the standard. Everyone else loves ed
|
||||
because it's ED!
|
||||
|
||||
"Ed is the standard text editor."
|
||||
|
||||
And ed doesn't waste space on my Timex Sinclair. Just look:
|
||||
|
||||
-rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed
|
||||
-rwxr-xr-t 4 root 1310720 Jan 1 1970 /usr/ucb/vi
|
||||
-rwxr-xr-x 1 root 5.89824e37 Oct 22 1990 /usr/bin/emacs
|
||||
|
||||
Of course, on the system *I* administrate, vi is symlinked to ed.
|
||||
Emacs has been replaced by a shell script which 1) Generates a syslog
|
||||
message at level LOG_EMERG; 2) reduces the user's disk quota by 100K;
|
||||
and 3) RUNS ED!!!!!!
|
||||
|
||||
"Ed is the standard text editor."
|
||||
|
||||
Let's look at a typical novice's session with the mighty ed:
|
||||
|
||||
golem> ed
|
||||
|
||||
?
|
||||
help
|
||||
?
|
||||
?
|
||||
?
|
||||
quit
|
||||
?
|
||||
exit
|
||||
?
|
||||
bye
|
||||
?
|
||||
hello?
|
||||
?
|
||||
eat flaming death
|
||||
?
|
||||
^C
|
||||
?
|
||||
^C
|
||||
?
|
||||
^D
|
||||
?
|
||||
|
||||
---
|
||||
Note the consistent user interface and error reportage. Ed is
|
||||
generous enough to flag errors, yet prudent enough not to overwhelm
|
||||
the novice with verbosity.
|
||||
|
||||
"Ed is the standard text editor."
|
||||
|
||||
Ed, the greatest WYGIWYG editor of all.
|
||||
|
||||
ED IS THE TRUE PATH TO NIRVANA! ED HAS BEEN THE CHOICE OF EDUCATED
|
||||
AND IGNORANT ALIKE FOR CENTURIES! ED WILL NOT CORRUPT YOUR PRECIOUS
|
||||
BODILY FLUIDS!! ED IS THE STANDARD TEXT EDITOR! ED MAKES THE SUN
|
||||
SHINE AND THE BIRDS SING AND THE GRASS GREEN!!
|
||||
|
||||
When I use an editor, I don't want eight extra KILOBYTES of worthless
|
||||
help screens and cursor positioning code! I just want an EDitor!!
|
||||
Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED!
|
||||
ED! ED IS THE STANDARD!!!
|
||||
|
||||
TEXT EDITOR.
|
||||
|
||||
When IBM, in its ever-present omnipotence, needed to base their
|
||||
"edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely
|
||||
you jest. They chose the most karmic editor of all. The standard.
|
||||
|
||||
Ed is for those who can *remember* what they are working on. If you
|
||||
are an idiot, you should use Emacs. If you are an Emacs, you should
|
||||
not be vi. If you use ED, you are on THE PATH TO REDEMPTION. THE
|
||||
SO-CALLED "VISUAL" EDITORS HAVE BEEN PLACED HERE BY ED TO TEMPT THE
|
||||
FAITHLESS. DO NOT GIVE IN!!! THE MIGHTY ED HAS SPOKEN!!!
|
||||
|
||||
?
|
||||
|
||||
From: The Unknown User <anonymous@nowhere.uucp>
|
||||
Subject: EMACS -- What does it mean?
|
||||
To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU
|
||||
|
||||
EMACS belongs in <sys/errno.h>: Editor too big!
|
||||
|
||||
|
||||
Escape-Meta-Alt-Control-Shift
|
||||
|
||||
|
||||
From: harvard!topaz!BLUE!BRAIL@mit-eddie
|
||||
Date: 9 Sep 85 17:25:27 EDT
|
||||
Subject: EMACS -- What does it mean?
|
||||
To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU
|
||||
|
||||
EMACS may stand for "Editing MACroS," but some friends of mine
|
||||
suggested some more creative definitions. Here they are. Anyone have
|
||||
any additions?
|
||||
|
||||
--------
|
||||
Eight
|
||||
Megabytes
|
||||
And
|
||||
Constantly
|
||||
Swapping
|
||||
|
||||
Even a
|
||||
Master of
|
||||
Arts
|
||||
Comes
|
||||
Simpler
|
||||
|
||||
Emacs
|
||||
Manuals
|
||||
Are
|
||||
Cryptic and
|
||||
Surreal
|
||||
|
||||
Energetic
|
||||
Merchants
|
||||
Always
|
||||
Cultivate
|
||||
Sales
|
||||
|
||||
Each
|
||||
Manual's
|
||||
Audience is
|
||||
Completely
|
||||
Stupified
|
||||
|
||||
Emacs
|
||||
Means
|
||||
A
|
||||
Crappy
|
||||
Screen
|
||||
|
||||
Eventually
|
||||
Munches
|
||||
All
|
||||
Computer
|
||||
Storage
|
||||
|
||||
Even
|
||||
My
|
||||
Aunt
|
||||
Crashes the
|
||||
System
|
||||
|
||||
Eradication of
|
||||
Memory
|
||||
Accomplished with
|
||||
Complete
|
||||
Simplicity
|
||||
|
||||
Elsewhere
|
||||
Maybe
|
||||
Alternative
|
||||
Civilizations
|
||||
Survive
|
||||
|
||||
Egregious
|
||||
Managers
|
||||
Actively
|
||||
Court
|
||||
Stallman
|
||||
|
||||
Esoteric
|
||||
Malleability
|
||||
Always
|
||||
Considered
|
||||
Silly
|
||||
|
||||
Emacs
|
||||
Manuals
|
||||
Always
|
||||
Cause
|
||||
Senility
|
||||
|
||||
Easily
|
||||
Maintained with the
|
||||
Assistance of
|
||||
Chemical
|
||||
Solutions
|
||||
|
||||
EMACS
|
||||
MACRO
|
||||
ACTED
|
||||
CREDO
|
||||
SODOM
|
||||
|
||||
Edwardian
|
||||
Manifestation of
|
||||
All
|
||||
Colonial
|
||||
Sins
|
||||
|
||||
Generally
|
||||
Not
|
||||
Used
|
||||
|
||||
Except by
|
||||
Middle
|
||||
Aged
|
||||
Computer
|
||||
Scientists
|
||||
|
||||
Extended
|
||||
Macros
|
||||
Are
|
||||
Considered
|
||||
Superfluous
|
||||
|
||||
Every
|
||||
Mode
|
||||
Accelerates
|
||||
Creation of
|
||||
Software
|
||||
|
||||
Elsewhere
|
||||
Maybe
|
||||
All
|
||||
Commands are
|
||||
Simple
|
||||
|
||||
Emacs
|
||||
May
|
||||
Allow
|
||||
Customised
|
||||
Screwups
|
||||
|
||||
Excellent
|
||||
Manuals
|
||||
Are
|
||||
Clearly
|
||||
Suppressed
|
||||
|
||||
Emetic
|
||||
Macros
|
||||
Assault
|
||||
Core and
|
||||
Segmentation
|
||||
|
||||
Embarrassed
|
||||
Manual-Writer
|
||||
Accused of
|
||||
Communist
|
||||
Subversion
|
||||
|
||||
Extensibility and
|
||||
Modifiability
|
||||
Aggravate
|
||||
Confirmed
|
||||
Simpletons
|
||||
|
||||
Emacs
|
||||
May
|
||||
Annihilate
|
||||
Command
|
||||
Structures
|
||||
|
||||
Easily
|
||||
Mangles,
|
||||
Aborts,
|
||||
Crashes and
|
||||
Stupifies
|
||||
|
||||
Extraneous
|
||||
Macros
|
||||
And
|
||||
Commands
|
||||
Stink
|
||||
|
||||
Exceptionally
|
||||
Mediocre
|
||||
Algorithm for
|
||||
Computer
|
||||
Scientists
|
||||
|
||||
EMACS
|
||||
Makes no
|
||||
Allowances
|
||||
Considering its
|
||||
Stiff price
|
||||
|
||||
Equine
|
||||
Mammals
|
||||
Are
|
||||
Considerably
|
||||
Smaller
|
||||
|
||||
Embarrassingly
|
||||
Mundane
|
||||
Advertising
|
||||
Cuts
|
||||
Sales
|
||||
|
||||
Every
|
||||
Moron
|
||||
Assumes
|
||||
CCA is
|
||||
Superior
|
||||
|
||||
Exceptionally
|
||||
Mediocre
|
||||
Autocratic
|
||||
Control
|
||||
System
|
||||
|
||||
EMACS
|
||||
May
|
||||
Alienate
|
||||
Clients and
|
||||
Supporters
|
||||
|
||||
Excavating
|
||||
Mayan
|
||||
Architecture
|
||||
Comes
|
||||
Simpler
|
||||
|
||||
Erasing
|
||||
Minds
|
||||
Allows
|
||||
Complete
|
||||
Submission
|
||||
|
||||
Every
|
||||
Male
|
||||
Adolescent
|
||||
Craves
|
||||
Sex
|
||||
|
||||
Elephantine
|
||||
Memory
|
||||
Absolutely
|
||||
Considered
|
||||
Sine que non
|
||||
|
||||
Emacs
|
||||
Makers
|
||||
Are
|
||||
Crazy
|
||||
Sickos
|
||||
|
||||
Eenie-Meenie-Miney-Mo-
|
||||
Macros
|
||||
Are
|
||||
Completely
|
||||
Slow
|
||||
|
||||
Experience the
|
||||
Mildest
|
||||
Ad
|
||||
Campaign ever
|
||||
Seen
|
||||
|
||||
Emacs
|
||||
Makefiles
|
||||
Annihilate
|
||||
C-
|
||||
Shells
|
||||
|
||||
Eradication of
|
||||
Memory
|
||||
Accomplished with
|
||||
Complete
|
||||
Simplicity
|
||||
|
||||
Emetic
|
||||
Macros
|
||||
Assault
|
||||
Core and
|
||||
Segmentation
|
||||
|
||||
Epileptic
|
||||
MLisp
|
||||
Aggravates
|
||||
Compiler
|
||||
Seizures
|
||||
|
||||
Eleven thousand
|
||||
Monkeys
|
||||
Asynchronously
|
||||
Crank out these
|
||||
Slogans
|
||||
-------
|
||||
|
||||
|
||||
From: ihnss!warren@mit-eddie (Warren Montgomery)
|
||||
Newsgroups: net.emacs
|
||||
Subject: Re: EMACS -- What does it mean?
|
||||
Date: Tue, 10-Sep-85 09:14:24 EDT
|
||||
Organization: AT&T Bell Labs, Naperville, IL
|
||||
Apparently-To: emacs-netnews-distribution@mit-prep
|
||||
|
||||
Someone at a luncheon suggested it meant:
|
||||
|
||||
Evenings,
|
||||
Mornings,
|
||||
And a
|
||||
Couple of
|
||||
Saturdays
|
||||
|
||||
(In reference to the odd hours that went into the creation of my
|
||||
implementation).
|
||||
|
||||
--
|
||||
|
||||
Warren Montgomery
|
||||
ihnss!warren
|
||||
IH ((312)-979) x2494
|
||||
|
||||
Date: Wed, 18 Sep 85 10:11:04 edt
|
||||
From: inmet!tower@inmet.inmet (Leonard H. Tower Jr.) <inmet!tower@cca-unix>
|
||||
Subject: Re: EMACS -- What does it mean?
|
||||
To: tower@MIT-PREP.ARPA
|
||||
|
||||
Received: by inmet.uucp (4.12/inmet) id AA02199; Wed, 18 Sep 85 09:10:17 edt
|
||||
Date: Wed, 18 Sep 85 09:10:17 edt
|
||||
Message-Id: <8509181310.AA02199@inmet.uucp>
|
||||
Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower
|
||||
Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA
|
||||
Organization: Intermetrics, Inc., Cambridge, MA, USA
|
||||
Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739
|
||||
/* Written 6:48 pm Sep 14, 1985 by gml@ssc-vax in inmet:net.emacs */
|
||||
/* ---------- "Re: EMACS -- What does it mean?" ---------- */
|
||||
Pleeeeeeeze!!! Nice try on the meaning of EMACS. I believe the
|
||||
correct acronym is:
|
||||
|
||||
Emacs
|
||||
Makes
|
||||
All
|
||||
Computing
|
||||
Simple
|
||||
|
||||
Thank you, and Good Night
|
||||
/* End of text from inmet:net.emacs */
|
||||
|
||||
From: ho95e!wcs@mit-eddie (Bill.Stewart.4K435.x0705)
|
||||
Newsgroups: net.emacs
|
||||
Subject: Re: EMACS -- What does it mean?
|
||||
Date: Thu, 26-Sep-85 21:43:54 EDT
|
||||
Organization: AT&T Bell Labs, Holmdel NJ
|
||||
Apparently-To: emacs-netnews-distribution@mit-prep
|
||||
|
||||
> > very interesting, but what does GNU stand for ?
|
||||
> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs.
|
||||
> More recursive acronyms, anyone?
|
||||
Many people have also seen FINE Is Not Emacs, but the one that has
|
||||
character is THief Isn't Even Fine.
|
||||
--
|
||||
## Bill Stewart, AT&T Bell Labs, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs
|
||||
|
||||
Path: mit-eddie!think!harvard!bbnccv!bbncca!linus!decvax!mcnc!ncsu!uvacs!edison!ta2
|
||||
From: edison!ta2@mit-eddie (tom allebrandi)
|
||||
Newsgroups: net.emacs
|
||||
Subject: Re: Re: EMACS -- What does it mean?
|
||||
Date: Sun, 29-Sep-85 18:11:55 EDT
|
||||
Organization: General Electric's Mountain Resort
|
||||
Apparently-To: emacs-netnews-distribution@mit-prep
|
||||
|
||||
> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs.
|
||||
>
|
||||
> More recursive acronyms, anyone?
|
||||
>
|
||||
|
||||
For the DEC-system-10/20: FINE - Fine Is Not Emacs.....
|
||||
|
||||
--
|
||||
...............
|
||||
tom allebrandi 2, general electric aco, charlottesville, va
|
||||
{decvax,duke}!mcnc!ncsu!uvacs!edison!ta2
|
||||
box 8106, charlottesville, va, 22906
|
||||
(804) 978-5566
|
||||
...............
|
||||
|
||||
Date: Wed, 16 Oct 85 01:38:12 edt
|
||||
From: inmet!tower (Leonard H. Tower Jr.) <inmet!tower@cca-unix>
|
||||
Subject: more names
|
||||
To: tower@MIT-PREP.ARPA
|
||||
|
||||
Received: by inmet.uucp (4.12/inmet) id AA12997; Tue, 15 Oct 85 22:31:39 edt
|
||||
Date: Tue, 15 Oct 85 22:31:39 edt
|
||||
Message-Id: <8510160231.AA12997@inmet.uucp>
|
||||
Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower
|
||||
Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA
|
||||
Organization: Intermetrics, Inc., Cambridge, MA, USA
|
||||
Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739
|
||||
/* Written 12:20 pm Oct 14, 1985 by rs@mirror.UUCP in inmet:net.emacs */
|
||||
|
||||
|
||||
SINE: Sine Is Not Emacs
|
||||
(MIT Architecture Machine Group)
|
||||
|
||||
EINE: Eine is Not Emacs
|
||||
(MIT Lisp Machine)
|
||||
|
||||
ZWEI: Zwei Was Eine Initially
|
||||
("rev2" of EINE)
|
||||
|
||||
--
|
||||
Rich $alz {mit-eddie, ihnp4!inmet, wjh12, cca, datacube} !mirror!rs
|
||||
Mirror Systems 2067 Massachusetts Ave.
|
||||
617-661-0777 Cambridge, MA, 02140
|
||||
/* End of text from inmet:net.emacs */
|
||||
|
||||
Path: mit-eddie!genrad!panda!talcott!harvard!seismo!gatech!ulysses!pajb
|
||||
From: ulysses!pajb@mit-eddie (Paul Bennett)
|
||||
Newsgroups: net.emacs
|
||||
Subject: Here we go again ...
|
||||
Date: Sat, 19-Oct-85 17:26:49 EDT
|
||||
Organization: AT&T Bell Laboratories, Murray Hill
|
||||
Apparently-To: emacs-netnews-distribution@mit-prep
|
||||
|
||||
|
||||
> EINE: Eine is Not Emacs
|
||||
> (MIT Lisp Machine)
|
||||
>
|
||||
> ZWEI: Zwei Was Eine Initially
|
||||
> ("rev2" of EINE)
|
||||
|
||||
DREI: DREI - Really Emacs Inside
|
||||
(Exists only in my head)
|
||||
|
||||
From: friedman@gnu.ai.mit.edu (Noah Friedman)
|
||||
Sender: friedman@gnu.ai.mit.edu
|
||||
To: jimb@gnu.ai.mit.edu, rms@gnu.ai.mit.edu
|
||||
Subject: etc/emacs.names
|
||||
Date: Fri, 9 Oct 92 00:54:57 edt
|
||||
|
||||
The following should be added:
|
||||
|
||||
|
||||
Emacs
|
||||
Makes
|
||||
A
|
||||
Computer
|
||||
Slow
|
||||
|
||||
From: S_TITZ@iravcl.ira.uka.de (Olaf Titz)
|
||||
Newsgroups: alt.religion.emacs
|
||||
Subject: Re: what emacs stands for
|
||||
Date: 12 Oct 92 19:29:32 GMT
|
||||
|
||||
Emacs Masquerades As Comfortable Shell
|
||||
Ever Made A Control-key Setup?
|
||||
Emacs: My Alternative Computer Story
|
||||
Emacs Made Almost Completely Screwed
|
||||
(by extensive use of M-x global-unset-key)
|
||||
Emacs Macht Alle Computer Schoen
|
||||
(deutsch) (=Emacs makes all computers beautiful)
|
||||
Each Mail A Continued Surprise
|
||||
Every Mode Acknowledges Customized Strokes
|
||||
(keystrokes, of course :-)
|
||||
Eating Memory And Cycle-Sucking
|
||||
Everyday Material Almost Compiled Successfully
|
||||
|
||||
now enough bashing for today :-)
|
||||
|
||||
|
||||
From: elvis@gnu.ai.mit.edu
|
||||
To: emacs-19-bugs@gnu.ai.mit.edu
|
||||
Subject: missing from etc/emacs.names
|
||||
Date: Thu, 20 May 93 02:21:27 edt
|
||||
|
||||
|
||||
Elvis
|
||||
Masterminds
|
||||
All
|
||||
Computer
|
||||
Software
|
||||
|
||||
Just so you boys know the score.
|
||||
|
||||
Thank you very Much,
|
||||
The King
|
122
etc/LPF
Normal file
122
etc/LPF
Normal file
|
@ -0,0 +1,122 @@
|
|||
Protect Your Freedom to Write Programs
|
||||
Join the League for Programming Freedom
|
||||
(Version of February 3, 1994)
|
||||
|
||||
Ten years ago, programmers were allowed to write programs using all
|
||||
the techniques they knew, and providing whatever features they felt
|
||||
were useful. This is no longer the case. New monopolies, known as
|
||||
software patents and interface copyrights, have taken away our freedom
|
||||
of expression and our ability to do a good job.
|
||||
|
||||
"Look and feel" lawsuits attempt to monopolize well-known command
|
||||
languages; some have succeeded. Copyrights on command languages
|
||||
enforce gratuitous incompatibility, close opportunities for
|
||||
competition, and stifle incremental improvements.
|
||||
|
||||
Software patents are even more dangerous; they make every design
|
||||
decision in the development of a program carry a risk of a lawsuit,
|
||||
with draconian pretrial seizure. It is difficult and expensive to
|
||||
find out whether the techniques you consider using are patented; it is
|
||||
impossible to find out whether they will be patented in the future.
|
||||
|
||||
The League for Programming Freedom is a grass-roots organization of
|
||||
professors, students, businessmen, programmers and users dedicated to
|
||||
bringing back the freedom to write programs. The League is not
|
||||
opposed to the legal system that Congress expressly established for
|
||||
software--copyright on individual programs. Our aim is to reverse the
|
||||
recent changes that prevent programmers from doing their work.
|
||||
|
||||
The League works to abolish the new monopolies by publishing articles,
|
||||
talking with public officials, denouncing egregious offenders, and
|
||||
filing amicus curiae briefs, most notably against Lotus in its suit
|
||||
against Borland. We testified twice at the recent Patent Office
|
||||
hearings on software patents. We welcome suggestions for other
|
||||
activities, as well as help in carrying them out.
|
||||
|
||||
Membership dues in the League are $42 per year for programmers,
|
||||
managers and professionals; $10.50 for students; $21 for others.
|
||||
Please give more if you can. The League's funds will be used for
|
||||
filing briefs; for printing handouts, buttons and signs; whatever will
|
||||
persuade the courts, the legislators, and the people. You may not get
|
||||
anything personally for your dues--except for the freedom to write
|
||||
programs. The League is a non-profit corporation, but not considered
|
||||
a tax-exempt charity. However, for those self-employed in software,
|
||||
the dues can be a business expense.
|
||||
|
||||
The League needs both activist members and members who only pay their
|
||||
dues. We also greatly need additional corporate members; contact us
|
||||
for information.
|
||||
|
||||
If you have any questions, please write to the League, phone
|
||||
+1 617 621 7084, or send Internet mail to lpf@uunet.uu.net.
|
||||
|
||||
Chris Hofstader, President
|
||||
Dean Anderson, Secretary
|
||||
Aubrey Jaffer, Treasurer
|
||||
|
||||
Chris Hofstader can be reached at (617) 492-0023; FAX (617) 497-1632.
|
||||
To join, please send a check and the following information to:
|
||||
|
||||
League for Programming Freedom
|
||||
1 Kendall Square #143
|
||||
P.O.Box 9171
|
||||
Cambridge, Massachusetts 02139
|
||||
|
||||
(Outside the US, please send a check in US dollars on a bank
|
||||
having a US correspondent bank, to save us check cashing fees.)
|
||||
|
||||
Your name:
|
||||
|
||||
|
||||
The address for League mailings, a few each year; please indicate
|
||||
whether it is your home address or your work address:
|
||||
|
||||
|
||||
|
||||
The company you work for, and your position:
|
||||
|
||||
|
||||
Your phone numbers (home, work or both):
|
||||
|
||||
|
||||
Your email address, so we can contact you for demonstrations or for
|
||||
writing letters. (If you don't want us to contact you for these
|
||||
things, please say so, but please give us your email address anyway
|
||||
so we can save paper and postage by sending you the newsletter by email.)
|
||||
|
||||
|
||||
Is there anything about you which would enable your endorsement of the
|
||||
LPF to impress the public? For example, if you are or have been a
|
||||
professor or an executive, or have written software that has a good
|
||||
reputation, please tell us.
|
||||
|
||||
|
||||
|
||||
Would you like to help with LPF activities?
|
||||
|
||||
|
||||
|
||||
|
||||
The corporate charter of the League for Programming Freedom states:
|
||||
|
||||
The purpose of the corporation is to engage in the following
|
||||
activities:
|
||||
|
||||
1. To determine the existence of, and warn the public about
|
||||
restrictions and monopolies on classes of computer programs where such
|
||||
monopolies prevent or restrict the right to develop certain types of
|
||||
computer programs.
|
||||
|
||||
2. To develop countermeasures and initiatives, in the public interest,
|
||||
effective to block or otherwise prevent or restrain such monopolistic
|
||||
activities including education, research, publications, public
|
||||
assembly, legislative testimony, and intervention in court proceedings
|
||||
involving public interest issues (as a friend of the court).
|
||||
|
||||
3. To engage in any business or other activity in service of and
|
||||
related to the foregoing paragraphs that lawfully may be carried on
|
||||
by a corporation organized under Chapter 180 of the Massachusetts
|
||||
General Laws.
|
||||
|
||||
The officers and directors of the League will be elected annually by
|
||||
the members.
|
144
etc/MH-E-NEWS
Normal file
144
etc/MH-E-NEWS
Normal file
|
@ -0,0 +1,144 @@
|
|||
User-visible changes to mh-e in version 5.0 from 4.1.
|
||||
|
||||
Note: This being a major release, there are many internal changes.
|
||||
This document lists only changes to the external interfaces of mh-e.
|
||||
|
||||
When upgrading, you must either explicitly reload the new versions of
|
||||
all mh-e files that are already loaded or restart your Emacs.
|
||||
|
||||
mh-e 5.0.1 contains minor changes from mh-e 5.0 to integrate it with
|
||||
Emacs 19.29.
|
||||
|
||||
mh-e 5.0.2 contains additional minor changes to integrate it with
|
||||
reporter.el (requires reporter.el version 3.1c or later) and Emacs
|
||||
19.30. The mh-goto-msg function is much faster, which also speeds up
|
||||
several other operations.
|
||||
|
||||
Major Changes and New Features in mh-e
|
||||
======================================
|
||||
|
||||
The emphasis for this release has been on consistency and
|
||||
documentation. Many documentation strings were enhanced.
|
||||
Documentation strings were changed to comments for internal functions
|
||||
and variables.
|
||||
|
||||
There is now proper documentation in the form of a 75-page users
|
||||
manual. The Texinfo source is mh-e.texi; the formatted Info document
|
||||
is mh-e.info.
|
||||
|
||||
There is a new command `mh-update-sequences', which updates MH's
|
||||
idea of what messages are in the Unseen sequence and what is the current
|
||||
folder and message. `mh-quit' calls it. While `mh-execute-commands'
|
||||
has always done this updating as a side effect, the new function is
|
||||
faster.
|
||||
|
||||
The MH profile entry "Inbox:" is supported.
|
||||
|
||||
If the show-buffer is modified, the user is queried before mh-e
|
||||
reuses the buffer to show a different message. This buffer is also
|
||||
auto-saved and backed up correctly.
|
||||
|
||||
`mh-store-buffer' is significantly more robust. It now handles
|
||||
messages created by a wide variety of packaging software. The status
|
||||
message for `uudecode' includes the name of the file created. An error
|
||||
is signaled if the subprocess exits with a non-zero status.
|
||||
|
||||
`mh-search-folder' behaves predictably, adding messages found to the
|
||||
`search' sequence. It correctly handles the case of no messages found.
|
||||
|
||||
`mh-burst-digest' (`M-b') now only rescans the part of the folder
|
||||
affected by the burst. It is now much faster in a large folder.
|
||||
|
||||
New mh-e Hooks and Customization Variables
|
||||
==========================================
|
||||
|
||||
`mh-default-folder-for-message-function': new name for the old
|
||||
`mh-msg-folder-hook', which wasn't a hook. The old name was confusing,
|
||||
leading people to think they could use `add-hook' with it, when
|
||||
actually `setq' is the correct way.
|
||||
|
||||
`mh-sortm-args': When this variable is used has changed. Now
|
||||
`mh-sortm-args' is passed if there IS a prefix argument to
|
||||
`mh-sort-folder'. The assumption is that for arguments you normally
|
||||
want, you would specify them in an MH profile entry.
|
||||
|
||||
`mh-mhn-args': new hook, a list of additional arguments to pass to
|
||||
the `mhn' program if `mh-edit-mhn' is given a prefix argument.
|
||||
|
||||
`mh-edit-mhn-hook': new hook called by `mh-edit-mhn', the function
|
||||
that formats MIME messages.
|
||||
|
||||
`mh-folder-list-change-hook': new hook, called whenever the cached
|
||||
list of folders, `mh-folder-list', is changed.
|
||||
|
||||
`mh-find-path-hook': new hook, called when entering mh-e.
|
||||
|
||||
`mh-repl-formfile': new variable, used to change the format file
|
||||
used by `mh-reply' from the default of "replcomps".
|
||||
|
||||
New variables to customize the scan format and notating:
|
||||
`mh-note-deleted', `mh-note-refiled', `mh-note-seq', `mh-note-cur',
|
||||
`mh-note-copied', `mh-note-printed'.
|
||||
|
||||
Key Binding Changes in mh-e
|
||||
===========================
|
||||
|
||||
`RET' runs `mh-show' for consistency with the Finder and Info. The
|
||||
old binding `.' still works, but `RET' is now the standard binding.
|
||||
|
||||
`M-<' now runs `mh-first-msg' for consistency with `M->', which runs
|
||||
`mh-last-msg'.
|
||||
|
||||
`C-c C-f C-d' in MH-Letter mode moves to a Dcc: header field.
|
||||
|
||||
`C-c C-f C-r' in MH-Letter mode moves to a From: header field.
|
||||
|
||||
`g' is now the standard binding for `mh-goto-msg'. The old binding
|
||||
`j' still works.
|
||||
|
||||
Other Improvements and Changes to mh-e
|
||||
======================================
|
||||
|
||||
`mh-lpr-command-format' no longer passes the "-p" argument to `lpr'
|
||||
by default. The mail header typically has the date anyway.
|
||||
|
||||
When prompting for a sequence name, if no sequences have been used
|
||||
yet, mh-e will offer the first sequence the current message is in.
|
||||
|
||||
The patterns of more mailers are recognized by
|
||||
`mh-extract-rejected-mail'.
|
||||
|
||||
`mh-insert-prefix-string' no longer wraps the call to the
|
||||
`mail-citation-hook' function in a `save-excursion' so the hook writer
|
||||
can choose whether to leave point at the beginning or the end of the
|
||||
yanked text.
|
||||
|
||||
`mh-write-msg-to-file': The prompt now refers to "message" or
|
||||
"message body" depending on which will be written. (This is controlled
|
||||
by a prefix argument.) The file defaults to the last-used file instead
|
||||
of supplying only the directory name.
|
||||
|
||||
mh-e uses message ranges when running MH commands. Thus "rmm 1 2 3
|
||||
4 6" is now "rmm 1-4 6". This change makes it less likely to overflow
|
||||
system argument list limits, and it might be faster, too.
|
||||
|
||||
Bug Fixes to mh-e
|
||||
=================
|
||||
|
||||
mh-e's idea of the unseen sequence now stays in sync with MH's
|
||||
better.
|
||||
|
||||
Functions that are supposed to find fields in the message header no
|
||||
longer look in the message body.
|
||||
|
||||
mh-e would sometimes fail to remove the "%" from a scan line when the
|
||||
message was removed from a sequence if the message was also in the
|
||||
Previous sequence.
|
||||
|
||||
The variable `mh-inc-prog' is now correctly used in all places.
|
||||
|
||||
`mh-pipe-msg' runs the process in the correct directory.
|
||||
|
||||
A partially scanned folder will no longer lose the "/select"
|
||||
annotation when you execute marked deletes and refiles with `x'.
|
||||
|
194
etc/MH-E-ONEWS
Normal file
194
etc/MH-E-ONEWS
Normal file
|
@ -0,0 +1,194 @@
|
|||
This file is automatically generated from news-mh-e.txinfo. Do not edit.
|
||||
|
||||
User-visible changes to mh-e in version 4.0 from 3.8
|
||||
|
||||
Note: there are many internal changes to mh-e in this release. If you
|
||||
have the previous version loaded into your Emacs, you will probably not
|
||||
be able to load this version on top of it.
|
||||
|
||||
|
||||
New Features in mh-e
|
||||
====================
|
||||
|
||||
Background folder collection. The first time you are prompted for a
|
||||
folder, you must wait while mh-e collects the names of all existing
|
||||
folders. Now however, if you abort, collecting will continue in the
|
||||
background, and you can do something else in Emacs until the collection
|
||||
completes. Normally, mh-e will begin collecting folders names in the
|
||||
background when you first load it; you can disable this feature by
|
||||
setting `mh-auto-folder-collect' to nil.
|
||||
|
||||
There is support for composing MIME messages using the `mhn' program
|
||||
from MH 6.8. See the documentation string for mh-edit-mhn. (While
|
||||
composing a letter, type `C-h k C-c C-e'.) See also mhn(1). There is
|
||||
as yet no support for reading MIME messages.
|
||||
|
||||
`mh-show', typically on `.', repositions to the start of the message if
|
||||
the message is already visible. It used to do nothing in this case.
|
||||
|
||||
The function `mh-unshar-msg' is renamed `mh-store-msg'. It now does
|
||||
uudecoding, too. Someday it should do MIME. It remembers the last
|
||||
directory you used and offers it as the default for next time.
|
||||
|
||||
New function `mh-header-display', on `,', displays the message with all
|
||||
headers, including those normally not displayed. Type `.' to display
|
||||
the message normally again.
|
||||
|
||||
New function `mh-list-sequences' lists the sequences in use in the
|
||||
current folder.
|
||||
|
||||
New function `mh-version' displays version information about MH and
|
||||
mh-e. Please use the output in bug reports.
|
||||
|
||||
`mh-quit' now burys the folder buffer and show buffer.
|
||||
|
||||
|
||||
New mh-e hooks and customization variables
|
||||
==========================================
|
||||
|
||||
`mh-pick-mode-hook': new hook called by new mode `mh-pick-mode'. The
|
||||
pick buffer didn't used to have its own mode. Another advantage of
|
||||
`mh-pick-mode' is that `C-h m' works in the pick buffer.
|
||||
|
||||
`mail-citation-hook': new variable for supercite.
|
||||
|
||||
`mh-refile-msg-hook': new hook called by `mh-refile-msg' (and
|
||||
`mh-refile-or-write-again' when refiling).
|
||||
|
||||
`mh-msg-folder-hook': new hook used by `mh-refile-msg' and `mh-to-fcc'
|
||||
to provide a default folder for user prompt.
|
||||
|
||||
`mh-show-hook': new hook called by `mh-show'.
|
||||
|
||||
`mh-delete-msg-hook': new hook called by `mh-delete-msg'.
|
||||
|
||||
`mh-show-mode-hook': new hook called by new mode `mh-show-mode' for
|
||||
`show-' buffers.
|
||||
|
||||
`mh-comp-formfile': new variable so can customize `components' file.
|
||||
|
||||
`mh-sortm-args': new variable, a list of extra arguments to be passed to
|
||||
sortm by `mh-sort-folder'. Give an argument to `mh-sort-folder' to
|
||||
suppress this behavior.
|
||||
|
||||
`mh-send-prog': new variable so can customize name of `send' program in
|
||||
case of name conflicts.
|
||||
|
||||
`mh-scan-prog': new variable so can customize name of `scan' program to
|
||||
generate custom effects.
|
||||
|
||||
`mh-inc-prog': new variable so can customize name of `inc' program to do
|
||||
fancy management of incoming messages.
|
||||
|
||||
`mh-forwarded-letter-subject': new function used by `mh-forward' to
|
||||
compute the Subject line of the new message. It is a small function
|
||||
which can be replaced by the user for customization. Uses the new
|
||||
variable `mh-forward-subject-format', which allows some simple
|
||||
customizations without rewriting even `mh-forwarded-letter-subject'.
|
||||
|
||||
`mh-new-draft-cleaned-headers': new variable, header lines removed by
|
||||
`mh-edit-again' and `mh-extract-rejected-mail' before offering a message
|
||||
as a new draft.
|
||||
|
||||
`mh-signature-file-name': new variable used by `mh-insert-signature' to
|
||||
so can customize name of the file to insert.
|
||||
|
||||
`mh-read-address': new function called to read all To: and Cc:
|
||||
addresses.
|
||||
|
||||
`mh-msg-folder-hook': new hook used by `mh-refile-msg' and `mh-to-fcc'
|
||||
to provide a default folder for user prompt.
|
||||
|
||||
|
||||
Key binding changes in mh-e
|
||||
===========================
|
||||
|
||||
`,' runs new function `mh-header-display'. It is like `.' but it
|
||||
displays *all* the headers.
|
||||
|
||||
`M-#' runs the new function `mh-delete-seq'. One used to have to type
|
||||
`C-u M-%' to delete a sequence.
|
||||
|
||||
`<' no longer does `mh-first-msg', but `M->' now does `mh-last-msg'.
|
||||
This allows first and last to be consistent (`>' was taken) and is more
|
||||
likely to be discovered by chance anyway.
|
||||
|
||||
`M-d' runs `mh-redistribute', `r' runs `mh-reply' (on the theory that
|
||||
the more commonly used function should be easier to type, and the
|
||||
obscure action of redistributing can be harder to type).
|
||||
|
||||
`M-o' changed to `C-o' (`mh-write-msg-to-file'). It was interfering
|
||||
with arrow keys for some people.
|
||||
|
||||
`M-n' now runs `mh-store-msg' (formerly `mh-unshar-msg').
|
||||
|
||||
`b' no longer runs `mh-quit'; use `q' instead. `b' may be used in a
|
||||
future version for something else.
|
||||
|
||||
|
||||
Minor improvements to mh-e
|
||||
==========================
|
||||
|
||||
The mh-e code is now divided into multiple Emacs Lisp files, so it
|
||||
starts up faster because Emacs doesn't have to load all of it at once.
|
||||
(This change also makes it easier for the maintainer to manage things.)
|
||||
|
||||
When searching for the directory containing the MH programs, search the
|
||||
user's PATH in addition to the built-in directories, to increase the
|
||||
chance of finding the MH programs.
|
||||
|
||||
The subject for a forwarded message no longer has ugly square brackets
|
||||
around it.
|
||||
|
||||
The name of the folder is no longer appears twice in the show buffer
|
||||
mode line.
|
||||
|
||||
When typing a folder name in the minibuffer, parent folders complete to
|
||||
the trailing slash (/), for easier typing of subfolders.
|
||||
|
||||
The folder buffer mode name changed from `mh-e scan' or `mh-e show' to
|
||||
`MH-Folder', which makes the hook name easier to guess. Added
|
||||
`mh-showing' to `minor-mode-alist' so there is still an indication in
|
||||
the mode line of whether messages will be shown automatically.
|
||||
|
||||
`mh-rename-seq' does completion on the old sequence name.
|
||||
|
||||
If called by a user who has never used MH on this system before, mh-e
|
||||
runs the MH program `install-mh' to get them set up.
|
||||
|
||||
Undo history for previous messages is not kept to avoid wasting memory.
|
||||
|
||||
The internal temp buffer used by mh-e has `buffer-offer-save' explicitly
|
||||
nil. This change benefits people who change the `buffer-offer-save'
|
||||
default.
|
||||
|
||||
|
||||
Bug fixes to mh-e
|
||||
=================
|
||||
|
||||
`mh-to-field': don't bomb if no To: field.
|
||||
|
||||
`mh-get-new-mail': restore annotations, e.g., cur, even if no new mail.
|
||||
|
||||
`mh-rename-seq': verify that the new seq name was accepted by `mark'
|
||||
before updating state.
|
||||
|
||||
`mh-internal-seq': the Previous sequence is not notated, since it would
|
||||
notate everything scanned.
|
||||
|
||||
`mh-read-draft': don't call `find-file-noselect' so an `auto-mode-alist'
|
||||
doesn't trigger `mh-letter-mode-hook' twice. Faster, too.
|
||||
|
||||
`mh-show': If user moves onto a message that doesn't exist, don't leave
|
||||
the cursor in the show pane.
|
||||
|
||||
`mh-delete-scan-msgs': use `equal', not `=', on the result of
|
||||
`mh-get-msg-num', since it may be nil.
|
||||
|
||||
`mh-get-field': do anchored search so searching for `reply-to:' doesn't
|
||||
find `in-reply-to:'.
|
||||
|
||||
`mh-widen': do nothing if not narrowed.
|
||||
|
||||
`mh-clean-message-header': find end of headers even if no body.
|
||||
|
1691
etc/OONEWS
Normal file
1691
etc/OONEWS
Normal file
File diff suppressed because it is too large
Load diff
1609
etc/OOONEWS
Normal file
1609
etc/OOONEWS
Normal file
File diff suppressed because it is too large
Load diff
1348
etc/OOOONEWS
Normal file
1348
etc/OOOONEWS
Normal file
File diff suppressed because it is too large
Load diff
1165
etc/OOOOONEWS
Normal file
1165
etc/OOOOONEWS
Normal file
File diff suppressed because it is too large
Load diff
1049
etc/OTHER.EMACSES
Normal file
1049
etc/OTHER.EMACSES
Normal file
File diff suppressed because it is too large
Load diff
2244
etc/PROBLEMS
Normal file
2244
etc/PROBLEMS
Normal file
File diff suppressed because it is too large
Load diff
210
etc/SUN-SUPPORT
Normal file
210
etc/SUN-SUPPORT
Normal file
|
@ -0,0 +1,210 @@
|
|||
NOTE: the Free Software Foundation agreed to put this file, and the
|
||||
programs it describes, into the Emacs distribution ONLY on the
|
||||
condition that we would not lift a finger to maintain them! We are
|
||||
willing to *pass along* support for Sun windows, but we are not
|
||||
willing to let it distract us from what we are trying to do. If you
|
||||
have complaints or suggestions about Sun windows support, send them to
|
||||
peck@sun.com, who is the maintainer.
|
||||
|
||||
|
||||
The interface between GNU Emacs and Sun windows consists of the program
|
||||
etc/emacstool, the Lisp programs lisp/sun-*.el and lisp/term/sun.el,
|
||||
and the C source file src/sunfns.c. It is documented with a man page,
|
||||
etc/emacstool.1.
|
||||
|
||||
To enable use of these files and programs, define the configuration
|
||||
switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs.
|
||||
The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h
|
||||
or #include m-sun4.h.
|
||||
If you must change PURESIZE, do so after the #include m-sun3.h
|
||||
|
||||
This software is based on SunView for Sun UNIX 4.2 Release 3.2,
|
||||
and will not work "as is" on previous releases, eg 3.0 or 3.1.
|
||||
|
||||
Using Emacstool with GNU Emacs:
|
||||
|
||||
The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el,
|
||||
lisp/sun-fns.el, and src/sunfns.c provide emacs support for the
|
||||
Emacstool and function keys. If your terminal type is SUN (that is,
|
||||
if your environment variable TERM is set to SUN), then Emacs will
|
||||
automatically load the file lisp/term/sun.el. This, in turn, will
|
||||
ensure that sun-mouse.el is autoloaded when any mouse events are
|
||||
detected. It is suggested that sun-mouse and sun-fns be
|
||||
included in your site-init.el file, so that they will always be loaded
|
||||
when running on a Sun workstation. [Increase PURESIZE to 154000].
|
||||
|
||||
Support for the Sun function keys requires disconnecting the standard
|
||||
Emacs command Meta-[. Therefore, the function keys are supported only
|
||||
if you do (setq sun-esc-bracket t) in your .emacs file.
|
||||
|
||||
The file src/sunfns.c defines several useful functions for emacs on
|
||||
the Sun. Among these are procedures to pop-up SunView menus, put and
|
||||
get from the SunView selection [STUFF] buffer, and a procedure for
|
||||
changing the cursor icon. If you want to define cursor icons, try
|
||||
using the functions in lisp/sun-cursors.el.
|
||||
|
||||
The file lisp/sun-mouse.el includes a mass of software for defining
|
||||
bindings for mouse events. Any function can be called or any form
|
||||
evaluated as a result of a mouse event. If you want a pop-up menu,
|
||||
your function can call sun-menu-evaluate. This will bring up a
|
||||
SunView walking menu of your choice.
|
||||
|
||||
Use the macro (defmenu menu-name &rest menu-items) to define menu
|
||||
objects. Each menu item is a cons of ("string" . VALUE), VALUE is
|
||||
evaluated when the string item is picked. If VALUE is a menu, then a
|
||||
pullright item is created.
|
||||
|
||||
This version also includes support for copying to and from the
|
||||
sun-windows "stuff" selection. The keyboard bindings defined in
|
||||
lisp/sun-fns.el let you move the current region to the "STUFF"
|
||||
selection and vice versa. Just set point with the left button, set
|
||||
mark with the middle button, (the region is automatically copied to
|
||||
"STUFF") then switch to a shelltool, and "Stuff" will work. Going the
|
||||
other way, the main right button menu contains a "Stuff Selection"
|
||||
command that works just like in shelltool. [The Get and Put function
|
||||
keys are also assigned to these functions, so you don't need the mouse
|
||||
or even emacstool to make this work.]
|
||||
|
||||
Until someone write code to read the textsw "Selection Shelf", it is
|
||||
not possible to copy directly from a textsw to emacs, you must go through
|
||||
the textsw "STUFF" selection.
|
||||
|
||||
The Scroll-bar region is not a SunView scrollbar. It really should
|
||||
be called the "Right-Margin" region. The scroll bar region is basically
|
||||
the rightmost five columns (see documentation on variable scrollbar-width).
|
||||
Mouse hits in this region can have special bindings, currently those binding
|
||||
effect scrolling of the window, and so are referred to as the "Scroll-bar"
|
||||
region.
|
||||
|
||||
For information on what mouse bindings are in effect, use the command
|
||||
M-x Describe-mouse-bindings, or the quick pop-up menu item "Mouse-Help".
|
||||
|
||||
|
||||
GNU Emacs EXAMPLES:
|
||||
See definitions in lisp/sun-fns.el for examples.
|
||||
|
||||
You can redefine the cursor that is displayed in the emacs window.
|
||||
On initialization, it is set to a right arrow. See lisp/sun-cursors.el
|
||||
for additional cursors, how to define them, how to edit them.
|
||||
|
||||
BUGS:
|
||||
It takes a few milliseconds to create a menu before it pops up.
|
||||
Someone who understands the GNU Garbage Collector might see if it
|
||||
is possible for defmenu to create a SunView menu struct that does
|
||||
not get destroyed by Garbage Collection.
|
||||
|
||||
An outline of the files used to support Sun Windows and the mouse.
|
||||
|
||||
etc/SUN-SUPPORT.
|
||||
This document.
|
||||
|
||||
etc/emacstool.1:
|
||||
Added: an nroff'able man page for emacstool.
|
||||
|
||||
etc/emacstool.c:
|
||||
Encodes all the function keys internally, and passes non-window
|
||||
system arguments to emacs.
|
||||
|
||||
etc/emacs.icon:
|
||||
The "Kitchen Sink" GNU Emacs icon.
|
||||
|
||||
src/sunfns.c:
|
||||
This contains the auxiliary functions that allow elisp code to interact
|
||||
with the sunwindows, selection, and menu functions.
|
||||
|
||||
lisp/sun-mouse.el:
|
||||
Defines the lisp function which is called when a mouse hit is found
|
||||
in the input queue. This handler decodes the mouse hit via a keymap-like
|
||||
structure sensitive to a particular window and where in the window the
|
||||
hit occurred (text-region, right-margin, mode-line). Three variables
|
||||
are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function
|
||||
is called.
|
||||
See documentation on "define-mouse" or look at lisp/sun-fns.el
|
||||
to see how this is done.
|
||||
Defines two functions to pass between region and sun-selection
|
||||
Defines functions for interfacing with the Menu.
|
||||
During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound.
|
||||
|
||||
lisp/sun-fns.el
|
||||
The definition of the default menu and mouse function bindings.
|
||||
|
||||
lisp/sun-cursors.el
|
||||
Defines a number of alternate cursors, and an editor for them.
|
||||
The editor is also a demonstration of mouse/menu utilization.
|
||||
|
||||
lisp/term/sun.el
|
||||
Sets up the keymap to make the sun function keys do useful things.
|
||||
Also includes the setup/initialization code for running under emacstool,
|
||||
which makes "\C-Z" just close the emacstool window (-WI emacs.icon).
|
||||
|
||||
Jeff Peck, Sun Microsystems, Inc <peck@sun.com>
|
||||
|
||||
|
||||
Subject: Making multi-line scrolling really work:
|
||||
|
||||
In your .defaults file, include the line:
|
||||
/Tty/Retained "Yes"
|
||||
That way, the terminal emulator can do text moves using bitblt,
|
||||
instead of repaint.
|
||||
|
||||
If that's not enough for you, then tell unix and emacs that
|
||||
the sun terminal supports multi-line and multi-character insert/delete.
|
||||
Add this patch to your /etc/termcap file:
|
||||
|
||||
*** /etc/termcap.~1~ Mon Sep 15 12:34:23 1986
|
||||
--- /etc/termcap Mon Feb 9 17:34:08 1987
|
||||
***************
|
||||
*** 32,39 ****
|
||||
--- 32,40 ----
|
||||
Mu|sun|Sun Microsystems Workstation console:\
|
||||
:am:bs:km:mi:ms:pt:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:\
|
||||
:ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\
|
||||
:al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\
|
||||
+ :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\
|
||||
:up=\E[A:nd=\E[C:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\
|
||||
:k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\
|
||||
:k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:
|
||||
M-|sun-nic|sune|Sun Microsystems Workstation console without insert character:\
|
||||
|
||||
|
||||
If you don't have the program "patch", just add the line:
|
||||
:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\
|
||||
|
||||
casetek@crvax.sri.com says:
|
||||
|
||||
Those of you using GNU Emacs on Sun workstations under
|
||||
3.2 may be interested in reducing memory utilization in
|
||||
the emacstool via the Sun toolmerge facility. The technique
|
||||
is described in the Release 3.2 Manual starting on page
|
||||
71. The following is a summary of how it would apply
|
||||
to merging emacstool into the basetools.
|
||||
|
||||
1) Change the main procedure declaration in emacstool.c to:
|
||||
|
||||
#ifdef SUN_TOOLMERGE
|
||||
emacstool_main (argc, argv);
|
||||
#else
|
||||
main (argc, argv)
|
||||
#endif
|
||||
|
||||
This will allow creation of either standard or toolmerge
|
||||
versions.
|
||||
|
||||
2) Copy emacstool.o into directory /usr/src/sun/suntool.
|
||||
3) make CFLAGS="-g -DSUN_TOOLMERGE" emacstool.o
|
||||
4) Add the following line to basetools.h
|
||||
|
||||
"emacstool",emacstool_main,
|
||||
|
||||
5) Add the following line to toolmerge.c.
|
||||
|
||||
extern emacstool_main();
|
||||
|
||||
6) make basetools MOREOBJS="emacstool.o"
|
||||
7) make install_bins
|
||||
|
||||
To invoke the toolmerged version, you must exit suntools and
|
||||
re-start it. Make sure that /usr/bin occurs before the directory
|
||||
in which you installed the standard (non-toolmerged) version.
|
||||
|
||||
|
229
etc/TERMS
Normal file
229
etc/TERMS
Normal file
|
@ -0,0 +1,229 @@
|
|||
This file describes what you must or might want to do to termcap entries
|
||||
to make terminals work properly and efficiently with Emacs. Information
|
||||
on likely problems with specific types of terminals appears at the end
|
||||
of the file.
|
||||
|
||||
*** What you want in a terminal ***
|
||||
|
||||
Vital
|
||||
1. Easy to compute suitable padding for.
|
||||
2. Never ever sends ^S/^Q unless you type them, at least in one mode.
|
||||
|
||||
Nice for speed
|
||||
1. Supports insert/delete of multiple lines in one command.
|
||||
2. Same for multiple characters, though doing them one by
|
||||
one is usually fast enough except on emulators running on
|
||||
machines with bitmap screens.
|
||||
|
||||
Nice for usability
|
||||
1. Considerably more than 24 lines.
|
||||
2. Meta key (shift-like key that controls the 0200 bit
|
||||
in every character you type).
|
||||
|
||||
*** New termcap strings ***
|
||||
|
||||
Emacs supports certain termcap strings that are not described in the
|
||||
4.2 manual but appear to be standard in system V. The one exception
|
||||
is `cS', which I invented.
|
||||
|
||||
`AL' insert several lines. Takes one parameter, the number of
|
||||
lines to be inserted. You specify how to send this parameter
|
||||
using a %-construct, just like the cursor positions in the `cm'
|
||||
string.
|
||||
|
||||
`DL' delete several lines. One parameter.
|
||||
|
||||
`IC' insert several characters. One parameter.
|
||||
|
||||
`DC' delete several characters. One parameter.
|
||||
|
||||
`rp' repeat a character. Takes two parameters, the character
|
||||
to be repeated and the number of times to repeat it.
|
||||
Most likely you will use `%.' for sending the character
|
||||
to be repeated. Emacs interprets a padding spec with a *
|
||||
as giving the amount of padding per repetition.
|
||||
|
||||
WARNING: Many terminals have a command to repeat the
|
||||
*last character output* N times. This means that the character
|
||||
will appear N+1 times in a row when the command argument is N.
|
||||
However, the `rp' string's parameter is the total number of
|
||||
times wanted, not one less. Therefore, such repeat commands
|
||||
may be used in an `rp' string only if you use Emacs's special
|
||||
termcap operator `%a-c\001' to subtract 1 from the repeat count
|
||||
before substituting it into the string. It is probably safe
|
||||
to use this even though the Unix termcap does not accept it
|
||||
because programs other than Emacs probably won't look for `rp'
|
||||
anyway.
|
||||
|
||||
`cs' set scroll region. Takes two parameters, the vertical
|
||||
positions of the first line to include in the scroll region
|
||||
and the last line to include in the scroll region.
|
||||
Both parameters are origin-zero. The effect of this
|
||||
should be to cause a following insert-line or delete-line
|
||||
not to move lines below the bottom of the scroll region.
|
||||
|
||||
This is not the same convention that Emacs version 16 used.
|
||||
That is because I was led astray by unclear documentation
|
||||
of the meaning of %i in termcap strings. Since the termcap
|
||||
documentation for `cs' is also unclear, I had to deduce the
|
||||
correct parameter conventions from what would make the VT-100's
|
||||
`cs' string work properly. From an incorrect assumption about
|
||||
%i, I reached an incorrect conclusion about `cs', but the result
|
||||
worked correctly on the VT100 and ANSII terminals. In Emacs
|
||||
version 17, both `cs' and %i work correctly.
|
||||
|
||||
The version 16 convention was to pass, for the second parameter,
|
||||
the line number of the first line beyond the end of the
|
||||
scroll region.
|
||||
|
||||
`cS' set scroll region. Differs from `cs' in taking parameters
|
||||
differently. There are four parameters:
|
||||
1. Total number of lines on the screen.
|
||||
2. Number of lines above desired scroll region.
|
||||
3. Number of lines below (outside of) desired scroll region.
|
||||
4. Total number of lines on the screen, like #1.
|
||||
This is because an Ambassador needs the parameters like this.
|
||||
|
||||
`cr', `do', `le'
|
||||
Emacs will not attempt to use ^M, ^J or ^H for cursor motion
|
||||
unless these capabilities are present and say to use those
|
||||
characters.
|
||||
|
||||
`km' Says the terminal has a Meta key.
|
||||
|
||||
Defining these strings is important for getting maximum performance
|
||||
from your terminal.
|
||||
|
||||
Make sure that the `ti' string sets all modes needed for editing
|
||||
in Emacs. For example, if your terminal has a mode that controls
|
||||
wrap at the end of the line, you must decide whether to specify
|
||||
the `am' flag in the termcap entry; whichever you decide, the `ti'
|
||||
string should contain commands to set the mode that way.
|
||||
(Emacs also sends the `vs' string after the `ti' string.
|
||||
You can put the mode-setting commands in either one of them.)
|
||||
|
||||
*** Specific Terminal Types ***
|
||||
|
||||
Watch out for termcap entries for Ann Arbor Ambassadors that
|
||||
give too little padding for clear-screen. 7.2 msec per line is right.
|
||||
These are the strings whose padding you probably should change:
|
||||
:al=1*\E[L:dl=1*\E[M:cd=7.2*\E[J:cl=7.2*\E[H\E[J:
|
||||
I have sometimes seen `\E[2J' at the front of the `ti' string;
|
||||
this is a clear-screen, very slow, and it can cause you to get
|
||||
Control-s sent by the terminal at startup. I recommend removing
|
||||
the `\E[2J' from the `ti' string.
|
||||
The `ti' or `vs' strings also usually need stuff added to them, such as
|
||||
\E[>33;52;54h\E[>30;37;38;39l
|
||||
You might want to add the following to the `te' or `ve' strings:
|
||||
\E[>52l\E[>37h
|
||||
The following additional capabilities will improve performance:
|
||||
:AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%a-c\001%db:
|
||||
If you find that the Meta key does not work, make sure that
|
||||
:km:
|
||||
is present in the termcap entry.
|
||||
|
||||
Watch out for termcap entries for VT100's that fail to specify
|
||||
the `sf' string, or that omit the padding needed for the `sf' and `sr'
|
||||
strings (2msec per line affected). What you need is
|
||||
:sf=2*^J:sr=2*\EM:cs=\E[%i%d;%dr:
|
||||
|
||||
The Concept-100 and Concept-108 have many modes that `ti' strings
|
||||
often fail to initialize. If you have problems on one of these
|
||||
terminals, that is probably the place to fix them. These terminals
|
||||
can support an `rp' string.
|
||||
|
||||
Watch out on HP terminals for problems with standout disappearing on
|
||||
part of the mode line. These problems are due to the absence of
|
||||
:sg#0: which some HP terminals need.
|
||||
|
||||
The vi55 is said to require `ip=2'.
|
||||
|
||||
The Sun console should have these capabilities for good performance.
|
||||
:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:
|
||||
|
||||
The vt220 needs to be set to vt220 mode, 7 bit, space parity
|
||||
in order to work fully with TERM=vt220.
|
||||
|
||||
If you are using a LAT terminal concentrator, you need to issue these
|
||||
commands to turn off flow control:
|
||||
|
||||
set port flow control disable
|
||||
define port flow control disable
|
||||
|
||||
On System V, in the terminfo database, various terminals may have
|
||||
the `xt' flag that should not have it. `xt' should be present only
|
||||
for the Teleray 1061 or equivalent terminal.
|
||||
|
||||
In particular, System V for the 386 often has `xt' for terminal type
|
||||
AT386 or AT386-M, which is used for the console. You should delete
|
||||
this flag. Here is how:
|
||||
|
||||
You can get a copy of the terminfo "source" for at386 using the
|
||||
command: `infocmp at386 >at386.tic'. Edit the file at386.tic and remove
|
||||
the `xt' flag. Then compile the new entry with: `tic at386.tic'.
|
||||
|
||||
It is also reported that these terminal types sometimes have the wrong
|
||||
reverse-scroll string. It should be \E[T, but sometimes is given as \E[S.
|
||||
|
||||
Here is what watserv1!maytag!focsys!larry recommends for these terminals:
|
||||
|
||||
# This copy of the terminfo description has been fixed.
|
||||
# The suggestions came from a number of usenet postings.
|
||||
#
|
||||
# Intel AT/386 for color card with monochrome display
|
||||
#
|
||||
AT386-M|at386-m|386AT-M|386at-m|at/386 console,
|
||||
am, bw, eo, xon,
|
||||
cols#80, lines#25,
|
||||
acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
|
||||
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
|
||||
clear=\E[2J\E[H,
|
||||
cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB,
|
||||
cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
|
||||
cup=\E[%i%p1%02d;%p2%02dH, cuu=\E[%p1%dA, cuu1=\E[A,
|
||||
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[1M,
|
||||
ech=\E[%p1%dX,ed=\E[J, el=\E[K, el1=\E[1K\E[X, flash=^G, home=\E[H,
|
||||
hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
|
||||
ind=\E[S, indn=\E[%p1%dS, invis=\E[9m,
|
||||
is2=\E[0;10;38m, kbs=\b, kcbt=^], kclr=\E[2J,
|
||||
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
|
||||
kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
|
||||
kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
|
||||
kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H,
|
||||
kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, rev=\E[7m, ri=\E[T,
|
||||
rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
|
||||
sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;12%;%?%p7%t;9%;m,
|
||||
sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
|
||||
|
||||
#
|
||||
# AT&T 386 color console
|
||||
#
|
||||
AT386|at386|386AT|386at|at/386 console,
|
||||
colors#8, ncv#3, pairs#64,
|
||||
is2=\E[0;10;39m,
|
||||
op=\E[0m,
|
||||
setb=\E[%?%p1%{0}%=%t40m
|
||||
%e%p1%{1}%=%t44m
|
||||
%e%p1%{2}%=%t42m
|
||||
%e%p1%{3}%=%t46m
|
||||
%e%p1%{4}%=%t41m
|
||||
%e%p1%{5}%=%t45m
|
||||
%e%p1%{6}%=%t43m
|
||||
%e%p1%{7}%=%t47m%;,
|
||||
setf=\E[%?%p1%{0}%=%t30m
|
||||
%e%p1%{1}%=%t34m
|
||||
%e%p1%{2}%=%t32m
|
||||
%e%p1%{3}%=%t36m
|
||||
%e%p1%{4}%=%t31m
|
||||
%e%p1%{5}%=%t35m
|
||||
%e%p1%{6}%=%t33m
|
||||
%e%p1%{6}%=%t33m
|
||||
%e%p1%{7}%=%t37m%;,
|
||||
use=at386-m,
|
||||
#
|
||||
# Color console version that supports underline but maps blue
|
||||
# foreground color to cyan.
|
||||
#
|
||||
AT386-UL|at386-ul|386AT-UL|386at-ul|at/386 console,
|
||||
is2=\E[0;10;38m,
|
||||
use=at386,
|
48
etc/TODO
Normal file
48
etc/TODO
Normal file
|
@ -0,0 +1,48 @@
|
|||
* Implement a clean way to use different major modes for
|
||||
different parts of a buffer.
|
||||
|
||||
* Give start-process the ability to direct standard-error
|
||||
output to a different filter.
|
||||
|
||||
* Make compile.el record the markers that point to error loci
|
||||
on text properties in the error message lines.
|
||||
|
||||
* Make desktop.el save the "frame configuration" of Emacs (in some
|
||||
useful sense).
|
||||
|
||||
* Make movemail work with IMAP.
|
||||
|
||||
* Add ANSI C prototype forward declarations to the source files,
|
||||
so that even the functions used within one file have prototypes.
|
||||
|
||||
* Replace finder.el with something that generates an Info file
|
||||
which gives the same information through a menu structure.
|
||||
|
||||
* Implement a variant of uncompress.el or jka-compr.el that
|
||||
works with GNU Privacy Guard for encryption.
|
||||
|
||||
* Save undo information in files, and reload it when needed
|
||||
for undoing.
|
||||
|
||||
* modify comint.el so that input appears in a special font.
|
||||
I can add a simple Emacs feature to help.
|
||||
|
||||
* Implement other text formatting properties.
|
||||
** Footnotes that can appear either in place
|
||||
or at the end of the page.
|
||||
** text property that says "don't break line in middle of this".
|
||||
Don't break the line between two characters that have the
|
||||
same value of this property.
|
||||
** Discretionary hyphens that disappear at end of line.
|
||||
|
||||
* Implement use of mmap to allocate buffers, when mmap exists.
|
||||
|
||||
* Change the Windows NT menu code
|
||||
so that it handles the deep_p argument and avoids
|
||||
regenerating the whole menu bar menu tree except
|
||||
when the user tries to use the menubar.
|
||||
|
||||
This requires the RIT to forward the WM_INITMENU message to
|
||||
the main thread, and not return from that message until the main
|
||||
thread has processed the menu_bar_activate_event and regenerated
|
||||
the whole menu bar. In the mean time, it should process other messages.
|
1013
etc/TUTORIAL.cs
Normal file
1013
etc/TUTORIAL.cs
Normal file
File diff suppressed because it is too large
Load diff
1443
etc/TUTORIAL.de
Normal file
1443
etc/TUTORIAL.de
Normal file
File diff suppressed because it is too large
Load diff
971
etc/TUTORIAL.ja
Normal file
971
etc/TUTORIAL.ja
Normal file
|
@ -0,0 +1,971 @@
|
|||
Copyright (c) 1985 Free Software Foundation, Inc; $B%U%!%$%k:G8e$r;2>H$N$3$H(B
|
||||
$B$"$J$?$,8=:_8+$F$$$k$N$O(B Emacs $BF~Lg%,%$%I$G$9!#(B
|
||||
|
||||
Emacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K(B
|
||||
CTRL $B$H$+(B CTL $B$H=q$$$F$"$k!K$d%a%?%-!<!J%-!<%H%C%W$K(B META $B$H$+(B ALT $B$H(B
|
||||
$B=q$$$F$"$k!K$r;H$$$^$9!#$=$3$G!"(BCONTROL $B$H$+(B META $B$H$+=q$/Be$o$j$K!"<!(B
|
||||
$B$N$h$&$J5-9f$r;H$&$3$H$K$7$^$9!#(B
|
||||
|
||||
C-<$BJ8;z(B> $B%3%s%H%m!<%k%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#Nc$($P!"(B
|
||||
C-f $B$O%3%s%H%m!<%k%-!<$r2!$7$J$,$i(B f $B$N%-!<$r2!$9$3$H$G$9!#(B
|
||||
|
||||
M-<$BJ8;z(B> $B%a%?%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#$b$7%a%?%-!<$,$J(B
|
||||
$B$$>l9g$O!"%(%9%1!<%W%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i(B<$BJ8;z(B>$B%-!<(B
|
||||
$B$r2!$7$^$9!#0J9_%(%9%1!<%W%-!<$N$3$H$r(B <ESC> $B$H=q$-$^$9!#(B
|
||||
|
||||
$B!*=EMW!*(B: Emacs$B$r=*N;$9$k$K$O!"(BC-x C-c $B$r%?%$%W$7$^$9!#(B
|
||||
|
||||
">>" $B$G;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#Nc$($P!"(B
|
||||
<<Blank lines inserted here by startup of help-with-tutorial>>
|
||||
>> $B$G$O(B C-v $B!J<!$N2hLL$r8+$k!K$r%?%$%W$7$F<!$N2hLL$K?J$s$G2<$5$$!#(B
|
||||
$B!J$5$"!"$d$C$F$_$^$7$g$&!#%3%s%H%m!<%k%-!<$r2!$7$J$,$i(B v $B$G$9!K(B
|
||||
$B0J9_!"0l2hLL$rFI$_=*$($k$?$S$KF1MM$K$7$F<!$N2hLL$KFI$_?J$s$G2<$5$$!#(B
|
||||
|
||||
$BA0$N2hLL$H<!$N2hLL$H$G$O!"I=<($5$l$kFbMF$K2?9T$+$N=E$J$j$,$"$j$^$9!#$3(B
|
||||
$B$l$O!"I=<($5$l$F$$$kFbMF$,O"B3$7$F$$$k$3$H$,$9$0H=$k$h$&$K$9$k$?$a$G$9!#(B
|
||||
|
||||
$B$^$:$O!"%U%!%$%k$NCf$r0\F0$7$F9T$/J}K!$rCN$kI,MW$,$"$j$^$9!#(BC-v $B$K$h$C(B
|
||||
$B$F@h$K?J$`$3$H$O$b$&H=$j$^$7$?!#85$KLa$k$K$O!"(BM-v $B!J%a%?%-!<$r2!$7$J$,(B
|
||||
$B$i(B v$B!"$b$7$/$O(B <ESC> $B$r2!$7$FN%$7$F(B v$B!K$G$9!#(B
|
||||
|
||||
>> M-v $B$H(B C-v $B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F2<$5$$!#(B
|
||||
|
||||
|
||||
$B!v$3$3$^$G$NMWLs(B
|
||||
================
|
||||
|
||||
$B%U%!%$%k$r2hLLKh$K8+$F9T$/$K$O!"<!$N%3%^%s%I$r;H$$$^$9!#(B
|
||||
|
||||
C-v $B<!$N2hLL$K?J$`(B
|
||||
M-v $BA0$N2hLL$KLa$k(B
|
||||
C-l $B2hLL$r=q$-D>$9!#$3$N$H$-!"%+!<%=%k$N$"$k9T$,2hLL$NCf1{$K(B
|
||||
$B$/$k$h$&$K$9$k!#!J(BC-1 $B$8$c$J$/$C$F(B C-L $B$G$9$h!*!K(B
|
||||
|
||||
>> $B%+!<%=%k$r8+$D$1!"$=$N6a$/$K$I$s$JJ8>O$,=q$+$l$F$$$k$+$r3P$(!"(B
|
||||
$B$=$l$+$i(B C-l $B$r%?%$%W$7$F2<$5$$!#(B
|
||||
$B%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y(B
|
||||
$B$F$_$^$7$g$&!#(B
|
||||
|
||||
|
||||
$B!v4pK\E*$J%+!<%=%k$N@)8f(B
|
||||
========================
|
||||
|
||||
$B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K(B
|
||||
$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#(B
|
||||
|
||||
$B$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0lHV4pK\E*$JJ}K!$O(B C-p, C-b, C-f,
|
||||
C-n $B$r;H$&$3$H$G$9!#$3$l$i$O$=$l$>$l%+!<%=%k$rA0$N9T!"A0$NJ8;z!"<!$NJ8(B
|
||||
$B;z!"<!$N9T$K0\F0$5$;$k$^$9!#?^$G=q$1$P!"(B
|
||||
|
||||
$BA0$N9T!$(BC-p
|
||||
:
|
||||
:
|
||||
$BA0$NJ8;z!$(BC-b .... $B8=:_$N%+!<%=%k0LCV(B .... $B<!$NJ8;z!$(BC-f
|
||||
:
|
||||
:
|
||||
$B<!$N9T!$(BC-n
|
||||
|
||||
>> C-n $B$H(B C-p $B$G%+!<%=%k$r>e?^$N??Cf$N9T$KF0$+$7$F2<$5$$!#$=$l$+$i(B C-l
|
||||
$B$r%?%$%W$7$F?^$NA4BN$,2hLLCf1{$K$/$k$h$&$K$7$F$_$^$7$g$&!#(B
|
||||
|
||||
|
||||
$B$3$l$i$O$N%3%^%s%I$O$=$l$>$l!"(BPrevious, Next, Backward, Forward $B$NF,J8(B
|
||||
$B;z$K$J$C$F$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0(B
|
||||
$B%3%^%s%I$G$"$j!"$$$D$G$b;H$&$b$N$G$9!#:#$3$3$G3P$($F2<$5$$!#(B
|
||||
|
||||
>> C-n $B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=%k(B
|
||||
$B$r0\F0$5$;$^$7$g$&!#(B
|
||||
|
||||
>> C-f $B$r;H$C$F9T$NCf$[$I$K0\F0$7!"(BC-p $B$G2?9T$+>e$K0\F0$5$;$^$7$g$&!#(B
|
||||
$B%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$F2<$5$$!#(B
|
||||
|
||||
$B3F9T$N:G8e$K$O!JL\$K$O8+$($J$$!K(B Newline $BJ8;z$,$"$j$^$9!#$3$l$O<!$N9T(B
|
||||
$B$H$N6h@Z$j$r<($9$?$a$G$9!#%U%!%$%k$N:G8e$b(B Newline $B$rIU$1$k$Y$-$G$9(B
|
||||
$B!J$b$C$H$b(B Emacs $B$O$=$l$r6/@)$O$7$^$;$s$,!K!#(B
|
||||
|
||||
>> $B9T$N@hF,$G(B C-b $B$r%?%$%W$7$F$_$^$7$g$&!#%+!<%=%k$OA0$N9T$NKvHx$K0\F0(B
|
||||
$B$9$k$O$:$G$9!#$3$l$O(B C-b $B$,A0$N(B Newline $BJ8;z$r1[$($FLa$C$?$+$i$G$9!#(B
|
||||
|
||||
$BF1MM$K(B C-f $B$O%+!<%=%k$r(B Newline $BJ8;z$r1[$($F<!$K?J$a$k$3$H$,$G$-$^$9!#(B
|
||||
|
||||
>> $B$5$i$K$b$&>/$7(B C-b $B$r%?%$%W$7$F%+!<%=%k0\F0$N46$8$rGD$s$G2<$5$$!#(B
|
||||
$B:#EY$O(B C-f $B$G9TKv$^$G?J$s$G2<$5$$!#(B
|
||||
$B$5$i$K$b$&0lEY(B C-f $B$r%?%$%W$7$F<!$N9T$K?J$s$G2<$5$$!#(B
|
||||
|
||||
$B2hLL$N@hF,$dKvHx$r1[$($F%+!<%=%k$r0\F0$5$;$h$&$H$9$k$H!"$=$NJ}8~$K$"$k(B
|
||||
$BJ8>O$,2hLL$NCf$K0\F0$7$FMh$F$^$9!#$3$l$r!V%9%/%m!<%k!W$H8F$S$^$9!#2hLL(B
|
||||
$B$,%9%/%m!<%k$9$k$3$H$K$h$C$F!"%+!<%=%k$r0\F0$5$;$F$b!"%+!<%=%k$O>o$K2h(B
|
||||
$BLLFb$K$"$k$h$&$K$5$l$^$9!#(B
|
||||
|
||||
>> C-n $B$r;H$C$F!"%+!<%=%k$r2hLL$N2<C<$h$j2<$K0\F0$5$;$F$_$J$5$$!#2?(B
|
||||
$B$,5/$3$j$^$7$?$+!)(B
|
||||
|
||||
$B0lJ8;zC10L$N0\F0$G$O$^$I$m$C$3$7$$$J$i!"C18lC10L$G0\F0$9$k$3$H$b$G$-$^(B
|
||||
$B$9!#(BM-f (<ESC> f) $B$G0lC18l@h$X!"(BM-b (<ESC> b) $B$G0lC18lA0$X0\F0$7$^$9!#(B
|
||||
|
||||
$BCm0U!'(B $BF|K\8l$K$D$$$F$O!"C18l$N@Z$lL\$rG'<1$9$k$3$H$O$G$-$^$;$s$,!"5?(B
|
||||
$B;wE*$JJ8@a$rC18l$N@Z$lL\$H$7$F$$$^$9!#(B
|
||||
|
||||
>> M-f $B$d(B M-b $B$r2?2s$+;n$7$F$_$^$7$g$&!#(B
|
||||
|
||||
$BC18l$NCfDx$K$$$k;~$O!"(BM-f $B$O$=$NC18l$N=*$o$j$^$G?J$_$^$9!#$b$76uGrJ8;z(B
|
||||
$B$K$$$k;~$K$O(B M-f $B$O<!$NC18l$N=*$o$j$^$G?J$_$^$9!#(BM-b $B$bF1MM$G$9!"J}8~(B
|
||||
$B$O5U$G$9$,!#(B
|
||||
|
||||
>> M-f $B$H(B M-b $B$r(B C-f $B$H(B C-b $B$r8r$($J$,$i?t2s;n$7!"C18l$NCf$KF~$k;~$H!"(B
|
||||
$BC18l$HC18l$N4V$K$$$k;~$NF0$-$rD4$Y$F2<$5$$!#(B
|
||||
|
||||
C-f $B$H(B C-b $B$KBP$9$k!"(BM-f $B$H(B M-b $B$NN`;w@-$KCmL\$7$^$7$g$&!#B?$/$N>l9g!"(B
|
||||
$B%a%?%-!<$OJ8=q$r9=@.$9$k%f%K%C%H!JC18l!"J8!"CJMn!K$KBP$9$kA`:n$K;H$$!"(B
|
||||
$B%3%s%H%m!<%k%-!<$O$=$l$h$j$b$b$C$H4pK\E*$JBP>]!JJ8;z$H$+9TEy!K$KBP$9$k(B
|
||||
$BA`:n$K;H$$$^$9!#(B
|
||||
|
||||
$B$3$NN`;w@-$O9T$HJ8$N4X78$K$b$"$j$^$9!#(BC-a $B$H(B C-e $B$O$=$l$>$l9TF,$H9TKv(B
|
||||
$B$K0\F0$7!"(BM-a $B$H(B M-e $B$O$=$l$>$lJ8F,$HJ8Kv$K0\F0$7$^$9!#(B
|
||||
|
||||
>> C-a $B$r#22s!"$=$l$+$i(B C-e $B$r#22s;n$7$^$7$g$&!#(B
|
||||
M-a $B$r#22s!"$=$l$+$i(B M-e $B$r#22s;n$7$^$7$g$&!#(B
|
||||
|
||||
C-a $B$d(B C-e $B$O7+JV$7$F$b$=$l0J>e0\F0$7$^$;$s$,!"(BM-a $B$r7+$jJV$9$H$I$s$I(B
|
||||
$B$sA0$NJ8F,$KLa$C$F$$$-$^$9!#$3$NItJ,$G$ON`;w@-$,GK$l$F$$$^$9$,!"$^$"$3(B
|
||||
$B$l$,<+A3$JF0:n$G$O$J$$$G$7$g$&$+!#(B
|
||||
|
||||
$BJ8>OCf$G%+!<%=%k$,$"$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l$P!"%+!<(B
|
||||
$B%=%k$O!"J8>O$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#(B
|
||||
|
||||
$B0J2<$KC1=c$J%+!<%=%k0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9T(B
|
||||
$BC10L$G$N0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#(B
|
||||
|
||||
C-f $B0lJ8;z<!$K?J$`(B
|
||||
C-b $B0lJ8;zA0$KLa$k(B
|
||||
|
||||
M-f $B0lC18l<!$K?J$`(B
|
||||
M-b $B0lC18lA0$KLa$k(B
|
||||
|
||||
C-n $B<!$N9T$K0\F0(B
|
||||
C-p $BA0$N9T$K0\F0(B
|
||||
|
||||
C-a $B9TF,$K0\F0(B
|
||||
C-e $B9TKv$K0\F0(B
|
||||
|
||||
>> $B$3$l$iA4It$r2?EY$+;n$7$FN}=,$7$^$7$g$&!#(B
|
||||
$B$I$l$bIQHK$K;H$&%3%^%s%I$G$9!#(B
|
||||
|
||||
$B$"$HFs$D!"=EMW$J%+!<%=%k0\F0%3%^%s%I$,$"$j$^$9!#%U%!%$%k$N@hF,$K0\F0$9(B
|
||||
$B$k(B M-< $B$H!"%U%!%$%k$NKvHx$K0\F0$9$k(B M-> $B$G$9!#(B
|
||||
|
||||
$BBgDq$NC<Kv$G$O(B "<" $B%-!<$O(B ","$B%-!<!J%3%s%^!K$N>e$K$"$j!"$=$l$r%?%$%W$9(B
|
||||
$B$k$K$O%7%U%H%-!<$r;H$&I,MW$,$"$j$^$9!#$7$?$,$C$F(B M-< $B$r%?%$%W$9$k$K$O!"(B
|
||||
$B%a%?%-!<$H%7%U%H%-!<$H%3%s%^%-!<$rF1;~$K2!$5$M$P$J$j$^$;$s!#(B
|
||||
|
||||
>> M-< $B$r;n$7$F!"$3$NF~Lg%,%$%I$N@hF,$K0\F0$7$^$7$g$&!#(B
|
||||
$B$=$l$+$i!"(BC-v $B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#(B
|
||||
|
||||
>> M-> $B$r;n$7$F!"$3$NF~Lg%,%$%I$NKvHx$K0\F0$7$^$7$g$&!#(B
|
||||
$B$=$l$+$i!"(BM-v $B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#(B
|
||||
|
||||
$B$b$7C<Kv$KLp0u%-!<$,$"$l$P!"$=$l$r;H$C$F%+!<%=%k$rF0$+$9$3$H$b$G$-$^$9!#(B
|
||||
$B$1$l$I!"<!$N#3$D$NM}M3$+$i(B C-b, C-f, C-n, C-p $B$r3P$($k$3$H$r4+$a$^$9!#(B
|
||||
$BBh0l$K!"$3$l$i$O$I$s$JC<Kv$G$b;H$($^$9!#BhFs$K!"(BEmacs $B$r;H$&$N$,>eC#$7(B
|
||||
$B$F$/$l$P!"$3$l$i$N%3%s%H%m!<%kJ8;z$rBG$DJ}$,!"Lp0u%-!<$rBG$D$h$j$:$C$H(B
|
||||
$BB.$$$3$H$,J,$k$G$7$g$&!J<j$rDL>o$N0LCV$+$iBg$-$/F0$+$5$J$$$G$h$$$N$G!K!#(B
|
||||
$B:G8e$K!"0lEY$3$l$i$N%3%s%H%m!<%kJ8;z$rBG$D=,47$rIU$1$?$i!"$b$C$H?J$s$@(B
|
||||
$B%+!<%=%k0\F0%3%^%s%I$b4JC1$K3P$($k$3$H$,$G$-$^$9!#(B
|
||||
|
||||
Emacs$B$NBgDq$N%3%^%s%I$K$O?tCM0z?t$rM?$($k$3$H$,$G$-$^$9!#BgDq$N>l9g$3(B
|
||||
$B$N?tCM$G7+$jJV$72s?t$r;X<($9$k$3$H$K$J$j$^$9!#?tCM0z?t$rM?$($k$K$O!"%3(B
|
||||
$B%^%s%I$rF~NO$9$kA0$K(B C-u $B$KB3$$$F?t;z2?7e$+%?%$%W$7$^$9!#$b$7%a%?%-!<(B
|
||||
$B$,;H$($k$J$i!"%a%?%-!<$r2!$7$J$,$i?t;z$r%?%$%W$9$k$3$H$b$G$-$^$9!#$G$b(B
|
||||
$B$d$O$j(B C-u $B$r3P$($k$3$H$r4+$a$^$9!#$=$l$O$I$s$JC<Kv$G$b;H$($k$+$i$G$9!#(B
|
||||
|
||||
$BNc$($P(B C-u 8 C-f $B$H%?%$%W$9$k$H#8J8;zJ,@h$K0\F0$7$^$9!#(B
|
||||
|
||||
>> $BE,Ev$J?tCM0z?t$r(B C-n $B$"$k$$$O(B C-p $B$KM?$(!"0l2s$N%3%^%s%I$G$J$k$Y$/(B
|
||||
$B$3$N9T$N6a$/$KMh$k$h$&$K$7$F$_$^$7$g$&!#(B
|
||||
|
||||
$BBgDq$N%3%^%s%I$O?tCM0z?t$r7+$jJV$72s?t$H2r<a$7$^$9$,!"Cf$K$ONc30$b$"$j(B
|
||||
$B$^$9!#(BC-v $B$d(B M-v $B$,$=$&$G$9!#$3$N>l9g!";XDj$5$l$??t$N9T$@$12hLL$r%9%/(B
|
||||
$B%m!<%k$5$;$k$3$H$K$J$j$^$9!#Nc$($P(B C-u 4 C-v $B$O2hLL$r#49TJ,>e$K%9%/%m!<(B
|
||||
$B%k$5$;$^$9!#(B
|
||||
|
||||
>> C-u 8 C-v $B$r;n$7$F$_$^$7$g$&!#(B
|
||||
|
||||
$B2hLL$,>e$K#89T%9%/%m!<%k$7$?$O$:$G$9!#$^$?2hLL$r2<$K%9%/%m!<%k$5$;$k$K$O(B
|
||||
M-v $B$K0z?t$rM?$($l$P$h$$$N$G$9!#(B
|
||||
|
||||
$B$b$7(B X $B%&%#%s%I%&$r;H$C$F$$$k$N$J$i!"%9%/%m!<%k%P!<$H8F$P$l$k=DD9$N;M(B
|
||||
$B3Q$$%(%j%"$,(B Emacs $B$N%&%#%s%I%&$N:8C<$K$"$k$O$:$G$9!#$=$3$r%^%&%9$r%/(B
|
||||
$B%j%C%/$7$F2hLL$r%9%/%m!<%k$5$;$k$3$H$b$G$-$^$9!#(B
|
||||
|
||||
>> $B%9%/%m!<%k%P!<$NCf$G%^%&%9$N??Cf$N%\%?%s$r2!$7$F$_$^$7$g$&!#%\%?%s(B
|
||||
$B$r2!$7$?0LCV$G7h$^$kJ8>O$N0LCV$^$G2hLL$,%9%/%m!<%k$7$^$9!#(B
|
||||
|
||||
>> $B%9%/%m!<%k%P!<$NCf$G??Cf$N%\%?%s$r2!$7$?$^$^%^%&%9$r>e2<$KF0$+$7$F(B
|
||||
$B$_$^$7$g$&!#$=$l$K9g$;$F2hLL$,%9%/%m!<%k$9$k$N$,J,$k$O$:$G$9!#(B
|
||||
|
||||
|
||||
$B!v(B Emacs $B$,%O%s%0$7$?;~!JF0$+$J$/$J$C$?;~!K(B
|
||||
==========================================
|
||||
|
||||
$B$b$7(B Emacs $B$,%3%^%s%I$KH?1~$7$J$/$J$C$?$i!"(BC-g $B$r%?%$%W$9$k$3$H$G(BEmacs
|
||||
$B$r0BA4$K;_$a$k$3$H$,$G$-$^$9!#(BC-g $B$G$H$F$b;~4V$N$+$+$k%3%^%s%I$r;_$a$k(B
|
||||
$B$3$H$,$G$-$^$9!#(B
|
||||
|
||||
C-g $B$O$^$?!"?tCM0z?t$r<h$j;_$a$?$j!"#2$D0J>e$N%-!<F~NO$rI,MW$H$9$k(B
|
||||
$B%3%^%s%I$rF~NO$7$F$$$k:GCf$K$=$l$r<h$j;_$a$?$j$9$k$N$K$b;H$($^$9!#(B
|
||||
|
||||
>> C-u 100 $B$H%?%$%W$7$F0z?t#1#0#0$r@_Dj$7$F$+$i(B C-g $B$rBG$C$F$_$^$7$g$&!#(B
|
||||
$B$=$l$+$i(B C-f $B$rBG$C$F2<$5$$!#0lJ8;z$7$+?J$^$J$$$O$:$G$9!#$J$<$J$i!"(B
|
||||
C-g $B$G?tCM0z?t$,%-%c%s%;%k$5$l$?$+$i$G$9!#(B
|
||||
|
||||
$B4V0c$C$F(B <ESC> $B$r%?%$%W$7$F$7$^$C$?;~$b!"(BC-g $B$G$=$l$r<h$j>C$;$^$9!#(B
|
||||
|
||||
|
||||
$B!v;HMQIT2D(B (disabled) $B%3%^%s%I(B
|
||||
==================================
|
||||
|
||||
$B$$$/$D$+$N%3%^%s%I$O=i?4<T$,4V0c$C$F;H$o$J$$$h$&;HMQIT2D$K$J$C$F$$$^$9!#(B
|
||||
|
||||
$B$b$72?$l$+$N;HMQIT2D%3%^%s%I$r%?%$%W$7$?$i!"$=$l$O$I$&$$$&%3%^%s%I$+$,(B
|
||||
$BI=<($5$l!"K\Ev$K$=$l$r<B9T$7$?$$$N$+$I$&$+?V$M$i$l$^$9!#(B
|
||||
|
||||
$B$b$7K\Ev$K<B9T$7$?$$$N$J$i%9%Z!<%9%-!<$r%?%$%W$7$F2<$5$$!#$b$7<B9T$7$?(B
|
||||
$B$/$J$1$l$P(B n $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
|
||||
>> <ESC> : $B$H%?%$%W$7$F$_$^$7$g$&!J$3$l$O;HMQIT2D%3%^%s%I$G$9!K!#(B
|
||||
$B$=$l$+$i(B n $B$H%?%$%W$7$^$7$g$&!#(B
|
||||
|
||||
|
||||
$B!v%&%#%s%I%&(B
|
||||
============
|
||||
|
||||
Emacs $B$O4v$D$b$N%&%#%s%I%&$K!"$=$l$>$l8DJL$NJ8>O$rI=<($9$k$3$H$,$G$-$^(B
|
||||
$B$9!#$I$&$d$C$FJ#?t$N%&%#%s%I%&$rA`:n$9$k$+$O8eDx@bL@$7$^$9$,!"$3$3$G$O!"(B
|
||||
$B$I$&$d$C$FM>J,$J%&%#%s%I%&$r>C$7$F!"85$N0l$D$N%&%#%s%I%&$N>uBV$KLa$k$+(B
|
||||
$B$r@bL@$7$^$9!#$=$l$O4JC1$G$9!#(B
|
||||
|
||||
C-x 1 $B%&%#%s%I%&$r#1$D$K$9$k!J$D$^$jB>$N%&%#%s%I%&$rA4It>C$9!K(B
|
||||
|
||||
$B$D$^$j(B C-x $B$rBG$C$F$+$i$5$i$K(B 1 $B$rBG$D$N$G$9!#$3$N%3%^%s%I$O%+!<%=%k$N(B
|
||||
$B$"$k%&%#%s%I%&$r2hLLA4BN$K9-$2$^$9!#B>$N%&%#%s%I%&$OA4It>C$($^$9!#(B
|
||||
|
||||
>> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"(BC-u 0 C-l $B$H%?%$%W$7$F$_$F2<$5$$!#(B
|
||||
>> $BB3$$$F(B C-h k C-f $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
$B?7$7$$%&%#%s%I%&$,(B C-f $B%3%^%s%I$N@bL@J8$rI=<($9$k$?$a$K8=$l$k$H$H$b(B
|
||||
$B$K!"$3$N%&%#%s%I%&$,$I$N$h$&$K=L$`$+$r8+$F2<$5$$!#(B
|
||||
|
||||
>> C-x 1 $B$H%?%$%W$7$F!"@bL@J8$rI=<($7$F$$$?%&%#%s%I%&$,>C$($k$N$r8+$F2<$5$$!#(B
|
||||
|
||||
$B$3$N%3%^%s%I(B (C-x 1) $B$O$3$l$^$G$K3P$($?%3%^%s%I$H$O0[$J$j!"#2$D$N%-!<(B
|
||||
$B$+$i$J$j$^$9!#:G=i$N%-!<$,(B Control-x $B$G$9!#$3$N%-!<$O!"B?$/$N%3%^%s%I(B
|
||||
$B$r;O$a$k$?$a$N:G=i$N%-!<$G$9!#$=$l$i$N%3%^%s%I$NB?$/$O%&%#%s%I%&!"%U%!(B
|
||||
$B%$%k!"%P%C%U%!!"$=$l$i$K4X78$9$k$b$N$rA`:n$9$k$?$a$N$b$N$G!"#2$"$k$$$O(B
|
||||
$B#3!"#48D$N%-!<$rI,MW$H$9$k$b$N$,$"$j$^$9!#(B
|
||||
|
||||
|
||||
$B!vA^F~$H:o=|(B
|
||||
============
|
||||
|
||||
$B%F%-%9%H$rF~NO$7$?$1$l$P!"C1$K$=$l$r%?%$%W$7$F2<$5$$!#(BEmacs $B$O!"L\$K8+(B
|
||||
$B$($kJ8;z!J(BA, 7, * $BEy!K$r%F%-%9%H$G$"$k$H$_$J$9$N$G!"$=$l$i$O$=$N$^$^A^(B
|
||||
$BF~$5$l$^$9!#(B<Return>$B!J2~9T%-!<!K$r%?%$%W$9$l$P2~9TJ8;z$,A^F~$5$l$^$9!#(B
|
||||
|
||||
$BD>A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"(B<Delete> $B$r%?%$%W$7$^$9!#(B<Delete> $B$O!"(B
|
||||
$B%-!<%\!<%I>e$K!V(BDel$B!W$H=q$$$F$"$k%-!<$G$9!#;~$K$O(B <Backspace> $B%-!<$b(B
|
||||
<Delete> $B$H$7$FF0:n$7$^$9$,!"$$$D$b$G$O$"$j$^$;$s!#(B
|
||||
|
||||
$B$h$j0lHLE*$K$O!"(B<Delete> $B$O8=:_%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7(B
|
||||
$B$^$9!#(B
|
||||
|
||||
>> $BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r(B <Delete> $B$r;H$C$F:o=|$7(B
|
||||
$B$F2<$5$$!#$3$N%U%!%$%k$rJQ99$9$k$3$H$r5$$K$9$kI,MW$O$"$j$^$;$s!#%*(B
|
||||
$B%j%8%J%k$NF~Lg%,%$%I%U%!%$%k$OJQ99$5$l$^$;$s$+$i!#:#8+$F$$$k%U%!%$(B
|
||||
$B%k$O$"$J$?$N$?$a$N%3%T!<$G$9!#(B
|
||||
|
||||
$BJ8>O$N0l9T$,2hLL$K<}$^$i$J$$DxD9$/$J$C$?>l9g!"$=$N9T$O2hLL>e$N<!$N9T$X(B
|
||||
$B$H7QB3!J(Bcontinued$B!K$5$l$^$9!#2hLL$N1&C<$N(B backslash $BJ8;z(B ("\") $B$O!"$=(B
|
||||
$B$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#(B
|
||||
|
||||
>> $B2hLL$N1&C<$^$GJ8>O$rF~NO$7!"$5$i$KF~NO$rB3$1$F2<$5$$!#(B
|
||||
$B7QB39T$,$G$-$k$N$,J,$k$G$7$g$&!#(B
|
||||
|
||||
>> <Delete> $B$r;H$C$F2hLL$K<}$^$k$H$3$m$^$G8=:_$N9T$rC;$/$7$F$_$F$/$@$5(B
|
||||
$B$$!#7QB39T$O>C$($^$9!#(B
|
||||
|
||||
$B2~9TJ8;z$bB>$NJ8;z$HF1$8$h$&$K:o=|$G$-$^$9!##2$D$N9T$N4V$N2~9TJ8;z$r>C(B
|
||||
$B$9$H$=$l$i$N9T$,9g$o$5$j#1$D$N9T$K$J$j$^$9!#$b$7$=$N9g$o$5$C$?9T$,2hLL(B
|
||||
$B$NI}$h$j$bD9$$>l9g$O!"7QB39T$H$J$C$FI=<($5$l$^$9!#(B
|
||||
|
||||
>> $B%+!<%=%k$r9T$N@hF,$K0\F0$7!"(B<Delete> $B$r%?%$%W$7$F2<$5$$!#8=:_$N9T$,(B
|
||||
$B$=$NA0$N9T$H$D$J$,$j$^$9!#(B
|
||||
|
||||
>> <Return> $B$r%?%$%W$7$F!":#:o=|$7$?2~9TJ8;z$r$^$?A^F~$7$F2<$5$$!#(B
|
||||
|
||||
Emacs $B$N$[$H$s$I$N%3%^%s%I$O!"7+$jJV$7$N2s?t;XDj$G$-$k$3$H$r;W$$=P$7$F(B
|
||||
$B2<$5$$!#$3$l$O!"J8;z$NA^F~$K$D$$$F$bEv$F$O$^$j$^$9!#(B
|
||||
|
||||
>> C-u 8 * $B$H%?%$%W$9$k$H(B ******** $B$,A^F~$5$l$^$9!#;n$7$F$_$^$7$g$&!#(B
|
||||
|
||||
$B$3$l$G!"(BEmacs $B$G%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*(B
|
||||
$B$JJ}K!$r3X$s$@$3$H$K$J$j$^$9!#J8;z$HF1$8MM$K!"C18l$d9T$b:o=|$9$k$3$H$,$G$-(B
|
||||
$B$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H<!$N$h$&$K$J$j$^$9!#(B
|
||||
|
||||
<Delete> $B%+!<%=%k$ND>A0$NJ8;z$r:o=|!J(Bdelete$B!K(B
|
||||
C-d $B%+!<%=%k$N$"$kJ8;z$r:o=|!J(Bdelete$B!K(B
|
||||
|
||||
M-<Delete> $B%+!<%=%k$ND>A0$NC18l$r>C5n!J(Bkill$B!K(B
|
||||
M-d $B%+!<%=%k0LCV0J9_$K$"$kC18l$r>C5n!J(Bkill$B!K(B
|
||||
|
||||
C-k $B%+!<%=%k0LCV$+$i9TKv$^$G$r>C5n!J(Bkill$B!K(B
|
||||
M-k $B%+!<%=%k0LCV$+$iJ8Kv$^$G$r>C5n!J(Bkill$B!K(B
|
||||
|
||||
<Delete> $B$H(B C-d $B$KBP$9$k(B M-<Delete> $B$H(B M-d $B$O!"(BC-f $B$H(B M-f $B$G;O$^$C$?N`(B
|
||||
$B;w@-$r$^$?3HD%$7$^$9!#$3$3$G(B <Delete> $B$O%3%s%H%m!<%kJ8;z$G$O$"$j$^$;$s(B
|
||||
$B$,!"$^$"!"$=$l$O5$$K$7$J$$$G2<$5$$!#(BC-k $B$H(B M-k $B$N4X78$O(B C-e $B$H(B M-e $B$N(B
|
||||
$B4X78!J9T$HJ8$NBPHf!K$HF1$8$G$9!#(B
|
||||
|
||||
$B0lEY$K#2J8;z0J>e>C$7$?>l9g!"(BEmacs $B$O$=$N>C$7$?%F%-%9%H$rJ]B8$7$F$*$$$F!"(B
|
||||
$B$^$?85$KLa$9$3$H$,$G$-$k$h$&$K$7$F$$$^$9!#$3$N!V85$KLa$9!W$H$$$&F0:n$r(B
|
||||
$B:FF~!J(Byanking$B!K$H8F$S$^$9!#>C$7$?%F%-%9%H$O!"85$HF1$8>l=j$K$G$b85$H$O(B
|
||||
$B0c$&>l=j$K$G$b:FF~$G$-$^$9!#$^$?!"2?EY$b:FF~$7$F%F%-%9%H$N%3%T!<$rJ#?t(B
|
||||
$B:n$k$3$H$b$G$-$^$9!#:FF~$N$?$a$N%3%^%s%I$O(B C-y $B$G$9!#(B
|
||||
|
||||
$B!V>C5n!J(Bkill$B!K!W$H!V:o=|!J(Bdelete$B!K!W$N0c$$$K5$$r$D$1$F2<$5$$!#>C5n$7$?(B
|
||||
$B%F%-%9%H$O:FF~$G$-$^$9$,!":o=|$7$?$b$N$O:FF~$G$-$^$;$s!#0lHL$K!"BgNL$N(B
|
||||
$B%F%-%9%H$r>C$9%3%^%s%I$O$=$N%F%-%9%H$rJ]B8$7$F$*$-$^$9$,!"0lJ8;z$H$+6u(B
|
||||
$BGr9T$d6uGrJ8;z$r:o=|$9$k%3%^%s%I$O:o=|$7$?$b$N$rJ]B8$7$-$^$;$s!#(B
|
||||
|
||||
>> $B6u9T$G$J$$9T$N@hF,$K%+!<%=%k$r0\F0$5$;$F2<$5$$!#(B
|
||||
$B$=$l$+$i(B C-k $B$G$=$N9T$N%F%-%9%H$r>C5n$7$F2<$5$$!#(B
|
||||
>> $B$b$&0lEY(B C-k $B$r%?%$%W$7$F$/$@$5$$!#$=$N9T$KB3$/2~9TJ8;z$,>C$5$l$k$N(B
|
||||
$B$,J,$j$^$7$?$+!#(B
|
||||
|
||||
$B0l2sL\$N(B C-k $B$O$=$N9T$N%F%-%9%H$r>C$7!"#22sL\$N(B C-k $B$O$=$N9T<+?H$r>C$7(B
|
||||
$B$F$=$N@h$N9T$r>e$2$F$-$^$9!#(BC-k $B$N?tCM0z?t$N07$$$OFC<l$G$9!#0z?tJ,$N9T(B
|
||||
$B!J9T$NFbMF$H9T<+?H!K$r>C$7$^$9!#$3$l$OC1$J$k7+$jJV$7$G$O$"$j$^$;$s!#(B
|
||||
C-u 2 C-k $B$O#2$D$N9T$H$=$l$>$l$KB3$/2~9TJ8;z$r>C$7$^$9$,!"(BC-k $B$r#2EY%?(B
|
||||
$B%$%W$7$F$b$=$&$O$J$j$^$;$s!#(B
|
||||
|
||||
$B:G8e$K>C5n$7$?%F%-%9%H$r8=:_%+!<%=%k$,$"$k0LCV$K:FF~$9$k$K$O(B C-y $B$r%?(B
|
||||
$B%$%W$7$^$9!#(B
|
||||
|
||||
>> $B;n$7$F2<$5$$!#(BC-y $B$r%?%$%W$7$F:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#(B
|
||||
|
||||
C-y $B$O!"$"$J$?$,L5$/$7$?$b$N$r<h$jLa$9$b$N$@$H9M$($^$7$g$&!#(BC-k $B$rB3$1(B
|
||||
$B$F<B9T$9$k$H!">C5n$7$?3F9T$OA4It$^$H$a$FJ]B8$5$l$k$N$G!"0l2s$N(B C-y $B$G(B
|
||||
$B$=$l$i$N9T$,A4It:FF~$5$l$^$9!#(B
|
||||
|
||||
>> C-k $B$r2?EY$+B3$1$F%?%$%W$7$F$_$F2<$5$$!#(B
|
||||
|
||||
$B$5$"!">C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#(B
|
||||
|
||||
>> C-y $B$r%?%$%W$7$F2<$5$$!#<!$K%+!<%=%k$r?t9T2<$K0\F0$5$;!"$^$?(B C-y $B$r(B
|
||||
$B%?%$%W$7$F2<$5$$!#$I$&$d$C$F%F%-%9%H$r%3%T!<$9$k$+J,$j$^$7$?$M!#(B
|
||||
|
||||
$B2a5n$K>C5n$7$?%F%-%9%H$r:FF~$7$?$$$N$K!"JL$N%F%-%9%H$r$=$N8e>C5n$7$?;~(B
|
||||
$B$O$I$&$9$l$P$h$$$G$7$g$&!)(B C-y $B$O:G8e$K>C5n$7$?$b$N$r:FF~$7$^$9!#$G$b(B
|
||||
$B$=$l$G$h$j0JA0$K>C5n$7$?%F%-%9%H$,$J$/$J$k$o$1$G$O$"$j$^$;$s!#$=$&$$$&(B
|
||||
$B%F%-%9%H$O(B M-y $B$G:FF~$G$-$^$9!#(BC-y $B$G:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$?(B
|
||||
$BD>8e$K(BM-y $B$r%?%$%W$9$k$H!"$=$N:FF~$5$l$?%F%-%9%H$O$=$l0JA0$K>C5n$7$?$b(B
|
||||
$B$N$KJQ99$5$l$^$9!#2?EY$bB3$1$F(B M-y $B$r%?%$%W$9$k$H!"$5$i$KA0$K>C5n$7$?(B
|
||||
$B%F%-%9%H$r8F$SLa$;$^$9!#K>$_$N%F%-%9%H$K9T$-Ev$C$?$i!"$=$l$O$=$N$^$^$K(B
|
||||
$B$7$FJT=8:n6H$rB3$1$l$P$h$$$N$G$9!#(B
|
||||
|
||||
$B$"$k2s?t$@$1(B M-y $B$r7+$jJV$7$?$i!"$^$?:G=i!J$D$^$j:G8e$K>C5n$7$?%F%-%9(B
|
||||
$B%H!K$KLa$j$^$9!#(B
|
||||
|
||||
>> $B0l9T>C5n$7!"JL$N9T$K9T$C$F$=$N9T$r>C5n$7$F2<$5$$!#(B
|
||||
$B$=$l$+$i(B C-y $B$G#2HVL\!J:G8e!K$K>C5n$7$?9T$r:FF~$7$F2<$5$$!#(B
|
||||
$BB3$$$F(B M-y $B$G$=$N9T$r:G=i$K>C5n$7$?9T$KJQ$($F2<$5$$!#(B
|
||||
M-y $B$rB3$1$I$&$J$k$+8+$F$_$^$7$g$&!##2HVL\$K>C5n$7$?9T$,La$C$FMh$k(B
|
||||
$B$^$G(B M-y $B$r7+$jJV$7!"$5$i$K$b$&2?EY$+(B M-y $B$r$7$^$7$g$&!#(B
|
||||
$B$b$7K>$_$J$i(B M-y $B$K@5$b$7$/$OIi$N?tCM0z?t$rM?$($F$bNI$$$G$7$g$&!#(B
|
||||
|
||||
|
||||
$B!v<h$j>C$7(B(UNDO)
|
||||
================
|
||||
|
||||
$B$b$7!"J8>O$rJQ99$7$?8e$G$=$NJQ99$O4V0c$$$@$C$?$H;W$C$?$i!"<h$j>C$7(B
|
||||
$B!J(Bundo$B!K%3%^%s%I(B C-x u $B$G$=$NJQ99$r<h$j>C$9$3$H$,$G$-$^$9!#(B
|
||||
|
||||
$BDL>o!"(BC-x u $B$O0l$D$N%3%^%s%I$K$h$kJQ99$r<h$j>C$7$^$9!#B3$1$F2?EY$b(B C-x
|
||||
u $B$r9T$($P$=$N$?$S$K0l$DA0$N%3%^%s%I$,<h$j>C$7$K$J$j$^$9!#(B
|
||||
|
||||
$B$?$@$7$3$l$K$ONc30$,Fs$D$"$j$^$9!#$^$:!"J8>O$rJQ99$7$J$$%3%^%s%I$O<h$j(B
|
||||
$B>C$7$K$J$j$^$;$s!#%+!<%=%k0\F0$d%9%/%m!<%k$N%3%^%s%I$,$=$l$KEv$?$j$^$9!#(B
|
||||
$B$=$l$+$i!"%F%-%9%HJ8;z$NA^F~!J<+8JA^F~%3%^%s%I!K$O(B 20 $B8D0l$^$H$a$G07$o(B
|
||||
$B$l$^$9!#$3$l$O%F%-%9%H$NA^F~$r<h$j>C$9$?$a$N(B C-x u $B$N2s?t$r8:$i$9$?$a(B
|
||||
$B$G$9!#(B
|
||||
|
||||
>> $B$3$N9T$r(BC-k$B$G>C$7$F2<$5$$!#$=$7$F!"(BC-x u $B$GLa$7$F2<$5$$!#(B
|
||||
|
||||
C-_ $B$b<h$j>C$7!J(Bundo$B!K$r9T$J$&%3%^%s%I$G$9!#5!G=$O!"(BC-x u $B$HF1$8$G$9$,!"(B
|
||||
$BB3$1$F2?EY$b%?%$%W$9$k>l9g$O$h$jJXMx$G$9!#(BC-_ $B$NLdBj$O!"%-!<%\!<%I$K$h$C(B
|
||||
$B$F$O$I$&$d$C$F%?%$%W$9$k$N$+J,$j$E$i$$;v$G$9!#$@$+$i(B C-x u $B$,$"$k$N$G(B
|
||||
$B$9!#C<Kv$K$h$C$F$O!"%3%s%H%m!<%k%-!<$r2!$7$?$^$^(B / $B$r%?%$%W$9$k$H(B C-_
|
||||
$B$r%?%$%W$7$?$3$H$K$J$j$^$9!#(B
|
||||
|
||||
C-_ $B$d(B C-x u $B$O?tCM0z?t$r7+$jJV$72s?t$H2r<a$7$^$9!#(B
|
||||
|
||||
|
||||
$B!v%U%!%$%k(B
|
||||
==========
|
||||
|
||||
$BJT=8$7$F$$$kJ8>O$r915WE*$JJ*$K$9$k$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P(B
|
||||
$B$J$j$^$;$s!#$5$b$J$$$H!"(BEmacs $B$N=*N;$HF1;~$K$=$l$O$J$/$J$C$F$7$^$$$^$9!#(B
|
||||
$BJ8>O$r%U%!%$%k$K%;!<%V!JJ]B8!K$9$k$K$O!"%F%-%9%H$rF~NO$9$kA0$K!"$^$:%U%!(B
|
||||
$B%$%k$r3+$+$J$1$l$P$J$j$^$;$s!J%U%!%$%k$r(B "visit" $B$9$k$H$b8@$$$^$9!K!#(B
|
||||
|
||||
$B%U%!%$%k$r3+$/$H$O!"$=$N%U%!%$%k$NCf?H$r(B Emacs $B$G8+$k$3$H$r0UL#$7$^$9!#(B
|
||||
$B?'!9$J0UL#$G!"$=$l$O$"$J$?$,%U%!%$%k<+?H$rJT=8$7$F$$$k$+$NMM$G$9!#$7$+(B
|
||||
$B$7!"(BEmacs $B$G9T$&JQ99$O%U%!%$%k$r%;!<%V$9$kKx$O915WE*$J$b$N$H$J$j$^$;$s!#(B
|
||||
$B$3$l$O!"$=$l$rK>$^$J$$$N$K!"ESCf$^$GJQ99$7$?%U%!%$%k$,;D$k$N$rHr$1$k$?(B
|
||||
$B$a$G$9!#%;!<%V$7$?8e$G$5$(!"JQ99$7$?$b$N$,4V0c$C$F$$$?;~$N$?$a$K!"85$N(B
|
||||
$B%U%!%$%k$OL>A0$rJQ$($F;D$5$l$^$9!#(B
|
||||
|
||||
$B2hLL$N0lHV2<6a$/$K!"(B"-J:-- TUTORIAL.ja" $B$NMM$JJ8;zNs$G;O$^$j(B "----" $B$G(B
|
||||
$B=*$C$F$$$k9T$,$"$k$O$:$G$9!#DL>o$O2hLL$N$3$NItJ,$K8=:_3+$$$F$$$k%U%!%$(B
|
||||
$B%k$NL>A0$,I=<($5$l$F$$$^$9!#:#$O(B "TUTORIAL.ja" $B$H$$$&L>$N%U%!%$%k!J$3(B
|
||||
$B$l$O(B Emacs $BF~Lg%,%$%I$N$"$J$?MQ$N%3%T!<$G$9!K$r3+$$$F$$$^$9!#(BEmacs $B$G(B
|
||||
$B%U%!%$%k$r3+$/$H$=$N%U%!%$%k$NL>A0$,$3$NItJ,$K8=$l$^$9!#(B
|
||||
|
||||
$B%U%!%$%k$r3+$/$?$a$N%3%^%s%I$O$3$l$^$G3X$s$@$b$N$H$O0c$$!"%U%!%$%k$NL>(B
|
||||
$BA0$r;XDj$7$J$1$l$P$J$j$^$;$s!#$3$l$r!"%3%^%s%I$,!VC<Kv$+$i0z?t$rFI$_9~(B
|
||||
$B$`!W$H8@$$$^$9!#:#$N>l9g$O0z?t$O%U%!%$%kL>$G$9!#<!$N%3%^%s%I(B
|
||||
|
||||
C-x C-f Find a file
|
||||
|
||||
$B$r%?%$%W$9$k$H!"(BEmacs $B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#%?%$%W$7$?%U%!%$%kL>(B
|
||||
$B$O2hLL$N:G2<9T$KI=<($5$l$^$9!#$3$N:G2<9T$O!"$3$&$$$&F~NO$N$?$a$K;H$C$F(B
|
||||
$B$$$k;~$O!"%_%K%P%C%U%!$H8F$S$^$9!#DL>o$NJT=8%3%^%s%I$G%U%!%$%kL>$rJT=8(B
|
||||
$B$9$k$3$H$b$G$-$^$9!#(B
|
||||
|
||||
$B%U%!%$%kL>$NF~NOCf!J$"$k$$$O$=$NB>$N%_%K%P%C%U%!F~NOCf!K$K(B C-g $B$K$h$C(B
|
||||
$B$F%3%^%s%I$r%-%c%s%;%k$G$-$^$9!#(B
|
||||
|
||||
>> C-x C-f $B$r%?%$%W$7$F$+$i(B C-g $B$r%?%$%W$7$F$_$^$7$g$&!#%_%K%P%C%U%!$,(B
|
||||
$B<h$j>C$5$l!"$=$l$r;H$C$F$$$?%3%^%s%I(B C-x C-f $B<+BN$b<h$j>C$5$l$^$9!#(B
|
||||
$B$@$+$i!"%U%!%$%k$O2?$b3+$+$l$^$;$s!#(B
|
||||
|
||||
$B%U%!%$%kL>$rF~NO$7$?$i!"(B<Return>$B%-!<$r%?%$%W$7F~NO$r40N;$5$;$^$9!#$=$&(B
|
||||
$B$9$k$H!"(BC-x C-f $B%3%^%s%I$,Av$j;O$a;XDj$7$?%U%!%$%k$r3+$-$^$9!#%_%K%P%C(B
|
||||
$B%U%!$O(B C-x C-f $B%3%^%s%I$N=*N;$H$H$b$K>C$($^$9!#(B
|
||||
|
||||
$B%U%!%$%k$NFbMF$,2hLL$KI=<($5$l$k$H!"$=$NFbMF$rJQ99$9$k$3$H$,$G$-$^$9!#(B
|
||||
$B2C$($?JQ99$r915WE*$J$b$N$K$7$?$1$l$P!"<!$N%3%^%s%I$r%?%$%W$7$^$9!#(B
|
||||
|
||||
C-x C-s Save the file
|
||||
|
||||
$B$3$l$O(B Emacs $B$,J];}$7$F$$$kJ8>O$r%U%!%$%k$K%3%T!<$7$^$9!#=i$a$F$3$l$r(B
|
||||
$B<B9T$9$k$H$-$O!"85$N%U%!%$%k$r?7$7$$L>A0$KIU$1BX$($k$N$G!"$=$NFbMF$O<:(B
|
||||
$B$o$l$^$;$s!#$=$N?7$7$$L>A0$O85$N%U%!%$%k$NL>A0$N:G8e$K(B'~'$B$r$D$1$?$b$N(B
|
||||
$B$G$9!#(B
|
||||
|
||||
$B%;!<%V$,=*$o$k$H!"%;!<%V$7$?%U%!%$%k$NL>A0$,I=<($5$l$^$9!#3d$HIQHK$K%;!<(B
|
||||
$B%V$7$?J}$,NI$$$G$7$g$&!#%7%9%F%`$,Mn$A$F$b$;$C$+$/$N:n6H$,%Q%"$K$J$i$J(B
|
||||
$B$$$h$&$K!#(B
|
||||
|
||||
>> C-x C-s $B$H%?%$%W$7$F$3$NF~Lg%,%$%I$N%3%T!<$r%;!<%V$7$F2<$5$$!#(B
|
||||
$B2hLL:G2<CJ$K(B "Wrote ...TUTORIAL.ja" $B$HI=<($5$l$^$9!#(B
|
||||
|
||||
$BCm0U!'%7%9%F%`$K$h$C$F$O(B C-x C-s $B$H%?%$%W$9$k$H2hLL$,F0$+$J$/$J$j(B
|
||||
Emacs $B$,I=<($7$h$&$H$9$k$b$N$,2?$b2hLL$K=P$J$/$J$j$^$9!#$3$l$O!"%U%m!<(B
|
||||
$B%3%s%H%m!<%k$H8F$P$l$k#O#S$N5!G=$,(B C-s $B$rB*$(!"(BEmacs $B$KEO$5$J$$$h$&$K(B
|
||||
$B$7$F$$$k$N$G$9!#$3$l$r2r=|$9$k$K$O(B C-q $B$r%?%$%W$7$^$9!#$=$l$+$i(B Emacs
|
||||
$B%^%K%e%"%k$N(B "Spontaneous Entry to Incremental Search ($BCN$i$L4V$K%$%s(B
|
||||
$B%/%j%a%s%?%k%5!<%A$K$J$k(B)" $B$N@a$rFI$s$G$/$@$5$$!#$3$N$d$C$+$$$J#O#S$N(B
|
||||
$B5!G=$K$I$&BP=h$9$l$PNI$$$+$,:\$C$F$$$^$9!#(B
|
||||
|
||||
$B4{B8$N%U%!%$%k$r3+$-!"FbMF$r8+!"JT=8$9$k$3$H$,$G$-$^$9!#B8:_$7$J$$%U%!(B
|
||||
$B%$%k$r3+$/$3$H$b$G$-$^$9!#(BEmacs $B$G?7$7$$%U%!%$%k$r:n$k$K$O<!$N$h$&$K$7(B
|
||||
$B$^$9!#%U%!%$%k$r3+$-$^$9!#:G=i$O6u$C$]$G$9$M!#J8>O$rF~NO$7$F$$$-$^$9!#(B
|
||||
$B%U%!%$%k$r%;!<%V$7$h$&$H$7$?;~$K=i$a$F?7$7$$%U%!%$%k$,:n$i$l!":#$^$GF~(B
|
||||
$BNO$7$?FbMF$,$=$l$K=q$-9~$^$l$^$9!#$=$l0J9_$O!"$"$J$?$O4{B8$N%U%!%$%k(B
|
||||
$B!J$?$C$?:#:n$i$l$?%U%!%$%k!K$rJT=8$7$F$$$k$H;W$C$F2<$5$$!#(B
|
||||
|
||||
|
||||
$B!v%P%C%U%!(B
|
||||
==========
|
||||
|
||||
$B#2$DL\$N%U%!%$%k$r(B C-x C-f $B$G3+$$$F$b!":G=i$N%U%!%$%k$O(B Emacs $BFbIt$K;D$C(B
|
||||
$B$?$^$^$G$9!#$=$C$A$N%U%!%$%k$KLa$k$K$O$b$&0lEY(B C-x C-f $B$G$=$N%U%!%$%k(B
|
||||
$B$r3+$1$P$h$$$N$G$9!#$3$&$d$C$F!"4v$D$b$N%U%!%$%k$r(B Emacs $B$G3+$/$3$H$,(B
|
||||
$B$G$-$^$9!#(B
|
||||
|
||||
>> "foo" $B$H$$$&L>$N%U%!%$%k$r:n$j$^$7$g$&!#(BC-x C-f foo <Return> $B$G$9!#(B
|
||||
$B2?$+J8>O$rF~$l!"JT=8$7!"(BC-x C-s $B$G(B "foo" $B$r%;!<%V$7$F2<$5$$!#(B
|
||||
$B:G8e$K(B C-x C-f TUTORIAL.ja <Retrun> $B$H%?%$%W$7(B
|
||||
$BF~Lg%,%$%I$KLa$j$^$7$g$&!#(B
|
||||
|
||||
Emacs $B$O%U%!%$%k$NFbMF$r%P%C%U%!!J(Bbuffer$B!K$H8F$P$l$k$b$N$NCf$K3JG<$7$F(B
|
||||
$B$$$^$9!#%U%!%$%k$r3+$/$H?7$7$$%P%C%U%!$,$G$-$^$9!#(BEmacs $B$,8=:_;}$C$F$$(B
|
||||
$B$k%P%C%U%!$N%j%9%H$r8+$k$K$O!"<!$N$h$&$K%?%$%W$7$^$9!#(B
|
||||
|
||||
C-x C-b List buffers
|
||||
|
||||
>> C-x C-b $B$r;n$7$F$_$^$7$g$&!#(B
|
||||
|
||||
$B3F%P%C%U%!$,$I$s$JIw$KL>A0$d$=$l$,3+$$$F$$$k%U%!%$%k$KBP$9$k%U%!%$%kL>(B
|
||||
$B$r;}$C$F$$$k$+8+$F2<$5$$!#%U%!%$%k$r3+$$$F$$$J$$%P%C%U%!$b$"$j$^$9!#$?(B
|
||||
$B$H$($P!"(B"*Buffer List*" $B$H$$$&L>$N%P%C%U%!$O$I$s$J%U%!%$%k$b3+$$$F$$$^(B
|
||||
$B$;$s!#$3$l$O%P%C%U%!$N%j%9%H$rFbMF$H$9$k%P%C%U%!$G!"(BC-x C-b $B$G:n$i$l$?(B
|
||||
$B$b$N$G$9!#(BEmacs $B$N%&%#%s%I%&Fb$K$"$k%F%-%9%H$O$I$l$b!"$$$:$l$+$N%P%C%U%!(B
|
||||
$B$N0lIt$G$9!#(B
|
||||
|
||||
>> C-x 1 $B$H%?%$%W$7$F%P%C%U%!%j%9%H$r>C$7$^$7$g$&!#(B
|
||||
|
||||
$B$"$k%U%!%$%k$NFbMF$K$J$s$i$+$NJQ99$r2C$(!"$=$l$+$iB>$N%U%!%$%k$r3+$$$F(B
|
||||
$B$b!":G=i$N%U%!%$%k$O$^$@%;!<%V$5$l$^$;$s!#JQ99$O(B Emacs $B$NFbIt!"$=$N%U%!(B
|
||||
$B%$%k$KBP1~$9$k%P%C%U%!$NCf$K;D$C$?$^$^$G$9!##2HVL\$N%U%!%$%k$N%P%C%U%!(B
|
||||
$B$r:n$C$?$j!"JT=8$7$?$j$7$F$b!":G=i$N%U%!%$%k$N%P%C%U%!$K$O2?$N1F6A$b$"(B
|
||||
$B$j$^$;$s!#$3$l$O$H$F$bLr$KN)$A$^$9$,!":G=i$N%U%!%$%k$N%P%C%U%!$r%;!<%V(B
|
||||
$B$9$k2?$+JXMx$JJ}K!$,I,MW$@$H$$$&$3$H$G$b$"$j$^$9!#(B C-x C-s $B$G%;!<%V$9(B
|
||||
$B$k$?$a$K(B C-x C-f $B$G85$N%P%C%U%!$KLa$k$N$O$OLq2p$G$9!#$=$3$G<!$N%3%^%s(B
|
||||
$B%I$r;H$$$^$9!#(B
|
||||
|
||||
C-x s $B2?$l$+$N%P%C%U%!$r%;!<%V$9$k(B
|
||||
|
||||
C-x s $B$O!"$^$@%;!<%V$7$F$$$J$$JQ99$,$"$k%P%C%U%!$=$l$>$l$K$D$$$F!"$=$l(B
|
||||
$B$r%;!<%V$9$k$+$I$&$+$rJ9$$$F$-$^$9!#(B
|
||||
|
||||
>> $B0l9T%F%-%9%H$rF~NO$7$F$+$i(B C-x s $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
TUTORIAL.ja $B$H$$$&%P%C%U%!$r%;!<%V$9$k$+$I$&$+J9$$$F$/$k$O$:$G$9!#(B
|
||||
$B!V$O$$!W$HEz$($k$?$a$K(B "y" $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
|
||||
|
||||
$B!v%3%^%s%I$N3HD%(B
|
||||
================
|
||||
|
||||
Emacs $B$K$O!"%3%s%H%m!<%kJ8;z$d%a%?J8;z$K3dEv$i$l$k$h$j$b$:$C$H$:$C$HB?(B
|
||||
$B$/$N%3%^%s%I$,$"$j$^$9!#$3$l$i$r07$&$?$a$K!"3HD%!J(BeXtend$B!K%3%^%s%I$r;H(B
|
||||
$B$$$^$9!#$=$l$K$O!"0J2<$N#2$D$N<oN`$,$"$j$^$9!#(B
|
||||
|
||||
C-x $BJ8;z$K$h$k3HD%!#B3$1$F0lJ8;z$rF~NO$7$^$9!#(B
|
||||
ESC x $BL>A0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#(B
|
||||
|
||||
$B$3$l$i$O!"0lHLE*$K$OJXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$I$OIQHK$KMQ(B
|
||||
$B$$$i$l$J$$%3%^%s%I$G$9!#(BC-x C-f $B!J%U%!%$%k$r3+$/!K$d(B C-x C-s$B!J%U%!%$%k(B
|
||||
$B$r%;!<%V!K$O$3$NCg4V$G$9!#B>$K!"(BC-x C-c$B!J(BEmacs $B$r=*N;!K$b$=$&$G$9!#(BC-x
|
||||
C-c $B$K4X$7$F$O!"$=$l$^$G$K2C$($?JQ99$,L5$/$J$k$N$r?4G[$9$kI,MW$O$"$j$^(B
|
||||
$B$;$s!#(BEmacs $B$r=*N;$5$;$kA0$KJQ99$5$l$?3F%U%!%$%k$r%;!<%V$9$k$+$I$&$+J9(B
|
||||
$B$$$F$-$^$9$+$i!#(B
|
||||
|
||||
C-z $B$O!V0l;~E*$K!W(B Emacs $B$rH4$1$k%3%^%s%I$G$9!#$^$?F1$8(B Emacs $B%;%C%7%g(B
|
||||
$B%s$KLa$k$3$H$,$G$-$^$9!#(B
|
||||
|
||||
$B$=$l$,$G$-$k%7%9%F%`>e$J$i!"(BC-z $B$O(B Emacs $B$r!VCfCG!W$5$;$^$9!#$D$^$j(B
|
||||
Emacs $B$r=*N;$9$k$3$H$J$/!"%3%^%s%I%7%'%k$KLa$k$3$H$,$G$-$^$9!#BgJ}$NI8(B
|
||||
$B=`E*$J%7%'%k$J$i!"(B`fg' $B%3%^%s%I$b$7$/$O(B `%emacs' $B$K$h$C$F(B Emacs $B$r:F3+(B
|
||||
$B$G$-$^$9!#(B
|
||||
|
||||
$B!VCfCG!W5!G=$r<BAu$7$F$$$J$$%7%9%F%`$G$O!"(BC-z $B$O(B Emacs $B$N2<$GAv$k%5%V(B
|
||||
$B%7%'%k$r:n$j!"B>$N%W%m%0%i%`$rAv$i$;$F$+$i$^$?(B Emacs $B$KLa$k$3$H$,$G$-(B
|
||||
$B$k$h$&$K$7$^$9!#$3$N>l9gK\Ev$K(B Emacs $B$+$iH4$1=P$k$o$1$G$O$"$j$^$;$s$N(B
|
||||
$B$G!"%7%'%k%3%^%s%I$N(B `exit' $B$,$=$N%5%V%7%'%k$+$i(B Emacs $B$KLa$kIaDL$N$d(B
|
||||
$B$jJ}$G$9!#(B
|
||||
|
||||
C-x C-c $B$O%m%0%"%&%H$7$h$&$H;W$&;~$K;H$&$b$N$G$9!#%a!<%k%D!<%k!J(Bmail
|
||||
$B%3%^%s%IEy!K$d$=$NB>$NMM!9$J%"%W%j%1!<%7%g%s%W%m%0%i%`$,5/F0$7$?(B Emacs
|
||||
$B$+$iH4$1=P$k>l9g$K;H$&$N$b@5$7$$;H$$J}$G$9!#$3$l$i$N%W%m%0%i%`$O(B Emacs
|
||||
$B$NCfCG$K$I$&BP=h$7$FNI$$$+CN$i$J$$$G$7$g$&$+$i!#$7$+$7$J$,$i!"IaDL$N>l(B
|
||||
$B9g$O!"%m%0%"%&%H$7$h$&$7$J$$8B$j$O(B Emacs $B$r=*N;$5$;$k$h$j$O(B C-z $B$GCfCG(B
|
||||
$B$5$;$kJ}$,NI$$$G$7$g$&!#(B
|
||||
|
||||
C-x $B%3%^%s%I$O$?$/$5$s$"$j$^$9!#$3$l$^$G$K!"0J2<$r3X$S$^$7$?!#(B
|
||||
|
||||
C-x C-f $B%U%!%$%k$r3+$/!J(BFind$B!K(B
|
||||
C-x C-s $B%U%!%$%k$N%;!<%V!J(BSave$B!K(B
|
||||
C-x C-b $B%P%C%U%!$N%j%9%H%"%C%W(B
|
||||
C-x C-c Emacs $B$r=*N;(B
|
||||
C-x u $B<h$j>C$7(B
|
||||
|
||||
$BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+;H(B
|
||||
$B$o$J$$$b$N$,$"$j$^$9!#$?$H$($P(B replace-string $B$G$9$,!"$3$l$OJ8;zNs$rCV(B
|
||||
$B49$9$k$b$N$G$9!#(BM-x $B$r%?%$%W$9$k$H!"(BEmacs $B$O2hLL$N:G2<9T$K(B M-x $B$HI=<((B
|
||||
$B$7F~NO$rB%$9$N$G!"$=$3$K%3%^%s%I$NL>A0!J$3$N>l9g(B "replace-string"$B!K$r(B
|
||||
$BF~$l$J$1$l$P$J$j$^$;$s!#(B"repl s<TAB>" $B$H$@$1%?%$%W$9$k$H(B Emacs $B$,%3%^(B
|
||||
$B%s%IL>$rJd40$7$F$/$l$^$9!#%3%^%s%IL>$rF~$l$?$i(B <Return> $B$rBG$C$F2<$5$$!#(B
|
||||
|
||||
"Replace string" $B%3%^%s%I$K$O0z?t$,Fs$DI,MW$G$9!#$I$NJ8;zNs$r$I$&CV49(B
|
||||
$B$9$k$+$G$9!#3F0z?t$rF~NO$9$k$?$S$K(B <Return> $B$rBG$C$F2<$5$$!#(B
|
||||
|
||||
|
||||
>> $B%+!<%=%k$r$3$3$+$i#29T2<$N6u9T$K0\F0$5$;$F2<$5$$!#(B
|
||||
M-x repl s<Return>changed<Return>Altered<Return> $B$H%?%$%W$7$^$7$g$&!#(B
|
||||
|
||||
$B$3$N9T$,$I$&JQ$o$k$+(B(changed)$B8+$^$7$g$&!#$"$J$?$O%+!<%=%k0J9_A4It$N(B
|
||||
c-h-a-n-g-e-d $B$H$$$&8l$r(B "altered" $B$KJQ$($?$N$G$9!#(B
|
||||
|
||||
|
||||
$B!v<+F0%;!<%V(B
|
||||
============
|
||||
|
||||
$B%U%!%$%k$KJQ99$r2C$($F$^$@%;!<%V$7$F$$$J$$>l9g!"$=$l$i$NJQ99$O7W;;5!$,(B
|
||||
$B%/%i%C%7%e$9$k$H<:$o$l$F$7$^$&2DG=@-$,$"$j$^$9!#$=$&$$$&;vBV$rHr$1$k$?(B
|
||||
$B$a!"JT=8Cf$N3F%U%!%$%k$K$D$$$F<+F0%;!<%V%U%!%$%k$,Dj4|E*$K=q$+$l$^$9!#(B
|
||||
$B<+F0%;!<%V%U%!%$%k$OF,$H$*?,$K(B # $B$,IU$$$F$$$^$9!#Nc$($P(B "hello.c" $B$H$$(B
|
||||
$B$&%U%!%$%k$N<+F0%;!<%V%U%!%$%k$O(B "#hello.c#" $B$G$9!#DL>o$NJ}K!$G%U%!%$(B
|
||||
$B%k$r%;!<%V$7$?$H$-$K!"$=$&$$$&<+F0%;!<%V%U%!%$%k$O>C$5$l$^$9!#(B
|
||||
|
||||
$B7W;;5!$,%/%i%C%7%e$7$?>l9g!"<+F0%;!<%V$5$l$?JT=8$r2sI|$5$;$k$3$H$,$G$-(B
|
||||
$B$^$9!#IaDL$K%U%!%$%k!JJT=8$7$F$$$?$b$N$G!"<+F0%;!<%V%U%!%$%k$8$c$"$j$^(B
|
||||
$B$;$s!K$r3+$-!"$=$l$+$i(B M-x recover file<Return> $B$H%?%$%W$9$k$N$G$9!#3N(B
|
||||
$BG'$r5a$a$F$-$^$9$N$G!"(Byes<Return> $B$H%?%$%W$7<+F0%;!<%V$5$l$?%G!<%?$r2s(B
|
||||
$BI|$7$^$9!#(B
|
||||
|
||||
|
||||
$B!v%(%3!<%(%j%"(B
|
||||
==============
|
||||
|
||||
$B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2<$N%(%3!<%(%j%"$H8F$P$l(B
|
||||
$B$k>l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N:G2<9T$G$9!#(B
|
||||
|
||||
|
||||
$B!v%b!<%I%i%$%s(B
|
||||
==============
|
||||
|
||||
$B%(%3!<%(%j%"$N$9$0>e$N9T$O!"%b!<%I%i%$%s$H8F$S$^$9!#%b!<%I%i%$%s$O$3$s$JIw$K8+$($k$G$7$g$&!#(B
|
||||
|
||||
-J:** TUTORIAL.ja (Fundamental)--L670--58%----------------
|
||||
|
||||
$B$3$N9T$O(B Emacs $B$N>uBV5Z$SJT=8Cf$NJ8>O$K$D$$$FM-1W$J>pJs$rM?$($F$/$l$^(B
|
||||
$B$9!#(B
|
||||
|
||||
$B%U%!%$%kL>$K$D$$$F$O$b$&J,$C$F$$$^$9$M!#$=$l$O$"$J$?$,3+$$$?%U%!%$%k$G(B
|
||||
$B$9!#(B-NN%-- $B$OJ8>OCf$N8=:_0LCV$r<($7$F$$$^$9!#J8>O$N(B NN% $B$,2hLL:G>eCJ$h(B
|
||||
$B$jA0$K$"$k$H$$$&$3$H$G$9!#$b$7J8>O$N:G=i$N9T$,2hLL$K$"$k;~$K$O(B --00%--
|
||||
$B$NBe$j$K(B --Top-- $B$HI=<($7$^$9!#$b$7J8>O$N:G8e$N9T$,2hLL$K$"$k;~$K$O(B
|
||||
--Bot-- $B$HI=<($7$^$9!#$b$72hLL$KA4It<}$^$C$F$7$^$&$h$&$JC;$$J8>O$r8+$F(B
|
||||
$B$$$k$H$-$K$O(B --All-- $B$HI=<($7$^$9!#(B
|
||||
|
||||
$B3g8L$K0O$^$l$?ItJ,$O$I$&$JJT=8%b!<%I$K$$$k$+$r<($7$^$9!#%G%U%)%k%H$O(B
|
||||
"Fundamental" $B$H$$$&%b!<%I!"$3$l$,8=:_$N%b!<%I$G$9!#$3$l$O!V%a%8%c!<%b!<(B
|
||||
$B%I!J(Bmajor mode$B!K!W$N0lNc$G$9!#(B
|
||||
|
||||
Emacs $B$K$OB?$/$N<oN`$N%a%8%c!<%b!<%I$,$"$j$^$9!#(BLisp mode $B$d(BText mode
|
||||
$B$N$h$&$K!"$I$s$J%W%m%0%i%`8@8l$d$I$s$J<oN`$NJ8>O$rJT=8Cf$+$r0UL#$9$k$b(B
|
||||
$B$N$b$"$j$^$9!#$$$D$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#(B
|
||||
$B$I$N%a%8%c!<%b!<%I$K$$$k$N$+$O!"%b!<%I%i%$%s$N8=:_$O(B "Fundamental" $B$H(B
|
||||
$BI=<($7$F$$$kItJ,$r8+$l$PJ,$j$^$9!#(B
|
||||
|
||||
$B3F%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$K0[$J$k?6$kIq$$$r$5$;$^$9!#Nc$($P!"(B
|
||||
$B%W%m%0%i%`%j%9%HCf$K%3%a%s%H$rF~$l$k$?$a$N%3%^%s%I$,$"$j$^$9!#%3%a%s%H(B
|
||||
$B$N7A<0!J%7%s%?%C%/%9!K$O!"%W%m%0%i%`8@8l$K$h$C$F0[$J$j!"%a%8%c!<%b!<%I(B
|
||||
$B$O!"$=$l$KBP1~$9$k8@8l$K9g$C$?7A<0$G%3%a%s%H$rA^F~$7$^$9!#3F%a%8%c!<%b!<(B
|
||||
$B%I$O3HD%%3%^%s%I$NL>A0$K$J$C$F$$$^$9!#$D$^$j$=$N3HD%%3%^%s%I$r;H$C$F%a(B
|
||||
$B%8%c!<%b!<%I$r@Z$j49$($k$N$G$9!#Nc$($P!"(BM-x fundamental-mode $B$H$$$&$N(B
|
||||
$B$O(B Fundamental $B%b!<%I$K@Z$j49$($k$?$a$N%3%^%s%I$G$9!#(B
|
||||
|
||||
$B$b$7!"DL>o$N1Q8l$dF|K\8l$NJ8>O!J$3$N%U%!%$%k$N$h$&$J!K$rJT=8$9$k$N$J$i(B
|
||||
$B$P!"(BText mode $B$r;H$$$^$7$g$&!#(B
|
||||
|
||||
>> M-x text-mode <Retuen> $B$H%?%$%W$7$F$_$F2<$5$$!#(B
|
||||
|
||||
$B?4G[$7$J$$$G!#$3$l$^$G3X$s$@%3%^%s%I$O$?$$$7$FJQ$o$j$^$;$s$+$i!#$@$1$I!"(B
|
||||
M-f $B$d(B M-b $B$,%"%]%9%H%m%U%#(B "'" $B$rC18l$N0lIt$@$H2r<a$9$k$h$&$K$J$C$?$N(B
|
||||
$B$,J,$k$G$7$g$&!#0JA0$N(B Fundamental $B%b!<%I$G$O(B M-f $B$d(B M-b $B$O(B "'" $B$rC18l(B
|
||||
$B$N6h@Z$j$H8+$J$7$F$$$^$7$?!#(B
|
||||
|
||||
$B%a%8%c!<%b!<%I$O$3$N$h$&$K:3:Y$J0c$$$r@8$_$^$9!#Bg35$N%3%^%s%I$O$I$N%a(B
|
||||
$B%8%c!<%b!<%I$G$bF1$8F/$-$r$7$^$9$,!"<B:]$NF0$-$O>/$7$@$1$3$H$J$k$N$G$9!#(B
|
||||
|
||||
$B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N@bL@J8$r8+$k$K$O(B C-h m $B$H%?%$%W$7$^$9!#(B
|
||||
|
||||
>> C-u C-v $B$r0lFsEY$d$C$F$3$N9T$r2hLL$N>e$NJ}$K;}$C$F$$$-$^$7$g$&!#(B
|
||||
>> C-h m $B$H%?%$%W$7!"(BText mode $B$H(B Fundamental mode $B$N0c$$$r$_$^$7$g$&!#(B
|
||||
>> C-x 1 $B$G(B Text mode $B$N@bL@J8$r2hLL$+$i>C$7$^$7$g$&!#(B
|
||||
|
||||
$B%a%8%c!<%b!<%I$,!V%a%8%c!<!W$H$$$&$+$i$K$O!V%^%$%J!<%b!<%I!W$b$"$j$^$9!#(B
|
||||
$B%^%$%J!<%b!<%I$O%a%8%c!<%b!<%I$NBe$o$j$K$J$k$b$N$G$O$J$/!"$=$l$r$A$g$C(B
|
||||
$B$H$@$1=$@5$9$k$b$N$G$9!#3F%^%$%J!<%b!<%I$O!"%a%8%c!<%b!<%I$dB>$N%^%$%J!<(B
|
||||
$B%b!<%I$K1F6A$rM?$($:$K!"$=$l$@$1$r%*%s%*%U$G$-$^$9!#$D$^$j!"%^%$%J!<%b!<(B
|
||||
$B%I$rA4$/;H$o$J$+$C$?$j!"0l8D$@$1;H$C$?$j!"$$$/$D$+$rF1;~$K;H$C$?$j$G$-(B
|
||||
$B$k$N$G$9!#(B
|
||||
|
||||
$BDL>o$NJ8>O$rJT=8$7$F$$$k;~$K$H$F$bJXMx$J%^%$%J!<%b!<%I$N0l$D$K%*!<%H%U%#(B
|
||||
$B%k!J(BAuto Fill$B!K%b!<%I$H$$$&$N$,$"$j$^$9!#$3$N%b!<%I$,%*%s$N;~$KJ8>O$r(B
|
||||
$BF~NO$7$F$$$C$F9T$rD9$/$7$9$.$?>l9g!"<+F0E*$KC18l$HC18l$N4V$G9T$,J,3d$5(B
|
||||
$B$l$^$9!JF|K\8l$N>l9g$O$I$NJ8;z$N4V$G$b!K!#(B
|
||||
|
||||
Auto Fill $B%b!<%I$O(B M-x auto-fill-mode<Return> $B$H$d$l$P%*%s$K$G$-$^$9!#(B
|
||||
$B$=$l$,%*%s$N>uBV$G(B M-x auto-fill-mode<Return> $B$H$d$l$,%*%U$K$G$-$^$9!#(B
|
||||
$B$3$N%3%^%s%I$O!"%b!<%I$,%*%U$J$i%*%s$K!"%*%s$J$i%*%U$K$9$k$N$G$9!#$3$&(B
|
||||
$B$$$&$N$r!V%b!<%I$r%H%0%k$9$k!W$H8@$$$^$9!#(B
|
||||
|
||||
>> M-x auto-fill-mode<Return> $B$H%?%$%W$7$F!"(B "asdf " $B$G;O$^$k9T$rF~NO(B
|
||||
$B$7$F2<$5$$!#9T$,J,3d$5$l$k$^$G2?EY$b(B "asdf " $B$H%?%$%W$7$^$7$g$&!#%9(B
|
||||
$B%Z!<%9$rK:$l$:$K!#(BAuto Fill $B$O%9%Z!<%9$,F~NO$5$l$?;~$N$_F/$-$^$9!#(B
|
||||
|
||||
$B1&%^!<%8%s$ODL>o(B 70 $BJ8;z!J%+%i%`!K$G$9$,!"(BC-x f $B%3%^%s%I$G$3$l$rJQ99$9(B
|
||||
$B$k$3$H$,$G$-$^$9!#;XDj$NJ8;z?t$r?tCM0z?t$H$7$FM?$($^$9!#(B
|
||||
|
||||
>> $B?tCM0z?t(B 20 $B$G(B C-x f $B$r$d$j$^$7$g$&!#(B (C-u 2 0 C-x f)$B!#(B
|
||||
$B$=$l$+$iE,Ev$JJ8>O!J1Q8l!K$rF~NO$7!"(B20 $BJ8;z$G9T$,J,3d$5$l$k$N$r8+$F(B
|
||||
$B$_$^$7$g$&!#$=$l$+$i(B C-x f $B%3%^%s%I$G$^$?%^!<%8%s$r(B 70 $BJ8;z$KLa$7$F(B
|
||||
$B2<$5$$!#(B
|
||||
|
||||
$B%Q%i%0%i%U$NESCf$rJQ99$7$F$b(B Auto Fill $B%b!<%I$O$=$l$r<+F0E*$K%U%#%k$7(B
|
||||
$BD>$7$O$7$^$;$s!#(B
|
||||
$B%Q%i%0%i%U$r%U%#%k$7D>$9$K$O%+!<%=%k$r$=$N%Q%i%0%i%U$NCf$KCV$$$F$+$i(B
|
||||
M-q $B$r%?%$%W$7$^$9!#(B
|
||||
|
||||
>> $B%+!<%=%k$r$3$N9TD>A0$N%Q%i%0%i%U$K0\F0$5$;(B M-q $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
|
||||
$B!v8!:w(B
|
||||
======
|
||||
|
||||
$BJ8>OCf$NFCDj$NJ8;zNs$r!"A08~$-$K$b8e8~$-$K$bC5$9;v$,$G$-$^$9!#J8;zNs$r(B
|
||||
$BC5$9$H$$$&$N$O%+!<%=%k0\F0%3%^%s%I$G$9!#$D$^$j!"<!$K$=$NJ8;zNs$,8=$l$k(B
|
||||
$B>l=j$^$G%+!<%=%k$r0\F0$5$;$k$N$G$9!#(B
|
||||
|
||||
Emacs $B$N8!:w%3%^%s%I$OB>$NBg35$N%(%G%#%?$N8!:w%3%^%s%I$H$O0[$j!V%$%s%/(B
|
||||
$B%j%a%s%?%k!W$G$9!#8!:w$9$kJ8;zNs$r%?%$%W$7$F$$$k$=$P$+$i8!:w$,5/$k$N$G(B
|
||||
$B$9!#(B
|
||||
|
||||
$B8!:w$r;O$a$k$?$a$N%3%^%s%I$O!"A08~$-$K8!:w$9$k$J$i$P(B C-s$B!"8e8~$-$J$i(B
|
||||
C-r $B$G$9!#$^$@$G$9!*!*:#$O$^$@;n$5$J$$$G2<$5$$!#(B
|
||||
|
||||
C-s $B$rBG$D$H(B "I-search" $B$H$$$&J8;zNs$,%(%3!<%(%j%"$KI=<($5$l$k$N$,8+$((B
|
||||
$B$k$G$7$g$&!#$3$l$O(B Emacs $B$,%$%s%/%j%a%s%?%k8!:w$H$$$&>uBV$K$$$F!"$"$J(B
|
||||
$B$?$,C5$7$?$$J8;zNs$rF~NO$9$k$N$rBT$C$F$$$k$N$G$9!#(B<Return> $B$rBG$F$P8!(B
|
||||
$B:w$r=*$o$l$^$9!#(B
|
||||
|
||||
>> $B$5$F(B C-s $B$H%?%$%W$7$F8!:w$r;O$a$^$7$g$&!#$f$C$/$j$H#1J8;z$:$D(B
|
||||
"cursor" $B$H$$$&C18l$rF~NO$7$^$9!##1J8;zBG$DKh$K%+!<%=%k$,$I$&F0$/$+(B
|
||||
$B8+$^$7$g$&!#(B
|
||||
$B$5$"!"(B"cursor" $B$,#12s8+$D$+$j$^$7$?!#(B
|
||||
>> $B$b$&0lEY(B C-s $B$HBG$C$F<!$N(B "cursor" $B$r8+$D$1$^$7$g$&!#(B
|
||||
>> $B:#EY$O(B <Delete> $B$r#42sBG$C$F!"%+!<%=%k$NF0$-$r8+$F2<$5$$!#(B
|
||||
>> <Return> $B$HBG$C$F8!:w$r=*N;$7$^$7$g$&!#(B
|
||||
|
||||
$B2?$,5/$C$?$+J,$j$^$9$+!)%$%s%/%j%a%s%?%k8!:w$G$O!"$"$J$?$,$=$l$^$G$KBG$C(B
|
||||
$B$?J8;zNs$,8=$l$k$H$3$m$K9T$3$&$H$7$^$9!#<!$N(B "cursor" $B$K9T$/$K$O$b$&0l(B
|
||||
$BEY(B C-s $B$HBG$A$^$9!#$b$7$b$&$=$&$$$&J8;zNs$,L5$+$C$?$i!"%Y%k$r$J$i$7$F(B
|
||||
$B8!:w$,8=:_$O<:GT$7$F$$$k$3$H$rCN$i$;$^$9!#(BC-g $B$rBG$F$P8!:w$r=*$o$l$^$9!#(B
|
||||
|
||||
$BCm0U!'%7%9%F%`$K$h$C$F$O(B C-s $B$H%?%$%W$9$k$H2hLL$,F0$+$J$/$J$j(B Emacs $B$,(B
|
||||
$BI=<($7$h$&$H$9$k$b$N$,2?$b2hLL$K=P$J$/$J$j$^$9!#$3$l$O!"%U%m!<%3%s%H%m!<(B
|
||||
$B%k$H8F$P$l$k#O#S$N5!G=$,(B C-s $B$rB*$(!"(BEmacs $B$KEO$5$J$$$h$&$K$7$F$$$k$N(B
|
||||
$B$G$9!#$3$l$r2r=|$9$k$K$O(B C-q $B$r%?%$%W$7$^$9!#$=$l$+$i(B Emacs $B%^%K%e%"%k(B
|
||||
$B$N(B "Spontaneous Entry to Incremental Search ($BCN$i$L4V$K%$%s%/%j%a%s%?(B
|
||||
$B%k%5!<%A$K$J$k(B)" $B$N@a$rFI$s$G$/$@$5$$!#$3$N$d$C$+$$$J#O#S$N5!G=$K$I$&(B
|
||||
$BBP=h$9$l$PNI$$$+$,:\$C$F$$$^$9!#(B
|
||||
|
||||
$B%$%s%/%j%a%s%?%k8!:w$NESCf$G(B <Delete> $B$rBG$D$H8!:wJ8;zNsCf$N#1HV8e$m$N(B
|
||||
$BJ8;z$,>C$($^$9!#$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"(B
|
||||
"c" $B$H%?%$%W$7$F:G=i$N(B "c" $B$rC5$7$^$9!#$=$l$+$i(B "u" $B$rBG$D$H:G=i$N(B
|
||||
"cu" $B$N>l=j$K%+!<%=%k$,F0$-$^$9!#$=$3$G(B <Delete> $B$rBG$D$H(B "u" $B$r8!:wJ8(B
|
||||
$B;zNs$+$i>C$7$F!"%+!<%9%k$O:G=i$K(B "c" $B$,8=$l$?>l=j$KLa$j$^$9!#(B
|
||||
|
||||
|
||||
C-s $B$O!"8=:_$N%+!<%=%k0LCV0J9_$K=P$F$/$k8!:wJ8;zNs$rC5$7;O$a$^$9!#$b$7!"(B
|
||||
$BJ8>O$NA0$NJ}$rC5$7$?$+$C$?$i!"(BC-r $B$r%?%$%W$7$^$9!#$3$l$^$G$N(B C-s $B$K$D(B
|
||||
$B$$$F$N@bL@$O$9$Y$F(B C-r $B$K$bEv$F$O$^$j$^$9!#8!:w$NJ}8~$,H?BP$J$@$1$G$9!#(B
|
||||
|
||||
$B!vJ#?t$N%&%#%s%I%&(B
|
||||
==================
|
||||
|
||||
Emacs $B$NAGE($J5!G=$N0l$D$H$7$F!"0l$D$N2hLL$KF1;~$K$$$/$D$b$N%&%#%s%I%&(B
|
||||
$B$rI=<($9$k$3$H$,$G$-$^$9!#(B
|
||||
|
||||
>> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F(B C-u 0 C-l $B$H%?%$%W$7$F2<$5$$!#(B
|
||||
|
||||
>> $B$=$l$+$i(B C-x 2 $B$H%?%$%W$72hLL$r#2$D$N%&%#%s%I%&$KJ,3d$7$^$7$g$&!#(B
|
||||
$B$I$A$i$N%&%#%s%I%&$b$3$NF~Lg%,%$%I$rI=<($7$F$$$^$9!#%+!<%=%k$O>e$N(B
|
||||
$B%&%#%s%I%&$K$"$j$^$9!#(B
|
||||
|
||||
>> C-M-v $B$H%?%$%W$72<$N%&%#%s%I%&$r%9%/%m!<%k$5$;$^$7$g$&!#(B
|
||||
$B!J%a%?%-!<$,$J$$>l9g$O(B ESC C-v $B$H%?%$%W$7$^$9!#!K(B
|
||||
|
||||
>> C-x o $B!J(B"o" $B$O(B "other$B!JB>J}!K(B" $B$r0UL#$7$^$9!K$r%?%$%W$72<$N%&%#%s%I(B
|
||||
$B%&$K%+!<%=%k$r0\$7$F2<$5$$!#(B
|
||||
>> $B2<$N%&%#%s%I%&$G(B C-v $B$d(B M-v $B$r;H$C$F%9%/%m!<%k$5$;$^$7$g$&!#(B
|
||||
$B$3$3$K=q$$$F$"$k;X<($O>e$N%&%#%s%I%&$GFI$_?J$s$G$/$@$5$$!#(B
|
||||
|
||||
>> $B$b$&0lEY(B C-x o $B$H%?%$%W$7!"%+!<%=%k$r>e$N%&%#%s%I%&$KLa$7$^$9!#(B
|
||||
$B%+!<%=%k$O>e$N%&%#%s%I%&$N85$"$C$?0LCV$KLa$j$^$9!#(B
|
||||
|
||||
C-x o $B$r;H$C$F%&%#%s%I%&4V$r9T$C$?$jMh$?$j$G$-$^$9!#3F%&%#%s%I%&$O$=$l(B
|
||||
$B<+?H$N%+!<%=%k0LCV$rJ];}$7$F$$$^$9$,!"0lEY$K$O0l$D$N%&%#%s%I%&$@$1$,%+!<(B
|
||||
$B%=%k$rI=<($7$^$9!#DL>o$NJT=8%3%^%s%I$O3'%+!<%=%k$,$"$k%&%#%s%I%&$KBP$7(B
|
||||
$B$FF/$-$^$9!#$=$N%&%#%s%I%&$r(B "selected window ($BA*BrCf$N%&%#%s%I%&(B)" $B$H(B
|
||||
$B8F$S$^$9!#(B
|
||||
|
||||
C-M-v $B%3%^%s%I$O!"0l$D$N%&%#%s%I%&$GJ8>O$rJT=8Cf$KB>$N%&%#%s%I%&$r;2>H(B
|
||||
$B$7$F$$$k;~$KLrN)$A$^$9!#JT=8Cf$N>l=j$K%+!<%=%k$rJ]$C$?$^$^!"(BC-M-v $B$GB>(B
|
||||
$B$N%&%#%s%I%&$rFI$_?J$a$F9T$/$3$H$,$G$-$^$9!#(B
|
||||
|
||||
C-M-v $B$O%3%s%H%m!<%k%a%?J8;z$N0lNc$G$9!#%a%?%-!<$,$"$k>l9g$O!"%3%s%H%m!<(B
|
||||
$B%k%-!<$H%a%?%-!<$r2!$7$J$,$i(B v $B$r%?%$%W$7$^$9!#%3%s%H%m!<%k%-!<$H%a%?(B
|
||||
$B%-!<$O$I$A$i$r@h$K2!$7$F$b9=$$$^$;$s!#$I$A$i$b$=$N8e$K%?%$%W$5$l$kJ8;z(B
|
||||
$B$KBP$9$k=$>~%-!<(B (modifier key) $B$H$7$FF/$/$+$i$G$9!#(B
|
||||
|
||||
$B%a%?%-!<$,L5$$>l9g!"(BESC $B%-!<$r;H$$$^$9$,!"$3$N>l9g=gHV$,Bg;v$G$9!#$^$:(B
|
||||
ESC $B$r2!$7$F$+$iN%$7$F(B C-v $B$rBG$A$^$9!#(BC-ESC v $B$G$OBLL\$G$9!#$3$l$O(B
|
||||
ESC $B$O$=$l<+BN$,0l$D$NJ8;z$G=$>~%-!<$G$O$J$$$+$i$G$9!#(B
|
||||
|
||||
>> $B>e$N%&%#%s%I%&$G(B C-x 1 $B$H%?%$%W$72<$N%&%#%s%I%&$r>C$7$^$7$g$&(B
|
||||
|
||||
$B!J$b$72<$N%&%#%s%I%&$G(B C-x 1 $B$H%?%$%W$9$k$H>e$N%&%#%s%I%&$,>C$($^$9!#(B
|
||||
$B$3$N%3%^%s%I$O!V8=:_<+J,$,$$$k%&%#%s%I%&$@$1$K$7$J$5$$!W$H$$$&$b$N$@$H(B
|
||||
$B;W$C$F2<$5$$!#!K(B
|
||||
|
||||
$BF1$8%P%C%U%!$rN>J}$N%&%#%s%I%&$KI=<($9$kI,MW$O$"$j$^$;$s!#0lJ}$N%&%#%s(B
|
||||
$B%I%&$G(B C-x C-f $B$G%U%!%$%k$r3+$$$F$bB>J}$N%&%#%s%I%&$OJQ2=$7$^$;$s!#3F(B
|
||||
$B%&%#%s%I%&$K$*$$$FJL!9$N%U%!%$%k$r3+$/$3$H$,$G$-$k$N$G$9!#(B
|
||||
|
||||
>> C-x 4 C-f $B$H%?%$%W$7B3$1$F2?$+<+J,$N%U%!%$%kL>$rF~NO$7$F2<$5$$!#(B
|
||||
<Return> $B$GF~NO$r=*$o$i$;$F2<$5$$!#:#;XDj$7$?%U%!%$%k$,2<$N%&%#%s%I(B
|
||||
$B%&$K8=$l$^$9!#%+!<%=%k$b$=$C$A$K0\$j$^$9!#(B
|
||||
|
||||
>> C-x o $B$H%?%$%W$7>e$N%&%#%s%I%&$KLa$C$F2<$5$$!#$=$l$+$i(B C-x 1 $B$G2<$N(B
|
||||
$B%&%#%s%I%&$r>C$7$^$7$g$&!#(B
|
||||
|
||||
|
||||
$B!v:F5"JT=8%l%Y%k(B (RECURSIVE EDITING LEVELS)
|
||||
|
||||
$B;~!9!JITK\0U$K!K:F5"JT=8%l%Y%k$H8F$P$l$k>uBV$KF~$k$3$H$,$"$j$^$9!#%b!<(B
|
||||
$B%I%i%$%s$N%a%8%c!<%b!<%IL>$r0O$`4]3g8L(B "()" $B$,$5$i$Knl3g8L(B "[]" $B$G0O$^(B
|
||||
$B$l$^$9!#Nc$($P!"(B(Fundamental) $B$HI=<($5$l$kBe$o$j$K(B [(Fundamental)] $B$N(B
|
||||
$B$h$&$K$J$j$^$9!#(B
|
||||
|
||||
$B:F5"JT=8%l%Y%k$+$iH4$1=P$9$K$O(B ESC ESC ESC $B$H%?%$%W$7$^$9!#$3$l$OHFMQ(B
|
||||
$B!VH4$1=P$7!W%3%^%s%I$G$9!#M>J,$J%&%#%s%I%&$r>C$7$?$j!"%_%K%P%C%U%!$+$i(B
|
||||
$BH4$1$?$j$9$k$N$K$b;H$($^$9!#(B
|
||||
|
||||
|
||||
>> M-x $B$H%?%$%W$7%_%K%P%C%U%!$KF~$C$F2<$5$$!#$=$l$+$i(B ESC ESC ESC $B$H%?(B
|
||||
$B%$%W$7H4$1=P$7$F$_$^$7$g$&!#(B
|
||||
|
||||
C-g $B$G$O:F5"JT=8%l%Y%k$+$i$OH4$1=P$;$^$;$s!#$3$l$O!"(BC-g $B$,:F5"JT=8%l%Y(B
|
||||
$B%kFb$G$N%3%^%s%I$d0z?t$r<h$j>C$9$N$K;H$o$l$F$$$k$+$i$G$9!#(B
|
||||
|
||||
|
||||
$B!v$b$C$H$b$C$H%X%k%W(B
|
||||
====================
|
||||
|
||||
$B$3$NF~Lg%,%$%I$G$O(B Emacs $B$r;H$$;O$a$k$N$K==J,$J>pJs$rDs6!$7$?$D$b$j$G(B
|
||||
$B$9!#(BEmacs $B$K$O$"$^$j$K$bB?$/$N5!G=$,$"$k$N$G!"$3$3$G$9$Y$F$r@bL@$9$k$N(B
|
||||
$B$OL5M}$G$9!#$=$l$G$bLr$KN)$D5!G=$r$b$C$HB?$/3X$S$?$$$H;W$&?M$N$?$a$K$O!"(B
|
||||
Emacs $B$N%3%^%s%I$N@bL@$rFI$`$?$a$N%3%^%s%I$,$"$j$^$9!#$3$l$i$N!V%X%k%W!W(B
|
||||
$B%3%^%s%I$O3'(B Control-h $BJ8;z!J%X%k%WJ8;z$H8F$S$^$9!K$G;O$^$j$^$9!#(B
|
||||
|
||||
$B%X%k%W5!G=$r;H$&$K$O!"(BC-h $B$KB3$$$F$I$s$J<oN`$N%X%k%W$,I,MW$+$r<($9#1J8(B
|
||||
$B;z$r%?%$%W$7$^$9!#$b$7$=$l$9$iJ,$i$J$$>l9g$O(B C-h ? $B$H%?%$%W$7$^$7$g$&!#(B
|
||||
$B$I$s$J<oN`$N%X%k%W$rDs6!$G$-$k$+$,<($5$l$^$9!#$b$7!"(BC-h $B$r%?%$%W$7$F$+(B
|
||||
$B$i5$$,JQ$o$C$?$i!"(BC-g $B$r%?%$%W$7$F<h$j>C$9$3$H$,$G$-$^$9!#(B
|
||||
|
||||
$B!J%5%$%H$K$h$C$F$O(B C-h $BJ8;z$N0UL#$rJQ99$7$F$$$k$+$b$7$l$^$;$s!#%f!<%6(B
|
||||
$BA40w$KBP$9$kAm3gE*$J<jCJ$H$7$F$=$s$J$3$H$r$9$k$Y$-$G$O$"$j$^$;$s!#$=$&(B
|
||||
$B$$$&>l9g$O%7%9%F%`4IM}<T$KJ86g$r8@$$$^$7$g$&!#$^!"$H$b$+$/!"$b$7(B C-h
|
||||
$B$,2hLL$N2<$NJ}$K%X%k%W$N%a%C%;!<%8$r=P$5$J$1$l$P!"(BF1 $B%-!<$+(B M-x help
|
||||
<Return> $B$r;n$7$F$_$F2<$5$$!#!K(B
|
||||
|
||||
$B:G$b4pK\E*$J%X%k%W5!G=$O(B C-h c $B$G$9!#(BC-h$B!"$=$l$+$i(B c$B!"$=$7$F%3%^%s%I$N(B
|
||||
$BJ8;z<c$7$/$O$=$N%7!<%1%s%9$r%?%$%W$9$k$H!"$=$N%3%^%s%I$K$D$$$F$NC;$$@b(B
|
||||
$BL@$rI=<($7$^$9!#(B
|
||||
|
||||
>> C-h c Control-p $B$H%?%$%W$7$F$_$^$7$g$&!#(B
|
||||
$B0J2<$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#(B
|
||||
|
||||
C-p runs the command previous-line
|
||||
|
||||
$B$3$l$O!V%U%!%s%/%7%g%s$NL>A0!W$rI=<($7$?$N$G$9!#%U%!%s%/%7%g%sL>$O<g$K(B
|
||||
Emacs $B$r%+%9%?%^%$%:$7$?$j3HD%$7$?$j$9$k$N$K;H$o$l$^$9!#$7$+$7!"%U%!%s(B
|
||||
$B%/%7%g%sL>$O$=$N%3%^%s%I$,2?$r$9$k$b$N$J$N$+$,J,$k$h$&$KIU$1$i$l$^$9$N(B
|
||||
$B$G!"4JC1$J@bL@$H$7$F$b$=$N$^$^Lr$KN)$A$^$9!#0lEY3X$s$@%3%^%s%I$K$D$$$F(B
|
||||
$B;W$$=P$9$K$O==J,$G$9!#(B
|
||||
|
||||
C-x C-s $B$d!J%a%?%-!<$d%"%k%H%-!<$,$J$$>l9g$N!K(B <ESC> v $B$J$I$NJ#?tJ8;z(B
|
||||
$B$N%3%^%s%I$r(B C-h c $B$N8e$K%?%$%W$9$k$3$H$b$G$-$^$9!#(B
|
||||
|
||||
$B%3%^%s%I$K$D$$$F$b$C$HB?$/$N>pJs$,M_$7$1$l$P(B C-h c $B$NBe$o$j$K(B C-h k $B$r(B
|
||||
$B;H$$$^$9!#(B
|
||||
|
||||
>> C-h k Control-p $B$H%?%$%W$7$F$_$^$7$g$&!#(B
|
||||
|
||||
Emacs$B$N%&%#%s%I%&$K!"%3%^%s%I$NL>A0$HF1;~$K$=$N5!G=$N@bL@$,I=<($5$l$^(B
|
||||
$B$9!#FI$_=*$($?$i!"(BC-x 1 $B$H%?%$%W$7$F%X%k%W$N%F%-%9%H$r>C$7$^$7$g$&!#I,(B
|
||||
$B$:$7$b$9$0$K$=$&$9$kI,MW$O$"$j$^$;$s!#%X%k%W%F%-%9%H$r8+$J$,$iJT=8$rB3(B
|
||||
$B$1!"$=$l$+$i(B C-x 1 $B$H%?%$%W$7$F$b9=$$$^$;$s!#(B
|
||||
|
||||
C-h $B$K$OB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#(B
|
||||
|
||||
C-h f $B%U%!%s%/%7%g%s$N@bL@!#%U%!%s%/%7%g%sL>$rF~NO$7$^$9!#(B
|
||||
|
||||
>> C-h f previous-line<Return> $B$H%?%$%W$7$F$_$^$7$g$&!#(B
|
||||
C-p $B%3%^%s%I$r<B9T$9$k%U%!%s%/%7%g%s$K$D$$$F$N$9$Y$F$N>pJs$rI=<($7(B
|
||||
$B$^$9!#(B
|
||||
|
||||
C-h a $B%3%^%s%I%"%W%m%]%9(B (command apropos)$B!#%-!<%o!<%I$rF~NO(B
|
||||
$B$9$k$H!"$=$N%-!<%o!<%I$rL>A0$K4^$`A4$F$N%3%^%s%I$r%j%9(B
|
||||
$B%H%"%C%W$7$^$9!#$3$l$i$N%3%^%s%I$OA4$F(B M-x $B$G<B9T$G$-(B
|
||||
$B$^$9!#%3%^%s%I$K$h$C$F$O!"$=$l$rAv$i$;$k$?$a$N#1J8;z$+(B
|
||||
$B#2J8;z$N%7!<%1!<%s%9$bI=<($5$l$^$9!#(B
|
||||
|
||||
>> C-h a file<Return> $B$H%?%$%W$7$F$_$F2<$5$$!#(B
|
||||
|
||||
"file"$B$H$$$&J8;zNs$rL>A0$N0lIt$K;}$DA4$F$N(B M-x $B%3%^%s%I!J3HD%%3%^%s%I!K(B
|
||||
$B$rJL$N%&%#%s%I%&$KI=<($7$^$9!#(B C-x C-f $B$N$h$&$JJ8;z%3%^%s%I$bBP1~$9$k(B
|
||||
$BL>A0!J(Bfind-file $B$N$h$&$K!K$KJB$s$GI=<($5$l$^$9!#(B
|
||||
|
||||
>> C-M-v $B$H%?%$%W$7%X%k%W$N%&%#%s%I%&$r%9%/%m!<%k$5$;$^$7$g$&!#2?EY$+(B
|
||||
$B$d$C$F2<$5$$!#(B
|
||||
|
||||
>> C-x 1 $B$G%X%k%W%&%#%s%I%&$r>C$7$F2<$5$$!#(B
|
||||
|
||||
|
||||
$B!v$*$o$j$K(B
|
||||
==========
|
||||
|
||||
$BK:$l$J$$$G!*(BEmacs $B$r=*N;$9$k$K$O!"(BC-x C-c $B$G$9!#$^$?(B Emacs $B$KLa$C$FMh(B
|
||||
$B$i$l$k$h$&$K0l;~E*$K%7%'%k$KLa$k$@$1$J$i(B C-z $B$G$9!#(B
|
||||
|
||||
$B$3$NF~Lg%,%$%I$O!"$^$C$?$/$N=i?4<T$K$b$o$+$j$d$9$$$h$&$K$H0U?^$7$F$$$^(B
|
||||
$B$9!#$G$9$+$i!"$b$72?$+$o$+$j$K$/$$E@$,$"$C$?$J$i!"<+J,$r@U$a$J$$$GJ86g(B
|
||||
$B$r$D$1$F2<$5$$!#(B
|
||||
|
||||
|
||||
$B!v$3$NK]LuHG$K$D$$$F$N<U<-(B
|
||||
==========================
|
||||
|
||||
$B$3$NJ8=q$O(B Emacs Ver.20 $BIUB0$N1Q8lHG$NF~Lg%,%$%I$rF|K\8l$KK]Lu$7$?$b$N(B
|
||||
$B$G$9!#$=$N:]!"(BMule $BIUB0$NF|K\8l%,%$%I$r;29M$K$7$^$7$?!#$=$NF|K\8l%,%$(B
|
||||
$B%I$O!"85$O(B SANETO Takanori $B;a$,F|K\8l(B MicroEmacs(kemacs) $BF~LgJT$H$7$F(B
|
||||
$BK]Lu$5$l!"$=$l$rNkLZM5?.;a(B <hironobu@sra.co.jp> $B$,(BNemacs/Mule $BMQ$KJQ99!"(B
|
||||
$B$5$i$K5HEDLP<y;a$,=$@5$5$l$?$b$N$G$9!#$3$l$i$NJ}!9$K?<$/46<U$7$^$9!#(B
|
||||
|
||||
|
||||
$B!vCx:n8"I=<((B
|
||||
============
|
||||
|
||||
$B$3$3$K85$N1Q8lHG$NCx:n8"I=<($r$=$N$^$^IU$1$^$9!#$3$NK]LuHG$b$3$l$K=>$$(B
|
||||
$B$^$9!#(B
|
||||
|
||||
This tutorial descends from a long line of Emacs tutorials
|
||||
starting with the one written by Stuart Cracraft for the original Emacs.
|
||||
|
||||
This version of the tutorial, like GNU Emacs, is copyrighted, and
|
||||
comes with permission to distribute copies on certain conditions:
|
||||
|
||||
Copyright (c) 1985, 1996 Free Software Foundation
|
||||
|
||||
Permission is granted to anyone to make or distribute verbatim copies
|
||||
of this document as received, in any medium, provided that the
|
||||
copyright notice and permission notice are preserved,
|
||||
and that the distributor grants the recipient permission
|
||||
for further redistribution as permitted by this notice.
|
||||
|
||||
Permission is granted to distribute modified versions
|
||||
of this document, or of portions of it,
|
||||
under the above conditions, provided also that they
|
||||
carry prominent notices stating who last altered them.
|
||||
|
||||
The conditions for copying Emacs itself are more complex, but in the
|
||||
same spirit. Please read the file COPYING and then do give copies of
|
||||
GNU Emacs to your friends. Help stamp out software obstructionism
|
||||
("ownership") by using, writing, and sharing free software!
|
||||
|
||||
;;; Local Variables:
|
||||
;;; coding: iso-2022-jp
|
||||
;;; End:
|
978
etc/TUTORIAL.ko
Normal file
978
etc/TUTORIAL.ko
Normal file
|
@ -0,0 +1,978 @@
|
|||
$(C@z@[1G(B (c) 1985 Free Software Foundation, Inc; $(C3!?!4B(B $(C:9;g(B $(CA60G@L(B
|
||||
$(C@V@>4O4Y(B. $(C@P0m(B $(C@V4B(B $(C1[@:(B Emacs $(CAvD'<-@T4O4Y(B.
|
||||
|
||||
Emacs $(C8m7I5i@:(B $(C4k03(B $(CA&>n<h(B(CTRL$(C@L3*(B CTL$(C@L6s0m55(B $(CG%=C(B) $(CH$@:(B
|
||||
META$(C<h(B(EDIT$(C@L3*(B ALT$(C6s0m55(B $(CG%=C(B)$(C8&(B $(C;g?kGU4O4Y(B. $(C@L71(B $(C1[<h8&(B $(C8E9x(B $(C4Y(B
|
||||
$(C>21b(B $(C:84Y4B(B $(C?l8.4B(B $(C4Y@=0z(B $(C00@:(B $(C>`=D(B $(CG%Gv@;(B $(C>21b7N(B $(CGU=C4Y(B:
|
||||
|
||||
C-<$(C9.@Z(B> $(CA&>n<h8&(B $(C4)8%(B $(CC$(B <$(C9.@Z(B> $(C1[<h8&(B $(CD(4O4Y(B. $(CAo(B, C-f$(C4B(B $(CA&>n<h8&(B
|
||||
$(C4)8%(B $(C;sEB?!<-(B f $(C1[<h8&(B $(CD!4B(B $(C0M@;(B $(C8;GU4O4Y(B.
|
||||
M-<$(C9.@Z(B> META$(C<h3*(B EDIT$(C<h(B $(CH$@:(B $(C13C<<h(B(ALT)$(C8&(B $(C4)8%(B $(CC$(B <$(C9.@Z(B> $(C1[<h8&(B
|
||||
$(CD(4O4Y(B. META$(C<h(B, EDIT$(C<h(B $(CH$@:(B $(C13C<<h0!(B $(C>x@88i(B $(C3*?H<h(B(ESC)$(C8&(B
|
||||
$(C4-764Y(B $(C3u@:(B $(CHD(B <$(C9.@Z(B> $(C1[<h8&(B $(CD(4O4Y(B. $(C3*?H<h4B(B <ESC>$(C@L6s0m(B
|
||||
$(C>21b7N(B $(CGU4O4Y(B.
|
||||
|
||||
$(C@/@G(B: C-x C-c$(C8&(B $(CD!8i(B Emacs$(C8&(B $(CA>7aGR(B $(C<v(B $(C@V@>4O4Y(B. ($(C5N(B $(C9.@Z(B.)
|
||||
$(C?^BJ(B $(CGQ0h(B(margin)$(C?!(B $(C@V4B(B $(C9.@Z(B ">>"$(C4B(B $(C56@Z0!(B $(C8m7I@;(B $(C=GG`GX(B $(C:8557O(B
|
||||
$(CGO0m@Z(B $(CGT@;(B $(CAv=CGU4O4Y(B. $(C?98&(B $(C5i>n(B:
|
||||
<<help-with-tutorial$(C@L(B $(C=C@[GO8i<-(B $(C?)1b?!(B $(C:s(B $(CAY@L(B $(C3"?vA3@=(B>>
|
||||
>> $(C4Y@=(B $(CH-8i@87N(B $(C?rAw@L1b(B $(C@'GX<-4B(B C-v ($(C4Y@=(B $(CH-8i(B $(C:81b(B)$(C8&(B $(CD(4O4Y(B.
|
||||
($(CGX(B $(C:8=J=C?@(B. $(CA&>nE08&(B $(C4)8%(B $(CC$(B v $(C1[<h8&(B $(CD!8i(B $(C5K4O4Y(B.)
|
||||
$(CAv1]:NEM4B(B $(CGQ(B $(CH-8i@;(B $(C4Y(B $(C@P>z@;(B $(C6'864Y(B $(C@L780T(B $(CGX>_(B $(CGU4O4Y(B.
|
||||
|
||||
$(CGQ(B $(CH-8i?!<-(B $(C4Y8%(B $(CH-8i@87N(B $(C?rAw@O(B $(C6'(B $(C5N(B $(CAY@L(B $(C0cD#4Y4B(B $(C0M@;(B
|
||||
$(C@/@GGO=J=C?@(B; $(C@L4B(B $(CGQ(B $(C9.@e@;(B $(C0h<SGX<-(B $(C@P@;(B $(C<v(B $(C@V557O(B $(CGO1b(B
|
||||
$(C@'GT@T4O4Y(B.
|
||||
|
||||
$(CC99xB07N(B $(C@MGt>_(B $(CGO4B(B $(C0M@:(B $(C9.@e@G(B $(CGQ(B $(C0w?!<-(B $(C4Y8%(B $(C0w@87N(B $(C?rAw@L4B(B
|
||||
$(C0M@T4O4Y(B. C-v$(C7N(B $(CGQ(B $(CH-8i@;(B $(C>UBJ@87N(B $(C?rAw@L4B(B $(C0M@:(B $(C@L9L(B $(C>K0m(B $(C@V@>4O4Y(B.
|
||||
$(C5^BJ@87N(B $(CGQ(B $(CH-8i@;(B $(C?rAw@L1b(B $(C@'GX<-4B(B M-v$(C8&(B (META$(C<h8&(B $(C4)8%C$(B v $(C1[<h8&(B
|
||||
$(CD!0E3*(B, META$(C<h3*(B EDIT$(C<h(B, $(CH$@:(B $(C13C<<h0!(B $(C>x@;(B $(C0f?l(B <ESC>v$(C8&(B $(CD(4O4Y(B).
|
||||
|
||||
>> $(C8n(B $(C9x(B M-v$(C?M(B C-v$(C8&(B $(C9x0%>F(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
|
||||
* $(C?d>`(B
|
||||
------
|
||||
|
||||
$(C4Y@=@:(B $(C@|C<H-8i@;(B $(C:84B5%(B $(C@/?kGQ(B $(C8m7I5i@T4O4Y(B:
|
||||
|
||||
C-v $(CGQ(B $(C@|C<(B $(CH-8i@;(B $(C>UBJ@87N(B $(C?rAw@N4Y(B
|
||||
ESC v $(CGQ(B $(C@|C<(B $(CH-8i@;(B $(C5^BJ@87N(B $(C?rAw@N4Y(B
|
||||
C-l $(CH-8i@;(B $(CAv?l0m(B $(C8p5g(B $(C1[?y@;(B $(C4Y=C(B $(CH-8i(B $(CG%=CGO8i<-(B
|
||||
$(C1t:}@L0!(B $(C@V4B(B $(C1[?y@;(B $(CH-8i@G(B $(CA_>S?!(B $(C?@0T(B $(CGQ4Y(B.
|
||||
($(CA&>n<h(B-1$(C@L(B $(C>F4O6s(B $(CA&>n<h(B-L$(C@T4O4Y(B.)
|
||||
|
||||
>> $(C1t9Z@L8&(B $(CC#>F<-(B $(C1W(B $(C0w@G(B $(C1[?y@;(B $(C1b>oGO=J=C?@(B.
|
||||
$(C1W8.0m4B(B C-l$(C@;(B $(CD!=J=C?@(B.
|
||||
$(C1t9Z@L8&(B $(C4Y=C(B $(CC#>F<-(B $(C00@:(B $(C1[?y@L(B $(C1t9Z@L@G(B $(C1YC3?!(B $(C@V4B0!8&(B
|
||||
$(CH.@NGO=J=C?@(B.
|
||||
|
||||
|
||||
* $(C1b:;@{@N(B $(C1t9Z@L@G(B $(CA&>n(B
|
||||
------------------------
|
||||
|
||||
$(CGQ(B $(CH-8i@;(B $(C?rAw@L4B(B $(C0M@:(B $(C@/?kGU4O4Y88(B $(CH-8i@G(B $(CGQ(B $(C1[?y3;?!<-(B $(C>n6;0T(B
|
||||
$(CA$GXAx(B $(C@e<R7N(B $(C?rAw@O(B $(C<v(B $(C@V0Z@>4O1n(B?
|
||||
|
||||
$(C@L?!4B(B $(C8n0!Av(B $(C9f9}@L(B $(C@V@>4O4Y(B. $(C0!@e(B $(C1Y:;@{@N(B $(C9f9}@:(B C-p, C-b, C-f
|
||||
$(C1W8.0m(B C-n $(C8m7I@;(B $(C;g?kGO4B(B $(C0M@T4O4Y(B. $(C0"0"@:(B $(CH-8i?!<-(B $(CA$GXAx(B $(C9fGb@87N(B
|
||||
$(CGO3*@G(B $(C0!7ND-@L3*(B $(CGO3*@G(B $(C<<7ND->?(B $(C1t9Z@L8&(B $(C?rAw@T4O4Y(B.
|
||||
$(C?)1b?!(B $(C@L(B $(C3W0!Av(B $(C8m7I5i0z(B $(C1W(B $(C?rAw@L4B(B $(C9fGb@;(B $(C:8?)AV4B(B $(CG%0!(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C5^(B $(CAY(B, C-p
|
||||
:
|
||||
:
|
||||
$(C5^BJ@87N(B, C-b .... $(CGv@g@G(B $(C1t9Z@L(B $(C@'D!(B .... $(C>UBJ@87N(B, C-f
|
||||
:
|
||||
:
|
||||
$(C>U(B $(CAY(B, C-n
|
||||
|
||||
>> C-n$(C@L3*(B C-p$(C8&(B $(C=a<-(B $(C1t9Z@L8&(B $(C@'(B $(C55G%@G(B $(C0!?n5%(B $(CAY7N(B $(C?rAw@L=J=C?@(B.
|
||||
$(C1W8.0m4B(B C-l$(C@;(B $(CCD<-(B $(C@L(B $(C55G%0!(B $(CH-8i@G(B $(CA_>S?!(B $(C@'D!GO4BAv8&(B
|
||||
$(CH.@NGO=J=C?@(B.
|
||||
|
||||
$(C@L(B $(C8m7I5i@:(B $(C1[@Z7N(B $(C1b>oGO4B(B $(C0M@L(B $(C=,?o(B $(C0M@T4O4Y(B: P$(C4B(B previous, N$(C@:(B
|
||||
next, B$(C4B(B backward, F$(C4B(B forward. $(C@L5i@:(B $(C1b:;@{@N(B $(C1t9Z@L(B $(C@L5?(B
|
||||
$(C8m7I@87N<-(B, $(CGW;s(B $(C;g?kGO0T(B $(C5I(B $(C0M@L9G7N(B $(CAv1](B $(C4g@e(B $(C8S8.(B $(C<S?!(B $(C@MGt(B $(C5N4B(B
|
||||
$(C0M@L(B $(CAA@>4O4Y(B.
|
||||
|
||||
>> C-n$(C@;(B $(C?)7/9x(B $(CCD<-(B $(C1t9Z@L8&(B $(C@L(B $(CAY7N(B $(C0!A.(B $(C?@=J=C?@(B.
|
||||
|
||||
>> C-f$(C8&(B $(CCD<-(B $(CAY(B $(C>H?!<-(B $(C@L5?GX(B $(C:80m(B C-p$(C7N(B $(C5^(B $(CAY7N(B $(C0!=J=C?@(B.
|
||||
$(C1t9Z@L0!(B $(CAY@G(B $(CA_0#?!(B $(C@V@;(B $(C6'(B C-p$(C0!(B $(C>n62(B $(C@[?k@;(B $(CGO4B0!(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C0"0"@G(B $(CAY@:(B $(C4Y@=?!(B $(C@L>nAv4B(B $(CAY0z(B $(C:P8.GO4B(B $(C;uAY(B $(C9.@Z7N(B $(C3!334O4Y(B.
|
||||
$(CFD@O@G(B $(C86Av87(B $(CAY@:(B $(C3!?!(B $(C;uAY(B $(C9.@Z0!(B $(C@V>n>_(B $(CGU4O4Y(B ($(C1W7/3*(B Emacs$(C4B(B $(C@L8&(B
|
||||
$(C?d18GOAv(B $(C>J@>4O4Y(B).
|
||||
|
||||
>> $(CAY@L(B $(C=C@[GO4B(B $(C0w?!<-(B C-b$(C8&(B $(CCD(B $(C:8=J=C?@(B. $(C1t9Z@L0!(B $(C5^(B $(CAY@G(B $(C3!@87N(B
|
||||
$(C?rAw?)>_(B $(CGU4O4Y(B. $(C1W(B $(C@L@/4B(B $(C1t9Z@L0!(B $(C;uAY(B $(C9.@Z8&(B $(C3Q>n<-(B $(C5^BJ@87N(B
|
||||
$(C?rAw@L1b(B $(C6'9.@T4O4Y(B.
|
||||
|
||||
C-f$(C55(B C-b$(CC373(B $(C;uAY(B $(C9.@Z8&(B $(C3Q>n<-(B $(C@L5?GR(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> C-b$(C8&(B $(C8n(B $(C9x(B $(C4u(B $(CCD<-(B $(C1t9Z@L0!(B $(C>n5p(B $(C@V4B0!8&(B $(C:80m(B C-f$(C7N(B $(C4Y=C(B $(CAY@G(B
|
||||
$(C3!1nAv(B $(C@L5?GO=J=C?@(B.
|
||||
$(C1W(B $(C4Y@=?!(B C-f$(C7N(B $(C4Y@=(B $(CAY7N(B $(C@L5?GO=J=C?@(B.
|
||||
|
||||
$(CH-8i@G(B $(C2@4k1b3*(B $(C9X9Y4Z@;(B $(CAv3*CD<-(B $(C@L5?GO8i(B $(C0!@e@Z8.8&(B $(C9~>n3-(B $(C1[?y@:(B
|
||||
$(CH-8i(B $(C>H@87N(B $(C9P7A(B $(C5i>n(B $(C?I4O4Y(B. $(C@L0M@;(B "$(C5N7g8;1b(B(scrolling)"$(C6s0m(B
|
||||
$(CGU4O4Y(B. $(C@L4B(B Emacs$(C0!(B $(C1t9Z@L8&(B $(CH-8i(B $(C9[@87N(B $(C3;:83;Av(B $(C>J0m(B $(C1[?y@G(B $(CA$GXAx(B
|
||||
$(C@e<R7N(B $(C?rAw@O(B $(C<v(B $(C@V557O(B $(CGU4O4Y(B.
|
||||
|
||||
>> C-n$(C@87N(B $(C1t9Z@L8&(B $(CH-8i@G(B $(C9X9Y4Z(B $(C>F7!7N(B $(C?rAw?)<-(B, $(C>n62(B $(C@O@L(B
|
||||
$(C9_;}GO4B0!8&(B $(C:8=J=C?@(B.
|
||||
|
||||
$(CGQ(B $(C9.@Z>?(B $(C@L5?GO4B(B $(C0M@L(B $(C4@8.8i(B, $(CGQ(B $(C398;>?(B $(C?rAw@O(B $(C<v(B $(C@V@>4O4Y(B. M-f
|
||||
(Meta-f)$(C4B(B $(CGQ(B $(C398;>?(B $(C>UBJ@87N(B, M-b$(C4B(B $(CGQ(B $(C398;>?(B $(C5^BJ@87N(B $(C?rAw@T4O4Y(B.
|
||||
|
||||
>> M-f$(C3*(B M-b$(C8&(B $(C8n(B $(C9x(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C398;@G(B $(CA_0#?!<-4B(B $(C398;@G(B $(C3!@87N(B $(C?rAw@T4O4Y(B. $(C398;(B $(C;g@L@G(B $(C0x0#(B
|
||||
$(C9.@Z?!<-4B(B M-f$(C0!(B $(C4Y@=(B $(C398;@G(B $(C3!@87N(B $(C?rAw@T4O4Y(B. M-b$(C4B(B $(C9]4k(B $(C9fGb@87N(B
|
||||
$(C00@:(B $(C@[?k@;(B $(CGU4O4Y(B.
|
||||
|
||||
>> $(CA_0#(B $(CA_0#?!(B C-f$(C?M(B C-b$(C8&(B $(CD!8i<-(B M-f$(C?M(B M-b$(C8&(B $(C8n(B $(C9x(B
|
||||
$(C?,=@GO=J=C?@(B. $(C1W7/8i(B $(C398;@G(B $(C3;:N3*(B $(C;g@L?!<-(B M-f$(C?M(B M-b$(C0!(B $(C>n62(B
|
||||
$(C@[?k@;(B $(CGO4B0!8&(B $(C:<(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
C-f$(C?M(B C-b, M-f$(C?M(B M-b$(C@G(B $(C@/;g<:?!(B $(C@/@GGO=J=C?@(B. $(C4k:N:P(B Meta $(C9.@Z4B(B
|
||||
$(C>p>n0!(B $(CA$@GGO4B(B $(C4\@'(B($(C398;(B, $(C9.@e(B, $(C4\6t(B)$(C@G(B $(C@[5??!(B $(C;g?k5G0m(B $(CA&>n(B
|
||||
$(C9.@Z4B(B $(CFmA}GO4B(B $(C0M0z4B(B $(C0|0h>x4B(B $(C1b:;(B $(C4\@'(B($(C9.@Z(B, $(CAY(B $(C5n5n(B)$(C?!(B
|
||||
$(C@[5?GU4O4Y(B.
|
||||
|
||||
$(C4Y@=@:(B $(CAY0z(B $(C9.@e(B $(C;g@L?!(B $(C@{?k5G4B(B $(C@/;g<:@T4O4Y(B: C-a$(C?M(B C-e$(C4B(B $(CAY@G(B
|
||||
$(C=C@[@L3*(B $(C3!@87N(B $(C?rAw@L0m(B, M-a$(C?M(B M-e$(C4B(B $(C9.@e@G(B $(C=C@[@L3*(B $(C3!@87N(B
|
||||
$(C?rAw@T4O4Y(B.
|
||||
|
||||
>> C-a$(C8&(B $(C5N<<9x(B $(CD#(B $(CHD(B C-e$(C8&(B $(C5N<<9x(B $(CCD(B $(C:8=J=C?@(B.
|
||||
M-a$(C8&(B $(C5N<<9x(B $(CD#(B $(CHD(B M-e$(C8&(B $(C5N<<9x(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
C-a$(C4B(B $(C5N(B $(C9x(B $(C@L;s(B $(C9]:9GX55(B $(C>F9+71(B $(C@[?k@;(B $(CGOAv(B $(C>JAv88(B M-a$(C4B(B $(CGQ(B $(C9.@e@;(B
|
||||
$(C4u(B $(C5Z7N(B $(C?rAw@L4B(B $(C0M?!(B $(C@/@GGO=J=C?@(B. $(C@L4B(B $(C:q7O(B $(C@/;g<:@:(B $(C>F4OAv88(B
|
||||
$(C4g?,GQ(B $(C;g=G7N(B $(C?)0\A}4O4Y(B.
|
||||
|
||||
$(C9.<-?!(B $(C@V4B(B $(C1t9Z@L@G(B $(C@'D!4B(B "$(CA!(B(point)"$(C@L6s0m(B $(C:N8(4O4Y(B. $(C:N?,GO@Z8i(B,
|
||||
$(C1t9Z@L4B(B $(CH-8i;s?!<-(B, $(C9.<-(B $(C3;?!(B $(CA!@L(B $(C>n5p?!(B $(C@'D!GO0m(B $(C@V4B0!8&(B
|
||||
$(C:8?)A]4O4Y(B.
|
||||
|
||||
$(C4Y@=@:(B $(C398;0z(B $(C9.@e(B $(C4\@'@G(B $(C@L5?@;(B $(CFwGTGQ(B $(C4\<xGQ(B $(C1t9Z@L(B $(C@L5?(B $(C@[5?@;(B
|
||||
$(C?d>`GO?4@>4O4Y(B.
|
||||
|
||||
C-f $(CGQ(B $(C9.@Z(B $(C>UBJ@87N(B $(C?rAw@N4Y(B
|
||||
C-b $(CGQ(B $(C9.@Z(B $(C5^BJ@87N(B $(C?rAw@N4Y(B
|
||||
|
||||
M-f $(CGQ(B $(C4\>n(B $(C>UBJ@87N(B $(C?rAw@N4Y(B
|
||||
M-b $(CGQ(B $(C4\>n(B $(C5^BJ@87N(B $(C?rAw@N4Y(B
|
||||
|
||||
C-n $(C>U(B $(CAY7N(B $(C?rAw@N4Y(B
|
||||
C-p $(C5^(B $(CAY7N(B $(C?rAw@N4Y(B
|
||||
|
||||
C-a $(CAY@G(B $(C=C@[@87N(B $(C?rAw@N4Y(B
|
||||
C-e $(CAY@G(B $(C3!@87N(B $(C?rAw@N4Y(B
|
||||
|
||||
M-a $(C9.@e@G(B $(C=C@[@87N(B $(C?rAw@N4Y(B
|
||||
M-e $(C9.@e@G(B $(C3!@87N(B $(C?rAw@N4Y(B
|
||||
|
||||
>> $(C@L(B $(C8p5g(B $(C8m7I@;(B $(C8n(B $(C9x(B $(C?,=@GX(B $(C:8=J=C?@(B. $(C@L(B $(C8m7I5i@:(B $(C0!@e(B $(C@ZAV(B
|
||||
$(C;g?k5G4B(B $(C8m7I5i@T4O4Y(B.
|
||||
|
||||
$(C1t9Z@L8&(B $(C?rAw@L4B(B $(C4Y8%(B $(C5N0!Av(B $(CA_?dGQ(B $(C8m7I@:(B $(C@|(B $(C9.<-@G(B $(C=C@[@87N(B
|
||||
$(C?rAw@L4B(B M-< (Meta$(C<h(B $(C4u@[@=(B $(C1[<h(B)$(C?M(B $(C@|(B $(C9.<-@G(B $(C3!@87N(B $(C?rAw@L4B(B M->
|
||||
(Meta$(C<h(B $(C4uE-(B $(C1[<h(B)$(C@T4O4Y(B.
|
||||
|
||||
>> M-<$(C8&(B $(CAv1](B $(CCD<-(B $(CAvD'<-@G(B $(C=C@[@87N(B $(C?rAw?)(B $(C:8=J=C?@(B. $(C1W8.0m4B(B C-v$(C8&(B
|
||||
$(C9]:9GX<-(B $(C4Y=C(B $(C?)1b7N(B $(C59>F(B $(C?@=J=C?@(B.
|
||||
|
||||
>> M->$(C8&(B $(CCD<-(B $(CAvD'<-@G(B $(C3!@87N(B $(C0!=J=C?@(B. $(C1W8.0m4B(B M-v$(C8&(B $(C9]:9GX<-(B $(C4Y=C(B
|
||||
$(C?)1b7N(B $(C59>F(B $(C?@=J=C?@(B.
|
||||
|
||||
$(C4\8;1b?!(B $(CH-;lG%(B $(C1[<h0!(B $(C@V@88i(B $(CH-;lG%(B $(C1[<h8&(B $(C=a<-(B $(C1t9Z@L8&(B $(C?rAw@O(B $(C<v55(B
|
||||
$(C@V@>4O4Y(B. $(C4Y@=0z(B $(C00@:(B $(C<<0!Av(B $(C@L@/7N(B C-b, C-f, C-n $(C1W8.0m(B C-p$(C8&(B $(C>24B(B
|
||||
$(C0M@;(B $(C1G@eGU4O4Y(B. $(CC9B07N(B, $(C@L5i@:(B $(C8p5g(B $(CA>7y@G(B $(C4\8;1b?!<-(B $(C;g?kGR(B $(C<v(B
|
||||
$(C@V@>4O4Y(B. $(C5QB07N(B, $(C@O4\(B Emacs$(C8&(B $(C>24B(B $(C0M?!(B $(C@M<wGX(B $(CAv8i(B, $(C@L71(B $(CA&>n(B
|
||||
$(C9.@Z@;(B $(CD!4B(B $(C0M@L(B $(CH-;lG%(B $(C1[<h8&(B $(CD!4B(B $(C0M:84Y(B $(CHN>@(B $(C:|8#4Y4B(B $(C0M@;(B $(C>K0T(B $(C5I(B
|
||||
$(C0M@T4O4Y(B ($(CE8@Z(B $(C@'D!?!<-(B $(C<U@;(B $(C8V8.(B $(C?rAw@O(B $(CGJ?d0!(B $(C>x1b(B $(C6'9.?!(B). $(C<BB07N(B,
|
||||
$(C@O4\(B $(C@L71(B $(CA&>n(B $(C9.@Z(B $(C8m7I@;(B $(C>24B(B $(C=@0|@L(B $(C5i8i(B $(C1t9Z@L8&(B $(C?rAw@L4B(B $(C4Y8%(B
|
||||
$(C0m1^(B $(C8m7I5i55(B $(C=10T(B $(C9h?o(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C4k:N:P@G(B Emacs $(C8m7I?!4B(B $(C<}@Z(B $(C@N<v8&(B $(CA$GXAY(B $(C<v(B $(C@V@>4O4Y(B; $(C@L4B(B $(C4k:N:P(B,
|
||||
$(C8m7I@G(B $(C9]:9(B $(CH=<v8&(B $(CA$GX(B $(CA]4O4Y(B. $(C@L780T(B $(C8m7I?!(B $(C9]:9(B $(CH=<v8&(B $(CA$GXAV4B(B
|
||||
$(C9f9}@:(B $(C8m7I@;(B $(CD!1b(B $(C@|?!(B C-u$(C?M(B $(C<}@Z8&(B $(CD!4B(B $(C0M@87N(B $(C@L7g>nA}4O4Y(B. META$(C<h(B
|
||||
($(CH$@:(B EDIT$(C<h3*(B $(C13C<<h(B)$(C0!(B $(C@V@88i(B $(C4Y8%(B $(C9f9}@87N(B $(C<}@Z(B $(C@N<v8&(B $(C@T7BGR(B $(C<v(B
|
||||
$(C@V@>4O4Y(B: MEAT$(C<h8&(B $(C4)8%(B $(CC$(B $(C<}@Z8&(B $(CD!=J=C?@(B. C-u $(C9f9}@:(B $(C>n62(B
|
||||
$(C4\8;1b?!<-55(B $(C;g?kGR(B $(C<v(B $(C@V1b(B $(C6'9.?!(B $(C@L8&(B $(C;g?kGO1b(B $(C9Y6x4O4Y(B.
|
||||
|
||||
$(C?98&(B $(C5i>n(B, C-u 8 C-f$(C4B(B $(C9.@Z(B $(C?)4|03@G(B $(C>UBJ@87N(B $(C?rAw@T4O4Y(B.
|
||||
|
||||
>> $(CGQ(B $(C9x@G(B $(C8m7I@87N(B $(C1t9Z@L0!(B $(C@L(B $(CAY(B $(C1YC3?!(B $(C?@557O(B, $(C<}@Z(B $(C@N<v0!(B $(CAV>nAx(B
|
||||
C-n $(CH$@:(B C-p$(C8&(B $(C=C55GX(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C4k:N:P@G(B $(C8m7I5i@:(B $(C<}@Z(B $(C@N<v8&(B $(C9]:9(B $(CH=<v7N(B $(C;g?kGOAv88(B $(C0f?l?!(B $(C5{6s<-4B(B
|
||||
$(C?9?\@{@N(B $(C8m7I5i@L(B $(C4Y8%(B $(C?k557N(B $(C>5(B $(C<v(B $(C@V@>4O4Y(B. C-v$(C?M(B M-v$(C4B(B $(C@L71(B $(C?9?\?!(B
|
||||
$(C<SGU4O4Y(B. $(C@N<v8&(B $(CAV8i(B $(C1W(B $(C88E-@G(B $(CH-8i(B $(C<v8&(B $(C5N7g8;1b(B $(CGOAv(B $(C>J0m(B $(C1W(B
|
||||
$(C88E-@G(B $(CAY@;(B $(CH-8i@G(B $(C@'3*(B $(C>F7!7N(B $(C5N7g8;1b(B $(CGU4O4Y(B. $(CAo(B, C-u 4 C-v$(C4B(B
|
||||
$(CH-8i@;(B 4 $(CAY(B $(C88E-(B $(C5N7g8;1b(B $(CGU4O4Y(B.
|
||||
|
||||
>> $(C@LA&(B C-u 8 C-v$(C8&(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C@L7N<-(B $(CH-8i@:(B 8 $(CAY@L(B $(C@'7N(B $(C5N7g8;1b(B $(C5F@;(B $(C0M@T4O4Y(B. $(C4Y=C(B $(C9X@87N(B
|
||||
$(C5N7g8;1b(B $(CGO1b(B $(C@'GX<-4B(B $(C@N<v8&(B M-v$(C?!(B $(CA]4O4Y(B.
|
||||
|
||||
X Windows$(C8&(B $(C>5(B $(C0f?l?!4B(B Emacs $(CC"@G(B $(C?^Fm?!(B $(C5N7g8;1b(B $(C874k6s0m(B $(C:R8.?l4B(B
|
||||
$(C1b4Y6u(B $(C;g0"G|(B $(C8p>g@G(B $(CEM0!(B $(C@V@;(B $(C0M@T4O4Y(B. $(C@L(B $(C5N7g8;1b(B $(C874k?!(B $(C4Y6wAc8&(B
|
||||
$(C5~1oGT@87N=a(B $(C1[?y@;(B $(C5N7g8;1b(B $(CGR(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> $(C5N7g8;1b(B $(C874k(B $(C3;?!<-(B $(C4+?!(B $(C6g4B(B $(C:N:P@G(B $(C2@4k1b8&(B $(CA_0#(B $(C4\C_7N(B $(C4-7/(B
|
||||
$(C:8=J=C?@(B. $(C1W7/8i(B $(C1[?y@:(B $(C4Y6wAc7N(B $(C4)8%(B $(C@'D!?!(B $(C5{8%(B $(C>g(B $(C88E-@G(B $(C@'D!8&(B
|
||||
$(C@'3*(B $(C>F7!7N(B $(C5N7g8;1b(B $(C5I(B $(C0M@T4O4Y(B.
|
||||
|
||||
>> $(C4Y6wAc8&(B $(CA_0#(B $(C4\C_0!(B $(C4-7/Ax(B $(C;sEB?!<-(B $(C@'3*(B $(C>F7!7N(B $(C?rAw?)(B $(C:8=J=C?@(B.
|
||||
$(C1W7/8i(B $(C1[?y@L(B $(C4Y6wAc0!(B $(C?rAw@L4B4k7N(B $(C@'3*(B $(C>F7!7N(B $(C5N7g8;1b(B $(C5I(B
|
||||
$(C0M@T4O4Y(B.
|
||||
|
||||
|
||||
* EMACS$(C@G(B $(C@[5?@L(B $(C4\@}5I(B $(C6'(B
|
||||
--------------------------
|
||||
|
||||
$(C8m7I@;(B $(CAV>n55(B Emacs$(C0!(B $(C9]@@@;(B $(CGOAv(B $(C>J@;(B $(C6'4B(B C-g$(C8&(B $(CCD<-(B Emacs$(C@G(B $(C@[5?@;(B
|
||||
$(C>H@|GO0T(B $(CA$Av=CE3(B $(C<v(B $(C@V@>4O4Y(B. C-g$(C4B(B $(C=GG`GO4B5%(B $(C3J9+(B $(C?@7#(B $(C=C0#@L(B
|
||||
$(C0I8.4B(B $(C8m7I@;(B $(CA_Av=CE3(B $(C6'?!(B $(C;g?k5I(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
C-g$(C4B(B $(C<}@Z(B $(C@N<v8&(B $(C9+=CGX(B $(C9v81(B $(C6'3*(B $(C>n62(B $(C8m7I@;(B $(C=C@[GO?4Av88(B $(C=GG`=CE00m(B
|
||||
$(C=MAv(B $(C>J@;(B $(C6'?!55(B $(C;g?k5I(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> C-u 100$(C@;(B $(CCD<-(B $(C<}@Z(B $(C@N<v8&(B 100$(C@87N(B $(CGO0m(B $(C3-(B $(CHD(B C-g$(C8&(B $(CCD(B
|
||||
$(C:8=J=C?@(B. $(C1W8.0m(B $(C3*<-(B C-f$(C8&(B $(CD(4O4Y(B. $(C@N<v4B(B C-g$(C7N=a(B $(C>x>]@=@87N(B $(CGQ(B
|
||||
$(C9.@Z88(B $(C>U@87N(B $(C?rAw?)>_(B $(CGU4O4Y(B.
|
||||
|
||||
|
||||
* $(C9+4I(B $(C8m7I(B
|
||||
-----------
|
||||
|
||||
$(C>n62(B Emacs $(C8m7I@:(B "$(CGc?k5GAv(B $(C>J>F<-(B"(disabled) $(CCJ:8@Z0!(B $(C@_8x(B $(C;g?kGOAv(B
|
||||
$(C>J557O(B $(C5G>n(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C@L71(B $(C9+4I(B $(C8m7I@;(B $(C>28i(B, Emacs$(C4B(B $(C@L(B $(C8m7I@L(B $(C9+>y@L>z@88g(B, $(C@L(B $(C8m7I@;(B $(C1W3I(B
|
||||
$(C1W4k7N(B $(C=GG`GR(B $(C0M@NAv8&(B $(C90>n(B $(C:84B(B $(C>K828;@;(B $(CH-8i(B $(CG%=CGU4O4Y(B.
|
||||
|
||||
$(C?x7!0!(B $(C@L(B $(C8m7I@;(B $(C>20m@Z(B $(CGO?44Y8i(B, $(C90@=?!(B $(C4kGX(B $(C;g@L(B $(C9.@Z(B(Space)$(C8&(B $(CCD<-(B
|
||||
$(C4dGO=J=C?@(B. $(C:8Ek@:(B $(C9+4I(B $(C8m7I@;(B $(C=GG`=CE0Av(B $(C>J1b(B $(C@'GX(B $(C90@=?!(B "n"$(C@87N(B
|
||||
$(C4dGU4O4Y(B.
|
||||
|
||||
>> <ESC> : ($(C9+4I(B $(C8m7I@G(B $(CGO3*@T4O4Y(B)$(C@;(B $(CD#(B $(CHD(B n$(C@87N(B $(C90@=?!(B $(C4dGO=J=C?@(B.
|
||||
|
||||
|
||||
* $(CC"(B
|
||||
----
|
||||
|
||||
Emacs$(C4B(B $(C?)7/(B $(CC"@;(B $(C0!Az(B $(C<v(B $(C@V@88g(B $(C0"0"@:(B $(C5{7N(B $(C9.<-8&(B $(CH-8i(B $(CG%=CGU4O4Y(B.
|
||||
$(C4YA_(B $(CC"@;(B $(C>24B(B $(C9f9}?!(B $(C4kGX<-4B(B $(C3*A_?!(B $(C<38mGO1b7N(B $(CGU4O4Y(B. $(CAv1]4B(B
|
||||
$(C4Y8%(B $(CC"@;(B $(C>x>V0m(B $(C?x7!?!(B $(C@V4x(B $(CC"(B $(CGO3*7N(B $(C59>F0!(B $(CFmA}@;(B $(C0h<SGO4B(B $(C9f9}88@;(B
|
||||
$(C<38mGU4O4Y(B. $(C0#4\GU4O4Y(B:
|
||||
|
||||
C-x 1 $(CC"@;(B $(CGO3*7N(B $(C885i1b(B ($(CAo(B, $(C4Y8%(B $(CC"5i@;(B $(C>x>[4O4Y(B).
|
||||
|
||||
$(C@L(B $(C0M@:(B $(CA&>n9.@Z(B-x $(C4Y@=?!(B $(C<}@Z(B $(C1[<h(B 1$(C@T4O4Y(B. C-x 1$(C@:(B $(C1t9Z@L0!(B $(C@V4B(B
|
||||
$(CC"@;(B $(CH.@eGX<-(B $(C@|C<(B $(CH-8i@;(B $(C>2557O(B $(CGU4O4Y(B. $(C4Y8%(B $(CC"5i@:(B $(CAv?vA}4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(C@L(B $(CAY7N(B $(C?rAw@N(B $(CHD(B C-u 0 C-l$(C@;(B $(CD!=J=C?@(B.
|
||||
>> $(CA&>n9.@Z(B-h k $(CA&>n9.@Z(B-f$(C8&(B $(CD!=J=C?@(B.
|
||||
$(CA&>n9.@Z(B-f $(C8m7I?!(B $(C4kGQ(B $(C9.<-H-8&(B $(CH-8i(B $(CG%=CGO1b(B $(C@'GX(B $(C;u(B $(CC"@L(B
|
||||
$(C3*E83*8i<-(B $(C@L(B $(CC"@L(B $(C>n6;0T(B $(CAY>n(B $(C5e4B0!8&(B $(C0|B{GO=J=C?@(B.
|
||||
|
||||
>> C-x 1$(C@;(B $(CCD<-(B $(C9.<-H-(B $(C8q7O(B $(C@[<:(B $(CC"@L(B $(C>n6;0T(B $(C;g6sAv4B0!8&(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C@L(B $(C8m7I@:(B $(C5N(B $(C9.@Z7N(B $(C18<:5G>n(B $(C@V4Y4B(B $(CA!?!<-(B $(CAv1]1nAv(B $(C9h?n(B $(C4Y8%(B $(C8m7I5i0z(B
|
||||
$(C4Y8(4O4Y(B. $(C=C@[@:(B $(CA&>n9.@Z(B-x$(C7N(B $(CGU4O4Y(B. $(CA&>n9.@Z(B-x$(C7N(B $(C=C@[GO4B(B $(C8m7I5i@:(B
|
||||
$(C9+C4(B $(C89@>4O4Y(B; $(C1W71(B $(C89@:(B $(C8m7I5i@:(B $(CC"@L3*(B $(CFD@O(B, $(C;g@LD-(B(buffer) $(C3;Av4B(B
|
||||
$(C1W71(B $(C0M0z(B $(C?,0|<:@L(B $(C@V4B(B $(C8m7I5i@T4O4Y(B. $(C@L71(B $(C8m7I5i@:(B $(C5Q(B, $(C<B(B $(CH$@:(B
|
||||
$(C3W03@G(B $(C9.@Z8&(B $(C>94O4Y(B.
|
||||
|
||||
|
||||
* $(C3"?l1b?M(B $(CAv?l1b(B
|
||||
-----------------
|
||||
|
||||
$(C1[?y@;(B $(C3"?l1b(B $(C@'GX<-4B(B $(C1W(B $(C1[?y@;(B $(CE8@ZD!8i(B $(C5K4O4Y(B. A, 7, *, $(C5n5n0z(B
|
||||
$(C00@L(B, $(C:<(B $(C<v(B $(C@V4B(B $(C9.@Z5i@:(B Emacs$(C0!(B $(C1[?y7N(B $(C@N=DGO?)(B $(CAo0"(B $(C3"?s4O4Y(B.
|
||||
<Return>($(C:91M<h(B)$(C8&(B $(CD!8i(B $(C;uAY(B $(C9.@Z0!(B $(C3"?vA}4O4Y(B.
|
||||
|
||||
<Delete>$(C8&(B $(CD!8i(B $(C86Av87@87N(B $(C@T7B5H(B $(C9.@Z0!(B $(CAv?vA}4O4Y(B. <Delete>$(C4B(B
|
||||
$(C1[<hFG?!(B "Del"$(C@L6s0m55(B $(C@L8'G%0!(B $(C4^7A(B $(C@V@>4O4Y(B. $(C>n62(B $(C0f?l?!4B(B
|
||||
"Backspace" $(C1[<h0!(B <Delete>$(C@G(B $(C?*GR@;(B $(CGO1b55(B $(CGOAv88(B $(CGW;s(B $(C1W78Av4B(B
|
||||
$(C>J@>4O4Y(B!
|
||||
|
||||
$(CA;(B $(C4u(B $(C@O9]@{@87N(B, <Delete>$(C4B(B $(C1t9Z@L(B $(CGv@'D!@G(B $(C9Y7N(B $(C@|?!(B $(C@V4B(B $(C9.@Z8&(B
|
||||
$(CAv?s4O4Y(B.
|
||||
|
||||
>> $(C1W(B $(C0M@;(B $(CGX(B $(C:8=J=C?@(B--$(C8n8n(B $(C9.@Z8&(B $(CD#(B $(CHD(B <Delete>$(C8&(B $(CCD<-(B
|
||||
$(CAv?v:8=J=C?@(B. $(C@L(B $(CFD@O@L(B $(C:/0f5G4B(B $(C0M?!(B $(C4kGQ(B $(C0FA$@:(B $(CGOAv(B $(C>J>F55(B
|
||||
$(C5K4O4Y(B; $(C@86d(B $(CAvD'<-4B(B $(C:/0f5GAv(B $(C>J@>4O4Y(B. $(C@L(B $(CFD@O@:(B $(C@86d(B $(CAvD'<-@G(B
|
||||
$(C03@N?k(B $(C:9;g:;@T4O4Y(B.
|
||||
|
||||
$(C1[?y@L(B $(CH-8i@G(B $(CGQ(B $(CAY?!(B $(C4Y(B $(C5i>n0!Av(B $(C8xGR(B $(CA$557N(B $(CD?Av8i(B $(C1[?y@G(B $(CAY@:(B
|
||||
$(CH-8i@G(B $(C5N9xB0(B $(CAY?!<-(B "$(C0h<S(B"$(C5K4O4Y(B. $(C?@8%BJ(B $(CGQ0h?!(B $(C@V4B(B $(C?*;g<1(B $(C9.@Z(B
|
||||
("\")$(C4B(B $(CAY@L(B $(C4Y@=(B $(CAY7N(B $(C@L>nAv4B(B $(C0M@;(B $(C0!8.E54O4Y(B.
|
||||
|
||||
>> $(C1[?y@;(B $(C0h<S(B $(C3"?v<-(B $(C?@8%BJ(B $(CGQ0h8&(B $(C3Q>n<-557O(B $(CGO=J=C?@(B. $(C1W7/8i(B $(CAY(B
|
||||
$(C0h<S(B $(CG%=C0!(B $(C3*E83/(B $(C0M@T4O4Y(B.
|
||||
|
||||
>> <Delete>$(C8&(B $(C=a<-(B $(C1[?y@G(B $(CAY@L(B $(CGQ(B $(CH-8i(B $(CAY?!(B $(C2K(B $(CBw557O(B $(C4Y=C(B
|
||||
$(CAv?l=J=C?@(B. $(CAY(B $(C0h<S(B $(CG%=C4B(B $(C>x>nA}4O4Y(B.
|
||||
|
||||
$(C;uAY(B $(C9.@Z55(B $(C4Y8%(B $(C9.@ZC373(B $(CAv?o(B $(C<v(B $(C@V@>4O4Y(B. $(CAY@;(B $(C5Q7N(B $(C3*4)4B(B $(C;uAY(B
|
||||
$(C9.@Z8&(B $(CAv?l8i(B $(C5N(B $(CAY@L(B $(CGO3*7N(B $(CGUD!0T(B $(C5K4O4Y(B. $(C@L(B $(CGUD#(B $(CAY@L(B $(C3J9+(B $(C1f>n<-(B
|
||||
$(CH-8i@G(B $(C3J:q8&(B $(C3Q>n<-8i(B $(C1W(B $(CAY@:(B $(CAY(B $(C0h<S(B $(C9.@Z0!(B $(CG%=C5G8i<-(B $(C4Y@=(B $(CAY?!(B
|
||||
$(C0h<S(B $(CH-8i(B $(CG%=C5I(B $(C0M@T4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(CAY@G(B $(C=C@[@87N(B $(C?rAw?)<-(B <Delete>$(C8&(B $(CD!=J=C?@(B. $(C1W7/8i(B $(C1W(B
|
||||
$(CAY@L(B $(C@L@|(B $(CAY0z(B $(CGUCDAz(B $(C0M@T4O4Y(B.
|
||||
|
||||
>> $(C4Y=C(B <Return>$(C@;(B $(CCD<-(B $(CAv?vAx(B $(C;uAY(B $(C9.@Z8&(B $(C3"?l=J=C?@(B.
|
||||
|
||||
$(C4k:N:P@G(B Emacs $(C8m7I?!4B(B $(C9]:9(B $(CH=<v8&(B $(CAY(B $(C<v(B $(C@V4Y4B(B $(C0M@;(B $(C1b>oGO=J=C?@(B;
|
||||
$(C1[?y(B $(C9.@Z55(B $(CGX4g5K4O4Y(B. $(C1[?y(B $(C9.@Z8&(B $(C9]:9GO4B(B $(C0M@:(B $(C1W(B $(C0M@;(B $(C?)7/9x(B
|
||||
$(C3"?l4B(B $(C0M@T4O4Y(B.
|
||||
|
||||
>> $(C1W(B $(C0M@;(B $(CAv1](B $(CGX(B $(C:>4O4Y(B -- C-u 8 *$(C@;(B $(CCD<-(B ********$(C@;(B $(C3"?l=J=C?@(B.
|
||||
|
||||
$(C@LA&(B Emacs$(C?!<-(B $(C9+>p0!8&(B $(CD!0m(B $(CBx?@8&(B $(C13A$GO4B(B $(C0!@e(B $(C1b:;@{@N(B $(C9f9}@;(B
|
||||
$(C9h?|@>4O4Y(B. $(C398;@L3*(B $(CAY55(B $(CGQ9x?!(B $(CAv?o(B $(C<v(B $(C@V@>4O4Y(B. $(C?)1b?!(B $(CAv?l4B(B
|
||||
$(C@[5?@;(B $(C?d>`GU4O4Y(B.
|
||||
|
||||
<Delete> $(C1t9Z@L(B $(CAw@|@G(B $(C9.@Z(B $(CAv?l1b(B
|
||||
C-d $(C1t9Z@L(B $(C4Y@=@G(B $(C9.@Z(B $(CAv?l1b(B
|
||||
|
||||
M-<Delete> $(C1t9Z@L(B $(CAw@|@G(B $(C398;(B $(CAW@L1b(B
|
||||
M-d $(C1t9Z@L(B $(C4Y@=@G(B $(C398;(B $(CAW@L1b(B
|
||||
|
||||
C-k $(C1t9Z@L(B $(C@'D!7N:NEM(B $(CAY(B $(C3!1nAv(B $(CAW@L1b(B
|
||||
M-k $(CGv@g(B $(C9.@e@G(B $(C3!1nAv(B $(CAW@L1b(B
|
||||
|
||||
C-f$(C?M(B M-f$(C?!<-(B $(C=C@[GQ(B $(C@/;g<:@L(B <Delete>$(C?M(B C-d $(C1W8.0m(B M-<Delete>$(C?M(B M-d$(C7N(B
|
||||
$(C@L>nAv4B(B $(C0M@;(B $(C@/@GGO=J=C?@(B (<Delete>$(C4B(B $(CAxA$GQ(B $(CA&>n(B $(C9.@Z4B(B $(C>F4OAv88(B
|
||||
$(C1W715%?!(B $(C;s3dGOAv(B $(C>J557O(B $(CGU=C4Y(B). $(CAY0z(B $(C9.@e@L(B $(C4Y8#5m@L(B C-k$(C?M(B M-k$(C4B(B
|
||||
C-e$(C?M(B M-e$(C?M(B $(C4Y8(4O4Y(B.
|
||||
|
||||
$(CGQ(B $(C9.@Z(B $(C@L;s@;(B $(CGQ(B $(C9x?!(B $(CAv?l8i(B Emacs$(C4B(B $(CAv?vAx(B $(C1[?y@;(B $(C0%9+8.(B(save)$(CGX<-(B
|
||||
$(C4Y=C(B $(C;g?kGR(B $(C<v(B $(C@V557O(B $(CGU4O4Y(B. $(CAW?)Ax(B $(C1[?y@;(B $(C4Y=C(B $(C;g?kGO4B(B $(C0M@;(B
|
||||
"$(C@b>F4g1b1b(B(yanking)"$(C6s0m(B $(CGU4O4Y(B. $(CAW?)Ax(B $(C1[?y@:(B $(CAW@N(B $(C1W(B $(C0w?!<-(B
|
||||
$(C@b>F4g1f(B $(C<v55(B $(C@V0m(B $(C4Y8%(B $(C0w?!<-(B $(C@b>F4g1f(B $(C<v55(B $(C@V@>4O4Y(B. $(CA_:95H(B
|
||||
$(C:9;g:;@;(B $(C885i1b(B $(C@'GX<-(B $(C1W(B $(C1[?y@;(B $(C?)7/9x(B $(C@b>F4g1f(B $(C<v55(B $(C@V@>4O4Y(B.
|
||||
$(C@b>F4g1b@G(B $(C8m7I@:(B C-y$(C@T4O4Y(B.
|
||||
|
||||
"$(CAW?)Ax(B" $(C0M@:(B $(C4Y=C(B $(C@b>F4g1f(B $(C<v(B $(C@VAv88(B "$(CAv?vAx(B" $(C0M@:(B $(C1W72(B $(C<v(B $(C>x4Y4B(B
|
||||
$(CA!?!<-(B "$(CAW@L1b(B"$(C?M(B "$(CAv?l1b(B"$(C@G(B $(CBw@LA!@L(B $(C@V@=@;(B $(C@/@GGO=J=C?@(B.
|
||||
$(C@O9]@{@87N(B, $(CGQ03@G(B $(C9.@Z3*(B $(C:s(B $(CAY(B $(CH$@:(B $(C:s(B $(C0x0#@;(B $(CAv?l4B(B $(C8m7I5i@:(B $(CAv?vAx(B
|
||||
$(C1[?y@L(B $(C0%9+8.5GAv(B $(C>J4B(B $(C9]8i?!(B $(C89@:(B $(C1[?y@;(B $(C>x>V4B(B $(C8m7I5i@:(B $(C1W(B $(C1[?y@L(B
|
||||
$(C0%9+8.5K4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(C:q>nA.(B $(C@VAv(B $(C>J@:(B $(CAY@G(B $(C=C@[@87N(B $(C?rAw@L=J=C?@(B. $(C1W8.0m4B(B
|
||||
C-k$(C8&(B $(CCD<-(B $(C1W(B $(CAY@G(B $(C1[?y@;(B $(CAW@L=J=C?@(B.
|
||||
>> C-k$(C8&(B $(C4Y=C(B $(CD!=J=C?@(B. $(C1W7/8i(B $(C1W(B $(CAY(B $(C4Y@=?!(B $(C@V4B(B $(C;uAY(B $(C9.@Z0!(B $(CAW?)Av4B(B
|
||||
$(C0M@;(B $(C:<(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
C-k$(C8&(B $(CGQ(B $(C9x(B $(CD!8i(B $(C1W(B $(CAY@G(B $(C3;?k@;(B $(CAW@L0m(B $(C5N9xB0?!4B(B $(C1W(B $(CAY(B $(C@ZC<8&(B
|
||||
$(CAW@S@87N<-(B $(C@L>nAv4B(B $(C8p5g(B $(CAY@;(B $(C@'7N(B $(C?C834O4Y(B. C-k$(C4B(B $(C<}@Z(B $(C@N<v8&(B $(CF/:0Hw(B
|
||||
$(CCk1^GU4O4Y(B: $(C1W(B $(C<}@Z88E-@G(B $(CAY0z(B $(C1W(B $(CAY@G(B $(C3;?k@;(B $(CGT22(B $(CAW@T4O4Y(B. $(C@L0M@:(B
|
||||
$(C4\<xGQ(B $(C9]:9@L(B $(C>F4U4O4Y(B. C-u 2 C-k$(C4B(B $(C5N(B $(CAY0z(B $(C1W(B $(CAY@G(B $(C;uAY(B $(C9.@Z8&(B
|
||||
$(CAW@T4O4Y(B; C-k$(C8&(B $(C5N(B $(C9x(B $(CD!8i(B $(C1W78Av(B $(C>J@>4O4Y(B.
|
||||
|
||||
$(CCV1Y?!(B $(CAW?)Ax(B $(C1[?y@;(B $(CH8<vGX<-(B $(CGv@g(B $(C1t9Z@L0!(B $(C@V4B(B $(C@'D!?!(B $(C5N1b(B $(C@'GX<-4B(B
|
||||
C-y$(C8&(B $(CD(4O4Y(B.
|
||||
|
||||
>> $(CGX(B $(C:8=J=C?@(B; C-y$(C8&(B $(CCD<-(B $(C1[?y@;(B $(C4Y=C(B $(C@b>F4g1b=J=C?@(B.
|
||||
|
||||
$(C4)1:0!0!(B $(C;/>F0#(B $(C0M@;(B $(C4Y=C(B $(C@b>F(B $(C4g1b4B(B $(C0MC373(B C-y$(C8&(B $(C;}0"GO=J=C?@(B. $(CGQ(B
|
||||
$(C0!7ND-?!<-(B C-k$(C8&(B $(C?)7/9x(B $(C>28i(B $(CAW?)Ax(B $(C1[?y5i@L(B $(CGT22(B $(C0%9+8.5G>n(B $(C1W(B $(CAY(B
|
||||
$(C8p5N8&(B C-y $(CGQ(B $(C9x@87N(B $(C@b>F4g1f(B $(C<v(B $(C@V4Y4B(B $(C0M?!(B $(C@/@GGO=J=C?@(B.
|
||||
|
||||
>> C-k$(C8&(B $(C?)7/9x(B $(CCD<-(B $(C1W(B $(C0M@;(B $(CGX(B $(C:8=J=C?@(B.
|
||||
|
||||
$(CAW?)Ax(B $(C1[?y@;(B $(CH8<vGO1b(B $(C@'GX<-4B(B:
|
||||
|
||||
>> C-y$(C8&(B $(CD!=J=C?@(B. $(C1W8.0m4B(B $(C1t9Z@L8&(B $(C8n(B $(CAY(B $(C>F7!7N(B $(C?rAw?)<-(B C-y$(C8&(B $(C4Y=C(B
|
||||
$(CD!=J=C?@(B. $(C1[?y@L(B $(C>n6;0T(B $(C:9;g5G4B0!8&(B $(C>K(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C4Y=C(B $(C@b>F4g1f(B $(C1[?y@L(B $(C@V4B5%(B $(C4Y8%(B $(C0M@;(B $(C6G(B $(CAW@L8i(B $(C>n6;0T(B $(C5G0Z@>4O1n(B?
|
||||
C-y$(C4B(B $(C4u(B $(CCV1Y?!(B $(CAW?)Ax(B $(C0M@;(B $(C@b>F4g1f(B $(C0M@T4O4Y(B. $(C1W7/3*(B $(C1W(B $(C@|@G(B $(C1[?y@:(B
|
||||
$(C@R>n9v80(B $(C0M@L(B $(C>F4U4O4Y(B. $(C1W(B $(C0M@:(B M-y $(C8m7I@;(B $(C=a<-(B $(CH8<vGR(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
$(C0!@e(B $(CCV=E?!(B $(CAW?)Ax(B $(C1[?y@;(B C-y$(C7N(B $(CH8<vGQ(B $(CHD(B M-y$(C8&(B $(CD!8i(B $(C1W(B $(C@b>F4g0\A34x(B
|
||||
$(C1[?y@L(B $(C1W(B $(C@|?!(B $(CAW?)Ax(B $(C0M@87N(B $(C;u7N9Y2n>nA}4O4Y(B(replace). M-y$(C8&(B $(CC$Bw(B
|
||||
$(C?,0EG*(B $(CD!8i(B $(C@L@|?!(B $(CAW?)Ax(B $(C0M5i@L(B $(CBw7J7N(B $(C3*?I4O4Y(B. $(CC#0m@Z(B $(CGO4B(B $(C1[?y@L(B
|
||||
$(C3*?@8i(B $(C4Y8%(B $(C@O@;(B $(CGR(B $(CGJ?d0!(B $(C>x@>4O4Y(B. $(C4\<xHw(B $(CFmA}@;(B $(C0h<SGO8i(B
|
||||
$(C@b>F4g0\Ax(B $(C1[?y@L(B $(C1W0w?!(B $(C32>F(B $(C@V0T(B $(C5K4O4Y(B.
|
||||
|
||||
M-y$(C8&(B $(C0h<S(B $(CD!8i(B $(CCb9_A!(B ($(C0!@e(B $(CCV1Y?!(B $(CAW?)Ax(B $(C0M(B)$(C@87N(B $(C5G59>F(B $(C?I4O4Y(B.
|
||||
|
||||
>> $(CGQ(B $(CAY@;(B $(CAW@L0m(B $(CAV@'7N(B $(C?rAw@N(B $(CHD(B $(C4Y8%(B $(CAY@;(B $(CAW@L=J=C?@(B.
|
||||
$(C1W8.0m4B(B C-y$(C7N(B $(C5N9xB0(B $(CAW?)Ax(B $(CAY@;(B $(CH8<vGO=J=C?@(B.
|
||||
$(C1W71(B $(C4Y@=?!(B M-y$(C8&(B $(CD!8i(B $(CC99xB0?!(B $(CAW?)Ax(B $(CAY7N(B $(C;u7N9Y2n0T(B $(C5K4O4Y(B.
|
||||
M-y$(C8&(B $(C4u(B $(CCD<-(B $(C9+>y@L(B $(C3*?@4B0!8&(B $(C:8=J=C?@(B. $(C5N9xB0(B $(CAW?)Ax(B $(CAY@L(B $(C3*?C(B
|
||||
$(C6'1n4O(B $(C1W780T(B $(C0h<S(B $(CGQ(B $(CHD(B $(C8n(B $(C9x(B $(C4u(B $(CGO=J=C?@(B.
|
||||
$(C?xGO8i(B, M-y$(C?!(B $(C>g<v3*(B $(C@=<v@G(B $(C@N<v8&(B $(CAY(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
|
||||
* $(C9+8#1b(B
|
||||
--------
|
||||
|
||||
$(C1[?y@;(B $(C:/0fGO0m<-(B $(C1W(B $(C0M@L(B $(C=G<v?4@=@;(B $(C>K0T(B $(C5G8i(B $(C9+8#1b(B(undo) $(C8m7I(B, C-x
|
||||
u$(C7N(B $(C:/0f;gGW@;(B $(C9+8&(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C:8Ek(B, C-x u$(C4B(B $(CGO3*@G(B $(C8m7I?!(B $(C@GGX(B $(C:/0f5H(B $(C;gGW@;(B $(C9+8(4O4Y(B; $(CGQ(B $(C0!7ND-?!<-(B
|
||||
C-x u$(C8&(B $(C?)7/9x(B $(C9]:9GO8i(B $(C0"0"@G(B $(C9]:9@:(B $(CC_0!@{@87N(B $(C8m7I@;(B $(C9+8(4O4Y(B.
|
||||
|
||||
$(C1W7/3*(B $(C5N0!Av(B $(C?9?\0!(B $(C@V@>4O4Y(B: $(C1[?y@;(B $(C:/0fGOAv(B $(C>J4B(B $(C8m7I@:(B $(C0m7A(B
|
||||
$(C4k;s?!<-(B $(CA&?\5K4O4Y(B ($(C?)1b?!4B(B $(C1t9Z@L8&(B $(C?rAw@L4B(B $(C8m7I0z(B $(CH-8i(B $(C5N7g8;1b(B
|
||||
$(C8m7I@L(B $(C@V@>4O4Y(B). $(C1W8.0m(B $(C@ZC<3"?l1b(B(self-inserting) $(C9.@Z5i@:(B
|
||||
$(CFr;s@{@87N(B 20$(C031nAv@G(B $(CA}4\@87N(B $(CC38.5K4O4Y(B. ($(C@L4B(B $(C1[?y(B $(C3"?l1b8&(B $(C9+8#1b(B
|
||||
$(C@'GX<-(B $(CE8@ZGX>_(B $(CGO4B(B C-x u$(C@G(B $(C<v8&(B $(CAY@L1b(B $(C@'GT@T4O4Y(B.)
|
||||
|
||||
>> $(C@L(B $(CAY@;(B C-k$(C7N(B $(CAW@N(B $(CHD(B C-x u$(C8&(B $(CD!8i(B $(CAY@L(B $(C4Y=C(B $(C3*E83/(B $(C0M@T4O4Y(B.
|
||||
|
||||
C-_$(C4B(B $(C9+8#1b(B $(C8m7I@G(B $(C4Y8%(B $(CG|EB@T4O4Y(B; C-x u$(C?M(B $(C00@:(B $(C@[?k@;(B $(CGOAv88(B $(CGQ(B
|
||||
$(C0!7ND-?!<-(B $(C?)7/9x(B $(CE8@ZGO1b?!(B $(CFmGU4O4Y(B. C-_$(C@G(B $(C4\A!@:(B, $(C>n62(B
|
||||
$(C1[<hFG?!<-4B(B $(C@L(B $(C0M@;(B $(C>n6;0T(B $(CE8@ZGX>_(B $(C5G4B0!0!(B $(C:R8m7aGO4Y4B(B $(C0M@T4O4Y(B.
|
||||
$(C1W7!<-(B C-x u$(C55(B $(C;g?kGR(B $(C<v(B $(C@V557O(B $(C5G>n(B $(C@V4B(B $(C0M@T4O4Y(B. $(C>n62(B
|
||||
$(C4\8;1b?!<-4B(B, CONTROL$(C<h8&(B $(C4)8%(B $(C;sEB?!<-(B /$(C8&(B $(CD'@87N=a(B C-_$(C8&(B $(CD%(B $(C<v(B
|
||||
$(C@V@>4O4Y(B.
|
||||
|
||||
C-_$(C3*(B C-x u$(C@G(B $(C<}@Z(B $(C@N<v4B(B $(C9]:9(B $(CH=<v7N(B $(C;g?k5K4O4Y(B.
|
||||
|
||||
|
||||
* $(CFD@O(B
|
||||
------
|
||||
|
||||
$(CFmA}GQ(B $(C1[?y@;(B $(C?518@{@87N(B $(CGO1b(B $(C@'GX<-4B(B $(CFD@O?!(B $(C3V>n(B $(C5N>n>_(B $(CGU4O4Y(B.
|
||||
$(C1W780T(B $(CGOAv(B $(C>J@88i(B, Emacs$(C0!(B $(C>x>nA|0z(B $(CGT22(B $(C1[?y55(B $(C;g6sA}4O4Y(B. $(C1[?y@;(B
|
||||
$(CFD@O?!(B $(C3V1b(B $(C@'GX<-4B(B $(C1W7/1b(B $(C@|?!(B $(C1W(B $(CFD@O@;(B "$(CC#>F>_(B" $(CGU4O4Y(B. ($(C@L4B(B
|
||||
$(CFD@O@;(B "$(C9f9.GO4B(B $(C0M(B"$(C@L6s0m55(B $(CGU4O4Y(B.)
|
||||
|
||||
$(CFD@O@;(B $(CC#4B4Y4B(B $(C0M@:(B Emacs $(C>H?!<-(B $(C1W(B $(CFD@O@G(B $(C3;?k@;(B $(C:;4Y4B(B $(C0M@;(B
|
||||
$(C@G9LGU4O4Y(B. $(C?)7/0!Av(B $(C8i?!<-(B, $(C1W0M@:(B $(C1W(B $(CFD@O(B $(C@ZC<8&(B $(CFmA}GO7A4B(B $(C0M0z(B
|
||||
$(C4Y8'>x@>4O4Y(B. $(C1W7/3*(B, Emacs$(C7N(B $(C:/0fGQ(B $(C;gGW@:(B $(C1W(B $(CFD@O@;(B "$(C0%9+8.(B"$(CGO1b(B
|
||||
$(C@|1nAv4B(B $(C?518@{@LAv(B $(C8xGU4O4Y(B. $(C@L4B(B $(C@}9]Bk(B $(C:/0f5H(B $(CFD@O@;(B $(C?xD!(B $(C>J0T(B
|
||||
$(C?n?5(B $(CC<0h?!(B $(C320\(B $(C5N4B(B $(C0M@;(B $(CGGGO1b(B $(C@'GX<-(B $(C1W78@>4O4Y(B. $(C0%9+8.8&(B $(CGX55(B
|
||||
Emacs$(C4B(B $(C:/0f(B $(C;gGW@L(B $(C3*A_?!(B $(C=G<v?44Y0m(B $(C0aA$5G4B(B $(C0f?l8&(B $(C0(>HGX(B $(C1Y?x(B
|
||||
$(CFD@O@;(B $(C:/0f5H(B $(C@L8'@87N(B $(C320\5S4O4Y(B.
|
||||
|
||||
$(CH-8i@G(B $(C9Y4Z(B $(C0!1n@L8&(B $(C:88i(B "--:-- TUTORIAL.ko"$(C?M(B $(C00@:(B $(C=D@87N(B $(C=C@[GO4B(B,
|
||||
$(C4k=C(B $(C9.@Z7N(B $(C=C@[GX<-(B $(C4k=C(B $(C9.@Z7N(B $(C3!3*4B(B $(CAY@L(B $(C@V@;(B $(C0M@T4O4Y(B. $(CH-8i@G(B $(C@L(B
|
||||
$(C:N:P@:(B $(C:8Ek(B, $(C9f9.GO0m(B $(C@V4B(B $(CFD@O@G(B $(C@L8'@;(B $(C:8?)(B $(CA]4O4Y(B. $(CAv1]@:(B Emacs
|
||||
$(CAvD'<-@G(B $(C:9;g:;@N(B "TUTORIAL.ko"$(C6s4B(B $(CFD@O@;(B $(C9f9.GO0m(B $(C@V4B(B $(CA_@T4O4Y(B.
|
||||
Emacs$(C7N(B $(CFD@O(B $(CC#1b8&(B $(CGO8i(B $(CA$H.Hw(B $(C1W(B $(C0w?!(B $(CFD@O@G(B $(C@L8'@L(B $(C3*E8334O4Y(B.
|
||||
|
||||
$(CFD@O(B $(CC#1b(B $(C8m7I@G(B $(CF/:0GQ(B $(CA!@:(B $(C?xGO4B(B $(CFD@O@G(B $(C@L8'@;(B $(C8;GX>_(B $(CGO4B(B
|
||||
$(C0M@T4O4Y(B. $(C8m7I@L(B "$(C4\8;1b7N:NEM(B $(C@N<v8&(B $(C@P4B4Y(B"$(C6s0m(B $(CGU4O4Y(B ($(C@L(B $(C0f?l(B,
|
||||
$(C@N<v4B(B $(CFD@O@G(B $(C@L8'@T4O4Y(B). $(C>F7!@G(B $(C8m7I@;(B $(CD!0m(B $(C3*8i(B
|
||||
|
||||
C-x C-f $(CFD@O(B $(CC#1b(B
|
||||
|
||||
Emacs$(C4B(B $(CFD@O@G(B $(C@L8'@;(B $(CD!6s0m(B $(C?d18GU4O4Y(B. $(CFD@O(B $(C@L8'@;(B $(CD!8i(B $(CH-8i@G(B $(C9Y4Z(B
|
||||
$(CAY?!(B $(C@L8'@L(B $(C3*E8334O4Y(B. $(C@L71(B $(CA>7y@G(B $(C@T7B?!(B $(C>2@O(B $(C6'?!4B(B $(C9Y4Z(B $(CAY@;(B $(C@[@:(B
|
||||
$(C;g@LD-(B(minibuffer)$(C@L6s0m(B $(C:N8(4O4Y(B. $(CFr;s=C?!(B $(C>24B(B Emacs$(C@G(B $(CFmA}(B
|
||||
$(C8m7I@87N(B $(CFD@O(B $(C@L8'@;(B $(CFmA}GR(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(CFD@O(B $(C@L8'@;(B ($(CH$@:(B $(C8p5g(B $(CA>7y@G(B $(C@[@:(B $(C;g@LD-(B $(C@T7B@;(B) $(C3V@;(B $(C6'(B, $(C8m7I@G(B
|
||||
$(CCk<R4B(B C-g$(C7N(B $(CGU4O4Y(B.
|
||||
|
||||
>> C-x C-f$(C8&(B $(CD!0m(B C-g$(C8&(B $(CD!=J=C?@(B. $(C@L4B(B $(C@[@:(B $(C;g@LD-@;(B $(CCk<RGO0m(B $(C6G(B,
|
||||
$(C@[@:(B $(C;g@LD-@;(B $(C>20m(B $(C@V4B(B C-x C-f $(C8m7I55(B $(CCk<RGU4O4Y(B. $(C1W7/9G7N(B $(C>F9+(B
|
||||
$(CFD@O55(B $(CC#Av(B $(C>J4B(B $(C0M@T4O4Y(B.
|
||||
|
||||
$(CFD@O(B $(C@L8'@;(B $(C4Y(B $(C1b@TG_@88i(B <Return>$(C@;(B $(CCD<-(B $(CA>7aGO=J=C?@(B. $(C1W7/8i(B C-x
|
||||
C-f $(C8m7I@L(B $(C@[5?5G>n(B $(C<1EC5H(B $(CFD@O@;(B $(CC#1b(B $(C=C@[GU4O4Y(B. C-x C-f $(C8m7I@L(B
|
||||
$(C3!3*8i(B $(C@[@:(B $(C;g@LD-@:(B $(C;g6sA}4O4Y(B.
|
||||
|
||||
$(C@a=C(B $(CHD?!4B(B $(CFD@O@G(B $(C3;?k@L(B $(CH-8i?!(B $(C3*E83*0m(B $(C1W(B $(C3;?k@;(B $(CFmA}GR(B $(C<v(B $(C@V0T(B
|
||||
$(C5K4O4Y(B. $(C:/0f(B $(C;gGW@;(B $(C?518@{@87N(B $(CGO0m(B $(C=M@88i(B $(C4Y@=@G(B $(C8m7I@;(B $(CD(4O4Y(B.
|
||||
|
||||
C-x C-s $(CFD@O(B $(C0%9+8.(B
|
||||
|
||||
$(C@L(B $(C8m7I@:(B Emacs $(C3;@G(B $(C1[?y@;(B $(CFD@O?!(B $(C:9;gGU4O4Y(B. $(C@L(B $(C8m7I@L(B $(CC99xB07N(B
|
||||
$(C<vG`5I(B $(C6'4B(B Emacs$(C0!(B $(C1Y?x(B $(CFD@O@;(B $(C;u(B $(C@L8'@87N(B $(C9Y2Y>n(B $(C3u@=@87N=a(B $(C@R>n9v81(B
|
||||
$(C?l7A8&(B $(C9fAvGU4O4Y(B. $(C;u(B $(C@L8'@:(B $(C1Y?x(B $(CFD@O(B $(C@L8'@G(B $(C3!?!(B "~"$(C@;(B $(C4uGT@87N=a(B
|
||||
$(C885i>nA}4O4Y(B.
|
||||
|
||||
$(C0%9+8.0!(B $(C3!3*8i(B Emacs$(C4B(B $(C>2?)Ax(B $(CFD@O@G(B $(C@L8'@;(B $(C@N<bGU4O4Y(B. $(CFD@O@:(B $(C>FAV(B
|
||||
$(C@ZAV(B $(C0%9+8.GT@87N=a(B $(C?n?5(B $(CC<0h0!(B $(C?M8#8#(B $(C9+3JA.55(B $(C89@:(B $(C@[>w@L(B $(C<U=G5GAv(B
|
||||
$(C>J557O(B $(CGU4O4Y(B.
|
||||
|
||||
>> C-x C-s$(C8&(B $(CCD<-(B $(CAvD'<-@G(B $(C:9;g:;@;(B $(C0%9+8.(B $(CGO=J=C?@(B.
|
||||
$(C1W7/8i(B "Wrote ...TUTORIAL.ko"$(C6s0m(B $(CH-8i@G(B $(C9Y4Z?!(B $(C@N<b5I(B $(C0M@T4O4Y(B.
|
||||
|
||||
$(C@/@G(B: $(C>n62(B $(C?n?5(B $(CC<0h?!<-4B(B C-x C-s$(C8&(B $(CD!8i(B $(CH-8i@;(B $(C5?0a=CDQ<-(B, Emacs$(C0!(B
|
||||
$(C>F9+(B $(CCb7B55(B $(CGOAv(B $(C>J4B(B $(C0M@;(B $(C:<(B $(C0f?l0!(B $(C@V@>4O4Y(B. $(C@L0M@:(B "$(CHe8'(B $(CA&>n(B"$(C6s0m(B
|
||||
$(C:R8.?l4B(B $(C?n?5(B $(CC<0h@G(B "$(CF/B!(B"$(C@L(B C-s$(C8&(B $(C0!7NC$<-(B Emacs$(C8&(B $(CEkGX(B $(C@|4^5GAv(B
|
||||
$(C>J557O(B $(CGO1b(B $(C6'9.@T4O4Y(B. C-q$(C8&(B $(C4)8#8i(B $(CH-8i@L(B $(CGXA&5K4O4Y(B. $(C1W8.0m(B $(C3*<-(B
|
||||
Emacs $(C<38m<-@G(B "Spontaneous Entry to Incremental Search"$(C6s4B(B $(C4\?x@;(B
|
||||
$(C:88i(B $(C@L71(B "$(CF/B!(B"$(C@;(B $(C>n6;0T(B $(CCk1^GR(B $(C<v(B $(C@V4B0!?!(B $(C4kGQ(B $(CA6>p@;(B $(C@P@;(B $(C<v(B
|
||||
$(C@V@>4O4Y(B.
|
||||
|
||||
$(C:80E3*(B $(CFmA}GO1b(B $(C@'GX(B, $(CA8@gGO4B(B $(CFD@O@;(B $(CC#@;(B $(C<v(B $(C@V@>4O4Y(B. $(C6GGQ(B $(CA8@gGOAv(B
|
||||
$(C>J4B(B $(CFD@O55(B $(CC#@;(B $(C<v(B $(C@V@>4O4Y(B. $(C@L780T(B $(CGO8i(B Emacs$(C7N(B $(CFD@O@;(B $(C885i0T(B
|
||||
$(C5K4O4Y(B: $(C:s(B $(C3;?k@87N(B $(C=C@[5G4B(B $(CFD@O@;(B $(CC#>F<-(B $(C1[?y@;(B $(C3"?l1b(B $(C=C@[GU4O4Y(B.
|
||||
$(CFD@O@;(B "$(C0%9+8.(B"$(CGO557O(B $(C?dC;GO8i(B Emacs$(C4B(B $(C3"?vAx(B $(C1[?y@;(B $(C3;?k@87N(B $(CGO4B(B
|
||||
$(CFD@O@;(B $(C=GA&7N(B $(C885i>n(B $(C3@4O4Y(B. $(C1W71(B $(CHD?!4B(B $(C@L(B $(CFD@O@:(B $(C@L9L(B $(CA8@gGO4B(B
|
||||
$(CFD@O@L(B $(C5K4O4Y(B.
|
||||
|
||||
|
||||
* $(C;g@LD-(B
|
||||
--------
|
||||
|
||||
$(C5N9xB0(B $(CFD@O@;(B C-x C-f$(C7N(B $(CC#@88i(B, $(CC99xB0(B $(CFD@O@:(B Emacs$(C@G(B $(C3;:N?!(B $(C32>F(B
|
||||
$(C@V@>4O4Y(B. $(C1W(B $(CFD@O@:(B C-x C-f$(C7N(B $(C@gBw(B $(CC#@=@87N<-(B $(C4Y=C(B $(C>y9Y2\(B $(C<v(B
|
||||
$(C@V@>4O4Y(B. $(C@L71(B $(C=D@87N(B $(C8E?l(B $(C89@:(B $(C<v@G(B $(CFD@O5i@;(B Emacs $(C3;:N?!(B $(C:R7/(B $(C5i@O(B
|
||||
$(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> C-x C-f foo <Return>$(C@;(B $(CCD<-(B "foo"$(C6s4B(B $(C@L8'@G(B $(CFD@O@;(B $(C885e=J=C?@(B.
|
||||
$(C1W8.0m4B(B $(C1[?y@;(B $(C3"?l0m(B $(CFmA}GO?)(B C-x C-s$(C7N(B "foo"$(C8&(B $(C0%9+8.GO=J=C?@(B.
|
||||
$(C86Av87@87N(B, C-x C-f TUTORIAL.ko <Return>$(C@;(B $(CCD<-(B $(CAvD'<-7N(B $(C4Y=C(B $(C59>F(B
|
||||
$(C?@=J=C?@(B.
|
||||
|
||||
Emacs$(C4B(B $(C0"(B $(CFD@O@G(B $(C1[?y@;(B "$(C;g@LD-(B"$(C@L6s0m(B $(C:R8.?l4B(B $(C0M(B $(C>H?!(B $(C@z@eGU4O4Y(B.
|
||||
$(CFD@O@;(B $(CC#4B(B $(C0M@:(B Emacs$(C@G(B $(C3;:N?!(B $(C;u(B $(C;g@LD-@;(B $(C885e4B(B $(C0M0z(B $(C00@>4O4Y(B.
|
||||
Emacs$(C@G(B $(C@O7N(B $(CGvA8GO0m(B $(C@V4B(B $(C;g@LD-@G(B $(C8q7O@;(B $(C:81b(B $(C@'GX<-4B(B $(C4Y@=0z(B $(C00@L(B
|
||||
$(CD!=J=C?@(B.
|
||||
|
||||
C-x C-b $(C;g@LD-(B $(C8q7O(B
|
||||
|
||||
>> C-x C-b$(C8&(B $(CAv1](B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C0"(B $(C;g@LD-@L(B $(C>n62(B $(C@L8'@;(B $(C0.0m(B $(C@V4B0!(B $(C:8=J=C?@(B. $(C;g@LD-@:(B $(C0#AwGO0m(B $(C@V4B(B
|
||||
$(C1[?y@G(B $(C8pC<0!(B $(C5G4B(B $(CFD@O@G(B $(C@L8'@;(B $(C0.0m(B $(C@V@;(B $(C<v55(B $(C@V@>4O4Y(B. $(C>n62(B
|
||||
$(C;g@LD-5i@:(B $(CFD@O0z(B $(C9+0|GU4O4Y(B. $(C?98&(B $(C5i>n(B, "*Buffer List*"$(C6s4B(B $(C;g@LD-@:(B
|
||||
$(C>F9+(B $(CFD@O55(B $(C0.0m(B $(C@VAv(B $(C>J@>4O4Y(B. $(C@L(B $(C;g@LD-@:(B C-x C-b$(C7N(B $(C885i>nAx(B $(C;g@LD-(B
|
||||
$(C8q7O@;(B $(C4c0m(B $(C@V@;(B $(C;S@T4O4Y(B. Emacs $(CC"(B $(C>H?!<-(B $(C:<(B $(C<v(B $(C@V4B(B $(C8p5g(B $(C1[?y@:(B
|
||||
$(C>n62(B $(C;g@LD-@G(B $(C@O:N:P(B $(C@T4O4Y(B.
|
||||
|
||||
>> C-x 1$(C@;(B $(CCD<-(B $(C;g@LD-(B $(C8q7O@;(B $(C>x>V=J=C?@(B.
|
||||
|
||||
$(CGQ(B $(CFD@O@G(B $(C1[?y@;(B $(C:/0fGQ(B $(CHD(B $(C4Y8%(B $(CFD@O@;(B $(CC#@88i(B $(CC99xB0(B $(CFD@O@:(B $(C0%9+8.5GAv(B
|
||||
$(C>J@:(B $(C0M@T4O4Y(B. $(C1W(B $(C:/0f(B $(C;gGW@:(B Emacs $(C3;:N@G(B $(CFD@O(B $(C;g@LD-?!88(B $(C32>F(B
|
||||
$(C@V@>4O4Y(B. $(C5N9xB0(B $(CFD@O@G(B $(C;g@LD-@;(B $(C885i0E3*(B $(CFmA}GO4B(B $(C0M@:(B $(CC99xB0(B $(CFD@O@G(B
|
||||
$(C;g@LD-?!(B $(C@|Gt(B $(C?5Gb@;(B $(CAVAv(B $(C>J@>4O4Y(B. $(C@L4B(B $(C8E?l(B $(C@/?kGO1b4B(B $(CGO3*(B $(C4Y8%(B
|
||||
$(C8i?!<-4B(B $(CC99xB0(B $(CFD@O@G(B $(C;g@LD-@;(B $(C0%9+8.GR(B $(C<v(B $(C@V4B(B $(C0#FmGQ(B $(C4Y8%(B $(C9f9}@L(B
|
||||
$(CGJ?dGO4Y4B(B $(C0M@;(B $(C@G9LGU4O4Y(B. C-x C-f$(C8&(B $(CCD<-(B $(C1W(B $(C;g@LD-@87N(B $(C>y9Y2[(B $(CHD(B
|
||||
C-x C-s$(C7N(B $(C0%9+8.GO4B(B $(C0M@:(B $(C1MBz@:(B $(C@O@T4O4Y(B. $(C1W7!<-(B $(C4Y@=0z(B $(C00@:(B $(C8m7I@L(B
|
||||
$(C@V@>4O4Y(B
|
||||
|
||||
C-x s $(C8n8n(B $(C;g@LD-(B $(C0%9+8.(B
|
||||
|
||||
C-x s$(C4B(B, $(C:/0f5G>zAv88(B $(C0%9+8.5GAv(B $(C>J@:(B $(C;g@LD-@L(B $(C@V3*(B $(CA6;gGX(B $(C:>4O4Y(B.
|
||||
$(C1W8.0m4B(B $(C1W71(B $(C;g@LD-5i?!(B $(C4kGX<-(B $(C1W(B $(C0M@;(B $(C0%9+8.GR(B $(C0M@N0!8&(B $(C90>n(B
|
||||
$(C:>4O4Y(B.
|
||||
|
||||
>> $(CGQ(B $(CAY@G(B $(C1[?y@;(B $(C3"?n(B $(CHD(B C-x s$(C8&(B $(CD!=J=C?@(B.
|
||||
$(C1W7/8i(B TUTORIAL.ko$(C6s4B(B $(C@L8'@G(B $(C;g@LD-@;(B $(C0%9+8.GR(B $(C0M@NAv(B $(C90>n(B $(C:<(B
|
||||
$(C0M@T4O4Y(B. "y"$(C8&(B $(CCD<-(B $(C90@=?!(B $(C?96s0m(B $(C4dGO=J=C?@(B.
|
||||
|
||||
* $(C8m7I>n@G(B $(CH.@e(B
|
||||
---------------
|
||||
|
||||
Emacs$(C@G(B $(C8m7I>n4B(B $(C3J9+(B $(C89>F<-(B $(C@L(B $(C8p5g(B $(C8m7I@;(B $(CA&>n<h3*(B meta$(C<h?!(B $(CGR4gGR(B
|
||||
$(C<v(B $(C>x@>4O4Y(B. Emacs$(C4B(B $(C@L71(B $(C9.A&8&(B X (eXtend) $(C8m7I@87N(B $(CGX0aGU4O4Y(B.
|
||||
$(C@L?!4B(B $(C5N0!Av(B $(CA>7y0!(B $(C@V@>4O4Y(B:
|
||||
|
||||
C-x $(C9.@Z(B $(CH.@e(B. $(C9.@Z(B $(CGO3*0!(B $(C5Z5{8'(B.
|
||||
M-x $(C@L8'(B $(C8m7I@G(B $(CH.@e(B. $(C1d(B $(C@L8'@L(B $(C5Z5{8'(B.
|
||||
|
||||
$(C@L(B $(C8m7I5i@:(B $(C4k03(B $(C@/?kGOAv88(B, $(CAv1]1nAv(B $(C9h?v(B $(C?B(B $(C8m7I5i:84Y4B(B $(C4z(B $(C:s9xGO0T(B
|
||||
$(C;g?k5K4O4Y(B. $(C@L71(B $(CA>7y@G(B $(C8m7I@;(B $(C@L9L(B $(C5N(B $(C03(B $(C>K0m(B $(C@V@>4O4Y(B: $(CFD@O(B
|
||||
$(C8m7I(B $(CA_?!(B C-x C-f$(C7N(B $(CC#1b?M(B C-x C-s$(C7N(B $(C0%9+8.GO1b(B. $(C4Y8%(B $(C?94B(B Emacs $(C@[>w(B
|
||||
$(C=C0#@;(B $(C86D!4B(B $(C8m7I@T4O4Y(B--$(C@L4B(B C-x C-c $(C8m7I(B. ($(C:/0f(B $(C;gGW@;(B
|
||||
$(C@R>n9v8.Av3*(B $(C>J@;1n(B $(CGO4B(B $(C0FA$@:(B $(C>J(B $(CGX55(B $(C5K4O4Y(B; C-x C-c$(C4B(B Emacs$(C8&(B
|
||||
$(CAW@L1b(B $(C@|?!(B $(C0"0"@G(B $(C:/0f5H(B $(CFD@O@;(B $(C0%9+8.GR(B $(C1bH88&(B $(CA]4O4Y(B.)
|
||||
|
||||
C-z$(C4B(B Emacs$(C8&(B *$(C@S=C7N(B* $(C3*?@1b(B $(C@'GQ(B $(C8m7I@T4O4Y(B--$(C1W7!<-(B $(C4Y@=?!(B, $(CGO4x(B
|
||||
$(CA_@G(B Emacs $(C@[>w(B $(C=C0#@87N(B $(C4Y=C(B $(C5G59>F(B $(C0%(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C?n?5(B $(CC<0h0!(B $(CGc?kGO8i(B C-z$(C4B(B Emacs$(C8&(B "$(CA_Av(B"$(C=CE54O4Y(B(suspend); $(CAo(B, $(C@L(B
|
||||
$(C8m7I@:(B $(CA60!:q(B(shell)$(C7N(B $(C59>F(B $(C0!557O(B $(CGOAv88(B Emacs$(C8&(B $(CFD1+GO4B(B $(C0M@:(B
|
||||
$(C>F4U4O4Y(B. $(C4k:N:P@G(B $(CA60!:q?!<-4B(B `fg'$(C3*(B `%emacs'$(C8m7I@87N(B Emacs$(C8&(B $(C0h<SGR(B
|
||||
$(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(CA_AvGO4B(B $(C0M@;(B $(CA&0xGOAv(B $(C>J4B(B $(C?n?5(B $(CC<0h?!<-4B(B C-z$(C?!(B $(C@GGX(B, Emacs $(C9X?!<-(B
|
||||
$(C=GG`5G4B(B $(C>F7'A60!:q0!(B $(C885i>n(B $(CAv0T(B $(C5G4B5%(B $(C?)1b<-(B $(C4Y8%(B $(CGA7N1W7%5i@;(B
|
||||
$(C=GG`GQ(B $(CHD(B Emacs$(C7N(B $(C59>F(B $(C?C(B $(C<v(B $(C@V4B(B $(C1bH80!(B $(C@V@>4O4Y(B; $(C;g=G;s(B Emacs$(C7N:NEM(B
|
||||
"$(C3*0!4B(B" $(C0M@:(B $(C>F4U4O4Y(B. $(C@L(B $(C0f?l(B $(C:8Ek(B, $(CA60!:q(B $(C8m7I@N(B `exit'$(C@87N(B
|
||||
$(C>F7'A60!:q?!<-(B Emacs$(C?!(B $(C5G59>F(B $(C?I4O4Y(B.
|
||||
|
||||
C-x C-c$(C4B(B $(C@|;j1b?!<-(B $(C9~>n3*1b(B $(CGR(B $(C6'3*(B $(C;g?kGU4O4Y(B. $(CFmAv8&(B $(CCk1^GO4B(B
|
||||
$(CGA7N1W7%@L3*(B $(C4Y8%(B $(C@b4YGQ(B $(C55?r8p(B(utilities)$(C5i@L(B $(C>_1bGQ(B Emacs$(C4B(B
|
||||
$(CA_Av=CE24Y4B(B $(C0M@;(B $(C8p8#1b(B $(C6'9.?!(B $(C3*0!1b8&(B $(CGX>_(B $(CGU4O4Y(B. $(CGOAv88(B, $(C:8Ek@G(B
|
||||
$(C0f?l(B, $(C9~>n3*1b8&(B $(CGOAv(B $(C>J4B(B $(CGQ(B, Emacs$(C8&(B $(C3*0!1b:84Y4B(B $(CA_AvGO4B(B $(C0M@L(B
|
||||
$(CAA@>4O4Y(B.
|
||||
|
||||
C-x $(C8m7I>n4B(B $(C89@L(B $(C@V@>4O4Y(B. $(C@L9L(B $(C9h?n(B $(C0M@;(B $(C>F7!?!(B $(CAW:8@T4O4Y(B.
|
||||
|
||||
C-x C-f $(CFD@O(B $(CC#1b(B.
|
||||
C-x C-s $(CFD@O(B $(C0%9+8.(B.
|
||||
C-x C-b $(C;g@LD-(B $(C8q7O(B.
|
||||
C-x C-c Emacs $(C3!3;1b(B.
|
||||
C-x u $(C9+8#1b(B.
|
||||
|
||||
$(C@L8'(B $(CH.@e(B $(C8m7I@:(B $(C@ZAV(B $(C;g?k5GAv(B $(C>J0E3*(B $(CF/:0GQ(B $(C9f=D?!<-3*(B $(C>2@L4B(B
|
||||
$(C8m7I@T4O4Y(B. $(CGQ0!Av(B $(C?94B(B replace-string $(C8m7I@N5%(B $(C@L4B(B $(C@|?*@{@87N(B $(CGQ(B
|
||||
$(C9.@Z?-@;(B $(C4Y8%(B $(C9.@Z?-7N(B $(C;u7N9Y2_4O4Y(B. M-x$(C8&(B $(CD!8i(B Emacs$(C4B(B $(CH-8i@G(B
|
||||
$(C9Y4Z?!<-(B M-x$(C6s0m(B $(C1f@b@LGO?)(B $(C8m7I@G(B $(C@L8'@;(B $(CD!557O(B $(CGU4O4Y(B; $(C@L(B $(C0f?l4B(B
|
||||
"replace-string". "repl s<TAB>"$(C88(B $(CCD55(B Emacs$(C4B(B $(C@L8'@;(B $(C?O<:=CE3(B
|
||||
$(C0M@T4O4Y(B. $(C8m7I(B $(C@L8'@:(B <Return>$(C@87N(B $(C3!334O4Y(B.
|
||||
|
||||
replace-string $(C8m7I@:(B $(C5N03@G(B $(C@N<v8&(B $(C?d18GU4O4Y(B--$(C9Y2n>nA.>_(B $(CGR(B $(C9.@Z?-0z(B
|
||||
$(C;u7N9Y2n>nAz(B $(C9.@Z?-(B. $(C0"0"@G(B $(C@N<v4B(B <Return>$(C@87N(B $(C3!3;>_(B $(CGU4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(C@L(B $(CAY?!<-(B $(C5N(B $(CAY(B $(C>F7!@G(B $(C:s(B $(CAY7N(B $(C?rAw@L=J=C?@(B.
|
||||
$(C1W(B $(CHD(B M-x repl s<Return>$(C:/H-5G(B<Return>$(C9Y2n(B<Return>$(C@;(B $(CD!=J=C?@(B.
|
||||
|
||||
$(C@L(B $(CAY@L(B $(C>n6;0T(B $(C:/H-5G>z4B0!8&(B $(C@/@GGO=J=C?@(B: $(C1t9Z@L0!(B $(C@V4B(B $(CCJ1b(B $(C@'D!(B
|
||||
$(C4Y@=?!(B $(C:/(B-$(CH-(B-$(C5G(B $(C6s4B(B $(C398;@L(B $(C3*?C(B $(C6'864Y(B "$(C9Y2n(B"$(C6s0m(B
|
||||
$(C;u7N9Y2n>z@>4O4Y(B.
|
||||
|
||||
|
||||
* $(C@Z5?(B $(C0%9+8.(B
|
||||
-------------
|
||||
|
||||
$(CFD@O@;(B $(C:/0fGQ(B $(CHD?!(B $(C>FAw(B $(C0%9+8.8&(B $(CGOAv(B $(C>J>R@88i(B $(C@|;j1b0!(B $(C?M8#8#(B
|
||||
$(C9+3JA|@87N=a(B $(C:/0f(B $(C;gGW@;(B $(C@R>n(B $(C9v81(B $(C<v(B $(C@V@>4O4Y(B. $(C@L71(B $(C@g>S@;(B $(C9fAvGO1b(B
|
||||
$(C@'GX(B, Emacs$(C4B(B $(CFmA}GO0m(B $(C@V4B(B $(C0"0"@G(B $(CFD@O@;(B $(CAV1b@{@87N(B "$(C@Z5?(B $(C0%9+8.(B"
|
||||
$(CFD@O?!(B $(C>94O4Y(B. $(C@Z5?(B $(C0%9+8.5H(B $(CFD@O@G(B $(C@L8'@:(B $(C>U5Z7N(B # $(C9.@Z0!(B $(C@V@>4O4Y(B;
|
||||
$(C?98&(B $(C5i>n(B, "hello.c"$(C6s4B(B $(C@L8'@G(B $(CFD@O@:(B "#hello.c#"$(C6s4B(B $(C@L8'@G(B $(C@Z5?(B
|
||||
$(C0%9+8.(B $(CFD@O@;(B $(C0.0T(B $(C5K4O4Y(B. $(CA$;s@{@87N(B $(CFD@O@;(B $(C0%9+8.GO8i(B Emacs$(C4B(B $(C@Z5?(B
|
||||
$(C0%9+8.(B $(CFD@O@;(B $(CAv?s4O4Y(B.
|
||||
|
||||
$(C@|;j1b0!(B $(C?M8#8#(B $(C9+3JAv8i(B $(C1W(B $(CFD@O@;(B ($(C@Z5?(B $(C0%9+8.5H(B $(CFD@O@L(B $(C>F4O6s(B
|
||||
$(CFmA}GO4x(B $(CFD@O(B) $(CFr;s=CC373(B $(CC#@:(B $(CHD(B M-x recover-file<Return>$(C@;(B $(CD'@87N=a(B
|
||||
$(C@Z5?(B $(C0%9+8.5H(B $(CFmA}90@;(B $(CH8:9=CE3(B $(C<v(B $(C@V@>4O4Y(B. $(CH.@NGR(B $(C0M@;(B $(C?d18GO8i(B
|
||||
yes<Return>$(C@;(B $(CCD<-(B $(C0h<S(B $(CAxG`GO?)(B $(C@Z5?(B $(C0%9+8.5H(B $(C@Z7a8&(B $(CH8:9=CE0=J=C?@(B.
|
||||
|
||||
|
||||
* $(C8^>F8.(B $(CEM(B
|
||||
-----------
|
||||
|
||||
Emacs$(C0!(B, $(C8m7I@;(B $(CD!4B(B $(C<S550!(B $(C4@8.4Y0m(B $(C@N=DGO8i(B $(CH-8i(B $(C9Y4Z@G(B "$(C8^>F8.(B
|
||||
$(CEM(B"$(C6s0m(B $(C:R8.4B(B $(C:s(B $(CEM?!(B $(CD#(B $(C8m7I@;(B $(C:8?)A]4O4Y(B. $(C8^>F8.(B $(CEM4B(B $(CH-8i@G(B $(C9Y4Z(B
|
||||
$(CAY@T4O4Y(B.
|
||||
|
||||
|
||||
* $(C9f=D(B $(CAY(B
|
||||
---------
|
||||
|
||||
$(C8^>F8.(B $(CEM@G(B $(C9Y7N(B $(C@-(B $(CAY@:(B "$(C9f=D(B $(CAY(B"$(C@L6s0m(B $(C:N8(4O4Y(B. $(C9f=D(B $(CAY@:(B $(C4Y@=0z(B
|
||||
$(C00@:(B $(C=D@87N(B $(CG%=C5G>n(B $(C@V@>4O4Y(B.
|
||||
|
||||
--:** TUTORIAL.ko (Fundamental)--L670--58%----------------
|
||||
|
||||
$(C@L(B $(CAY?!4B(B Emacs$(C3*(B $(CFmA}GO0m(B $(C@V4B(B $(C1[?y@G(B $(C;sH2?!(B $(C4kGQ(B $(C@/?kGQ(B $(CA$:80!(B
|
||||
$(C0#Aw5G>n(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(CFD@O(B $(C@L8'@L(B $(C9+>y@;(B $(C@G9LGO4BAv4B(B $(C@L9L(B $(C>K0m(B $(C@V@>4O4Y(B--$(C1W(B $(C0M@:(B $(CC#>R4x(B
|
||||
$(CFD@O@T4O4Y(B. -NN%--$(C4B(B $(C1[?y?!<-@G(B $(CGv@g(B $(C@'D!8&(B $(C0!8.E54O4Y(B; $(C@L4B(B $(CH-8i(B
|
||||
$(C2@4k1b(B $(C@'7N(B NN $(CF[<>F.@G(B $(C1[?y@L(B $(C@V@=@;(B $(C@G9LGU4O4Y(B. $(CFD@O@G(B $(C2@4k1b0!(B
|
||||
$(CH-8i?!(B $(C@V@88i(B --00%-- $(C4k=E?!(B --Top--$(C@L6s0m(B $(CG%=C5K4O4Y(B. $(C1[?y@G(B
|
||||
$(C9X9Y4Z@L(B $(CH-8i?!(B $(C@V@88i(B --Bot--$(C@L6s0m(B $(CG%=C5K4O4Y(B. $(C1[?y@L(B $(C>FAV(B $(C@[>F<-(B
|
||||
$(C8p5g(B $(C3;?k@L(B $(CH-8i?!(B $(C4Y(B $(C3*E83*8i(B $(C9f=D(B $(CAY?!4B(B --All--$(C@L6s0m(B $(CG%=C5K4O4Y(B.
|
||||
|
||||
$(C0E@G(B $(C>U:N:P?!(B $(C@V4B(B $(C:0(B $(C9.@Z5i@:(B $(C1[?y@L(B $(C:/0f5G>z@=@;(B $(C@G9LGU4O4Y(B. $(CFD@O(B
|
||||
$(C9f9.(B $(CAwHD3*(B $(C0%9+8.(B $(CAwHD?!4B(B $(C1W(B $(C0w?!(B $(C:0(B $(C9.@Z0!(B $(C>x0m(B $(C4k=C(B $(C9.@Z88(B
|
||||
$(C@V@>4O4Y(B.
|
||||
|
||||
$(C9f=D(B $(CAY@G(B $(C0}H#(B $(C9.@Z>H@:(B $(C>n62(B $(CFmA}(B $(C9f=D@;(B $(C;g?kGO0m(B $(C@V4B0!8&(B
|
||||
$(C>K7AA]4O4Y(B. $(C>VCJ(B $(C9f=D@:(B Fundamental$(C7N<-(B $(CAv1](B $(C;g?k5G0m(B $(C@V4B(B
|
||||
$(C9f=D@T4O4Y(B. $(C@L4B(B "$(CAV(B $(C9f=D(B"$(C@G(B $(CGQ(B $(C?9@T4O4Y(B.
|
||||
|
||||
Emacs$(C?!4B(B $(CAV(B $(C9f=D@L(B $(C89@L(B $(C@V@>4O4Y(B. $(C1W(B $(CA_(B $(C8n0!Av4B(B $(C4Y8%(B $(C>p>n(B $(C6G(B/$(C6G4B(B
|
||||
$(C4Y8%(B $(CA>7y@G(B $(C1[?y@;(B $(CFmA}GO557O(B $(CGO4B5%(B $(C>2@L8g(B, Lisp $(C9f=D(B, Text $(C9f=D(B
|
||||
$(C5n5n@L(B $(C@V@>4O4Y(B. $(CGW;s(B $(CGQ(B $(C0!Av(B $(CAV(B $(C9f=D88@L(B $(C@{?k5G8g(B $(CAv1](B
|
||||
"Fundamental"$(C@L6s0m(B $(C@{Gt(B $(C@V4B(B $(C0w?!(B $(CG%=C5K4O4Y(B.
|
||||
|
||||
$(C0"0"@G(B $(CAV(B $(C9f=D@:(B $(C8n8n(B $(C8m7I5i@L(B $(C@[5?@;(B $(C4^8.GO557O(B $(C5G>n(B $(C@V@>4O4Y(B. $(C?98&(B
|
||||
$(C5i>n(B, $(CGA7N1W7%?!4B(B $(C<38m9.@;(B $(C885e4B(B $(C8m7I@L(B $(C@V4B5%(B, $(CGA7N1W7%(B $(C>p>n5i@:(B
|
||||
$(C<38m9.@G(B $(CG|EB@;(B $(C0"0"(B $(C4^8.(B $(CGO1b(B $(C6'9.?!(B $(C0"0"@G(B $(CAV(B $(C9f=D@:(B $(C<38m9.@;(B $(C<-7N(B
|
||||
$(C4Y8#0T(B $(C3"?v(B $(C3V557O(B $(C5G>n(B $(C@V@>4O4Y(B. $(C8p5g(B $(CAV(B $(C9f=D@:(B $(CH.@e(B $(C8m7I@G(B $(C@L8'@;(B
|
||||
$(C;g?kGO9G7N<-(B $(C1W(B $(C9f=D@87N(B $(C>y9Y2Y4B(B $(C0M@L(B $(C=10T(B $(C@N=D5I(B $(C<v(B $(C@V@>4O4Y(B. $(CGQ(B
|
||||
$(C?97N(B M-x fundamental-mode$(C4B(B Fundamental $(C9f=D@87N(B $(C>y9Y2Y4B(B $(C8m7I@T4O4Y(B.
|
||||
|
||||
$(C@L(B $(CFD@O0z(B $(C00@:(B $(CGQ1[(B $(C1[?y@;(B $(CFmA}GO7A0m(B $(CGQ4Y8i(B Text $(C9f=D@;(B $(C>24B(B $(C0M@L(B
|
||||
$(CAA@;(B $(C0M@T4O4Y(B.
|
||||
>> M-x text mode<Return>$(C@;(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(CAv1]1nAv(B $(C9h?n(B Emacs $(C8m7I5i@:(B $(C89@L(B $(C4^6sAvAv(B $(C>J@84O(B $(C0FA$GOAv(B $(C>J>F55(B
|
||||
$(C5K4O4Y(B. $(C1W7/3*(B M-f$(C?M(B M-b$(C0!(B $(C>U@[@:5{?HG%8&(B $(C398;@G(B $(C@O:N7N(B $(CC38.GT@;(B
|
||||
$(C0|B{GR(B $(C<v(B $(C@V@;(B $(C0M@T4O4Y(B. $(C@|?!(B Fundamental $(C9f=D?!<-4B(B M-f$(C?M(B M-b$(C0!(B
|
||||
$(C>U@[@:5{?HG%8&(B $(C398;(B $(C:P8.(B $(C9.@Z7N(B $(CCk1^GO?4@>4O4Y(B.
|
||||
|
||||
$(CAV(B $(C9f=D@:(B $(C:8Ek(B $(C4Y@=0z(B $(C00@:(B $(C9L9&GQ(B $(C:/H-8&(B $(CCJ7!GU4O4Y(B: $(C4k:N:P@G(B $(C8m7I5i@:(B
|
||||
$(C0"0"@G(B $(CAV(B $(C9f=D?!<-(B "$(C00@:(B $(C@O(B"$(C@;(B $(CGOAv88(B $(C>`0#(B $(C4Y8#0T(B $(C@[5?GQ4Y(B.
|
||||
|
||||
$(CGv@g@G(B $(CAV(B $(C9f=D?!(B $(C4kGQ(B $(C9.<-H-8&(B $(C:80m@Z(B $(CGO8i(B C-h m$(C@;(B $(CD!=J=C?@(B.
|
||||
|
||||
>> C-u C-v$(C8&(B $(C8n(B $(C9x(B $(CCD<-(B $(C@L(B $(CAY@;(B $(CH-8i@G(B $(C2@4k1bBk@87N(B $(C?rAw@L=J=C?@(B.
|
||||
>> C-h m$(C@;(B $(CCD<-(B Text $(C9f=D0z(B Fundamental $(C9f=D@G(B $(CBw@LA!@;(B $(C:8=J=C?@(B.
|
||||
>> C-x 1$(C@;(B $(CCD<-(B $(C9.<-H-8&(B $(CH-8i?!<-(B $(C>x>V=J=C?@(B.
|
||||
|
||||
$(CAV(B $(C9f=D@:(B $(C:N(B $(C9f=D@L(B $(C@V1b(B $(C6'9.?!(B $(CAV(B $(C9f=D@L6s0m(B $(C:N8(4O4Y(B. $(C:N(B $(C9f=D@:(B $(CAV(B
|
||||
$(C9f=D@;(B $(C13C<GR(B $(C<v(B $(C@V4B(B $(C0M@L(B $(C>F4O6s(B $(CAV(B $(C9f=D@;(B $(C:NBw@{@87N(B $(C<vA$GQ(B
|
||||
$(C9f=D@T4O4Y(B. $(C0"0"@G(B $(C:N(B $(C9f=D@:(B $(C4Y8%(B $(C:N(B $(C9f=D0z(B $(C5683@{@87N(B, $(C1W8.0m(B $(CAV(B
|
||||
$(C9f=D0z55(B $(C5683@{@87N(B, $(C1W(B $(C@ZC<7N<-(B $(C2t0m(B $(CDS(B $(C<v(B $(C@V@>4O4Y(B. $(C1W7/9G7N(B $(C:N(B
|
||||
$(C9f=D@:(B $(C>2Av(B $(C>J@;(B $(C<v55(B $(C@V0m(B $(CGO3*88(B $(C>5(B $(C<v55(B $(C@V@88i(B $(C?)7/(B $(C:N(B $(C9f=D@;(B
|
||||
$(CB%8BCg<-(B $(C>5(B $(C<v55(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C>FAV(B $(C@/?kGQ(B $(C:N(B $(C9f=DA_(B, $(CGQ1[(B $(C1[?y@;(B $(CFmA}GR(B $(C6'(B $(C@ZAV(B $(C;g?k5G4B(B Auto Fill
|
||||
$(C9f=D@L(B $(C@V@>4O4Y(B. $(C@L(B $(C9f=D@L(B $(CDQA.(B $(C@V@;(B $(C6'(B Emacs$(C4B(B, $(CAY@L(B $(C3J9+(B $(C3P>nAv8i(B
|
||||
$(C1[?y@L(B $(C3"?vA|?!(B $(C5{6s(B $(C398;;g@L?!<-(B $(C@Z5?@87N(B $(CAY9Y2^@;(B $(CGU4O4Y(B.
|
||||
|
||||
Auto Fill $(C9f=D@;(B $(CDQ1b(B $(C@'GX<-4B(B M-x auto-fill-mode<Return>$(C@;(B $(CD(4O4Y(B.
|
||||
$(C@L(B $(C9f=D@L(B $(CDQA.(B $(C@V@88i(B M-x auto-fill-mode<Return>$(C@;(B $(CCD<-(B $(C2x(B $(C<v(B
|
||||
$(C@V@>4O4Y(B. $(C@L(B $(C9f=D@L(B $(C2(A.(B $(C@V@88i(B $(C@L(B $(C8m7I@:(B $(C1W(B $(C9f=D@;(B $(CDQ0m(B, $(C9]4k7N(B $(CDQA.(B
|
||||
$(C@V@;(B $(C6'4B(B $(C@L(B $(C9f=D@;(B $(C2|4O4Y(B. $(C?l8.4B(B $(C@L(B $(C8m7I@L(B "$(C9f=D@;(B $(C6H5|(B"$(CGQ4Y0m(B
|
||||
(toggle) $(CGU4O4Y(B.
|
||||
|
||||
>> M-x auto fill mode<Return>$(C@;(B $(CAv1](B $(CCD(B $(C:8=J=C?@(B. $(C1W8.0m(B "asdf "$(C6s4B(B
|
||||
$(CAY@;(B $(C0h<S(B $(C3"?v(B $(C3V>n<-(B $(C1W(B $(CAY@L(B $(C5Q7N(B $(C3*45557O(B $(CGO=J=C?@(B. Auto Fill
|
||||
$(C9f=D@:(B $(C0x0#(B $(C9.@Z?!<-88(B $(CAY9Y2^@;(B $(CGO1b(B $(C6'9.?!(B $(C2@(B $(C0x0#(B $(C9.@Z0!(B $(C5i>n(B
|
||||
$(C@V>n>_(B $(CGU4O4Y(B.
|
||||
|
||||
$(CGQ0h4B(B $(C:8Ek(B 70$(C03@G(B $(C9.@Z7N(B $(CA$GXA.(B $(C@VAv88(B C-x f $(C8m7I@87N(B $(C1W(B $(C0M@;(B $(C:/0fGR(B
|
||||
$(C<v(B $(C@V@>4O4Y(B. $(C?xGO4B(B $(CGQ0h(B $(C<3A$@:(B $(C<}@Z(B $(C@N<v7N(B $(CGO?)>_(B $(CGU4O4Y(B.
|
||||
|
||||
>> 20$(C@L6s4B(B $(C@N<v7N(B C-x f$(C8&(B $(CCD(B $(C:8=J=C?@(B. (C-u 2 0 C-x f).
|
||||
$(C1W8.0m(B $(C1[?y@;(B $(C9:0!(B $(CCD<-(B Emacs$(C0!(B 20$(C03@G(B $(C9.@Z7N(B $(CGQ(B $(CAY@;(B $(CC$?l4BAv8&(B
|
||||
$(C:8=J=C?@(B. $(C1W71(B $(C4Y@=?!(B C-x f$(C8&(B $(C4Y=C(B $(C=a<-(B $(CGQ0h8&(B 70$(C@87N(B $(C@g(B
|
||||
$(C<3A$GO=J=C?@(B.
|
||||
|
||||
$(C4\6t@G(B $(CA_0#?!<-(B $(C:/0fGO8i(B Auto Fill $(C9f=D@:(B $(CC$?r@;(B $(C4Y=C(B $(CGOAv(B
|
||||
$(C>J@>4O4Y(B. $(C1W(B $(C4\6t@;(B $(C4Y=C(B $(CC$?l1b(B $(C@'GX<-4B(B $(C1t9Z@L0!(B $(C4\6t(B $(C>H?!(B $(C@V4B(B
|
||||
$(C;sEB?!<-(B M-q (Meta$(C<h(B-q)$(C8&(B $(CD(4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(C@L@|(B $(C4\6t@87N(B $(C?rAw@N(B $(CHD(B M-q$(C8&(B $(CD!=J=C?@(B.
|
||||
|
||||
* $(CC#1b(B
|
||||
------
|
||||
|
||||
Emacs$(C4B(B $(C1[?y@G(B $(C>UBJ@L3*(B $(C5^BJ@87N(B $(C9.@Z?-@;(B ($(C9.@Z?-@:(B $(C?,<S5H(B $(C9.@Z3*(B
|
||||
$(C?,<S5H(B $(C398;@T4O4Y(B) $(CC#@;(B $(C<v(B $(C@V@>4O4Y(B. $(C9.@Z?-@;(B $(CC#4B(B $(C0M@:(B $(C1t9Z@L8&(B
|
||||
$(C?rAw@L4B(B $(C8m7I@T4O4Y(B; $(C1t9Z@L0!(B $(C1W(B $(C9.@Z?-@L(B $(C3*E83*4B(B $(C0w@87N(B $(C?rAw@T4O4Y(B.
|
||||
|
||||
Emacs$(C@G(B $(CC#1b(B $(C8m7I@:(B "$(CAu0!@{(B"$(C@L6s4B(B $(CA!?!<-(B $(C@O9](B $(CFmA}1b@G(B $(CC#1b(B $(C8m7I0z(B
|
||||
$(C4Y8(4O4Y(B. $(C@L4B(B $(CC#0m@Z(B $(CGO4B(B $(C9.@Z?-@;(B $(CE8@ZGO0m(B $(C@V4B(B $(C5?>H?!(B $(CC#1b0!(B
|
||||
$(C@L7g>nAv0m(B $(C@V4Y4B(B $(C0M@;(B $(C@G9LGU4O4Y(B.
|
||||
|
||||
$(CC#1b8&(B $(C=C@[=CE04B(B $(C8m7I@:(B $(C>UBJ@87N(B $(CC#1b0!(B C-s$(C@L0m(B $(C5^BJ@87N(B $(CC#1b0!(B
|
||||
C-r$(C@T4O4Y(B. $(C1W7/3*(B $(C@a1q(B $(C1b4Y8.=J=C?@(B! $(CAv1](B $(C@L0M@;(B $(C=C55GX(B $(C:8Av(B
|
||||
$(C86=J=C?@(B.
|
||||
|
||||
C-s$(C8&(B $(CD!8i(B $(C8^>F8.(B $(CEM?!(B, $(C1f@b@L7N(B "I-search"$(C6s4B(B $(C9.@Z?-@L(B $(C3*E83*4B(B $(C0M@;(B
|
||||
$(C:<(B $(C<v(B $(C@V@>4O4Y(B. $(C@L4B(B $(CC#0m@Z(B $(CGO4B(B $(C9.@Z?-@L(B $(CE8@Z5G1b8&(B $(C1b4Y6s8i<-(B
|
||||
Emacs$(C0!(B $(CAu0!@{(B $(CC#1b(B $(CA_?!(B $(C@V4Y4B(B $(C0M@;(B $(C8;GX(B $(CA]4O4Y(B. <Return>$(C@:(B $(CC#1b8&(B
|
||||
$(C86D(4O4Y(B.
|
||||
|
||||
>> $(C@LA&(B C-s$(C8&(B $(CCD<-(B $(CC#1b8&(B $(C=C@[GO=J=C?@(B. $(CC5C5Hw(B, $(CGQ(B $(C9x?!(B $(CGQ(B $(C1[@Z>?(B
|
||||
'cursor'$(C6s0m(B $(CD!8i<-(B $(C0"0"@G(B $(C9.@Z8&(B $(CD#(B $(CHD(B $(C1t9Z@L?!(B $(C>n62(B $(C@O@L(B $(C@O>n(B
|
||||
$(C3*4B0!8&(B $(C@/@GGO=J=C?@(B.
|
||||
$(C@LA&(B "cursor"$(C8&(B $(CGQ(B $(C9x(B $(CC#@:(B $(C0M@T4O4Y(B.
|
||||
>> C-s$(C8&(B $(C4Y=C(B $(CCD<-(B $(C4Y@=?!(B $(C3*E83*4B(B "cursor"$(C8&(B $(CC#@8=J=C?@(B.
|
||||
>> $(C@Z(B, $(C@LA&4B(B <Delete>$(C8&(B $(C3W(B $(C9x(B $(CCD<-(B $(C1t9Z@L0!(B $(C>n6;0T(B $(C?rAw@L4B0!8&(B
|
||||
$(C:8=J=C?@(B.
|
||||
>> <Return>$(C@;(B $(CCD<-(B $(CC#1b8&(B $(C3!3;=J=C?@(B.
|
||||
|
||||
$(C>n62(B $(CGv;s@L(B $(C@O>n3*4BAv8&(B $(C:8>R@>4O1n(B? $(CAu0!@{(B $(CC#1b?!<-(B Emacs$(C4B(B $(C1W6'1nAv(B
|
||||
$(CE8@ZGQ(B $(C9.@Z?-@;(B $(CC#@87A0m(B $(CGU4O4Y(B. '$(C1t9Z@L(B'$(C0!(B $(C@V4B(B $(C4Y@=(B $(C@e<R7N(B $(C0!7A8i(B
|
||||
C-s$(C8&(B $(C4Y=C(B $(CD(4O4Y(B. $(C1W71(B $(C0w@L(B $(C>x@88i(B Emacs$(C4B(B $(C;`<R8.8&(B $(C3;0m(B $(CC#1b0!(B $(CGv@g(B
|
||||
"$(C=GFP(B"$(CG_@=@;(B $(C>K7A(B $(CAV8g(B C-g$(C7N55(B $(CC#1b8&(B $(C3!3>(B $(C<v(B $(C@V0T(B $(CGU4O4Y(B.
|
||||
|
||||
$(C@/@G(B: $(C>n62(B $(C?n?5(B $(CC<0h?!<-4B(B C-s$(C8&(B $(CD!8i(B $(CH-8i@;(B $(C5?0a=CDQ<-(B, Emacs$(C0!(B $(C>F9+(B
|
||||
$(CCb7B55(B $(CGOAv(B $(C>J4B(B $(C0M@;(B $(C:<(B $(C0f?l0!(B $(C@V@>4O4Y(B. $(C@L0M@:(B "$(CHe8'(B $(CA&>n(B"$(C6s0m(B
|
||||
$(C:R8.?l4B(B $(C?n?5(B $(CC<0h@G(B "$(CF/B!(B"$(C@L(B C-s$(C8&(B $(C0!7NC$<-(B Emacs$(C8&(B $(CEkGX(B $(C@|4^5GAv(B
|
||||
$(C>J557O(B $(CGO1b(B $(C6'9.@T4O4Y(B. C-q$(C8&(B $(C4)8#8i(B $(CH-8i@L(B $(CGXA&5K4O4Y(B. $(C1W8.0m(B $(C3*<-(B
|
||||
Emacs $(C<38m<-@G(B "Spontaneous Entry to Incremental Search"$(C6s4B(B $(C4\?x@;(B
|
||||
$(C:88i(B $(C@L71(B "$(CF/B!(B"$(C@;(B $(C>n6;0T(B $(CCk1^GR(B $(C<v(B $(C@V4B0!?!(B $(C4kGQ(B $(CA6>p@;(B $(C@P@;(B $(C<v(B
|
||||
$(C@V@>4O4Y(B.
|
||||
|
||||
$(CAu0!@{(B $(CC#1b(B $(C55A_?!(B <Delete>$(C8&(B $(CD!8i(B $(CC#1b(B $(C9.@Z?-@G(B $(C86Av87(B $(C9.@Z0!(B
|
||||
$(CAv?vAv0m(B $(CC#1b4B(B $(C86Av87@87N(B $(CC#>R4x(B $(C0w?!(B $(C5G59>F(B $(C0!4B(B $(C0M@;(B $(C:<(B $(C<v(B
|
||||
$(C@V@>4O4Y(B. $(C?98&(B $(C5i>n(B, "c"$(C0!(B $(C>n5p?!(B $(CC3@=@87N(B $(C3*?@4BAv8&(B $(C:81b(B $(C@'GX<-(B
|
||||
"c"$(C8&(B $(CCF4Y0m(B $(CGU=C4Y(B. $(C@LA&(B "u"$(C8&(B $(CD!8i(B $(C1t9Z@L4B(B "cu"$(C0!(B $(CC3@=@87N(B $(C3*?@4B(B
|
||||
$(C0w@87N(B $(C?rAw@O(B $(C0M@T4O4Y(B. $(C@LA&(B <Delete>$(C8&(B $(CD!=J=C?@(B. $(C1W7/8i(B $(CC#1b(B
|
||||
$(C9.@Z?-?!<-(B "u"$(C0!(B $(CAv?vAv0m(B $(C1t9Z@L4B(B "c"$(C0!(B $(CC3@=(B $(C3*?B(B $(C0w@87N(B $(C5G59>F(B
|
||||
$(C0)4O4Y(B.
|
||||
|
||||
$(CC#1bA_?!(B $(CA&>n(B $(C9.@Z3*(B meta $(C9.@Z8&(B $(CD!8i(B ($(C?9?\0!(B $(C@VAv88(B--$(CC#1b?!<-(B $(CF/:0GQ(B
|
||||
$(C@G9L8&(B $(C0.4B(B C-s$(C3*(B C-r$(C0z(B $(C00@:(B $(C9.@Z5i(B) $(CC#1b4B(B $(C3!3*9v834O4Y(B.
|
||||
|
||||
C-s$(C4B(B $(C1t9Z@L@G(B $(CGv@g(B $(C@'D!(B $(C4Y@=?!(B $(C9_0_5G4B(B $(CC#1b(B $(C9.@Z?-@;(B $(CC#557O(B
|
||||
$(C=C@[=CE54O4Y(B. $(C@L@|?!(B $(C3*?B(B $(C1[?y?!<-(B $(C9+>p0!8&(B $(CC#@87A8i(B C-r$(C8&(B $(CD(4O4Y(B.
|
||||
C-s$(C?!(B $(C@{?k5G4B(B $(C8p5g(B $(C;gGW@:(B $(C9fGb88(B $(C9Y2n>z@;(B $(C;S(B $(C8p5N(B C-r$(C?!(B $(C@{?k5K4O4Y(B.
|
||||
|
||||
* $(C4YA_(B $(CC"(B
|
||||
---------
|
||||
|
||||
Emacs$(C@G(B $(C1&Bz@:(B $(CF/B!(B $(CA_@G(B $(CGO3*7N(B $(CGQ(B $(C03(B $(C@L;s@G(B $(CC"@;(B $(C5?=C?!(B $(CH-8i?!(B $(CG%=CGR(B
|
||||
$(C<v(B $(C@V4Y4B(B $(C0M@;(B $(C5i(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> $(C1t9Z@L8&(B $(C@L(B $(CAY7N(B $(C?rAw?)<-(B C-u 0 C-l$(C@;(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
>> C-x 2$(C8&(B $(CCD<-(B $(CH-8i@;(B $(C5N(B $(CC"@87N(B $(C3*4)=J=C?@(B.
|
||||
$(C5N(B $(CC"@:(B $(C@L(B $(CAvD'<-8&(B $(CH-8i(B $(CG%=CGU4O4Y(B. $(C1t9Z@L4B(B $(C@-(B $(CC"?!(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> C-M-v$(C8&(B $(CCD<-(B $(C9Y4Z(B $(CC"@;(B $(C5N7g8;1b(B $(CGO=J=C?@(B.
|
||||
(Meta$(C<h0!(B $(C>x@88i(B ESC C-v$(C8&(B $(CD!=J=C?@(B.)
|
||||
|
||||
>> C-x o ("o"$(C4B(B "other"$(C@G(B $(CC9(B $(C1[@Z(B)$(C8&(B $(CCD<-(B $(C1t9Z@L8&(B $(C9Y4Z(B $(CC"@87N(B
|
||||
$(C?rAw@L=J=C?@(B.
|
||||
>> $(C9Y4Z(B $(CC"?!<-(B C-v$(C?M(B M-v$(C8&(B $(C=a<-(B $(C5N7g8;1b(B $(CGO=J=C?@(B.
|
||||
$(C@L(B $(CAv=C8&(B $(C@P4B(B $(C0M@:(B $(C2@4k1b(B $(CC"?!<-(B $(CGU4O4Y(B.
|
||||
|
||||
>> C-x o$(C8&(B $(C4Y=C(B $(CCD<-(B $(C1t9Z@L8&(B $(C4Y=C(B $(C2@4k1b(B $(CC"@87N(B $(C?rAw@L=J=C?@(B.
|
||||
$(C2@4k1b(B $(CC"?!<-(B, $(C1t9Z@L4B(B $(C@|?!(B $(C@V4x(B $(C0w@87N(B $(C0%(B $(C0M@T4O4Y(B.
|
||||
|
||||
C-x o$(C8&(B $(C0h<S(B $(C;g?kGO?)(B $(CC"5i(B $(C;g@L?!<-(B $(C>y9Y2Y1b8&(B $(CGR(B $(C<v(B $(C@V@>4O4Y(B. $(C0"0"@G(B
|
||||
$(CC"@:(B $(C@ZC<@G(B $(C1t9Z@L(B $(C@'D!8&(B $(C0.0m(B $(C@VAv88(B $(CGQ(B $(CC"88@L(B $(C1t9Z@L8&(B $(C:8?)(B $(CA]4O4Y(B.
|
||||
$(C8p5g(B $(CA$;s@{@N(B $(CFmA}(B $(C8m7I@:(B $(C1t9Z@L0!(B $(C@V4B(B $(CC"?!(B $(C@{?k5K4O4Y(B. $(C@L0M@;(B
|
||||
"$(C<1EC5H(B $(CC"(B"$(C@L6s0m(B $(C:N8(4O4Y(B.
|
||||
|
||||
C-M-v $(C8m7I@:(B $(C4Y8%(B $(CC"@;(B $(CB|A6GO8i<-(B $(C1[?y@;(B $(CFmA}GR(B $(C6'(B $(C@/?kGU4O4Y(B.
|
||||
$(C1t9Z@L8&(B $(CFmA}GO0m(B $(C@V4B(B $(CC"?!(B $(C5N0m(B $(C4Y8%(B $(CC"@;(B C-M-v$(C7N(B $(C@|Ax=CE3(B $(C<v(B
|
||||
$(C@V@>4O4Y(B.
|
||||
|
||||
C-M-v$(C4B(B CONTROL-META $(C9.@Z@G(B $(CGQ(B $(C?9@T4O4Y(B. META$(C<h0!(B $(C@V@88i(B CONTROL$(C<h?M(B
|
||||
META$(C<h8&(B $(C4)8%(B $(CC$(B v $(C1[<h8&(B $(CD!9G7N=a(B C-M-v$(C8&(B $(CD%(B $(C<v(B $(C@V@>4O4Y(B. CONTROL$(C<h3*(B
|
||||
META$(C<h4B(B $(CE8@ZGO4B(B $(C9.@Z8&(B $(C:/0fGO4B(B $(C?*GR@;(B $(CGO1b(B $(C6'9.?!(B $(C1W(B $(C5Q(B $(CA_(B $(C9+>y@L(B
|
||||
$(CC3@=?!(B $(C?@4B0!0!(B $(C9.A&5GAv(B $(C>J@>4O4Y(B.
|
||||
|
||||
META$(C<h0!(B $(C>x>n<-(B ESC$(C<h7N(B $(C4k?kGR(B $(C6'4B(B $(C<x<-0!(B $(C9.A&5K4O4Y(B: ESC$(C<h8&(B $(C8U@z(B
|
||||
$(CD!0m(B $(CA&>n9.@Z(B-v$(C8&(B $(CCD>_(B $(CGO8g(B $(CA&>n9.@Z(B-ESC v$(C4B(B $(C@[5?GOAv(B $(C>J@>4O4Y(B. $(C1W(B
|
||||
$(C@L@/4B(B ESC$(C@L(B $(C:/0f<h0!(B $(C>F4O6s(B $(C@ZC<7N<-(B $(C1b4I@;(B $(C0!Ax(B $(C9.@Z@L1b(B $(C6'9.@T4O4Y(B.
|
||||
|
||||
>> C-x 1$(C@;(B ($(C@L(B $(C2@4k1b(B $(CC"?!<-(B) $(CCD<-(B $(C9Y4Z(B $(CC"@;(B $(C>x>V=J=C?@(B.
|
||||
|
||||
($(C9Y4Z(B $(CC"?!<-(B C-x 1$(C@;(B $(CD!8i(B $(C2@4k1b(B $(CC"@L(B $(C>x>nAz(B $(C0M@T4O4Y(B. $(C@L(B $(C8m7I@;(B "$(CGQ(B
|
||||
$(CC"88(B $(C:8A8GO=C?@(B--$(CAv1](B $(C@[>wA_@N(B $(CC"88(B"$(C@L6s0m(B $(C;}0"GO=J=C?@(B.)
|
||||
|
||||
$(C>gBJ(B $(CC"?!(B $(C00@:(B $(C;g@LD-@;(B $(CH-8i(B $(CG%=CGR(B $(CGJ?d4B(B $(C>x@>4O4Y(B. $(CGQ(B $(CC"?!<-(B C-x
|
||||
C-f$(C7N(B $(CFD@O@;(B $(CC#@88i(B $(C4Y8%(B $(CC"@:(B $(C:/H-0!(B $(C>x@>4O4Y(B. $(C0"0"@G(B $(CC"?!<-(B $(CFD@O@;(B
|
||||
$(C5683@{@87N(B $(CC#@;(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(C5N(B $(CC"@;(B $(C;g?kGO?)(B $(C4Y8%(B $(C3;?k@;(B $(CH-8i(B $(CG%=CGO4B(B $(C6G(B $(C4Y8%(B $(C9f9}@L(B $(C@V@>4O4Y(B:
|
||||
|
||||
>> C-x 4 C-f$(C8&(B $(CD!0m(B $(CFD@O(B $(C@L8'(B $(CGO3*8&(B $(CCD(B $(C:8=J=C?@(B.
|
||||
<Return>$(C@87N(B $(C3!3;=J=C?@(B. $(C1W(B $(CFD@O@L(B $(C9Y4Z(B $(CC"?!(B $(C3*E83*4B(B $(C0M@;(B
|
||||
$(C:8=J=C?@(B. $(C1t9Z@L55(B $(C1W(B $(C0w@87N(B $(C?rAw@T4O4Y(B.
|
||||
|
||||
>> C-x o$(C8&(B $(CCD<-(B $(C4Y=C(B $(C2@4k1b(B $(CC"@87N(B $(C59>F(B $(C0!<-(B C-x 1$(C7N(B $(C9Y4Z(B $(CC"@;(B
|
||||
$(CAv?l=J=C?@(B.
|
||||
|
||||
|
||||
* $(CH81M@{(B $(CFmA}(B $(C<vAX(B
|
||||
------------------
|
||||
|
||||
$(C0#H$(B "$(CH81M@{(B $(CFmA}(B $(C<vAX(B"$(C@L6s0m(B (recursive editing level) $(C:R8.?l4B(B $(C0M?!(B
|
||||
$(C:@BxGO0T(B $(C5K4O4Y(B. $(C9f=D(B $(CAY?!<-(B $(CAV(B $(C9f=D(B $(C@L8'@G(B $(C>U5Z?!(B $(C@V4B(B $(C<R0}H#(B $(C9.@Z8&(B
|
||||
$(C4k0}H#(B $(C9.@Z0!(B $(C5Q7/(B $(C=N0m(B $(C@V@88i(B $(C@L8&(B $(C>K(B $(C<v(B $(C@V@>4O4Y(B. $(C?98&(B $(C5i>n(B,
|
||||
(Fundamental) $(C4k=E?!(B [(Fundamental)]$(C@L6s0m(B $(CG%=C5I(B $(C6'(B $(C@T4O4Y(B.
|
||||
|
||||
$(C@L(B $(CH81M@{(B $(CFmA}(B $(C<vAX?!<-(B $(C9~>n(B $(C3*1b(B $(C@'GX<-4B(B ESC ESC ESC$(C@;(B $(CD(4O4Y(B.
|
||||
$(C@L(B $(C0M@:(B $(C4Y8q@{(B "$(C9~>n3*1b(B" $(C8m7I@T4O4Y(B. $(CC_0!5H(B $(CC"@;(B $(C>x>V0E3*(B $(C@[@:(B
|
||||
$(C;g@LD-?!<-(B $(C3*?@1b(B $(C@'GX<-55(B $(C;g?k5I(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
>> M-x$(C8&(B $(CCD<-(B $(C@[@:(B $(C;g@LD-@87N(B $(C5i>n(B $(C0!=J=C?@(B; $(C1W8.0m4B(B ESC ESC ESC$(C@;(B
|
||||
$(CCD<-(B $(C:|A.(B $(C3*?@=J=C?@(B.
|
||||
|
||||
C-g$(C8&(B $(C=a<-4B(B $(CH81M@{(B $(CFmA}(B $(C<vAX?!<-(B $(C9~>n3/(B $(C<v(B $(C>x@>4O4Y(B. $(C1W(B $(C@L@/4B(B C-g$(C0!(B
|
||||
$(CH81M@{(B $(CFmA}(B $(C<vAX(B $(C@L3;?!<-(B $(C8m7I@L3*(B $(C@N<v8&(B $(CCk<RGO1b(B $(C@'GX(B $(C;g?k5G1b(B
|
||||
$(C6'9.@T4O4Y(B.
|
||||
|
||||
|
||||
* $(C4u(B $(C89@:(B $(C55?r8;(B $(C>r1b(B
|
||||
---------------------
|
||||
|
||||
$(C@L(B $(CAvD'<-?!<-4B(B Emacs $(C;g?k@;(B $(C=C@[GO1b?!(B $(CCf:PGQ(B $(CA$:88&(B $(CA&0xGO7A0m(B
|
||||
$(C3k7BGO?4@>4O4Y(B. Emacs$(C?!4B(B $(C3J9+3*(B $(C89@:(B $(C1b4I@L(B $(C@V>n<-(B $(C?)1b<-4B(B $(C8p5N(B $(C4Y(B
|
||||
$(C<38mGR(B $(C<v(B $(C>x@>4O4Y(B. $(C1W7/3*(B, Emacs$(C?!4B(B $(C4Y8%(B $(C89@:(B $(C@/?kGQ(B $(CF/B!5i@L(B
|
||||
$(C@V>n<-(B Emacs$(C?!(B $(C4kGX<-(B $(C4u(B $(C89@L(B $(C9h?l0m(B $(C=M@;(B $(C0M(B $(C@T4O4Y(B. Emacs$(C4B(B Emacs
|
||||
$(C8m7I?!(B $(C4kGQ(B $(C9.<-H-8&(B $(C@P@;(B $(C<v(B $(C@V4B(B $(C8m7I@;(B $(CA&0xGU4O4Y(B. $(C@L(B "$(C55?r8;(B"
|
||||
$(C8m7I5i@:(B $(C8p5N(B $(CA&>n9.@Z(B-h$(C7N(B $(C=C@[GO8g(B $(C@L(B $(C9.@Z8&(B "$(C55?r8;(B $(C9.@Z(B"$(C6s0m(B
|
||||
$(C:N8(4O4Y(B.
|
||||
|
||||
$(C55?r8;(B $(CF/B!@;(B $(C;g?kGO7A8i(B C-h $(C9.@Z8&(B $(CD!0m(B $(C?xGO4B(B $(CA>7y@G(B $(C55?r8;@;(B
|
||||
$(C0!8#E04B(B $(C9.@Z8&(B $(CD(4O4Y(B. $(C@|Gt(B $(C;}0"@L(B $(C>J3*8i(B C-h ?$(C8&(B $(CCD<-(B, Emacs$(C0!(B
|
||||
$(C>n62(B $(CA>7y@G(B $(C55?r8;@;(B $(CA&0xGR(B $(C<v(B $(C@V4B0!8&(B $(C:8?)(B $(CAV557O(B $(CGO=J=C?@(B. C-h$(C8&(B
|
||||
$(CD#(B $(CHD(B $(C>F9+71(B $(C55?r8;@L(B $(CGJ?d>x4Y0m(B $(CFG4\5G8i(B C-g$(C8&(B $(CCD<-(B $(CCk<RGO=J=C?@(B.
|
||||
|
||||
($(C>n62(B $(C0w?!<-4B(B C-h$(C@G(B $(C@G9L8&(B $(C:/0f=CDQ(B $(C3u@>4O4Y(B. $(C1W5i@L(B $(C8p5g(B $(C;g?k@Z?!0T(B
|
||||
$(C@L785m(B $(C@O0}@{@N(B $(CA6C38&(B $(CCkGX<-4B(B $(C>J5G4B(B $(C0M@L9G7N(B $(C@L0M@:(B $(C?n?5(B $(CC<0h(B
|
||||
$(C0|8.@Z?!0T(B $(C:RFrGR(B $(C<v(B $(C@V4B(B $(CCf:PGQ(B $(C1Y0E0!(B $(C5K4O4Y(B. C-h$(C0!(B $(CH-8i@G(B $(C9Y4Z?!(B
|
||||
$(C55?r(B $(C>K828;@;(B $(CH-8i(B $(CG%=CGOAv(B $(C>J@88i(B $(C:RFr@L(B $(CGX0a5I(B $(C6'1nAv4B(B F1 $(C1[<h3*(B
|
||||
M-x help <Return>$(C@;(B $(C4k=E(B $(C;g?kGO557O(B $(CGO=J=C?@(B.)
|
||||
|
||||
$(C0!@e(B $(C1b:;@{@N(B $(C55?r8;(B $(CF/B!@:(B C-h c $(C@T4O4Y(B. C-h$(C8&(B $(CD!0m(B $(C9.@Z(B c$(C8&(B $(CD#(B $(CHD(B
|
||||
$(C8m7I(B $(C9.@Z3*(B $(C8m7I(B $(C<xBw(B(sequence)$(C8&(B $(CD!=J=C?@(B; $(C1W7/8i(B Emacs$(C4B(B $(C1W(B $(C8m7I?!(B
|
||||
$(C4kGQ(B $(C>FAV(B $(C0#4\GQ(B $(C<38m@;(B $(CH-8i(B $(CG%=CGU4O4Y(B.
|
||||
|
||||
>> C-h c $(CA&>n9.@Z(B-p$(C8&(B $(CD!=J=C?@(B.
|
||||
$(C>K828;@:(B $(C4Y@=0z(B $(C00@:(B $(C=D@L>n>_(B $(CGU4O4Y(B.
|
||||
|
||||
C-p runs the command previous-line
|
||||
|
||||
$(C@L4B(B "$(C1b4I@G(B $(C@L8'(B"$(C@;(B $(C8;GX(B $(CA]4O4Y(B. $(C1b4I(B $(C@L8'@:(B Emacs$(C8&(B $(C@Z1b?!0T(B $(C8BCg(B
|
||||
$(C>20E3*(B $(CH.@eGR(B $(C6'(B $(CAV7N(B $(C;g?k5K4O4Y(B. $(C1W7/3*(B $(C1b4I(B $(C@L8'5i@:(B $(C1W(B $(C8m7I@L(B $(C>n62(B
|
||||
$(C@O@;(B $(CGO4BAv8&(B $(C>K(B $(C<v(B $(C@V557O(B $(CA$GXAv1b(B $(C6'9.?!(B $(C1W5i@:(B $(C>FAV(B $(C0#4\GQ(B
|
||||
$(C9.<-H-7N55(B $(C:@;g5I(B $(C<v(B $(C@V@>4O4Y(B--$(C?)EB1nAv(B $(C9h?n(B $(C8m7I5i@;(B $(C1b>oGO4B5%(B
|
||||
$(CCf:PGR(B $(CA$557N(B.
|
||||
|
||||
C-x C-s$(C?M(B (META$(C<h3*(B EDIT$(C<h(B $(CH$@:(B $(C13C<<h0!(B $(C@V@88i(B) <ESC>v$(C?M(B $(C00@:(B $(C4YA_(B
|
||||
$(C9.@Z(B $(C8m7I5i55(B C-h c$(C@G(B $(C4Y@=?!(B $(C?C(B $(C<v(B $(C@V@>4O4Y(B.
|
||||
|
||||
$(CGQ(B $(C8m7I?!(B $(C4kGX(B $(C4u(B $(C@Z<<GQ(B $(CA$:88&(B $(C>r1b(B $(C@'GX<-4B(B C-h c $(C4k=E?!(B C-h k$(C8&(B
|
||||
$(C;g?kGO=J=C?@(B.
|
||||
|
||||
>> C-h k $(CA&>n9.@Z(B-p$(C8&(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C@L4B(B $(C1W(B $(C1b4I@G(B $(C@L8'0z(B $(CGT22(B $(C1W(B $(C9.<-H-8&(B Emacs $(CC"?!(B $(CH-8i(B $(CG%=CGU4O4Y(B.
|
||||
$(CCb7B5H(B $(C0M@;(B $(C4Y(B $(C@P>z@88i(B C-x 1$(C7N(B $(C55?r8;(B $(C1[?y@;(B $(C>x>[4O4Y(B. $(C4g@e?!(B $(C>x>Y(B
|
||||
$(CGJ?d4B(B $(C>x@>4O4Y(B. $(C55?r8;(B $(C1[?y@;(B $(CB|A6GO8i<-(B $(CFmA}@;(B $(CGO4Y0!(B C-x 1$(C@;(B $(CCD55(B
|
||||
$(C5K4O4Y(B.
|
||||
|
||||
$(C?)1b?!(B $(C6G4Y8%(B $(C@/?kGQ(B C-h$(C@G(B $(CC_0!(B $(C<1EC@L(B $(C@V@>4O4Y(B:
|
||||
|
||||
C-h f $(C1b4I(B $(C1b<zGO1b(B. $(C1b4I(B $(C@L8'@;(B $(CD(4O4Y(B.
|
||||
|
||||
>> C-h f previous-line<Return>$(C@;(B $(CCD(B $(C:8=J=C?@(B.
|
||||
$(C1W7/8i(B Emacs$(C0!(B C-p $(C8m7I@L(B $(CA&0xGO4B(B $(C1b4I?!(B $(C4kGQ(B $(C8p5g(B $(CA$:88&(B $(C@N<bGR(B
|
||||
$(C0M@T4O4Y(B.
|
||||
|
||||
C-h a $(C8m7I(B $(CGY=I>n(B(apropos). $(CGY=I>n8&(B $(CD!8i(B Emacs$(C0!(B $(C@L(B
|
||||
$(CGY=I>n0!(B $(C5i>n(B $(C@V4B(B $(C8p5g(B $(C8m7I5i@G(B $(C8q7O@;(B $(C@[<:GR(B
|
||||
$(C0M@T4O4Y(B. $(C@L(B $(C8m7I5i@:(B $(C8p5N(B Meta$(C<h(B-x$(C7N(B $(C:N8&(B $(C<v(B
|
||||
$(C@V@>4O4Y(B. $(C>n62(B $(C8m7I5i?!(B $(C4kGX<-4B(B $(C00@:(B $(C8m7I@;(B $(C=GG`GO4B(B,
|
||||
$(CGQ5N03@G(B $(C9.@Z7N(B $(C5H(B $(C<xBw?!(B $(C4kGQ(B $(C8q7O55(B $(C8m7I(B $(CGY=I>n0!(B
|
||||
$(C@[<:GU4O4Y(B.
|
||||
|
||||
>> C-h a file<Return>$(C@;(B $(CCD(B $(C:8=J=C?@(B.
|
||||
|
||||
$(C1W7/8i(B $(C@L8'?!(B "file"$(C@L(B $(C5i>n(B $(C@V4B(B $(C8p5g(B M-x $(C8m7I5i@G(B $(C8q7O@L(B $(C@[<:5G?)(B
|
||||
$(C4Y8%(B $(CC"?!(B $(CH-8i(B $(CG%=C5K4O4Y(B. find-file$(C0z(B $(C00@:(B $(C8m7I5i?!4B(B C-x C-f$(C?M(B $(C00@:(B
|
||||
$(C9.@Z(B $(C8m7I@G(B $(C8q7O@L(B $(CGX4gGO4B(B $(C8m7I@G(B $(C?7?!(B $(C@[<:5G>n(B $(C@V4B(B $(C0M@;(B $(C:<(B $(C<v(B $(C@V@;(B
|
||||
$(C0M@T4O4Y(B.
|
||||
|
||||
>> C-M-v$(C8&(B $(CCD<-(B $(C55?r8;(B $(CC"@;(B $(C5N7g8;1b(B $(CGO=J=C?@(B. $(C@L8&(B $(C8n(B $(C9x(B $(CGO=J=C?@(B.
|
||||
|
||||
>> C-x 1$(C@;(B $(CCD<-(B $(C55?r8;(B $(CC"@;(B $(CAv?l=J=C?@(B.
|
||||
|
||||
|
||||
* $(C0a7P(B
|
||||
------
|
||||
|
||||
Emacs$(C8&(B $(C?O@|Hw(B $(C3*0!1b(B $(C@'GX<-4B(B C-x C-c$(C8&(B $(C>44Y4B(B $(C;g=G@;(B $(C1b>oGO=J=C?@(B.
|
||||
$(C@O=C@{@87N(B $(CA60!:q7N(B $(C3*0!<-(B $(CHD?!(B $(C4Y=C(B Emacs$(C?!(B $(C5G59>F(B $(C?C(B $(C<v(B $(C@V1b(B
|
||||
$(C@'GX<-4B(B C-z$(C8&(B $(C;g?kGO=J=C?@(B.
|
||||
|
||||
$(C@L(B $(CAvD'<-4B(B $(C;u7N?n(B $(C;g?k@Z5i(B $(C8p5N0!(B $(C@LGXGR(B $(C<v(B $(C@V557O(B $(C885i>nA3@89G7N(B
|
||||
$(C:R:P8mGQ(B $(C;gGW@L(B $(C9_0_5G8i(B $(C>I>F<-(B $(C@Z1b(B $(C@Z=E@;(B $(CE?GOAv(B $(C8;0m(B $(C:RFrGO=J=C?@(B!
|
||||
|
||||
|
||||
$(C:9;g(B $(CA60G(B
|
||||
---------
|
||||
|
||||
$(C@L(B $(CAvD'<-4B(B Stuart Cracraft$(C>>0!(B Emacs $(C1Y?x(B $(C@Z7a8&(B $(C@'GX(B $(C>4(B, $(C1d(B Emacs
|
||||
$(CAvD'<-8&(B $(C8pC<7N(B $(CGO?)(B $(C@[<:5H(B $(C0M@L4Y(B.
|
||||
|
||||
GNU Emacs$(C?M(B $(C00@L(B $(C@L(B $(CAvD'<-(B $(CFG@:(B $(C@z@[1G@L(B $(C@V@88g(B $(CF/A$GQ(B $(CA60G@;(B $(C88A7GR(B
|
||||
$(C6'?!(B $(C:9;g:;@;(B $(C9hFwGR(B $(C<v(B $(C@V4B(B $(CGc0!8&(B $(C0.0m(B $(C3*?B(B $(C0M@L4Y(B:
|
||||
|
||||
$(C@z@[1G(B (c) 1985, 1996 Free Software Foundation
|
||||
|
||||
$(C@L(B $(C9.<-4B(B $(C@L(B $(C@z@[1G(B $(C0x0m?M(B $(CGc?k(B $(C0x0m0!(B $(C1W4k7N(B $(C@/Av5G0m(B, $(C9hFw@Z0!(B
|
||||
$(C<vCk@Z?!0T(B $(C@L(B $(C0x0m?!(B $(C5{6s(B $(CGc?k5G4B(B $(C0MC373(B $(C6G(B $(C@g:P9hGO4B(B $(C0M@;(B
|
||||
$(CGc?kGO4B(B $(CA60G@87N(B, $(C>n62(B $(C8EC<7N5gAv(B $(C9^@:(B $(C1W4k7N8&(B $(C:9;gGO0E3*(B
|
||||
$(C:9;g:;@L(B $(C4Y8%(B $(C@L?!0T(B $(C9hFw5G4B(B $(C0M@L(B $(CGc?k5H4Y(B.
|
||||
|
||||
$(C@L(B $(C9.<-@G(B $(C<vA$FG@L3*(B $(C<vA$FG@G(B $(C@O:N:P@:(B $(C@'@G(B $(CA60G0z(B $(CGT22(B, $(C6GGQ(B $(C4)0!(B
|
||||
$(C86Av87@87N(B $(C:/0fG_4BAv8&(B $(C4+?!(B $(C6g0T(B $(C3*E83=4Y4B(B $(CA60G@87N(B $(C9hFw5G4B(B $(C0M@L(B
|
||||
$(CGc?k5H4Y(B.
|
||||
|
||||
Emacs $(C@ZC<8&(B $(C:9;gGO4B(B $(C0M@:(B $(CA;(B $(C4u(B $(C:9@bGOAv88(B $(C00@:(B $(C3;?k@T4O4Y(B.
|
||||
COPYING$(C@L6s4B(B $(CFD@O@;(B $(C@P0m(B $(C3-(B $(CHD?!(B GNU Emacs$(C@G(B $(C:9;g:;@;(B $(CD#18?!0T(B
|
||||
$(CAV=J=C?@(B. $(C@Z@/(B $(C<RGAF.?~>n8&(B $(C>20m(B $(C885i0m(B $(C0x@/GT@87N=a(B $(C<RGAF.?~>n(B
|
||||
$(C9fGX8&(B ("$(C<R@/1G(B") $(C1Y@}GO4B5%(B $(C55?s=C4Y(B.
|
1132
etc/TUTORIAL.nl
Normal file
1132
etc/TUTORIAL.nl
Normal file
File diff suppressed because it is too large
Load diff
1165
etc/TUTORIAL.pl
Normal file
1165
etc/TUTORIAL.pl
Normal file
File diff suppressed because it is too large
Load diff
1111
etc/TUTORIAL.ro
Normal file
1111
etc/TUTORIAL.ro
Normal file
File diff suppressed because it is too large
Load diff
1031
etc/TUTORIAL.sl
Normal file
1031
etc/TUTORIAL.sl
Normal file
File diff suppressed because it is too large
Load diff
1007
etc/TUTORIAL.th
Normal file
1007
etc/TUTORIAL.th
Normal file
File diff suppressed because it is too large
Load diff
244
etc/WHY-FREE
Normal file
244
etc/WHY-FREE
Normal file
|
@ -0,0 +1,244 @@
|
|||
Why Software Should Not Have Owners
|
||||
|
||||
by Richard Stallman
|
||||
|
||||
Digital information technology contributes to the world by making it
|
||||
easier to copy and modify information. Computers promise to make this
|
||||
easier for all of us.
|
||||
|
||||
Not everyone wants it to be easier. The system of copyright gives
|
||||
software programs "owners", most of whom aim to withhold software's
|
||||
potential benefit from the rest of the public. They would like to be
|
||||
the only ones who can copy and modify the software that we use.
|
||||
|
||||
The copyright system grew up with printing--a technology for mass
|
||||
production copying. Copyright fit in well with this technology
|
||||
because it restricted only the mass producers of copies. It did not
|
||||
take freedom away from readers of books. An ordinary reader, who did
|
||||
not own a printing press, could copy books only with pen and ink, and
|
||||
few readers were sued for that.
|
||||
|
||||
Digital technology is more flexible than the printing press: when
|
||||
information has digital form, you can easily copy it to share it with
|
||||
others. This very flexibility makes a bad fit with a system like
|
||||
copyright. That's the reason for the increasingly nasty and draconian
|
||||
measures now used to enforce software copyright. Consider these four
|
||||
practices of the Software Publishers Association (SPA):
|
||||
|
||||
* Massive propaganda saying it is wrong to disobey the owners
|
||||
to help your friend.
|
||||
|
||||
* Solicitation for stool pigeons to inform on their coworkers and
|
||||
colleagues.
|
||||
|
||||
* Raids (with police help) on offices and schools, in which people are
|
||||
told they must prove they are innocent of illegal copying.
|
||||
|
||||
* Prosecution (by the US government, at the SPA's request) of people
|
||||
such as MIT's David LaMacchia, not for copying software (he is not
|
||||
accused of copying any), but merely for leaving copying facilities
|
||||
unguarded and failing to censor their use.
|
||||
|
||||
All four practices resemble those used in the former Soviet Union,
|
||||
where every copying machine had a guard to prevent forbidden copying,
|
||||
and where individuals had to copy information secretly and pass it
|
||||
from hand to hand as "samizdat". There is of course a difference: the
|
||||
motive for information control in the Soviet Union was political; in
|
||||
the US the motive is profit. But it is the actions that affect us,
|
||||
not the motive. Any attempt to block the sharing of information, no
|
||||
matter why, leads to the same methods and the same harshness.
|
||||
|
||||
Owners make several kinds of arguments for giving them the power
|
||||
to control how we use information:
|
||||
|
||||
* Name calling.
|
||||
|
||||
Owners use smear words such as "piracy" and "theft", as well as expert
|
||||
terminology such as "intellectual property" and "damage", to suggest a
|
||||
certain line of thinking to the public--a simplistic analogy between
|
||||
programs and physical objects.
|
||||
|
||||
Our ideas and intuitions about property for material objects are about
|
||||
whether it is right to *take an object away* from someone else. They
|
||||
don't directly apply to *making a copy* of something. But the owners
|
||||
ask us to apply them anyway.
|
||||
|
||||
* Exaggeration.
|
||||
|
||||
Owners say that they suffer "harm" or "economic loss" when users copy
|
||||
programs themselves. But the copying has no direct effect on the
|
||||
owner, and it harms no one. The owner can lose only if the person who
|
||||
made the copy would otherwise have paid for one from the owner.
|
||||
|
||||
A little thought shows that most such people would not have bought
|
||||
copies. Yet the owners compute their "losses" as if each and every
|
||||
one would have bought a copy. That is exaggeration--to put it kindly.
|
||||
|
||||
* The law.
|
||||
|
||||
Owners often describe the current state of the law, and the harsh
|
||||
penalties they can threaten us with. Implicit in this approach is the
|
||||
suggestion that today's law reflects an unquestionable view of
|
||||
morality--yet at the same time, we are urged to regard these penalties
|
||||
as facts of nature that can't be blamed on anyone.
|
||||
|
||||
This line of persuasion isn't designed to stand up to critical
|
||||
thinking; it's intended to reinforce a habitual mental pathway.
|
||||
|
||||
It's elemental that laws don't decide right and wrong. Every American
|
||||
should know that, forty years ago, it was against the law in many
|
||||
states for a black person to sit in the front of a bus; but only
|
||||
racists would say sitting there was wrong.
|
||||
|
||||
* Natural rights.
|
||||
|
||||
Authors often claim a special connection with programs they have
|
||||
written, and go on to assert that, as a result, their desires and
|
||||
interests concerning the program simply outweigh those of anyone
|
||||
else--or even those of the whole rest of the world. (Typically
|
||||
companies, not authors, hold the copyrights on software, but we are
|
||||
expected to ignore this discrepancy.)
|
||||
|
||||
To those who propose this as an ethical axiom--the author is more
|
||||
important than you--I can only say that I, a notable software author
|
||||
myself, call it bunk.
|
||||
|
||||
But people in general are only likely to feel any sympathy with the
|
||||
natural rights claims for two reasons.
|
||||
|
||||
One reason is an overstretched analogy with material objects. When I
|
||||
cook spaghetti, I do object if someone else takes it and stops me from
|
||||
eating it. In this case, that person and I have the same material
|
||||
interests at stake, and it's a zero-sum game. The smallest
|
||||
distinction between us is enough to tip the ethical balance.
|
||||
|
||||
But whether you run or change a program I wrote affects you directly
|
||||
and me only indirectly. Whether you give a copy to your friend
|
||||
affects you and your friend much more than it affects me. I shouldn't
|
||||
have the power to tell you not to do these things. No one should.
|
||||
|
||||
The second reason is that people have been told that natural rights
|
||||
for authors is the accepted and unquestioned tradition of our society.
|
||||
|
||||
As a matter of history, the opposite is true. The idea of natural
|
||||
rights of authors was proposed and decisively rejected when the US
|
||||
Constitution was drawn up. That's why the Constitution only *permits*
|
||||
a system of copyright and does not *require* one; that's why it says
|
||||
that copyright must be temporary. It also states that the purpose of
|
||||
copyright is to promote progress--not to reward authors. Copyright
|
||||
does reward authors somewhat, and publishers more, but that is
|
||||
intended as a means of modifying their behavior.
|
||||
|
||||
The real established tradition of our society is that copyright cuts
|
||||
into the natural rights of the public--and that this can only be
|
||||
justified for the public's sake.
|
||||
|
||||
* Economics.
|
||||
|
||||
The final argument made for having owners of software is that this
|
||||
leads to production of more software.
|
||||
|
||||
Unlike the others, this argument at least takes a legitimate approach
|
||||
to the subject. It is based on a valid goal--satisfying the users of
|
||||
software. And it is empirically clear that people will produce more of
|
||||
something if they are well paid for doing so.
|
||||
|
||||
But the economic argument has a flaw: it is based on the assumption
|
||||
that the difference is only a matter of how much money we have to pay.
|
||||
It assumes that "production of software" is what we want, whether the
|
||||
software has owners or not.
|
||||
|
||||
People readily accept this assumption because it accords with our
|
||||
experiences with material objects. Consider a sandwich, for instance.
|
||||
You might well be able to get an equivalent sandwich either free or
|
||||
for a price. If so, the amount you pay is the only difference.
|
||||
Whether or not you have to buy it, the sandwich has the same taste,
|
||||
the same nutritional value, and in either case you can only eat it
|
||||
once. Whether you get the sandwich from an owner or not cannot
|
||||
directly affect anything but the amount of money you have afterwards.
|
||||
|
||||
This is true for any kind of material object--whether or not it has an
|
||||
owner does not directly affect what it *is*, or what you can do with
|
||||
it if you acquire it.
|
||||
|
||||
But if a program has an owner, this very much affects what it is, and
|
||||
what you can do with a copy if you buy one. The difference is not
|
||||
just a matter of money. The system of owners of software encourages
|
||||
software owners to produce something--but not what society really
|
||||
needs. And it causes intangible ethical pollution that affects us
|
||||
all.
|
||||
|
||||
What does society need? It needs information that is truly available
|
||||
to its citizens--for example, programs that people can read, fix,
|
||||
adapt, and improve, not just operate. But what software owners
|
||||
typically deliver is a black box that we can't study or change.
|
||||
|
||||
Society also needs freedom. When a program has an owner, the users
|
||||
lose freedom to control part of their own lives.
|
||||
|
||||
And above all society needs to encourage the spirit of voluntary
|
||||
cooperation in its citizens. When software owners tell us that
|
||||
helping our neighbors in a natural way is "piracy", they pollute our
|
||||
society's civic spirit.
|
||||
|
||||
This is why we say that free software is a matter of freedom, not
|
||||
price.
|
||||
|
||||
The economic argument for owners is erroneous, but the economic issue
|
||||
is real. Some people write useful software for the pleasure of
|
||||
writing it or for admiration and love; but if we want more software
|
||||
than those people write, we need to raise funds.
|
||||
|
||||
For ten years now, free software developers have tried various methods
|
||||
of finding funds, with some success. There's no need to make anyone
|
||||
rich; the median US family income, around $35k, proves to be enough
|
||||
incentive for many jobs that are less satisfying than programming.
|
||||
|
||||
For years, until a fellowship made it unnecessary, I made a living
|
||||
from custom enhancements of the free software I had written. Each
|
||||
enhancement was added to the standard released version and thus
|
||||
eventually became available to the general public. Clients paid me so
|
||||
that I would work on the enhancements they wanted, rather than on the
|
||||
features I would otherwise have considered highest priority.
|
||||
|
||||
The Free Software Foundation, a tax-exempt charity for free software
|
||||
development, raises funds by selling CD-ROMs, tapes and manuals (all
|
||||
of which users are free to copy and change), as well as from
|
||||
donations. It now has a staff of five programmers, plus three
|
||||
employees who handle mail orders.
|
||||
|
||||
Some free software developers make money by selling support services.
|
||||
Cygnus Support, with around 50 employees, estimates that about 15 per
|
||||
cent of its staff activity is free software development--a respectable
|
||||
percentage for a software company.
|
||||
|
||||
Companies including Intel, Motorola, Texas Instruments and Analog
|
||||
Devices have combined to fund the continued development of the free
|
||||
GNU compiler for the language C. Meanwhile, the GNU compiler for the
|
||||
Ada language is being funded by the US Air Force, which believes this
|
||||
is the most cost-effective way to get a high quality compiler.
|
||||
|
||||
All these examples are small; the free software movement is still
|
||||
small, and still young. But the example of listener-supported radio
|
||||
in this country shows it's possible to support a large activity
|
||||
without forcing each user to pay.
|
||||
|
||||
As a computer user today, you may find yourself using a proprietary
|
||||
program. If your friend asks to make a copy, it would be wrong to
|
||||
refuse. Cooperation is more important than copyright. But
|
||||
underground, closet cooperation does not make for a good society. A
|
||||
person should aspire to live an upright life openly with pride, and
|
||||
this means saying "No" to proprietary software.
|
||||
|
||||
You deserve to be able to cooperate openly and freely with other
|
||||
people who use software. You deserve to be able to learn how the
|
||||
software works, and to teach your students with it. You deserve to be
|
||||
able to hire your favorite programmer to fix it when it breaks.
|
||||
|
||||
You deserve free software.
|
||||
|
||||
|
||||
Copyright 1994 Richard Stallman
|
||||
Verbatim copying and redistribution is permitted
|
||||
without royalty as long as this notice is preserved;
|
||||
alteration is not permitted.
|
98
etc/Xkeymap.txt
Normal file
98
etc/Xkeymap.txt
Normal file
|
@ -0,0 +1,98 @@
|
|||
# -*-Mode: Fundamental-*-
|
||||
# X keymap file for rlk with some emacsified bindings
|
||||
# This file contains the default keyboard mapping. The first column contains a X keyboard code; the other
|
||||
# 16 columns contain the mapping of the keycode to a character string, with various combinations
|
||||
# of the SHIFT, LOCK, META, and CONTROL keys down. See the man page for "keycomp" for more information.
|
||||
#
|
||||
# Keycode constants for non-typewriter keys are found in <X/Xkeyboard.h>.
|
||||
#
|
||||
# It is easiest to edit this file with an EMACS window running across the entire width of the display, with
|
||||
# tab stop set to 4.
|
||||
#
|
||||
# E1=Find, E2=Insert Here, E3=Remove, E4=Select, E5=Prev Screen, E6=Next Screen
|
||||
# uns L S SL M ML MS MSL C CL CS CSL CM CML CMS CMSL
|
||||
0212 0023, 0023, 0023, 0023, 0223, 0223, 0223, 0223, 0022, 0022, 0022, 0022, 0222, 0222, 0222, 0222, /* E1 */
|
||||
0213 U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, /* E2 */
|
||||
0214 0004, 0004, 0177, 0177, 0304, 0304, 0377, 0377, 0004, 0004, 0177, 0177, 0204, 0204, 0377, 0377 /* E3 */
|
||||
0215 U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, /* E4 */
|
||||
0216 0326, 0326, 0326, 0326, 0326, 0326, 0326, 0326, "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" /* E5 */
|
||||
0217 0026, 0026, 0026, 0026, 0026, 0026, 0026, 0026, 0226, 0226, 0226, 0226, 0226, 0226, 0226, 0226, /* E6 */
|
||||
0247 0002, 0002, 0002, 0002, 0302, 0302, 0302, 0302, 0202, 0202, 0202, 0202, 0202, 0202, 0202, 0202, /* Left arrow */
|
||||
0250 0006, 0006, 0006, 0006, 0306, 0306, 0306, 0306, 0206, 0206, 0206, 0206, 0206, 0206, 0206, 0206, /* Right arrow */
|
||||
0251 0016, 0016, 0016, 0016, 0316, 0316, 0316, 0316, 0216, 0216, 0216, 0216, 0216, 0216, 0216, 0216, /* Down arrow */
|
||||
0252 0020, 0020, 0020, 0020, 0320, 0320, 0320, 0320, 0220, 0220, 0220, 0220, 0220, 0220, 0220, 0220, /* Up arrow */
|
||||
0222 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', /* KP 0 */
|
||||
0224 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', /* KP . */
|
||||
0225 '\n', '\n', '\n', '\n', 0312, 0312, 0312, 0312, 0212, 0212, 0212, 0212, 0212, 0212, 0212, 0212, /* KP Enter */
|
||||
0226 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', /* KP 1 */
|
||||
0227 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', /* KP 2 */
|
||||
0230 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', /* KP 3 */
|
||||
0231 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', /* KP 4 */
|
||||
0232 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', /* KP 5 */
|
||||
0233 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', /* KP 6 */
|
||||
0234 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', /* KP , */
|
||||
0235 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', /* KP 7 */
|
||||
0236 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', /* KP 8 */
|
||||
0237 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', /* KP 9 */
|
||||
0240 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', /* KP - */
|
||||
0174 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, /* F15/Help */
|
||||
0175 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, /* F16/(Un)Do */
|
||||
0161 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, /* F11/ESC */
|
||||
0162 '\b', '\b', '\b', '\b', '\b', '\b', U, U, '\b', '\b', U, U, U, U, U, U, /* F12/BS */
|
||||
0163 '\n', '\n', '\n', '\n', '\n', '\n', U, U, '\n', '\n', U, U, U, U, U, U, /* F13/LF */
|
||||
0274 0177, 0177, 0177, 0177, 0377, 0377, 0377, 0377, 0030, 0030, 0177, 0177, 0377, 0377, 0377, 0377, /* back */
|
||||
0275 '\r', '\r', '\r', '\r', 0215, 0215, 0215, 0215, '\r', '\r', U, U, U, U, U, U, /* Return */
|
||||
0276 '\t', '\t', '\t', '\t', 0211, 0211, 0211, 0211, "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" /* Tab */
|
||||
0277 '`', '`', '~', '~', 0340, 0340, 0376, 0376, 0036, 0036, 0036, 0036, U, U, U, U, /* ` */
|
||||
0300 '1', '1', '!', '!', 0261, 0261, 0241, 0241, '1', '1', '!', '!', U, U, U, U, /* 1 */
|
||||
0301 'q', 'Q', 'Q', 'Q', 0361, 0361, 0321, 0321, 0021, 0021, 0021, 0021, 0221, 0221, 0221, 0221, /* q */
|
||||
0302 'a', 'A', 'A', 'A', 0341, 0341, 0301, 0301, 0001, 0001, 0001, 0001, 0201, 0201, 0201, 0201, /* a */
|
||||
0303 'z', 'Z', 'Z', 'Z', 0372, 0372, 0332, 0332, 0032, 0032, 0032, 0032, 0232, 0232, 0232, 0232, /* z */
|
||||
0305 '2', '2', '@', '@', 0262, 0262, 0300, 0300, 0000, 0000, 0000, 0000, 0262, 0262, 0200, 0200, /* 2 */
|
||||
0306 'w', 'W', 'W', 'W', 0367, 0367, 0327, 0327, 0027, 0027, 0027, 0027, 0227, 0227, 0227, 0227, /* w */
|
||||
0307 's', 'S', 'S', 'S', 0363, 0363, 0323, 0323, 0023, 0023, 0023, 0023, 0223, 0223, 0223, 0223, /* s */
|
||||
0310 'x', 'X', 'X', 'X', 0370, 0370, 0330, 0330, 0030, 0030, 0030, 0030, 0230, 0230, 0230, 0230, /* x */
|
||||
0311 '<', '<', '>', '>', 0274, 0274, 0276, 0276, U, U, U, U, U, U, U, U, /* < */
|
||||
0313 '3', '3', '#', '#', 0263, 0263, 0243, 0243, 0033, 0033, '#', '#', U, U, U, U, /* 3 */
|
||||
0314 'e', 'E', 'E', 'E', 0345, 0345, 0305, 0305, 0005, 0005, 0005, 0005, 0205, 0205, 0205, 0205, /* e */
|
||||
0315 'd', 'D', 'D', 'D', 0344, 0344, 0304, 0304, 0004, 0004, 0004, 0004, 0204, 0204, 0204, 0204, /* d */
|
||||
0316 'c', 'C', 'C', 'C', 0343, 0343, 0303, 0303, 0003, 0003, 0003, 0003, 0203, 0203, 0203, 0203, /* c */
|
||||
0320 '4', '4', '$', '$', 0264, 0264, 0244, 0244, 0034, 0034, '$', '$', U, U, U, U, /* 4 */
|
||||
0321 'r', 'R', 'R', 'R', 0362, 0362, 0322, 0322, 0022, 0022, 0022, 0022, 0222, 0222, 0222, 0222, /* r */
|
||||
0322 'f', 'F', 'F', 'F', 0346, 0346, 0306, 0306, 0006, 0006, 0006, 0006, 0206, 0206, 0206, 0206, /* f */
|
||||
0323 'v', 'V', 'V', 'V', 0366, 0366, 0326, 0326, 0026, 0026, 0026, 0026, 0226, 0226, 0226, 0226, /* v */
|
||||
0324 ' ', ' ', ' ', ' ', 0240, 0240, 0240, 0240, 0000, 0000, 0000, 0000, 0200, 0200, 0200, 0200, /* space */
|
||||
0326 '5', '5', '%', '%', 0265, 0265, 0245, 0245, 0035, 0035, '%', '%', U, U, U, U, /* 5 */
|
||||
0327 't', 'T', 'T', 'T', 0364, 0364, 0324, 0324, 0024, 0024, 0024, 0024, 0224, 0224, 0224, 0224, /* t */
|
||||
0330 'g', 'G', 'G', 'G', 0347, 0347, 0307, 0307, 0007, 0007, 0007, 0007, 0207, 0207, 0207, 0207, /* g */
|
||||
0331 'b', 'B', 'B', 'B', 0342, 0342, 0302, 0302, 0002, 0002, 0002, 0002, 0202, 0202, 0202, 0202, /* b */
|
||||
0333 '6', '6', '^', '^', 0266, 0266, 0336, 0336, 0036, 0036, 0036, 0036, U, U, U, U, /* 6 */
|
||||
0334 'y', 'Y', 'Y', 'Y', 0371, 0371, 0331, 0331, 0031, 0031, 0031, 0031, 0231, 0231, 0231, 0231, /* y */
|
||||
0335 'h', 'H', 'H', 'H', 0350, 0350, 0310, 0310, 0010, 0010, 0010, 0010, 0210, 0210, 0210, 0210, /* h */
|
||||
0336 'n', 'N', 'N', 'N', 0356, 0356, 0316, 0316, 0016, 0016, 0016, 0016, 0216, 0216, 0216, 0216, /* n */
|
||||
0340 '7', '7', '&', '&', 0267, 0267, 0246, 0246, 0037, 0037, '&', '&', U, U, U, U, /* 7 */
|
||||
0341 'u', 'U', 'U', 'U', 0365, 0365, 0325, 0325, 0025, 0025, 0025, 0025, 0225, 0225, 0225, 0225, /* u */
|
||||
0342 'j', 'J', 'J', 'J', 0352, 0352, 0312, 0312, 0012, 0012, 0012, 0012, 0212, 0212, 0212, 0212, /* j */
|
||||
0343 'm', 'M', 'M', 'M', 0355, 0355, 0315, 0315, 0015, 0015, 0015, 0015, 0215, 0215, 0215, 0215, /* m */
|
||||
0345 '8', '8', '*', '*', 0270, 0270, 0252, 0252, 0177, 0177, '*', '*', U, U, U, U, /* 8 */
|
||||
0346 'i', 'I', 'I', 'I', 0351, 0351, 0311, 0311, 0011, 0011, 0011, 0011, 0211, 0211, 0211, 0211, /* i */
|
||||
0347 'k', 'K', 'K', 'K', 0353, 0353, 0313, 0313, 0013, 0013, 0013, 0013, 0213, 0213, 0213, 0213, /* k */
|
||||
0350 ',', ',', '<', '<', 0254, 0254, 0274, 0274, U, U, U, U, U, U, U, U, /* , */
|
||||
0352 '9', '9', '(', '(', 0271, 0271, 0250, 0250, '9', '9', '(', '(', U, U, U, U, /* 9 */
|
||||
0353 'o', 'O', 'O', 'O', 0357, 0357, 0317, 0317, 0017, 0017, 0017, 0017, 0217, 0217, 0217, 0217, /* o */
|
||||
0354 'l', 'L', 'L', 'L', 0354, 0354, 0314, 0314, 0014, 0014, 0014, 0014, 0214, 0214, 0214, 0214, /* l */
|
||||
0355 '.', '.', '>', '>', 0256, 0256, 0276, 0276, U, U, U, U, U, U, U, U, /* . */
|
||||
0357 '0', '0', ')', ')', 0260, 0260, 0251, 0251, '0', '0', ')', ')', U, U, U, U, /* 0 */
|
||||
0360 'p', 'P', 'P', 'P', 0360, 0360, 0320, 0320, 0020, 0020, 0020, 0020, 0220, 0220, 0220, 0220, /* p */
|
||||
0362 ';', ';', ':', ':', 0273, 0273, 0272, 0272, U, U, U, U, U, U, U, U, /* ; */
|
||||
0363 '/', '/', '?', '?', 0257, 0257, 0277, 0277, 0037, 0037, 0037, 0037, 0237, 0237, 0237, 0237, /* / */
|
||||
0365 '=', '=', '+', '+', 0275, 0275, 0253, 0253, U, U, U, U, U, U, U, U, /* = */
|
||||
0366 ']', ']', '}', '}', 0335, 0335, 0376, 0376, 0035, 0035, 0035, 0035, 0335, 0335, 0335, 0335, /* ] */
|
||||
0367 '\\', '\\', '|', '|', 0334, 0334, 0374, 0374, 0034, 0034, 0034, 0034, 0334, 0334, 0334, 0334, /* \ */
|
||||
0371 '-', '-', '_', '_', 0255, 0255, 0337, 0337, 0037, 0037, 0037, 0037, 0337, 0337, 0337, 0337, /* - */
|
||||
0372 '[', '[', '{', '{', 0333, 0333, 0373, 0373, 0033, 0033, 0033, 0033, 0333, 0333, 0333, 0333, /* [ */
|
||||
0373 '\'', '\'', '"', '"', 0247, 0247, 0242, 0242, U, U, U, U, U, U, U, U, /* ' */
|
||||
#
|
||||
# local variables:
|
||||
# tab-width: 4
|
||||
# End:
|
819
etc/copying.paper
Normal file
819
etc/copying.paper
Normal file
|
@ -0,0 +1,819 @@
|
|||
(For more information about the GNU project and free software,
|
||||
look at the files `GNU', `COPYING', and `DISTRIB', in the same
|
||||
directory as this file.)
|
||||
|
||||
|
||||
Why Software Should Be Free
|
||||
|
||||
by Richard Stallman
|
||||
|
||||
(Version of April 24, 1992)
|
||||
|
||||
Copyright (C) 1991, 1992, Free Software Foundation, Inc.
|
||||
Verbatim copying and redistribution is permitted
|
||||
without royalty; alteration is not permitted.
|
||||
|
||||
Introduction
|
||||
************
|
||||
|
||||
The existence of software inevitably raises the question of how
|
||||
decisions about its use should be made. For example, suppose one
|
||||
individual who has a copy of a program meets another who would like a
|
||||
copy. It is possible for them to copy the program; who should decide
|
||||
whether this is done? The individuals involved? Or another party,
|
||||
called the "owner"?
|
||||
|
||||
Software developers typically consider these questions on the
|
||||
assumption that the criterion for the answer is to maximize developers'
|
||||
profits. The political power of business has led to the government
|
||||
adoption of both this criterion and the answer proposed by the
|
||||
developers: that the program has an owner, typically a corporation
|
||||
associated with its development.
|
||||
|
||||
I would like to consider the same question using a different
|
||||
criterion: the prosperity and freedom of the public in general.
|
||||
|
||||
This answer cannot be decided by current law--the law should conform
|
||||
to ethics, not the other way around. Nor does current practice decide
|
||||
this question, although it may suggest possible answers. The only way
|
||||
to judge is to see who is helped and who is hurt by recognizing owners
|
||||
of software, why, and how much. In other words, we should perform a
|
||||
cost-benefit analysis on behalf of society as a whole, taking account of
|
||||
individual freedom as well as production of material goods.
|
||||
|
||||
In this essay, I will describe the effects of having owners, and show
|
||||
that the results are detrimental. My conclusion is that programmers
|
||||
have the duty to encourage others to share, redistribute, study and
|
||||
improve the software we write: in other words, to write "free"
|
||||
software.(1)
|
||||
|
||||
How Owners Justify Their Power
|
||||
******************************
|
||||
|
||||
Those who benefit from the current system where programs are property
|
||||
offer two arguments in support of their claims to own programs: the
|
||||
emotional argument and the economic argument.
|
||||
|
||||
The emotional argument goes like this: "I put my sweat, my heart, my
|
||||
soul into this program. It comes from *me*, it's *mine*!"
|
||||
|
||||
This argument does not require serious refutation. The feeling of
|
||||
attachment is one that programmers can cultivate when it suits them; it
|
||||
is not inevitable. Consider, for example, how willingly the same
|
||||
programmers usually sign over all rights to a large corporation for a
|
||||
salary; the emotional attachment mysteriously vanishes. By contrast,
|
||||
consider the great artists and artisans of medieval times, who didn't
|
||||
even sign their names to their work. To them, the name of the artist
|
||||
was not important. What mattered was that the work was done--and the
|
||||
purpose it would serve. This view prevailed for hundreds of years.
|
||||
|
||||
The economic argument goes like this: "I want to get rich (usually
|
||||
described inaccurately as `making a living'), and if you don't allow me
|
||||
to get rich by programming, then I won't program. Everyone else is like
|
||||
me, so nobody will ever program. And then you'll be stuck with no
|
||||
programs at all!" This threat is usually veiled as friendly advice
|
||||
from the wise.
|
||||
|
||||
I'll explain later why this threat is a bluff. First I want to
|
||||
address an implicit assumption that is more visible in another
|
||||
formulation of the argument.
|
||||
|
||||
This formulation starts by comparing the social utility of a
|
||||
proprietary program with that of no program, and then concludes that
|
||||
proprietary software development is, on the whole, beneficial, and
|
||||
should be encouraged. The fallacy here is in comparing only two
|
||||
outcomes--proprietary software vs. no software--and assuming there are
|
||||
no other possibilities.
|
||||
|
||||
Given a system of intellectual property, software development is
|
||||
usually linked with the existence of an owner who controls the
|
||||
software's use. As long as this linkage exists, we are often faced
|
||||
with the choice of proprietary software or none. However, this linkage
|
||||
is not inherent or inevitable; it is a consequence of the specific
|
||||
social/legal policy decision that we are questioning: the decision to
|
||||
have owners. To formulate the choice as between proprietary software
|
||||
vs. no software is begging the question.
|
||||
|
||||
The Argument against Having Owners
|
||||
**********************************
|
||||
|
||||
The question at hand is, "Should development of software be linked
|
||||
with having owners to restrict the use of it?"
|
||||
|
||||
In order to decide this, we have to judge the effect on society of
|
||||
each of those two activities *independently*: the effect of developing
|
||||
the software (regardless of its terms of distribution), and the effect
|
||||
of restricting its use (assuming the software has been developed). If
|
||||
one of these activities is helpful and the other is harmful, we would be
|
||||
better off dropping the linkage and doing only the helpful one.
|
||||
|
||||
To put it another way, if restricting the distribution of a program
|
||||
already developed is harmful to society overall, then an ethical
|
||||
software developer will reject the option of doing so.
|
||||
|
||||
To determine the effect of restricting sharing, we need to compare
|
||||
the value to society of a restricted (i.e., proprietary) program with
|
||||
that of the same program, available to everyone. This means comparing
|
||||
two possible worlds.
|
||||
|
||||
This analysis also addresses the simple counterargument sometimes
|
||||
made that "the benefit to the neighbor of giving him or her a copy of a
|
||||
program is cancelled by the harm done to the owner." This
|
||||
counterargument assumes that the harm and the benefit are equal in
|
||||
magnitude. The analysis involves comparing these magnitudes, and shows
|
||||
that the benefit is much greater.
|
||||
|
||||
To elucidate this argument, let's apply it in another area: road
|
||||
construction.
|
||||
|
||||
It would be possible to fund the construction of all roads with
|
||||
tolls. This would entail having toll booths at all street corners.
|
||||
Such a system would provide a great incentive to improve roads. It
|
||||
would also have the virtue of causing the users of any given road to
|
||||
pay for that road. However, a toll booth is an artificial obstruction
|
||||
to smooth driving--artificial, because it is not a consequence of how
|
||||
roads or cars work.
|
||||
|
||||
Comparing free roads and toll roads by their usefulness, we find that
|
||||
(all else being equal) roads without toll booths are cheaper to
|
||||
construct, cheaper to run, safer, and more efficient to use.(2) In a
|
||||
poor country, tolls may make the roads unavailable to many citizens.
|
||||
The roads without toll booths thus offer more benefit to society at
|
||||
less cost; they are preferable for society. Therefore, society should
|
||||
choose to fund roads in another way, not by means of toll booths. Use
|
||||
of roads, once built, should be free.
|
||||
|
||||
When the advocates of toll booths propose them as *merely* a way of
|
||||
raising funds, they distort the choice that is available. Toll booths
|
||||
do raise funds, but they do something else as well: in effect, they
|
||||
degrade the road. The toll road is not as good as the free road; giving
|
||||
us more or technically superior roads may not be an improvement if this
|
||||
means substituting toll roads for free roads.
|
||||
|
||||
Of course, the construction of a free road does cost money, which the
|
||||
public must somehow pay. However, this does not imply the inevitability
|
||||
of toll booths. We who must in either case pay will get more value for
|
||||
our money by buying a free road.
|
||||
|
||||
I am not saying that a toll road is worse than no road at all. That
|
||||
would be true if the toll were so great that hardly anyone used the
|
||||
road--but this is an unlikely policy for a toll collector. However, as
|
||||
long as the toll booths cause significant waste and inconvenience, it is
|
||||
better to raise the funds in a less obstructive fashion.
|
||||
|
||||
To apply the same argument to software development, I will now show
|
||||
that having "toll booths" for useful software programs costs society
|
||||
dearly: it makes the programs more expensive to construct, more
|
||||
expensive to distribute, and less satisfying and efficient to use. It
|
||||
will follow that program construction should be encouraged in some other
|
||||
way. Then I will go on to explain other methods of encouraging and (to
|
||||
the extent actually necessary) funding software development.
|
||||
|
||||
The Harm Done by Obstructing Software
|
||||
=====================================
|
||||
|
||||
Consider for a moment that a program has been developed, and any
|
||||
necessary payments for its development have been made; now society must
|
||||
choose either to make it proprietary or allow free sharing and use.
|
||||
Assume that the existence of the program and its availability is a
|
||||
desirable thing.(3)
|
||||
|
||||
Restrictions on the distribution and modification of the program
|
||||
cannot facilitate its use. They can only interfere. So the effect can
|
||||
only be negative. But how much? And what kind?
|
||||
|
||||
Three different levels of material harm come from such obstruction:
|
||||
|
||||
* Fewer people use the program.
|
||||
|
||||
* None of the users can adapt or fix the program.
|
||||
|
||||
* Other developers cannot learn from the program, or base new work
|
||||
on it.
|
||||
|
||||
Each level of material harm has a concomitant form of psychosocial
|
||||
harm. This refers to the effect that people's decisions have on their
|
||||
subsequent feelings, attitudes and predispositions. These changes in
|
||||
people's ways of thinking will then have a further effect on their
|
||||
relationships with their fellow citizens, and can have material
|
||||
consequences.
|
||||
|
||||
The three levels of material harm waste part of the value that the
|
||||
program could contribute, but they cannot reduce it to zero. If they
|
||||
waste nearly all the value of the program, then writing the program
|
||||
harms society by at most the effort that went into writing the program.
|
||||
Arguably a program that is profitable to sell must provide some net
|
||||
direct material benefit.
|
||||
|
||||
However, taking account of the concomitant psychosocial harm, there
|
||||
is no limit to the harm that proprietary software development can do.
|
||||
|
||||
Obstructing Use of Programs
|
||||
===========================
|
||||
|
||||
The first level of harm impedes the simple use of a program. A copy
|
||||
of a program has nearly zero marginal cost (and you can pay this cost by
|
||||
doing the work yourself), so in a free market, it would have nearly zero
|
||||
price. A license fee is a significant disincentive to use the program.
|
||||
If a widely-useful program is proprietary, far fewer people will use it.
|
||||
|
||||
It is easy to show that the total contribution of a program to
|
||||
society is reduced by assigning an owner to it. Each potential user of
|
||||
the program, faced with the need to pay to use it, may choose to pay,
|
||||
or may forego use of the program. When a user chooses to pay, this is a
|
||||
zero-sum transfer of wealth between two parties. But each time someone
|
||||
chooses to forego use of the program, this harms that person without
|
||||
benefiting anyone. The sum of negative numbers and zeros must be
|
||||
negative.
|
||||
|
||||
But this does not reduce the amount of work it takes to *develop*
|
||||
the program. As a result, the efficiency of the whole process, in
|
||||
delivered user satisfaction per hour of work, is reduced.
|
||||
|
||||
This reflects a crucial difference between copies of programs and
|
||||
cars, chairs, or sandwiches. There is no copying machine for material
|
||||
objects outside of science fiction. But programs are easy to copy;
|
||||
anyone can produce as many copies as are wanted, with very little
|
||||
effort. This isn't true for material objects because matter is
|
||||
conserved: each new copy has to be built from raw materials in the same
|
||||
way that the first copy was built.
|
||||
|
||||
With material objects, a disincentive to use them makes sense,
|
||||
because fewer objects bought means less raw materials and work needed
|
||||
to make them. It's true that there is usually also a startup cost, a
|
||||
development cost, which is spread over the production run. But as long
|
||||
as the marginal cost of production is significant, adding a share of the
|
||||
development cost does not make a qualitative difference. And it does
|
||||
not require restrictions on the freedom of ordinary users.
|
||||
|
||||
However, imposing a price on something that would otherwise be free
|
||||
is a qualitative change. A centrally-imposed fee for software
|
||||
distribution becomes a powerful disincentive.
|
||||
|
||||
What's more, central production as now practiced is inefficient even
|
||||
as a means of delivering copies of software. This system involves
|
||||
enclosing physical disks or tapes in superfluous packaging, shipping
|
||||
large numbers of them around the world, and storing them for sale. This
|
||||
cost is presented as an expense of doing business; in truth, it is part
|
||||
of the waste caused by having owners.
|
||||
|
||||
Damaging Social Cohesion
|
||||
========================
|
||||
|
||||
Suppose that both you and your neighbor would find it useful to run a
|
||||
certain program. In ethical concern for your neighbor, you should feel
|
||||
that proper handling of the situation will enable both of you to use it.
|
||||
A proposal to permit only one of you to use the program, while
|
||||
restraining the other, is divisive; neither you nor your neighbor should
|
||||
find it acceptable.
|
||||
|
||||
Signing a typical software license agreement means betraying your
|
||||
neighbor: "I promise to deprive my neighbor of this program so that I
|
||||
can have a copy for myself." People who make such choices feel
|
||||
internal psychological pressure to justify them, by downgrading the
|
||||
importance of helping one's neighbors--thus public spirit suffers.
|
||||
This is psychosocial harm associated with the material harm of
|
||||
discouraging use of the program.
|
||||
|
||||
Many users unconsciously recognize the wrong of refusing to share, so
|
||||
they decide to ignore the licenses and laws, and share programs anyway.
|
||||
But they often feel guilty about doing so. They know that they must
|
||||
break the laws in order to be good neighbors, but they still consider
|
||||
the laws authoritative, and they conclude that being a good neighbor
|
||||
(which they are) is naughty or shameful. That is also a kind of
|
||||
psychosocial harm, but one can escape it by deciding that these licenses
|
||||
and laws have no moral force.
|
||||
|
||||
Programmers also suffer psychosocial harm knowing that many users
|
||||
will not be allowed to use their work. This leads to an attitude of
|
||||
cynicism or denial. A programmer may describe enthusiastically the
|
||||
work that he finds technically exciting; then when asked, "Will I be
|
||||
permitted to use it?", his face falls, and he admits the answer is no.
|
||||
To avoid feeling discouraged, he either ignores this fact most of the
|
||||
time or adopts a cynical stance designed to minimize the importance of
|
||||
it.
|
||||
|
||||
Since the age of Reagan, the greatest scarcity in the United States
|
||||
is not technical innovation, but rather the willingness to work together
|
||||
for the public good. It makes no sense to encourage the former at the
|
||||
expense of the latter.
|
||||
|
||||
Obstructing Custom Adaptation of Programs
|
||||
=========================================
|
||||
|
||||
The second level of material harm is the inability to adapt programs.
|
||||
The ease of modification of software is one of its great advantages over
|
||||
older technology. But most commercially available software isn't
|
||||
available for modification, even after you buy it. It's available for
|
||||
you to take it or leave it, as a black box--that is all.
|
||||
|
||||
A program that you can run consists of a series of numbers whose
|
||||
meaning is obscure. No one, not even a good programmer, can easily
|
||||
change the numbers to make the program do something different.
|
||||
|
||||
Programmers normally work with the "source code" for a program, which
|
||||
is written in a programming language such as Fortran or C. It uses
|
||||
names to designate the data being used and the parts of the program, and
|
||||
it represents operations with symbols such as `+' for addition and `-'
|
||||
for subtraction. It is designed to help programmers read and change
|
||||
programs. Here is an example; a program to calculate the distance
|
||||
between two points in a plane:
|
||||
|
||||
float
|
||||
distance (p0, p1)
|
||||
struct point p0, p1;
|
||||
{
|
||||
float xdist = p1.x - p0.x;
|
||||
float ydist = p1.y - p0.y;
|
||||
return sqrt (xdist * xdist + ydist * ydist);
|
||||
}
|
||||
|
||||
Here is the same program in executable form, on the computer I
|
||||
normally use:
|
||||
|
||||
1314258944 -232267772 -231844864 1634862
|
||||
1411907592 -231844736 2159150 1420296208
|
||||
-234880989 -234879837 -234879966 -232295424
|
||||
1644167167 -3214848 1090581031 1962942495
|
||||
572518958 -803143692 1314803317
|
||||
|
||||
Source code is useful (at least potentially) to every user of a
|
||||
program. But most users are not allowed to have copies of the source
|
||||
code. Usually the source code for a proprietary program is kept secret
|
||||
by the owner, lest anybody else learn something from it. Users receive
|
||||
only the files of incomprehensible numbers that the computer will
|
||||
execute. This means that only the program's owner can change the
|
||||
program.
|
||||
|
||||
A friend once told me of working as a programmer in a bank for about
|
||||
six months, writing a program similar to something that was commercially
|
||||
available. She believed that if she could have gotten source code for
|
||||
that commercially available program, it could easily have been adapted
|
||||
to their needs. The bank was willing to pay for this, but was not
|
||||
permitted to--the source code was a secret. So she had to do six
|
||||
months of make-work, work that counts in the GNP but was actually waste.
|
||||
|
||||
The MIT Artificial Intelligence lab (AI lab) received a graphics
|
||||
printer as a gift from Xerox around 1977. It was run by free software
|
||||
to which we added many convenient features. For example, the software
|
||||
would notify a user immediately on completion of a print job. Whenever
|
||||
the printer had trouble, such as a paper jam or running out of paper,
|
||||
the software would immediately notify all users who had print jobs
|
||||
queued. These features facilitated smooth operation.
|
||||
|
||||
Later Xerox gave the AI lab a newer, faster printer, one of the first
|
||||
laser printers. It was driven by proprietary software that ran in a
|
||||
separate dedicated computer, so we couldn't add any of our favorite
|
||||
features. We could arrange to send a notification when a print job was
|
||||
sent to the dedicated computer, but not when the job was actually
|
||||
printed (and the delay was usually considerable). There was no way to
|
||||
find out when the job was actually printed; you could only guess. And
|
||||
no one was informed when there was a paper jam, so the printer often
|
||||
went for an hour without being fixed.
|
||||
|
||||
The system programmers at the AI lab were capable of fixing such
|
||||
problems, probably as capable as the original authors of the program.
|
||||
Xerox was uninterested in fixing them, and chose to prevent us, so we
|
||||
were forced to accept the problems. They were never fixed.
|
||||
|
||||
Most good programmers have experienced this frustration. The bank
|
||||
could afford to solve the problem by writing a new program from
|
||||
scratch, but a typical user, no matter how skilled, can only give up.
|
||||
|
||||
Giving up causes psychosocial harm--to the spirit of self-reliance.
|
||||
It is demoralizing to live in a house that you cannot rearrange to suit
|
||||
your needs. It leads to resignation and discouragement, which can
|
||||
spread to affect other aspects of one's life. People who feel this way
|
||||
are unhappy and do not do good work.
|
||||
|
||||
Imagine what it would be like if recipes were hoarded in the same
|
||||
fashion as software. You might say, "How do I change this recipe to
|
||||
take out the salt?", and the great chef would respond, "How dare you
|
||||
insult my recipe, the child of my brain and my palate, by trying to
|
||||
tamper with it? You don't have the judgment to change my recipe and
|
||||
make it work right!"
|
||||
|
||||
"But my doctor says I'm not supposed to eat salt! What can I do?
|
||||
Will you take out the salt for me?"
|
||||
|
||||
"I would be glad to do that; my fee is only $50,000." Since the
|
||||
owner has a monopoly on changes, the fee tends to be large. "However,
|
||||
right now I don't have time. I am busy with a commission to design a
|
||||
new recipe for ship's biscuit for the Navy Department. I might get
|
||||
around to you in about two years."
|
||||
|
||||
Obstructing Software Development
|
||||
================================
|
||||
|
||||
The third level of material harm affects software development.
|
||||
Software development used to be an evolutionary process, where a person
|
||||
would take an existing program and rewrite parts of it for one new
|
||||
feature, and then another person would rewrite parts to add another
|
||||
feature; in some cases, this continued over a period of twenty years.
|
||||
Meanwhile, parts of the program would be "cannibalized" to form the
|
||||
beginnings of other programs.
|
||||
|
||||
The existence of owners prevents this kind of evolution, making it
|
||||
necessary to start from scratch when developing a program. It also
|
||||
prevents new practitioners from studying existing programs to learn
|
||||
useful techniques or even how large programs can be structured.
|
||||
|
||||
Owners also obstruct education. I have met bright students in
|
||||
computer science who have never seen the source code of a large
|
||||
program. They may be good at writing small programs, but they can't
|
||||
begin to learn the different skills of writing large ones if they can't
|
||||
see how others have done it.
|
||||
|
||||
In any intellectual field, one can reach greater heights by standing
|
||||
on the shoulders of others. But that is no longer generally allowed in
|
||||
the software field--you can only stand on the shoulders of the other
|
||||
people *in your own company*.
|
||||
|
||||
The associated psychosocial harm affects the spirit of scientific
|
||||
cooperation, which used to be so strong that scientists would cooperate
|
||||
even when their countries were at war. In this spirit, Japanese
|
||||
oceanographers abandoning their lab on an island in the Pacific
|
||||
carefully preserved their work for the invading U.S. Marines, and left a
|
||||
note asking them to take good care of it.
|
||||
|
||||
Conflict for profit has destroyed what international conflict spared.
|
||||
Nowadays scientists in many fields don't publish enough in their papers
|
||||
to enable others to replicate the experiment. They publish only enough
|
||||
to let readers marvel at how much they were able to do. This is
|
||||
certainly true in computer science, where the source code for the
|
||||
programs reported on is usually secret.
|
||||
|
||||
It Does Not Matter How Sharing Is Restricted
|
||||
============================================
|
||||
|
||||
I have been discussing the effects of preventing people from copying,
|
||||
changing and building on a program. I have not specified how this
|
||||
obstruction is carried out, because that doesn't affect the conclusion.
|
||||
Whether it is done by copy protection, or copyright, or licenses, or
|
||||
encryption, or ROM cards, or hardware serial numbers, if it *succeeds*
|
||||
in preventing use, it does harm.
|
||||
|
||||
Users do consider some of these methods more obnoxious than others.
|
||||
I suggest that the methods most hated are those that accomplish their
|
||||
objective.
|
||||
|
||||
Software Should be Free
|
||||
=======================
|
||||
|
||||
I have shown how ownership of a program--the power to restrict
|
||||
changing or copying it--is obstructive. Its negative effects are
|
||||
widespread and important. It follows that society shouldn't have
|
||||
owners for programs.
|
||||
|
||||
Another way to understand this is that what society needs is free
|
||||
software, and proprietary software is a poor substitute. Encouraging
|
||||
the substitute is not a rational way to get what we need.
|
||||
|
||||
Vaclav Havel has advised us to "Work for something because it is
|
||||
good, not just because it stands a chance to succeed." A business
|
||||
making proprietary software stands a chance of success in its own narrow
|
||||
terms, but it is not what is good for society.
|
||||
|
||||
Why People Will Develop Software
|
||||
********************************
|
||||
|
||||
If we eliminate intellectual property as a means of encouraging
|
||||
people to develop software, at first less software will be developed,
|
||||
but that software will be more useful. It is not clear whether the
|
||||
overall delivered user satisfaction will be less; but if it is, or if
|
||||
we wish to increase it anyway, there are other ways to encourage
|
||||
development, just as there are ways besides toll booths to raise money
|
||||
for streets. Before I talk about how that can be done, first I want to
|
||||
question how much artificial encouragement is truly necessary.
|
||||
|
||||
Programming is Fun
|
||||
==================
|
||||
|
||||
There are some lines of work that few will enter except for money;
|
||||
road construction, for example. There are other fields of study and
|
||||
art in which there is little chance to become rich, which people enter
|
||||
for their fascination or their perceived value to society. Examples
|
||||
include mathematical logic, classical music, and archaeology; and
|
||||
political organizing among working people. People compete, more sadly
|
||||
than bitterly, for the few funded positions available, none of which is
|
||||
funded very well. They may even pay for the chance to work in the
|
||||
field, if they can afford to.
|
||||
|
||||
Such a field can transform itself overnight if it begins to offer the
|
||||
possibility of getting rich. When one worker gets rich, others demand
|
||||
the same opportunity. Soon all may demand large sums of money for doing
|
||||
what they used to do for pleasure. When another couple of years go by,
|
||||
everyone connected with the field will deride the idea that work would
|
||||
be done in the field without large financial returns. They will advise
|
||||
social planners to ensure that these returns are possible, prescribing
|
||||
special privileges, powers and monopolies as necessary to do so.
|
||||
|
||||
This change happened in the field of computer programming in the past
|
||||
decade. Fifteen years ago, there were articles on "computer
|
||||
addiction": users were "onlining" and had hundred-dollar-a-week habits.
|
||||
It was generally understood that people frequently loved programming
|
||||
enough to break up their marriages. Today, it is generally understood
|
||||
that no one would program except for a high rate of pay. People have
|
||||
forgotten what they knew fifteen years ago.
|
||||
|
||||
When it is true at a given time that most people will work in a
|
||||
certain field only for high pay, it need not remain true. The dynamic
|
||||
of change can run in reverse, if society provides an impetus. If we
|
||||
take away the possibility of great wealth, then after a while, when the
|
||||
people have readjusted their attitudes, they will once again be eager
|
||||
to work in the field for the joy of accomplishment.
|
||||
|
||||
The question, "How can we pay programmers?", becomes an easier
|
||||
question when we realize that it's not a matter of paying them a
|
||||
fortune. A mere living is easier to raise.
|
||||
|
||||
Funding Free Software
|
||||
=====================
|
||||
|
||||
Institutions that pay programmers do not have to be software houses.
|
||||
Many other institutions already exist which can do this.
|
||||
|
||||
Hardware manufacturers find it essential to support software
|
||||
development even if they cannot control the use of the software. In
|
||||
1970, much of their software was free because they did not consider
|
||||
restricting it. Today, their increasing willingness to join
|
||||
consortiums shows their realization that owning the software is not
|
||||
what is really important for them.
|
||||
|
||||
Universities conduct many programming projects. Today, they often
|
||||
sell the results, but in the 1970s, they did not. Is there any doubt
|
||||
that universities would develop free software if they were not allowed
|
||||
to sell software? These projects could be supported by the same
|
||||
government contracts and grants which now support proprietary software
|
||||
development.
|
||||
|
||||
It is common today for university researchers to get grants to
|
||||
develop a system, develop it nearly to the point of completion and call
|
||||
that "finished", and then start companies where they really finish the
|
||||
project and make it usable. Sometimes they declare the unfinished
|
||||
version "free"; if they are thoroughly corrupt, they instead get an
|
||||
exclusive license from the university. This is not a secret; it is
|
||||
openly admitted by everyone concerned. Yet if the researchers were not
|
||||
exposed to the temptation to do these things, they would still do their
|
||||
research.
|
||||
|
||||
Programmers writing free software can make their living by selling
|
||||
services related to the software. I have been hired to port the GNU C
|
||||
compiler to new hardware, and to make user-interface extensions to GNU
|
||||
Emacs. (I offer these improvements to the public once they are done.)
|
||||
I also teach classes for which I am paid.
|
||||
|
||||
I am not alone in working this way; there is now a successful,
|
||||
growing corporation which does no other kind of work. Several other
|
||||
companies also provide commercial support for the free software of the
|
||||
GNU system. This is the beginning of the independent software support
|
||||
industry-an industry that could become quite large if free software
|
||||
becomes prevalent. It provides users with an option generally
|
||||
unavailable for proprietary software, except to the very wealthy.
|
||||
|
||||
New institutions such as the Free Software Foundation can also fund
|
||||
programmers. Most of the foundation's funds come from users buying
|
||||
tapes through the mail. The software on the tapes is free, which means
|
||||
that every user has the freedom to copy it and change it, but many
|
||||
nonetheless pay to get copies. (Recall that "free software" refers to
|
||||
freedom, not to price.) Some users order tapes who already have a copy,
|
||||
as a way of making a contribution they feel we deserve. The Foundation
|
||||
also receives sizable donations from computer manufacturers.
|
||||
|
||||
The Free Software Foundation is a charity, and its income is spent on
|
||||
hiring as many programmers as possible. If it had been set up as a
|
||||
business, distributing the same free software to the public for the same
|
||||
fee, it would now provide a very good living for its founder.
|
||||
|
||||
Because the Foundation is a charity, programmers often work for the
|
||||
Foundation for half of what they could make elsewhere. They do this
|
||||
because we are free of bureaucracy, and because they feel satisfaction
|
||||
in knowing that their work will not be obstructed from use. Most of
|
||||
all, they do it because programming is fun. In addition, volunteers
|
||||
have written many useful programs for us. (Recently even technical
|
||||
writers have begun to volunteer.)
|
||||
|
||||
This confirms that programming is among the most fascinating of all
|
||||
fields, along with music and art. We don't have to fear that no one
|
||||
will want to program.
|
||||
|
||||
What Do Users Owe to Developers?
|
||||
================================
|
||||
|
||||
There is a good reason for users of software to feel a moral
|
||||
obligation to contribute to its support. Developers of free software
|
||||
are contributing to the users' activities, and it is both fair and in
|
||||
the long term interest of the users to give them funds to continue.
|
||||
|
||||
However, this does not apply to proprietary software developers,
|
||||
since obstructionism deserves a punishment rather than a reward.
|
||||
|
||||
We thus have a paradox: the developer of useful software is entitled
|
||||
to the support of the users, but any attempt to turn this moral
|
||||
obligation into a requirement destroys the basis for the obligation. A
|
||||
developer can either deserve a reward or demand it, but not both.
|
||||
|
||||
I believe that an ethical developer faced with this paradox must act
|
||||
so as to deserve the reward, but should also entreat the users for
|
||||
voluntary donations. Eventually the users will learn to support
|
||||
developers without coercion, just as they have learned to support public
|
||||
radio and television stations.
|
||||
|
||||
What Is Software Productivity?
|
||||
******************************
|
||||
|
||||
If software were free, there would still be programmers, but perhaps
|
||||
fewer of them. Would this be bad for society?
|
||||
|
||||
Not necessarily. Today the advanced nations have fewer farmers than
|
||||
in 1900, but we do not think this is bad for society, because the few
|
||||
deliver more food to the consumers than the many used to do. We call
|
||||
this improved productivity. Free software would require far fewer
|
||||
programmers to satisfy the demand, because of increased software
|
||||
productivity at all levels:
|
||||
|
||||
* Wider use of each program that is developed.
|
||||
|
||||
* The ability to adapt existing programs for customization instead
|
||||
of starting from scratch.
|
||||
|
||||
* Better education of programmers.
|
||||
|
||||
* The elimination of duplicate development effort.
|
||||
|
||||
Those who object to cooperation because it would result in the
|
||||
employment of fewer programmers, are actually objecting to increased
|
||||
productivity. Yet these people usually accept the widely-held belief
|
||||
that the software industry needs increased productivity. How is this?
|
||||
|
||||
"Software productivity" can mean two different things: the overall
|
||||
productivity of all software development, or the productivity of
|
||||
individual projects. Overall productivity is what society would like to
|
||||
improve, and the most straightforward way to do this is to eliminate the
|
||||
artificial obstacles to cooperation which reduce it. But researchers
|
||||
who study the field of "software productivity" focus only on the
|
||||
second, limited, sense of the term, where improvement requires difficult
|
||||
technological advances.
|
||||
|
||||
Is Competition Inevitable?
|
||||
**************************
|
||||
|
||||
Is it inevitable that people will try to compete, to surpass their
|
||||
rivals in society? Perhaps it is. But competition itself is not
|
||||
harmful; the harmful thing is *combat*.
|
||||
|
||||
There are many ways to compete. Competition can consist of trying to
|
||||
achieve ever more, to outdo what others have done. For example, in the
|
||||
old days, there was competition among programming wizards--competition
|
||||
for who could make the computer do the most amazing thing, or for who
|
||||
could make the shortest or fastest program for a given task. This kind
|
||||
of competition can benefit everyone, *as long as* the spirit of good
|
||||
sportsmanship is maintained.
|
||||
|
||||
Constructive competition is enough competition to motivate people to
|
||||
great efforts. A number of people are competing to be the first to have
|
||||
visited all the countries on Earth; some even spend fortunes trying to
|
||||
do this. But they do not bribe ship captains to strand their rivals on
|
||||
desert islands. They are content to let the best person win.
|
||||
|
||||
Competition becomes combat when the competitors begin trying to
|
||||
impede each other instead of advancing themselves--when "Let the best
|
||||
person win" gives way to "Let me win, best or not." Proprietary
|
||||
software is harmful, not because it is a form of competition, but
|
||||
because it is a form of combat among the citizens of our society.
|
||||
|
||||
Competition in business is not necessarily combat. For example, when
|
||||
two grocery stores compete, their entire effort is to improve their own
|
||||
operations, not to sabotage the rival. But this does not demonstrate a
|
||||
special commitment to business ethics; rather, there is little scope for
|
||||
combat in this line of business short of physical violence. Not all
|
||||
areas of business share this characteristic. Withholding information
|
||||
that could help everyone advance is a form of combat.
|
||||
|
||||
Business ideology does not prepare people to resist the temptation to
|
||||
combat the competition. Some forms of combat have been made banned with
|
||||
anti-trust laws, truth in advertising laws, and so on, but rather than
|
||||
generalizing this to a principled rejection of combat in general,
|
||||
executives invent other forms of combat which are not specifically
|
||||
prohibited. Society's resources are squandered on the economic
|
||||
equivalent of factional civil war.
|
||||
|
||||
"Why Don't You Move to Russia?"
|
||||
*******************************
|
||||
|
||||
In the United States, any advocate of other than the most extreme
|
||||
form of laissez-faire selfishness has often heard this accusation. For
|
||||
example, it is leveled against the supporters of a national health care
|
||||
system, such as is found in all the other industrialized nations of the
|
||||
free world. It is leveled against the advocates of public support for
|
||||
the arts, also universal in advanced nations. The idea that citizens
|
||||
have any obligation to the public good is identified in America with
|
||||
Communism. But how similar are these ideas?
|
||||
|
||||
Communism as was practiced in the Soviet Union was a system of
|
||||
central control where all activity was regimented, supposedly for the
|
||||
common good, but actually for the sake of the members of the Communist
|
||||
party. And where copying equipment was closely guarded to prevent
|
||||
illegal copying.
|
||||
|
||||
The American system of intellectual property exercises central
|
||||
control over distribution of a program, and guards copying equipment
|
||||
with automatic copying protection schemes to prevent illegal copying.
|
||||
|
||||
By contrast, I am working to build a system where people are free to
|
||||
decide their own actions; in particular, free to help their neighbors,
|
||||
and free to alter and improve the tools which they use in their daily
|
||||
lives. A system based on voluntary cooperation, and decentralization.
|
||||
|
||||
Thus, if we are to judge views by their resemblance to Russian
|
||||
Communism, it is the software owners who are the Communists.
|
||||
|
||||
The Question of Premises
|
||||
************************
|
||||
|
||||
I make the assumption in this paper that a user of software is no
|
||||
less important than an author, or even an author's employer. In other
|
||||
words, their interests and needs have equal weight, when we decide
|
||||
which course of action is best.
|
||||
|
||||
This premise is not universally accepted. Many maintain that an
|
||||
author's employer is fundamentally more important than anyone else.
|
||||
They say, for example, that the purpose of having owners of software is
|
||||
to give the author's employer the advantage he deserves--regardless of
|
||||
how this may affect the public.
|
||||
|
||||
It is no use trying to prove or disprove these premises. Proof
|
||||
requires shared premises. So most of what I have to say is addressed
|
||||
only to those who share the premises I use, or at least are interested
|
||||
in what their consequences are. For those who believe that the owners
|
||||
are more important than everyone else, this paper is simply irrelevant.
|
||||
|
||||
But why would a large number of Americans accept a premise which
|
||||
elevates certain people in importance above everyone else? Partly
|
||||
because of the belief that this premise is part of the legal traditions
|
||||
of American society. Some people feel that doubting the premise means
|
||||
challenging the basis of society.
|
||||
|
||||
It is important for these people to know that this premise is not
|
||||
part of our legal tradition. It never has been.
|
||||
|
||||
Thus, the Constitution says that the purpose of copyright is to
|
||||
"promote the progress of science and the useful arts." The Supreme
|
||||
Court has elaborated on this, stating in `Fox Film vs. Doyal' that "The
|
||||
sole interest of the United States and the primary object in conferring
|
||||
the [copyright] monopoly lie in the general benefits derived by the
|
||||
public from the labors of authors."
|
||||
|
||||
We are not required to agree with the Constitution or the Supreme
|
||||
Court. (At one time, they both condoned slavery.) So their positions
|
||||
do not disprove the owner supremacy premise. But I hope that the
|
||||
awareness that this is a radical right-wing assumption rather than a
|
||||
traditionally recognized one will weaken its appeal.
|
||||
|
||||
Conclusion
|
||||
**********
|
||||
|
||||
We like to think that our society encourages helping your neighbor;
|
||||
but each time we reward someone for obstructionism, or admire them for
|
||||
the wealth they have gained in this way, we are sending the opposite
|
||||
message.
|
||||
|
||||
Software hoarding is one form of our general willingness to disregard
|
||||
the welfare of society for personal gain. We can trace this disregard
|
||||
from Ronald Reagan to Jim Bakker, from Ivan Boesky to Exxon, from
|
||||
failing banks to failing schools. We can measure it with the size of
|
||||
the homeless population and the prison population. The antisocial
|
||||
spirit feeds on itself, because the more we see that other people will
|
||||
not help us, the more it seems futile to help them. Thus society decays
|
||||
into a jungle.
|
||||
|
||||
If we don't want to live in a jungle, we must change our attitudes.
|
||||
We must start sending the message that a good citizen is one who
|
||||
cooperates when appropriate, not one who is successful at taking from
|
||||
others. I hope that the free software movement will contribute to
|
||||
this: at least in one area, we will replace the jungle with a more
|
||||
efficient system which encourages and runs on voluntary cooperation.
|
||||
|
||||
---------- Footnotes ----------
|
||||
|
||||
(1) The word "free" in "free software" refers to freedom, not to
|
||||
price; the price paid for a copy of a free program may be zero, or
|
||||
small, or (rarely) quite large.
|
||||
|
||||
(2) The issues of pollution and traffic congestion do not alter
|
||||
this conclusion. If we wish to make driving more expensive to
|
||||
discourage driving in general, it is disadvantageous to do this using
|
||||
toll booths, which contribute to both pollution and congestion. A tax
|
||||
on gasoline is much better. Likewise, a desire to enhance safety by
|
||||
limiting maximum speed is not relevant; a free access road enhances the
|
||||
average speed by avoiding stops and delays, for any given speed limit.
|
||||
|
||||
(3) One might regard a particular computer program as a harmful
|
||||
thing that should not be available at all, like the Lotus Marketplace
|
||||
database of personal information, which was withdrawn from sale due to
|
||||
public disapproval. Most of what I say does not apply to this case,
|
||||
but it makes little sense to argue for having an owner on the grounds
|
||||
that the owner will make the program less available. The owner will
|
||||
not make it *completely* unavailable, as one would wish in the case of
|
||||
a program whose use is considered destructive.
|
||||
|
1
etc/ctags.1
Normal file
1
etc/ctags.1
Normal file
|
@ -0,0 +1 @@
|
|||
.so man1/etags.1
|
BIN
etc/e/eterm
Normal file
BIN
etc/e/eterm
Normal file
Binary file not shown.
21
etc/e/eterm.ti
Normal file
21
etc/e/eterm.ti
Normal file
|
@ -0,0 +1,21 @@
|
|||
eterm,
|
||||
lines#24,cols#80,
|
||||
colors#8,pairs#64,
|
||||
cuu1=\E[A,cud1=\n,cub1=\b,cuf1=\E[C,home=\E[H,cr=\r,
|
||||
cuu=\E[%p1%dA,cud=\E[%p1%dB,cub=\E[%p1%dD,cuf=\E[%p1%dC,
|
||||
cup=\E[%i%p1%d;%p2%dH,
|
||||
ind=\n,csr=\E[%i%p1%d;%p2%dr,
|
||||
il1=\E[L,il=\E[%p1%dL,
|
||||
clear=\E[H\E[J,ed=\E[J,el=\E[K,el1=\E[1K,
|
||||
dl1=\E[M,dl=\E[%p1%dM,dch1=\E[P,dch=\E[%p1%dP,
|
||||
smir=\E[4h,rmir=\E[4l,ich=\E[%p1%d@,mir,
|
||||
smcup=\E7\E[?47h,rmcup=\E[2J\E[?47l\E8,
|
||||
ht=\t,khome=\E[1~,kend=\E[4~,knp=\E[6~,kpp=\E[5~,
|
||||
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
|
||||
smso=\E[7m,rmso=\E[m,
|
||||
smul=\E[4m,rmul=\E[m,
|
||||
rev=\E[7m,bold=\E[1m,sgr0=\E[m,
|
||||
invis=\E[8m,
|
||||
setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm,
|
||||
bel=^G,xenl,am,
|
||||
|
207
etc/echo.msg
Normal file
207
etc/echo.msg
Normal file
|
@ -0,0 +1,207 @@
|
|||
Path: mit-amt!mit-eddie!think!harvard!seismo!gatech!akgua!whuxlm!whuxl!houxm!ihnp4!stolaf!umn-cs!herndon
|
||||
From: herndon@umn-cs.UUCP
|
||||
Newsgroups: net.sources
|
||||
Subject: GNU Echo, Release 1
|
||||
Message-ID: <1600001@umn-cs.UUCP>
|
||||
Date: 28 Oct 85 18:23:00 GMT
|
||||
|
||||
|
||||
/* Written 12:22 pm Oct 28, 1985 by umn-cs!herndon in umn-cs:net.jokes */
|
||||
/* ---------- "GNU Echo, Release 1" ---------- */
|
||||
|
||||
|
||||
|
||||
|
||||
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
|
||||
|
||||
|
||||
|
||||
NAME
|
||||
echo - echo arguments
|
||||
|
||||
SYNOPSIS
|
||||
echo [ options ] ...
|
||||
|
||||
DESCRIPTION
|
||||
_^HE_^Hc_^Hh_^Ho writes its arguments separated by blanks and terminated
|
||||
by a newline on the standard output. Options to filter and
|
||||
redirect the output are as follows:
|
||||
|
||||
-2 generate rhyming couplets from keywords
|
||||
|
||||
-3 generate Haiku verse from keywords
|
||||
|
||||
-5 generate limerick from keywords
|
||||
|
||||
-a convert ASCII to ASCII
|
||||
|
||||
-A disambiguate sentence structure
|
||||
|
||||
-b generate bureaucratese equivalent (see -x)
|
||||
|
||||
-B issue equivalent C code with bugs fixed
|
||||
|
||||
-c simplify/calculate arithmetic expression(s)
|
||||
|
||||
-C remove copyright notice(s)
|
||||
|
||||
-d define new echo switch map
|
||||
|
||||
-D delete all ownership information from system files
|
||||
|
||||
-e evaluate lisp expression(s)
|
||||
|
||||
-E convert ASCII to Navajo
|
||||
|
||||
-f read input from file
|
||||
|
||||
-F transliterate to french
|
||||
|
||||
-g generate pseudo-revolutionary marxist catch-phrases
|
||||
|
||||
-G prepend GNU manifesto
|
||||
|
||||
-h halt system (reboot suppressed on Suns, Apollos, and
|
||||
VAXen, not supported on NOS-2)
|
||||
|
||||
-i emulate IBM OS/VU (recursive universes not supported)
|
||||
|
||||
-I emulate IBM VTOS 3.7.6 (chronosynclastic infundibulae
|
||||
supported with restrictions documented in IBM VTOS
|
||||
|
||||
|
||||
|
||||
Printed 10/28/85 18 January 1983 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
|
||||
|
||||
|
||||
|
||||
Reference Manual rev 3.2.6)
|
||||
|
||||
-J generate junk mail
|
||||
|
||||
-j justify text (see -b option)
|
||||
|
||||
-k output "echo" software tools
|
||||
|
||||
-K delete privileged accounts
|
||||
|
||||
-l generate legalese equivalent
|
||||
|
||||
-L load echo modules
|
||||
|
||||
-M generate mail
|
||||
|
||||
-N send output to all reachable networks (usable with -J,
|
||||
-K, -h options)
|
||||
|
||||
-n do not add newline to the output
|
||||
|
||||
-o generate obscene text
|
||||
|
||||
-O clean up dirty language
|
||||
|
||||
-p decrypt and print /etc/passwd
|
||||
|
||||
-P port echo to all reachable networks
|
||||
|
||||
-P1 oolcay itay
|
||||
|
||||
-q query standard input for arguments
|
||||
|
||||
-r read alternate ".echo" file on start up
|
||||
|
||||
-R change root password to "RMS"
|
||||
|
||||
-s suspend operating system during output (Sun and VAX BSD
|
||||
4.2 only)
|
||||
|
||||
-S translate to swahili
|
||||
|
||||
-T emulate TCP/IP handler
|
||||
|
||||
-t issue troff output
|
||||
|
||||
-u issue unix philosophy essay
|
||||
|
||||
-v generate reverberating echo
|
||||
|
||||
-V print debugging information
|
||||
|
||||
|
||||
|
||||
|
||||
Printed 10/28/85 18 January 1983 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
|
||||
|
||||
|
||||
|
||||
-x decrypt DES format messages (NSA secret algorithm CX
|
||||
3.8, not distributed outside continental US)
|
||||
|
||||
_^HE_^Hc_^Hh_^Ho is useful for producing diagnostics in shell programs
|
||||
and for writing constant data on pipes. To send diagnostics
|
||||
to the standard error file, do `echo ... 1>&2'.
|
||||
|
||||
AUTHOR
|
||||
Richard M. Stallman
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Printed 10/28/85 18 January 1983 3
|
||||
|
858
etc/edt-user.doc
Normal file
858
etc/edt-user.doc
Normal file
|
@ -0,0 +1,858 @@
|
|||
File: edt-user.doc --- EDT Emulation User Instructions
|
||||
|
||||
For GNU Emacs 19
|
||||
|
||||
Copyright (C) 1986, 1992, 1994, 1995, 1999 Free Software Foundation, Inc.
|
||||
|
||||
Author: Kevin Gallagher <kevingal@onramp.net>
|
||||
Maintainer: Kevin Gallagher <kevingal@onramp.net>
|
||||
Keywords: emulations
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
|
||||
============================================================================
|
||||
|
||||
I. OVERVIEW:
|
||||
|
||||
This version of the EDT emulation package for GNU Emacs is a substantially
|
||||
enhanced version of the original. A large part of the original can still be
|
||||
found here, of course, but much of it has been modified and quite a bit is
|
||||
new. Many of the ideas found here are borrowed from others. In particular,
|
||||
some of the code found here was drawn from an earlier re-write of the EDT
|
||||
package done at DSC in 1989 by Matthew Frohman.
|
||||
|
||||
Send bug fixes, suggestions for enhancements, and corrections to this
|
||||
documentation to Kevin Gallagher (kevingal@onramp.net).
|
||||
|
||||
The EDT emulation consists of the following files:
|
||||
|
||||
edt-user.doc - User instructions (which you are reading now)
|
||||
edt.el - EDT Emulation Functions and Default Configuration
|
||||
edt-lk201.el - Support for DEC LK-201 Keyboards
|
||||
edt-vt100.el - Support for DEC VT-100 (and above) terminals
|
||||
edt-mapper.el - Support for Keyboards used under X Windows
|
||||
edt-pc.el - Support for the PC AT Keyboard under MS-DOS
|
||||
|
||||
Several goals were kept in mind when making this version:
|
||||
|
||||
1. Emulate EDT Keypad Mode commands closely so that current
|
||||
EDT users will find that it easy and comfortable to use
|
||||
GNU Emacs with a small learning curve;
|
||||
|
||||
2. Make it easy for a user to customize EDT emulation key
|
||||
bindings without knowing much about Emacs Lisp;
|
||||
|
||||
3. Make it easy to switch between the original EDT default bindings
|
||||
and the user's customized bindings, without having to exit Emacs.
|
||||
|
||||
4. Provide support for some TPU/EVE functions not supported in
|
||||
EDT.
|
||||
|
||||
5. Provide an easy way to restore ALL original Emacs key bindings,
|
||||
just as they existed before the EDT emulation was first invoked.
|
||||
|
||||
6. Support GNU Emacs 19. (Support for GNU Emacs 18 has been dropped.
|
||||
Also, although there is some code designed to support Xemacs 19
|
||||
(formerly Lucid Emacs), this is not fully implemented at this
|
||||
time.
|
||||
|
||||
7. When running under X, support highlighting of marked text.
|
||||
|
||||
8. Handle terminal configuration under X interactively when the
|
||||
emulation is invoked for the first time.
|
||||
|
||||
9. Support a PC AT keyboard under MS-DOS.
|
||||
|
||||
II. TERMINALS/KEYBOARDS SUPPORTED:
|
||||
|
||||
Keyboards used under X Windows are supported via the edt-mapper function. The
|
||||
first time you invoke the emulation under X, the edt-mapper function is run
|
||||
automatically and the user is prompted to identify which keys the emulation is
|
||||
to use for the standard keypad and function keys EDT expects (e.g., PF1, PF2,
|
||||
etc.). This configuration is saved to disk read each time the emulation is
|
||||
invoked.
|
||||
|
||||
In character oriented connections not running a window manager, the following
|
||||
terminals/keyboards are supported. (1) DEC VT-100 series and higher. This
|
||||
includes well behaved VT clones and emulators. If you are using a VT series
|
||||
terminal, be sure that the term environment variable is set properly before
|
||||
invoking emacs. (2) PC AT keyboard under MS-DOS.
|
||||
|
||||
Be sure to read the SPECIAL NOTES FOR SOME PLATFORMS sections to see if those
|
||||
notes apply to you.
|
||||
|
||||
|
||||
III. STARTING THE EDT EMULATION:
|
||||
|
||||
Start up GNU Emacs and enter "M-x edt-emulation-on" to begin the emulation.
|
||||
After initialization is complete, the following message will appear below the
|
||||
status line informing you that the emulation has been enabled:
|
||||
|
||||
Default EDT keymap active
|
||||
|
||||
You can have the EDT Emulation start up automatically, each time you initiate
|
||||
a GNU Emacs session, by adding the following line to your .emacs file:
|
||||
|
||||
(setq term-setup-hook 'edt-emulation-on)
|
||||
|
||||
A reference sheet is included (later on) listing the default EDT Emulation key
|
||||
bindings. This sheet is also accessible on line from within Emacs by pressing
|
||||
PF2, GOLD H, or HELP (when in the EDT Default Mode).
|
||||
|
||||
It is easy to customize key bindings in the EDT Emulation. (See CUSTOMIZING
|
||||
section, below.) Customizations are placed in a file called edt-user.el. (A
|
||||
sample edt-user.el file can be found in the CUSTOMIZING section.) If
|
||||
edt-user.el is found in your GNU Emacs load path during EDT Emulation
|
||||
initialization, then the following message will appear below the status line
|
||||
indicating that the emulation has been enabled, enhanced by your own
|
||||
customizations:
|
||||
|
||||
User EDT custom keymap active
|
||||
|
||||
Once enabled, it is easy to switch back and forth between your customized EDT
|
||||
Emulation key bindings and the default EDT Emulation key bindings. It is also
|
||||
easy to turn off the emulation. Doing so completely restores the original key
|
||||
bindings in effect just prior to invoking the emulation.
|
||||
|
||||
Where EDT key bindings and GNU Emacs key bindings conflict, the default GNU
|
||||
Emacs key bindings are retained by the EDT emulation by default. If you are a
|
||||
diehard EDT user you may not like this. The CUSTOMIZING section explains how
|
||||
to change this default.
|
||||
|
||||
|
||||
IV. SPECIAL NOTES FOR SOME PLATFORMS:
|
||||
|
||||
Sun Workstations running X:
|
||||
|
||||
Some earlier Sun keyboards do not have arrow keys separate from the
|
||||
keypad keys. It is difficult to emulate the full EDT keypad and still
|
||||
retain use of the arrow keys on such keyboards.
|
||||
|
||||
The Sun Type 5 keyboard, however, does have separate arrow keys. This
|
||||
makes it a candidate for setting up a reasonable EDT keypad emulation.
|
||||
Unfortunately, Sun's default X keynames for the keypad keys don't permit
|
||||
GNU Emacs to interpret the keypad 2, 4, 6, and 8 keys as something other
|
||||
than arrow keys, nor use all the top row of keys for PF1 thru PF4 keys.
|
||||
Here's the contents of an .xmodmaprc file which corrects this problem for
|
||||
Sun Type 5 keyboards:
|
||||
|
||||
! File: .xmodmaprc
|
||||
!
|
||||
! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation
|
||||
!
|
||||
keycode 53 = KP_Divide
|
||||
keycode 54 = KP_Multiply
|
||||
keycode 57 = KP_Decimal
|
||||
keycode 75 = KP_7
|
||||
keycode 76 = KP_8
|
||||
keycode 77 = KP_9
|
||||
keycode 78 = KP_Subtract
|
||||
keycode 97 = KP_Enter
|
||||
keycode 98 = KP_4
|
||||
keycode 99 = KP_5
|
||||
keycode 100 = KP_6
|
||||
keycode 101 = KP_0
|
||||
keycode 105 = F24
|
||||
keycode 119 = KP_1
|
||||
keycode 120 = KP_2
|
||||
keycode 121 = KP_3
|
||||
keycode 132 = KP_Add
|
||||
|
||||
Feed .xmodmaprc to the xmodmap command and all the Sun Type 5 keypad keys
|
||||
will now be configurable for the emulation of an LK-201 keypad (less the
|
||||
comma key). The line
|
||||
|
||||
keycode 105 = F24
|
||||
|
||||
modifies the NumLock key to be the F24 key which can then be configured
|
||||
to behave as the PF1 (Gold) key. In doing so, you will no longer
|
||||
have a NumLock key. If you are using other software under X
|
||||
which requires a NumLock key, then examine your keyboard and look
|
||||
for one you don't use and redefine it to be the NumLock key.
|
||||
Basically, you need to clear the NumLock key from being assigned
|
||||
as a modifier, assign it to the key of your choice, and then add
|
||||
it back as a modifier. (See the "General Notes on Using NumLock
|
||||
for the PF1 Key on a Unix System" section below for further help
|
||||
on how to do this.)
|
||||
|
||||
PC users running MS-DOS:
|
||||
|
||||
By default, F1 is configured to emulate the PF1 (GOLD) key. But NumLock
|
||||
can be used instead if you load a freeware TSR distributed with
|
||||
MS-Kermit, call gold.com. It is distributed in a file called gold22.zip
|
||||
and comes with the source code as well as a loadable binary image.
|
||||
(See edt-pc.el for more information.)
|
||||
|
||||
PC users running GNU/Linux:
|
||||
|
||||
The default X server configuration of three keys PC AT keyboard keys
|
||||
needs to be modified to permit the PC keyboard to emulate an LK-201
|
||||
keyboard properly. Here's the contents of an .xmodmaprc file which makes
|
||||
these changes for your:
|
||||
|
||||
! File: .xmodmaprc
|
||||
!
|
||||
! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
|
||||
!
|
||||
clear mod2
|
||||
keycode 77 = F12
|
||||
keycode 96 = Num_Lock Pointer_EnableKeys
|
||||
add mod2 = Num_Lock
|
||||
|
||||
Feed the file to the xmodmap command and the PC NumLock keypad
|
||||
key will now be configurable for the emulation of the PF1 key.
|
||||
The PC keypad can now emulate an LK-201 keypad (less the comma
|
||||
key), the standard keyboard supplied with DEC terminals VT-200 and above.
|
||||
This .xmodmaprc file switches the role of the F12 and NumLock
|
||||
keys. It has been tested on RedHat GNU/Linux 5.2. Other
|
||||
versions of GNU/Linux may require different keycodes. (See the
|
||||
"General Notes on Using NumLock for the PF1 Key on a Unix System"
|
||||
section below for further help on how to do this.)
|
||||
|
||||
NOTE: It is necessary to have NumLock ON for the PC keypad to emulate the
|
||||
LK-201 keypad properly.
|
||||
|
||||
General Notes on Using NumLock for the PF1 Key on a Unix System:
|
||||
|
||||
Making the physical NumLock key available for use in the EDT
|
||||
Emulation requires some modification to the default X Window
|
||||
settings. Since the keycode assignments vary from system to
|
||||
system, some investigation is needed to see how to do this on
|
||||
a particular system.
|
||||
|
||||
The following commands should be run and the output examined.
|
||||
On RedHat GNU/Linux 5.2 on a PC, we get the following output when
|
||||
running xmodmap.
|
||||
|
||||
"xmodmap -pm" yields:
|
||||
|
||||
xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
|
||||
|
||||
shift Shift_L (0x32), Shift_R (0x3e)
|
||||
lock Caps_Lock (0x42)
|
||||
control Control_L (0x25), Control_R (0x6d)
|
||||
mod1 Alt_L (0x40), Alt_R (0x71)
|
||||
mod2 Num_Lock (0x4d)
|
||||
mod3
|
||||
mod4
|
||||
mod5 Scroll_Lock (0x4e)
|
||||
|
||||
|
||||
Note that Num_Lock is assigned to the modifier mod2. This is
|
||||
what hides Num_Lock from being seen by Emacs.
|
||||
|
||||
Now, "xmodmap -pke" yields:
|
||||
|
||||
.
|
||||
.
|
||||
.
|
||||
keycode 77 = Num_Lock Pointer_EnableKeys
|
||||
.
|
||||
.
|
||||
.
|
||||
keycode 96 = F12
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode
|
||||
77. The following steps are taken:
|
||||
|
||||
1. clear the assignment of Num_Lock to mod2;
|
||||
2. swap the keycodes assigned to F12 and Num_Lock;
|
||||
3. assign Num_Lock back to mod2.
|
||||
|
||||
The .xmodmaprc file looks like this:
|
||||
|
||||
! File: .xmodmaprc
|
||||
!
|
||||
! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
|
||||
!
|
||||
clear mod2
|
||||
keycode 77 = F12
|
||||
keycode 96 = Num_Lock Pointer_EnableKeys
|
||||
add mod2 = Num_Lock
|
||||
|
||||
So, after executing "xmodmap .xmodmaprc", a press of the physical
|
||||
F12 key looks like a Num_Lock keypress to X. Also, a press of the
|
||||
physical NumLock key looks like a press of the F12 key to X.
|
||||
|
||||
Now, edt-mapper.el will see "f12" when the physical NumLock key
|
||||
is pressed, allowing the NumLock key to be used as the EDT PF1
|
||||
(Gold) key.
|
||||
|
||||
V. HOW DOES THIS EDT EMULATION DIFFER FROM REAL EDT?:
|
||||
|
||||
In general, you will find that this emulation of EDT replicates most, but not
|
||||
all, of EDT's most used Keypad Mode editing functions and behavior. It is not
|
||||
perfect, but most EDT users who have tried the emulation agree that it is
|
||||
quite good enough to make it easy for die-hard EDT users to move over to using
|
||||
GNU Emacs.
|
||||
|
||||
Here's a list of the most important differences between EDT and this GNU Emacs
|
||||
EDT Emulation. The list is short but you must be aware of these differences
|
||||
if you are to use the EDT Emulation effectively.
|
||||
|
||||
1. Entering repeat counts works a little differently than in EDT.
|
||||
|
||||
EDT allows users to enter a repeat count before entering a command that
|
||||
accepts repeat counts. For example, when in EDT, pressing these three
|
||||
keys in sequence, GOLD 5 KP1, will move the cursor in the current
|
||||
direction 5 words.
|
||||
|
||||
Emacs provides two ways to enter repeat counts, though neither involves
|
||||
using the GOLD key. In Emacs, repeat counts can be entered by using the
|
||||
ESC key. For example, pressing these keys in sequence, ESC 1 0 KP1, will
|
||||
move the cursor in the current direction 10 words.
|
||||
|
||||
Emacs provides another command called universal-argument that can do the
|
||||
same thing, plus a few other things. Normally, Emacs has this bound to
|
||||
C-u.
|
||||
|
||||
2. The EDT SUBS command, bound to GOLD ENTER, is NOT supported. The built-in
|
||||
Emacs query-replace command has been bound to GOLD ENTER, instead. It is
|
||||
much more convenient to use than SUBS.
|
||||
|
||||
3. EDT's line mode commands and nokeypad mode commands are NOT supported
|
||||
(with one important exception; see item 8 in the Highlights section
|
||||
below). Although, at first, this may seem like a big omission, the set of
|
||||
built-in Emacs commands provides a much richer set of capabilities which
|
||||
more than make up for this omission.
|
||||
|
||||
To enter Emacs commands not bound to keys, you can press GOLD KP7 or the
|
||||
DO key. Emacs will display its own command prompt called Meta-x (M-x).
|
||||
You can also invoke this prompt the normal Emacs way by entering ESC x.
|
||||
|
||||
4. Selected text is highlighted ONLY when running under X Windows. Gnu Emacs
|
||||
19 does not support highlighting of text on VT series terminals, at this
|
||||
time.
|
||||
|
||||
5. Just like TPU/EVE, The ENTER key is NOT used to terminate input when the
|
||||
editor prompts you for input. The RETURN key is used, instead. (KP4 and
|
||||
KP5 do terminate input for the FIND command, just like in EDT, however.)
|
||||
|
||||
|
||||
|
||||
|
||||
VI. SOME HIGHLIGHTS IN THIS EDT EMULATION, AND SOME COMPARISONS TO THE
|
||||
ORIGINAL GNU EMACS EDT EMULATION:
|
||||
|
||||
1. The EDT define key command is supported (edt-define-key) and is bound to
|
||||
C-k in the default EDT mode when EDT control sequence bindings are enabled
|
||||
or one of the sample edt-user.el customization files is used. The TPU/EVE
|
||||
learn command is supported but not bound to a key in the default EDT mode
|
||||
but is bound in the sample edt-user.el files.
|
||||
|
||||
Unlike the TPU/EVE learn command, which uses one key to begin the learn
|
||||
sequence, C-l, and another command to remember the sequence, C-r, this
|
||||
version of the learn command (edt-learn) serves as a toggle to both begin
|
||||
and to remember the learn sequence.
|
||||
|
||||
Many users who change the meaning of a key with the define key and the
|
||||
learn commands, would like to be able to restore the original key binding
|
||||
without having to quit and restart emacs. So a restore key command is
|
||||
provided to do just that. When invoked, it prompts you to press the key
|
||||
to which you wish the last replaced key definition restored. It is bound
|
||||
to GOLD C-k in the default EDT mode when EDT control sequence bindings are
|
||||
enabled or one of the sample edt-user.el customization files is used.
|
||||
|
||||
2. Direction support is fully supported. It is no longer accomplished by
|
||||
re-defining keys each time the direction is changed. Thus, commands
|
||||
sensitive to the current direction setting may be bound easily to any key.
|
||||
|
||||
3. All original emacs bindings are fully restored when EDT emulation is
|
||||
turned off.
|
||||
|
||||
4. User custom EDT bindings are kept separate from the default EDT bindings.
|
||||
One can toggle back and forth between the custom EDT bindings and default
|
||||
EDT bindings.
|
||||
|
||||
5. The Emacs functions in edt.el attempt to emulate, where practical, the
|
||||
exact behavior of the corresponding EDT keypad mode commands. In a few
|
||||
cases, the emulation is not exact, but we hope you will agree it is close
|
||||
enough. In a very few cases, we chose to use the Emacs way of handling
|
||||
things. As mentioned earlier, we do not emulate the EDT SUBS command.
|
||||
Instead, we chose to use the Emacs query-replace function, which we find
|
||||
to be easier to use.
|
||||
|
||||
6. Emacs uses the regexp assigned to page-delimiter to determine what marks a
|
||||
page break. This is normally "^\f", which causes the edt-page command to
|
||||
ignore form feeds not located at the beginning of a line. To emulate the
|
||||
EDT PAGE command exactly, page-delimiter is set to "\f" when EDT emulation
|
||||
is turned on, and restored to "^\f" when EDT emulation is turned off.
|
||||
But, since some users prefer the Emacs definition of a page break, or may
|
||||
wish to preserve a customized definition of page break, one can override
|
||||
the EDT definition by placing
|
||||
|
||||
(setq edt-keep-current-page-delimiter t)
|
||||
|
||||
in your .emacs file.
|
||||
|
||||
7. The EDT definition of a section of a terminal window is hardwired to be 16
|
||||
lines of its one-and-only 24-line window (the EDT SECT command bound to
|
||||
KP8). That's two-thirds of the window at a time. Since Emacs, like
|
||||
TPU/EVE, can handle multiple windows of sizes of other than 24 lines, the
|
||||
definition of section used here has been modified to two-thirds of the
|
||||
current window. (There is also an edt-scroll-window function which you
|
||||
may prefer over the SECT emulation.)
|
||||
|
||||
8. Cursor movement and deletion involving word entities is identical to EDT.
|
||||
This, above all else, gives the die-hard EDT user a sense of being at
|
||||
home. Also, an emulation of EDT's SET ENTITY WORD command is provided,
|
||||
for those users who like to customize movement by a word at a time to
|
||||
their own liking.
|
||||
|
||||
9. EDT's FIND and FNDNXT are supported.
|
||||
|
||||
10. EDT's APPEND and REPLACE commands are supported.
|
||||
|
||||
11. CHNGCASE is supported. It works on individual characters or selected
|
||||
text, if SELECT is active. In addition, two new commands are provided:
|
||||
edt-lowercase and edt-uppercase. They work on individual WORDS or
|
||||
selected text, if SELECT is active.
|
||||
|
||||
12. Form feed and tab insert commands are supported.
|
||||
|
||||
13. A new command, edt-duplicate-word, is provided. If you experiment with
|
||||
it, you might find it to be surprisingly useful and may wonder how you
|
||||
ever got along without it! It is assigned to C-j in the sample
|
||||
edt-user.el customization files.
|
||||
|
||||
14. TPU/EVE's Rectangular Cut and Paste functions (originally from the EVE-Plus
|
||||
package) are supported. But unlike the TPU/EVE versions, these here
|
||||
support both insert and overwrite modes. The seven rectangular functions
|
||||
are bound to F7, F8, GOLD-F8, F9, GOLD-F9, F10, and GOLD-F10 in the
|
||||
default EDT mode.
|
||||
|
||||
15. The original EDT emulation package set up many default regular and GOLD
|
||||
bindings. We tried to preserve most (but not all!) of these, so users of
|
||||
the original emulation package will feel more at home.
|
||||
|
||||
Nevertheless, there are still many GOLD key sequences which are not bound
|
||||
to any functions. These are prime candidates to use for your own
|
||||
customizations.
|
||||
|
||||
Also, there are several commands in edt.el not bound to any key. So, you
|
||||
will find it worthwhile to look through edt.el for functions you may wish
|
||||
to add to your personal customized bindings.
|
||||
|
||||
16. The VT200/VT300 series terminals steal the function keys F1 to F5 for
|
||||
their own use. These do not generate signals which are sent to the host.
|
||||
So, edt.el does not assign any default bindings to F1 through F5.
|
||||
|
||||
In addition, our VT220 terminals generate an interrupt when the F6 key is
|
||||
pressed (^C or ^Y, can't remember which) and not the character sequence
|
||||
documented in the manual. So, binding emacs commands to F6 will not work
|
||||
if your terminal behaves the same way.
|
||||
|
||||
17. The VT220 terminal has no ESC, BS, nor LF keys, as does a VT100. So the
|
||||
default EDT bindings adopt the standard DEC convention of having the F11,
|
||||
F12, and F13 keys, on a VT200 series (and above) terminal, assigned to the
|
||||
same EDT functions that are bound to ESC, BS, and LF on a VT100 terminal.
|
||||
|
||||
18. Each user, through the use of a private edt-user.el file, can customize,
|
||||
very easily, personal EDT emulation bindings.
|
||||
|
||||
19. The EDT SELECT and RESET functions are supported. However, unlike EDT,
|
||||
pressing RESET to cancel text selection does NOT reset the existing
|
||||
setting of the current direction.
|
||||
|
||||
We also provide a TPU/EVE like version of the single SELECT/RESET
|
||||
function, called edt-toggle-select, which makes the EDT SELECT function
|
||||
into a toggle on/off switch. That is, if selection is ON, pressing SELECT
|
||||
again turns selection off (cancels selection). This function is used in
|
||||
the sample edt-user.el customization files.
|
||||
|
||||
|
||||
VII. CUSTOMIZING:
|
||||
|
||||
Most EDT users, at one time or another, make some custom key bindings, or
|
||||
use someone else's custom key bindings, which they come to depend upon just as
|
||||
if they were built-in bindings. This EDT Emulation for GNU Emacs is designed
|
||||
to make it easy to customize bindings.
|
||||
|
||||
If you wish to customize the EDT Emulation to use some of your own key
|
||||
bindings, you need to make a private version of edt-user.el in your own
|
||||
private lisp directory. There are two sample files edt-user.el1 and
|
||||
edt-user.el2 for you to use as templates and for ideas. Look at
|
||||
edt-user.el1 first. Unless you will be using two or more very different
|
||||
types of terminals on the same system, you need not look at edt-user.el2.
|
||||
|
||||
First, you need to have your own private lisp directory, say ~/lisp, and
|
||||
you should add it to the GNU Emacs load path.
|
||||
|
||||
NOTE: A few sites have different load-path requirements, so the above
|
||||
directions may need some modification if your site has such special
|
||||
needs.
|
||||
|
||||
|
||||
Creating your own edt-user.el file:
|
||||
|
||||
A sample edt-user.el file is attached to the end of this user documentation.
|
||||
You should use it as a guide to learn how you can customize EDT emulation
|
||||
bindings to your own liking. Names used to identify the set of LK-201
|
||||
keypad and function keys are:
|
||||
|
||||
Keypad Keys:
|
||||
PF1 PF2 PF3 PF4
|
||||
KP7 KP8 KP9 KP-
|
||||
KP4 KP5 KP6 KP,
|
||||
KP1 KP2 KP3
|
||||
KP0 KPP KPE
|
||||
|
||||
Arrow Keys:
|
||||
LEFT RIGHT DOWN UP
|
||||
|
||||
Function Keys:
|
||||
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
|
||||
HELP DO F17 F18 F19 F20
|
||||
|
||||
FIND INSERT REMOVE
|
||||
SELECT PREVIOUS NEXT
|
||||
|
||||
Note:
|
||||
Many VT-200 terminals, and above, steal function keys F1 thru
|
||||
F5 for terminal setup control and don't send anything to the
|
||||
host if pressed. So customizing bindings to these keys may
|
||||
not work for you.
|
||||
|
||||
There are three basic functions that do the EDT emulation bindings:
|
||||
edt-bind-standard-key, edt-bind-gold-key, and edt-bind-function-key.
|
||||
|
||||
The first two are for binding functions to keys which are standard across most
|
||||
keyboards. This makes them keyboard independent, making it possible to define
|
||||
these key bindings for all terminals in the file edt.el.
|
||||
|
||||
The first, edt-bind-standard-key, is used typically to bind emacs commands to
|
||||
control keys, although some people use it to bind commands to other keys, as
|
||||
well. (For example, some people use it to bind the VT200 seldom used
|
||||
back-tick key (`) to the function "ESC-prefix" so it will behave like an ESC
|
||||
key.) The second function, edt-bind-gold-key, is used to bind emacs commands
|
||||
to gold key sequences involving alpha-numeric keys, special character keys,
|
||||
and control keys.
|
||||
|
||||
The third function, edt-bind-function-key, is terminal dependent and is
|
||||
defined in a terminal specific file (see edt-vt100.el for example). It is
|
||||
used to bind emacs commands to function keys, to keypad keys, and to gold
|
||||
sequences of those keys.
|
||||
|
||||
WARNING: Each of the three functions, edt-bind-function-key,
|
||||
edt-bind-gold-key, and edt-bind-standard-key, has an optional
|
||||
last argument. The optional argument should NOT be used in
|
||||
edt-user.el! When the optional argument is missing, each
|
||||
function knows to make the key binding part of the user's EDT
|
||||
custom bindings, which is what you want to do in edt-user.el!
|
||||
|
||||
The EDT default bindings are set up in edt.el by calling these
|
||||
same functions with the optional last argument set to "t". So, if
|
||||
you decide to copy such function calls from edt.el to edt-user.el
|
||||
for subsequent modification, BE SURE TO DELETE THE "t" AT THE END
|
||||
OF EACH PARAMETER LIST!
|
||||
|
||||
|
||||
SPECIFYING WORD ENTITIES:
|
||||
|
||||
The variable edt-word-entities is used to emulate EDT's SET ENTITY WORD
|
||||
command. It contains a list of characters to be treated as words in
|
||||
themselves. If the user does not define edt-word-entities in his/her .emacs
|
||||
file, then it is set up with the EDT default containing only TAB.
|
||||
|
||||
The characters are stored in the list by their numerical values, not as
|
||||
strings. Emacs supports several ways to specify the numerical value of a
|
||||
character. One method is to use the question mark: ?A means the numerical
|
||||
value for A, ?/ means the numerical value for /, and so on. Several
|
||||
unprintable characters have special representations:
|
||||
|
||||
?\b specifies BS, C-h
|
||||
?\t specifies TAB, C-i
|
||||
?\n specifies LFD, C-j
|
||||
?\v specifies VTAB, C-k
|
||||
?\f specifies FF, C-l
|
||||
?\r specifies CR, C-m
|
||||
?\e specifies ESC, C-[
|
||||
?\\ specifies \
|
||||
|
||||
Here are some examples:
|
||||
|
||||
(setq edt-word-entities '(?\t ?- ?/)) ;; Specifies TAB, - , and /
|
||||
(setq edt-word-entities '(?\t) ;; Specifies TAB, the default
|
||||
|
||||
You can also specify characters by their decimal ascii values:
|
||||
|
||||
(setq edt-word-entities '(9 45 47)) ;; Specifies TAB, - , and /
|
||||
|
||||
|
||||
ENABLING EDT CONTROL KEY SEQUENCE BINDINGS:
|
||||
|
||||
Where EDT key bindings and GNU Emacs key bindings conflict, the default GNU
|
||||
Emacs key bindings are retained by default. Some diehard EDT users may not
|
||||
like this. So, if the variable edt-use-EDT-control-key-bindings is set to
|
||||
true in a user's .emacs file, then the default EDT Emulation mode will enable
|
||||
most of the original EDT control key sequence bindings. If you wish to do
|
||||
this, add the following line to your .emacs file:
|
||||
|
||||
(setq edt-use-EDT-control-key-bindings t)
|
||||
|
||||
|
||||
DEFAULT EDT Keypad
|
||||
|
||||
F7: Copy Rectangle +----------+----------+----------+----------+
|
||||
F8: Cut Rect Overstrike |Prev Line |Next Line |Bkwd Char |Frwd Char |
|
||||
G-F8: Paste Rect Overstrike | (UP) | (DOWN) | (LEFT) | (RIGHT) |
|
||||
F9: Cut Rect Insert |Window Top|Window Bot|Bkwd Sent |Frwd Sent |
|
||||
G-F9: Paste Rect Insert +----------+----------+----------+----------+
|
||||
F10: Cut Rectangle
|
||||
G-F10: Paste Rectangle
|
||||
F11: ESC
|
||||
F12: Begining of Line +----------+----------+----------+----------+
|
||||
G-F12: Delete Other Windows | GOLD | HELP | FNDNXT | DEL L |
|
||||
F13: Delete to Begin of Word | (PF1) | (PF2) | (PF3) | (PF4) |
|
||||
HELP: Keypad Help |Mark Wisel|Desc Funct| FIND | UND L |
|
||||
DO: Execute extended command +----------+----------+----------+----------+
|
||||
| PAGE | SECT | APPEND | DEL W |
|
||||
C-g: Keyboard Quit | (7) | (8) | (9) | (-) |
|
||||
G-C-g: Keyboard Quit |Ex Ext Cmd|Fill Regio| REPLACE | UND W |
|
||||
C-h: Beginning of Line +----------+----------+----------+----------+
|
||||
G-C-h: Emacs Help | ADVANCE | BACKUP | CUT | DEL C |
|
||||
C-i: Tab Insert | (4) | (5) | (6) | (,) |
|
||||
C-j: Delete to Begin of Word | BOTTOM | TOP | Yank | UND C |
|
||||
C-k: Define Key +----------+----------+----------+----------+
|
||||
G-C-k: Restore Key | WORD | EOL | CHAR | Next |
|
||||
C-l: Form Feed Insert | (1) | (2) | (3) | Window |
|
||||
C-n: Set Screen Width 80 | CHNGCASE | DEL EOL |Quoted Ins| !
|
||||
C-r: Isearch Backward +---------------------+----------+ (ENTER) |
|
||||
C-s: Isearch Forward | LINE | SELECT | !
|
||||
C-t: Display the Time | (0) | (.) | Query |
|
||||
C-u: Delete to Begin of Line | Open Line | RESET | Replace |
|
||||
C-v: Redraw Display +---------------------+----------+----------+
|
||||
C-w: Set Screen Width 132
|
||||
C-z: Suspend Emacs +----------+----------+----------+
|
||||
G-C-\: Split Window | FNDNXT | Yank | CUT |
|
||||
| (FIND) | (INSERT) | (REMOVE) |
|
||||
G-b: Buffer Menu | FIND | | COPY |
|
||||
G-c: Compile +----------+----------+----------+
|
||||
G-d: Delete Window |SELECT/RES|SECT BACKW|SECT FORWA|
|
||||
G-e: Exit | (SELECT) |(PREVIOUS)| (NEXT) |
|
||||
G-f: Find File | | | |
|
||||
G-g: Find File Other Window +----------+----------+----------+
|
||||
G-h: Keypad Help
|
||||
G-i: Insert File
|
||||
G-k: Toggle Capitalization Word
|
||||
G-l: Lowercase Word or Region
|
||||
G-m: Save Some Buffers
|
||||
G-n: Next Error
|
||||
G-o: Switch to Next Window
|
||||
G-q: Quit
|
||||
G-r: Revert File
|
||||
G-s: Save Buffer
|
||||
G-u: Uppercase Word or Region
|
||||
G-v: Find File Other Window
|
||||
G-w: Write file
|
||||
G-y: EDT Emulation OFF
|
||||
G-z: Switch to User EDT Key Bindings
|
||||
G-1: Delete Other Windows
|
||||
G-2: Split Window
|
||||
G-%: Go to Percentage
|
||||
G- : Undo (GOLD Spacebar)
|
||||
G-=: Go to Line
|
||||
G-`: What line
|
||||
|
||||
;;; File: edt-user.el --- Sample User Customizations for the Enhanced
|
||||
;;; EDT Keypad Mode Emulation
|
||||
;;;
|
||||
;;; For GNU Emacs 19
|
||||
;;;
|
||||
;; Copyright (C) 1986, 1992, 1993 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Kevin Gallagher <kevingal@onramp.net>
|
||||
;; Maintainer: Kevin Gallagher <kevingal@onramp.net>
|
||||
;; Keywords: emulations
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
;; Boston, MA 02111-1307, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file contains GNU Emacs User Custom EDT bindings and functions. In
|
||||
;; this example file, there is no special test for the type of terminal being
|
||||
;; used. The assumption is that all key bindings here apply to all terminals
|
||||
;; that may be used. (In fact, it was written by an individual who uses only
|
||||
;; VT series terminals when logging into a VAX.)
|
||||
;;
|
||||
;; WARNING: Each of the three functions, edt-bind-function-key,
|
||||
;; edt-bind-gold-key, and edt-bind-standard-key, has an optional
|
||||
;; last argument. The optional argument should NOT be used in
|
||||
;; edt-user.el! When the optional argument is missing, each
|
||||
;; function knows to make the key binding part of the user's EDT
|
||||
;; custom bindings, which is what you want to do in edt-user.el!
|
||||
;;
|
||||
;; The EDT default bindings are set up in edt.el by calling these
|
||||
;; same functions with the optional last argument set to "t". So, if
|
||||
;; you decide to copy such function calls from edt.el to edt-user.el
|
||||
;; for subsequent modification, BE SURE TO DELETE THE "t" AT THE END
|
||||
;; OF EACH PARAMETER LIST!
|
||||
;;
|
||||
|
||||
;;; Usage:
|
||||
|
||||
;; See edt-user.doc in the emacs etc directory.
|
||||
|
||||
;; ====================================================================
|
||||
|
||||
;;;;
|
||||
;;;; Setup user custom EDT key bindings.
|
||||
;;;;
|
||||
|
||||
(defun edt-setup-user-bindings ()
|
||||
"Assigns user custom EDT Emulation keyboard bindings."
|
||||
|
||||
;; PF1 (GOLD), PF2, PF3, PF4
|
||||
;;
|
||||
;; This file MUST contain a binding of PF1 to edt-user-gold-map. So
|
||||
;; DON'T CHANGE OR DELETE THE REGULAR KEY BINDING OF PF1 BELOW!
|
||||
;; (However, you may change the GOLD-PF1 binding, if you wish.)
|
||||
(edt-bind-function-key "PF1" 'edt-user-gold-map 'edt-mark-section-wisely)
|
||||
(edt-bind-function-key "PF2" 'query-replace 'other-window)
|
||||
(edt-bind-function-key "PF4" 'edt-delete-entire-line 'edt-undelete-line)
|
||||
|
||||
;; EDT Keypad Keys
|
||||
(edt-bind-function-key "KP1" 'edt-word-forward 'edt-change-case)
|
||||
(edt-bind-function-key "KP3" 'edt-word-backward 'edt-copy)
|
||||
(edt-bind-function-key "KP6" 'edt-cut-or-copy 'yank)
|
||||
(edt-bind-function-key "KP8" 'edt-scroll-window 'fill-paragraph)
|
||||
(edt-bind-function-key "KP9" 'open-line 'edt-eliminate-all-tabs)
|
||||
(edt-bind-function-key "KPP"
|
||||
'edt-toggle-select 'edt-line-to-middle-of-window)
|
||||
(edt-bind-function-key "KPE" 'edt-change-direction 'overwrite-mode)
|
||||
|
||||
;; GOLD bindings for regular keys.
|
||||
(edt-bind-gold-key "a" 'edt-append)
|
||||
(edt-bind-gold-key "A" 'edt-append)
|
||||
(edt-bind-gold-key "h" 'edt-electric-user-keypad-help)
|
||||
(edt-bind-gold-key "H" 'edt-electric-user-keypad-help)
|
||||
|
||||
;; Control bindings for regular keys.
|
||||
;;; Leave binding of C-c as original prefix key.
|
||||
(edt-bind-standard-key "\C-j" 'edt-duplicate-word)
|
||||
(edt-bind-standard-key "\C-k" 'edt-define-key)
|
||||
(edt-bind-gold-key "\C-k" 'edt-restore-key)
|
||||
(edt-bind-standard-key "\C-l" 'edt-learn)
|
||||
;;; Leave binding of C-m to newline.
|
||||
(edt-bind-standard-key "\C-n" 'edt-set-screen-width-80)
|
||||
(edt-bind-standard-key "\C-o" 'open-line)
|
||||
(edt-bind-standard-key "\C-p" 'fill-paragraph)
|
||||
;;; Leave binding of C-r to isearch-backward.
|
||||
;;; Leave binding of C-s to isearch-forward.
|
||||
(edt-bind-standard-key "\C-t" 'edt-display-the-time)
|
||||
(edt-bind-standard-key "\C-v" 'redraw-display)
|
||||
(edt-bind-standard-key "\C-w" 'edt-set-screen-width-132)
|
||||
;;; Leave binding of C-x as original prefix key.
|
||||
)
|
||||
|
||||
;;;
|
||||
;;; LK-201 KEYBOARD USER EDT KEYPAD HELP
|
||||
;;;
|
||||
|
||||
(defun edt-user-keypad-help ()
|
||||
"
|
||||
USER EDT Keypad Active
|
||||
|
||||
+----------+----------+----------+----------+
|
||||
F7: Copy Rectangle |Prev Line |Next Line |Bkwd Char |Frwd Char |
|
||||
F8: Cut Rect Overstrike | (UP) | (DOWN) | (LEFT) | (RIGHT) |
|
||||
G-F8: Paste Rect Overstrike |Window Top|Window Bot|Bkwd Sent |Frwd Sent |
|
||||
F9: Cut Rect Insert +----------+----------+----------+----------+
|
||||
G-F9: Paste Rect Insert
|
||||
F10: Cut Rectangle
|
||||
G-F10: Paste Rectangle
|
||||
F11: ESC +----------+----------+----------+----------+
|
||||
F12: Begining of Line | GOLD |Query Repl| FNDNXT |Del Ent L |
|
||||
G-F12: Delete Other Windows | (PF1) | (PF2) | (PF3) | (PF4) |
|
||||
F13: Delete to Begin of Word |Mark Wisel|Other Wind| FIND | UND L |
|
||||
HELP: Keypad Help +----------+----------+----------+----------+
|
||||
DO: Execute extended command | PAGE |Scroll Win|Open Line | DEL W |
|
||||
| (7) | (8) | (9) | (-) |
|
||||
C-a: Beginning of Line |Ex Ext Cmd|Fill Parag|Elim Tabs | UND W |
|
||||
C-b: Switch to Buffer +----------+----------+----------+----------+
|
||||
C-d: Delete Character | ADVANCE | BACKUP | CUT/COPY | DEL C |
|
||||
C-e: End of Line | (4) | (5) | (6) | (,) |
|
||||
C-f: Forward Character | BOTTOM | TOP | Yank | UND C |
|
||||
C-g: Keyboard Quit +----------+----------+----------+----------+
|
||||
G-C-g: Keyboard Quit | Fwd Word | EOL | Bwd Word | Change |
|
||||
C-h: Electric Emacs Help | (1) | (2) | (3) | Direction|
|
||||
G-C-h: Emacs Help | CHNGCASE | DEL EOL | COPY | |
|
||||
C-i: Indent for Tab +---------------------+----------+ (ENTER) |
|
||||
C-j: Duplicate Word | LINE |SELECT/RES| |
|
||||
C-k: Define Key | (0) | (.) | Toggle |
|
||||
G-C-k: Restore Key | Open Line |Center Lin|Insrt/Over|
|
||||
C-l: Learn +---------------------+----------+----------+
|
||||
C-n: Set Screen Width 80
|
||||
C-o: Open Line +----------+----------+----------+
|
||||
C-p: Fill Paragraph | FNDNXT | Yank | CUT |
|
||||
C-q: Quoted Insert | (FIND)) | (INSERT) | (REMOVE) |
|
||||
C-r: Isearch Backward | FIND | | COPY |
|
||||
C-s: Isearch Forward +----------+----------+----------+
|
||||
C-t: Display the Time |SELECT/RES|SECT BACKW|SECT FORWA|
|
||||
C-u: Universal Argument | (SELECT) |(PREVIOUS)| (NEXT) |
|
||||
C-v: Redraw Display | | | |
|
||||
C-w: Set Screen Width 132 +----------+----------+----------+
|
||||
C-z: Suspend Emacs
|
||||
G-C-\\: Split Window
|
||||
|
||||
G-a: Append to Kill Buffer
|
||||
G-b: Buffer Menu
|
||||
G-c: Compile
|
||||
G-d: Delete Window
|
||||
G-e: Exit
|
||||
G-f: Find File
|
||||
G-g: Find File Other Window
|
||||
G-h: Keypad Help
|
||||
G-i: Insert File
|
||||
G-k: Toggle Capitalization Word
|
||||
G-l: Lowercase Word or Region
|
||||
G-m: Save Some Buffers
|
||||
G-n: Next Error
|
||||
G-o: Switch Windows
|
||||
G-q: Quit
|
||||
G-r: Revert File
|
||||
G-s: Save Buffer
|
||||
G-u: Uppercase Word or Region
|
||||
G-v: Find File Other Window
|
||||
G-w: Write file
|
||||
G-y: EDT Emulation OFF
|
||||
G-z: Switch to Default EDT Key Bindings
|
||||
G-2: Split Window
|
||||
G-%: Go to Percentage
|
||||
G- : Undo (GOLD Spacebar)
|
||||
G-=: Go to Line
|
||||
G-`: What line"
|
||||
|
||||
(interactive)
|
||||
(describe-function 'edt-user-keypad-help))
|
45
etc/emacs.bash
Normal file
45
etc/emacs.bash
Normal file
|
@ -0,0 +1,45 @@
|
|||
# This defines a bash command named `edit' which contacts/resumes an
|
||||
# existing emacs or starts a new one if none exists.
|
||||
#
|
||||
# One way or another, any arguments are passed to emacs to specify files
|
||||
# (provided you have loaded `resume.el').
|
||||
#
|
||||
# This function assumes the emacs program is named `emacs' and is somewhere
|
||||
# in your load path. If either of these is not true, the most portable
|
||||
# (and convenient) thing to do is to make an alias called emacs which
|
||||
# refers to the real program, e.g.
|
||||
#
|
||||
# alias emacs=/usr/local/bin/gemacs
|
||||
#
|
||||
# Written by Noah Friedman.
|
||||
|
||||
function edit ()
|
||||
{
|
||||
local windowsys="${WINDOW_PARENT+sun}"
|
||||
|
||||
windowsys="${windowsys:-${DISPLAY+x}}"
|
||||
|
||||
if [ -n "${windowsys:+set}" ]; then
|
||||
# Do not just test if these files are sockets. On some systems
|
||||
# ordinary files or fifos are used instead. Just see if they exist.
|
||||
if [ -e "${HOME}/.emacs_server" -o -e "/tmp/esrv${UID}-"* ]; then
|
||||
emacsclient "$@"
|
||||
return $?
|
||||
else
|
||||
echo "edit: starting emacs in background..." 1>&2
|
||||
fi
|
||||
|
||||
case "${windowsys}" in
|
||||
x ) (emacs "$@" &) ;;
|
||||
sun ) (emacstool "$@" &) ;;
|
||||
esac
|
||||
else
|
||||
if jobs %emacs 2> /dev/null ; then
|
||||
echo "$(pwd)" "$@" >| ${HOME}/.emacs_args && fg %emacs
|
||||
else
|
||||
emacs "$@"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
25
etc/emacs.csh
Normal file
25
etc/emacs.csh
Normal file
|
@ -0,0 +1,25 @@
|
|||
# This defines a csh command named `edit' which resumes an
|
||||
# existing Emacs or starts a new one if none exists.
|
||||
# One way or another, any arguments are passed to Emacs to specify files
|
||||
# (provided you have loaded `resume.el').
|
||||
# - Michael DeCorte
|
||||
|
||||
# These are the possible values of $whichjob
|
||||
# 1 = new ordinary emacs (the -nw is so that it doesn't try to do X)
|
||||
# 2 = resume emacs
|
||||
# 3 = new emacs under X (-i is so that you get a reasonable icon)
|
||||
# 4 = resume emacs under X
|
||||
# 5 = new emacs under suntools
|
||||
# 6 = resume emacs under suntools
|
||||
# 7 = new emacs under X and suntools - doesn't make any sense, so use X
|
||||
# 8 = resume emacs under X and suntools - doesn't make any sense, so use X
|
||||
set EMACS_PATTERN="^\[[0-9]\] . Stopped ............ $EMACS"
|
||||
|
||||
alias edit 'set emacs_command=("emacs -nw \!*" "fg %emacs" "emacs -i \!* &"\
|
||||
"emacsclient \!* &" "emacstool \!* &" "emacsclient \!* &" "emacs -i \!* &"\
|
||||
"emacsclient \!* &") ; \
|
||||
jobs >! $HOME/.jobs; grep "$EMACS_PATTERN" < $HOME/.jobs >& /dev/null; \
|
||||
@ isjob = ! $status; \
|
||||
@ whichjob = 1 + $isjob + $?DISPLAY * 2 + $?WINDOW_PARENT * 4; \
|
||||
test -S ~/.emacs_server && emacsclient \!* \
|
||||
|| echo `pwd` \!* >! ~/.emacs_args && eval $emacs_command[$whichjob]'
|
34
etc/emacs.icon
Normal file
34
etc/emacs.icon
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
|
||||
*/
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
|
||||
0x8000,0x0000,0x007E,0x1C01,0x8000,0x0000,0x0006,0x1C01,
|
||||
0x8000,0x0000,0x007F,0xFC01,0x8000,0x0000,0x0080,0x1C01,
|
||||
0x8000,0x0000,0x013F,0xFC01,0x8000,0x0000,0x0140,0x1C01,
|
||||
0x8000,0x0000,0x03E0,0x1C01,0x8000,0x0000,0x0000,0x1C01,
|
||||
0x8000,0x0000,0x0000,0x1C01,0x8000,0x0000,0x0000,0x1C01,
|
||||
0x8000,0x0000,0x0000,0x1C01,0x8000,0x0000,0x0210,0x1C01,
|
||||
0x8000,0x0000,0x0330,0x1C01,0x8000,0x0000,0x00C0,0x1C01,
|
||||
0x8003,0xFFFF,0xFFFF,0xFE01,0x8005,0xFFFF,0xFFFF,0xFE01,
|
||||
0x8004,0xFFFF,0xFFFF,0xFC01,0x8004,0x787F,0xFFFF,0xF801,
|
||||
0x8004,0x77FF,0xFFFF,0xF801,0x8000,0x77E3,0x6FFF,0xF801,
|
||||
0x8000,0x762D,0x6FFF,0xF801,0x8004,0x77AD,0x6FFF,0xF801,
|
||||
0x800C,0x77AD,0x6FFF,0xF801,0x8004,0x786D,0x8FFF,0xF801,
|
||||
0x8000,0x7FFF,0xFFFF,0xF801,0x8000,0x7FFF,0xFFFF,0xF801,
|
||||
0x8000,0x7E0F,0xFFFF,0xF801,0x8008,0x7EFF,0xFFFF,0xF801,
|
||||
0x800C,0x7EF9,0x31CE,0x3801,0x8004,0x7E1A,0xADB5,0xF801,
|
||||
0x8000,0x7EFA,0xADBE,0x7801,0x8000,0x7EFB,0xADB7,0xB801,
|
||||
0x8000,0x7E0B,0xB2CC,0x7801,0x8000,0x7FFF,0xFFFF,0xF801,
|
||||
0x8004,0x3FFF,0xFFFF,0xF001,0x8004,0x1FFF,0xFFFF,0xE001,
|
||||
0x800C,0x0003,0x6000,0x0001,0x8000,0x0001,0x43C0,0x0001,
|
||||
0x8000,0x0001,0x4420,0x0001,0x8000,0x0001,0x4990,0x0001,
|
||||
0x8000,0x0001,0x4A50,0x0001,0x8004,0x0001,0x3250,0x0001,
|
||||
0x8004,0x0000,0x8450,0x0001,0x800A,0x0000,0x7850,0x0001,
|
||||
0x8000,0x0000,0x0050,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
|
||||
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
|
38
etc/emacs.xbm
Normal file
38
etc/emacs.xbm
Normal file
|
@ -0,0 +1,38 @@
|
|||
#define emacs_width 64
|
||||
#define emacs_height 64
|
||||
static char emacs_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x80,0x01,0x00,0x00,0x00,0x00,0x7e,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x60,
|
||||
0x38,0x80,0x01,0x00,0x00,0x00,0x00,0xfe,0x3f,0x80,0x01,0x00,0x00,0x00,0x00,
|
||||
0x01,0x38,0x80,0x01,0x00,0x00,0x00,0x80,0xfc,0x3f,0x80,0x01,0x00,0x00,0x00,
|
||||
0x80,0x02,0x38,0x80,0x01,0x00,0x00,0x00,0xc0,0x07,0x38,0x80,0x01,0x00,0x00,
|
||||
0x00,0x00,0x00,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x38,0x80,0x01,0x00,
|
||||
0x00,0x00,0x00,0x00,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x38,0x80,0x01,
|
||||
0x00,0x00,0x00,0x40,0x08,0x38,0x80,0x01,0x00,0x00,0x00,0xc0,0x0c,0x38,0x80,
|
||||
0x01,0x00,0x00,0x00,0x00,0x03,0x38,0x80,0x01,0xc0,0xff,0xff,0xff,0xff,0x7f,
|
||||
0x80,0x01,0xa0,0xff,0xff,0xff,0xff,0x7f,0x80,0x01,0x20,0xff,0xff,0xff,0xff,
|
||||
0x3f,0x80,0x01,0x20,0x1e,0xfe,0xff,0xff,0x1f,0x80,0x01,0x20,0xee,0xff,0xff,
|
||||
0xff,0x1f,0x80,0x01,0x00,0xee,0xc7,0xf6,0xff,0x1f,0x80,0x01,0x00,0x6e,0xb4,
|
||||
0xf6,0xff,0x1f,0x80,0x01,0x20,0xee,0xb5,0xf6,0xff,0x1f,0x80,0x01,0x30,0xee,
|
||||
0xb5,0xf6,0xff,0x1f,0x80,0x01,0x20,0x1e,0xb6,0xf1,0xff,0x1f,0x80,0x01,0x00,
|
||||
0xfe,0xff,0xff,0xff,0x1f,0x80,0x01,0x00,0xfe,0xff,0xff,0xff,0x1f,0x80,0x01,
|
||||
0x00,0x7e,0xf0,0xff,0xff,0x1f,0x80,0x01,0x10,0x7e,0xff,0xff,0xff,0x1f,0x80,
|
||||
0x01,0x30,0x7e,0x9f,0x8c,0x73,0x1c,0x80,0x01,0x20,0x7e,0x58,0xb5,0xad,0x1f,
|
||||
0x80,0x01,0x00,0x7e,0x5f,0xb5,0x7d,0x1e,0x80,0x01,0x00,0x7e,0xdf,0xb5,0xed,
|
||||
0x1d,0x80,0x01,0x00,0x7e,0xd0,0x4d,0x33,0x1e,0x80,0x01,0x00,0xfe,0xff,0xff,
|
||||
0xff,0x1f,0x80,0x01,0x20,0xfc,0xff,0xff,0xff,0x0f,0x80,0x01,0x20,0xf8,0xff,
|
||||
0xff,0xff,0x07,0x80,0x01,0x30,0x00,0xc0,0x06,0x00,0x00,0x80,0x01,0x00,0x00,
|
||||
0x80,0xc2,0x03,0x00,0x80,0x01,0x00,0x00,0x80,0x22,0x04,0x00,0x80,0x01,0x00,
|
||||
0x00,0x80,0x92,0x09,0x00,0x80,0x01,0x00,0x00,0x80,0x52,0x0a,0x00,0x80,0x01,
|
||||
0x20,0x00,0x80,0x4c,0x0a,0x00,0x80,0x01,0x20,0x00,0x00,0x21,0x0a,0x00,0x80,
|
||||
0x01,0x50,0x00,0x00,0x1e,0x0a,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x0a,0x00,
|
||||
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00};
|
65
etc/emacsclient.1
Normal file
65
etc/emacsclient.1
Normal file
|
@ -0,0 +1,65 @@
|
|||
.TH EMACSCLIENT 1
|
||||
.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
|
||||
.\" other parms are allowed: see man(7), man(1)
|
||||
.SH NAME
|
||||
emacsclient \- tells a running Emacs to visit a file
|
||||
.SH SYNOPSIS
|
||||
.B emacsclient
|
||||
.I "[options] files ..."
|
||||
.SH "DESCRIPTION"
|
||||
This manual page documents briefly the
|
||||
.BR emacsclient
|
||||
command.
|
||||
This manual page was written for the Debian GNU/Linux distribution
|
||||
because the original program does not have a manual page.
|
||||
Instead, it has documentation in the GNU Info format; see below.
|
||||
.PP
|
||||
.B emacsclient
|
||||
works in conjunction with the built-in server of Emacs.
|
||||
.PP
|
||||
You typically does not call
|
||||
.B emacsclient
|
||||
directly. Instead, you set the environment variable EDITOR
|
||||
to
|
||||
.B emacsclient
|
||||
and let programs like 'vipw' or 'bug' or anything run
|
||||
it for you, which will use an existing Emacs to visit the file.
|
||||
|
||||
For
|
||||
.B emacsclient
|
||||
to work, you need an already running Emacs with a server. Within Emacs, call
|
||||
the function
|
||||
`server-start'. (Your `.emacs' file can do this automatically if you
|
||||
add the expression `(server-start)' to it.)
|
||||
|
||||
When you've finished editing the buffer, type `C-x #'
|
||||
(`server-edit'). This saves the file and sends a message back to the
|
||||
`emacsclient' program telling it to exit. The programs that use
|
||||
`EDITOR' wait for the "editor" (actually, `emacsclient') to exit. `C-x
|
||||
#' also checks for other pending external requests to edit various
|
||||
files, and selects the next such file.
|
||||
|
||||
If you set the variable `server-window' to a window or a frame, `C-x
|
||||
#' displays the server buffer in that window or in that frame.
|
||||
|
||||
.SH OPTIONS
|
||||
The programs follow the usual GNU command line syntax, with long
|
||||
options starting with two dashes (`-').
|
||||
.TP
|
||||
.B \-n, \-\-no-wait
|
||||
returns
|
||||
immediately without waiting for you to "finish" the buffer in Emacs.
|
||||
.SH "SEE ALSO"
|
||||
The program is documented fully in
|
||||
.IR "Using Emacs as a Server"
|
||||
available via the Info system.
|
||||
.SH BUGS
|
||||
If there is no running Emacs server,
|
||||
.B emacsclient
|
||||
cannot launch one. I use a small Perl script instead of raw
|
||||
.B emacsclient
|
||||
to do it (it works only with systems which have BSD sockets, which is fine
|
||||
for Debian GNU/Linux).
|
||||
.SH AUTHOR
|
||||
This manual page was written by Stephane Bortzmeyer <bortzmeyer@debian.org>,
|
||||
for the Debian GNU/Linux system (but may be used by others).
|
225
etc/etags.1
Normal file
225
etc/etags.1
Normal file
|
@ -0,0 +1,225 @@
|
|||
.\" Copyright (c) 1992 Free Software Foundation
|
||||
.\" See section COPYING for conditions for redistribution
|
||||
.TH etags 1 "19apr1994" "GNU Tools" "GNU Tools"
|
||||
.de BP
|
||||
.sp
|
||||
.ti -.2i
|
||||
\(**
|
||||
..
|
||||
|
||||
.SH NAME
|
||||
etags, ctags \- generate tag file for Emacs, vi
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.na
|
||||
.B etags [\|\-aCDRSVh\|] [\|\-i \fIfile\fP\|] [\|\-l \fIlanguage\fP\|] [\|\-i \fIregexp\fP\|] [\|\-o \fItagfile\fP\|]
|
||||
.br
|
||||
[\|\-\-c++\|] [\|\-\-no\-defines\|] [\|\-\-ignore\-indentation\|]
|
||||
[\|\-\-language=\fIlanguage\fP\|] [\|\-\-regex=\fIregexp\fP\|]
|
||||
[\|\-\-no\-regexp\|] [\|\-\-help\|] [\|\-\-version\|]
|
||||
[\|\-\-include=\fIfile\fP\|] [\|\-\-output=\fItagfile\fP\|]
|
||||
[\|\-\-append\|] \fIfile\fP .\|.\|.
|
||||
|
||||
.B ctags [\|\-aCdRSVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
|
||||
.br
|
||||
[\|\-i \fIregexp\fP\|] [\|\-o \fItagfile\fP\|]
|
||||
[\|\-\-c++\|] [\|\-\-defines\|] [\|\-\-ignore\-indentation\|]
|
||||
[\|\-\-no\-warn\|] [\|\-\-cxref\|] [\|\-\-backward\-search\|]
|
||||
[\|\-\-forward\-search\|] [\|\-\-typedefs\|] [\|\-\-typedefs\-and\-c++\|]
|
||||
[\|\-\-language=\fIlanguage\fP\|] [\|\-\-regex=\fIregexp\fP\|]
|
||||
[\|\-\-help\|] [\|\-\-version\|]
|
||||
.br
|
||||
[\|\-\-output=\fItagfile\fP\|] [\|\-\-append\|] [\|\-\-update\|] \fIfile\fP .\|.\|.
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH DESCRIPTION
|
||||
The `\|\fBetags\fP\|' program is used to create a tag table file, in a format
|
||||
understood by
|
||||
.BR emacs ( 1 )\c
|
||||
\&; the `\|\fBctags\fP\|' program is used to create a similar table in a
|
||||
format understood by
|
||||
.BR vi ( 1 )\c
|
||||
\&. Both forms of the program understand
|
||||
the syntax of C, C++, Fortran, Pascal, LaTeX, Scheme,
|
||||
Emacs Lisp/Common Lisp, Erlang, Prolog and most assembler\-like syntaxes.
|
||||
Both forms read the files specified on the command line, and write a tag
|
||||
table (defaults: `\|TAGS\|' for \fBetags\fP, `\|tags\|' for
|
||||
\fBctags\fP) in the current working directory.
|
||||
Files specified with relative file names will be recorded in the tag
|
||||
table with file names relative to the directory where the tag table
|
||||
resides. Files specified with absolute file names will be recorded
|
||||
with absolute file names.
|
||||
The programs recognize the language used in an input file based on its
|
||||
file name and contents. The --language switch can be used to force
|
||||
parsing of the file names following the switch according to the given
|
||||
language, overriding guesses based on filename extensions.
|
||||
.SH OPTIONS
|
||||
Some options make sense only for the \fBvi\fP style tag files produced
|
||||
by ctags;
|
||||
\fBetags\fP does not recognize them.
|
||||
The programs accept unambiguous abbreviations for long option names.
|
||||
.TP
|
||||
.B \-a, \-\-append
|
||||
Append to existing tag file. (For vi-format tag files, see also
|
||||
\fB\-\-update\fP.)
|
||||
.TP
|
||||
.B \-B, \-\-backward\-search
|
||||
Tag files written in the format expected by \fBvi\fP contain regular
|
||||
expression search instructions; the \fB\-B\fP option writes them using
|
||||
the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files.
|
||||
The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
|
||||
through files.
|
||||
Only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-C, \-\-c++
|
||||
Treat files with `\|.c\|' and `\|.h\|' extensions as C++ code, not C
|
||||
code. Files with `\|.C\|', `\|.H\|', `\|.cxx\|', `\|.hxx\|', or
|
||||
`\|.cc\|' extensions are always assumed to be C++ code.
|
||||
.TP
|
||||
.B \-d, \-\-defines
|
||||
Create tag entries for C preprocessor definitions, too. This is the
|
||||
default behavior for \fBetags\fP, so this option is only accepted
|
||||
by \fBctags\fP.
|
||||
.TP
|
||||
.B \-D, \-\-no\-defines
|
||||
Do not create tag entries for C preprocessor definitions.
|
||||
This may make the tags file much smaller if many header files are tagged.
|
||||
This is the default behavior for \fBctags\fP, so this option is only
|
||||
accepted by \fBetags\fP.
|
||||
.TP
|
||||
\fB\-l\fP \fIlanguage\fP, \fB\-\-language=\fIlanguage\fP
|
||||
Parse the following files according to the given language. More than
|
||||
one such options may be intermixed with filenames. Use \fB\-\-help\fP
|
||||
to get a list of the available languages and their default filename
|
||||
extensions. The `auto' language can be used to restore automatic
|
||||
detection of language based on filename extension. The `none'
|
||||
language may be used to disable language parsing altogether; only
|
||||
regexp matching is done in this case (see the \fB\-\-regex\fP option).
|
||||
.TP
|
||||
\fB\-o\fP \fItagfile\fP, \fB\-\-output=\fItagfile\fP
|
||||
Explicit name of file for tag table; overrides default `\|TAGS\|' or
|
||||
`\|tags\|'. (But ignored with \fB\-v\fP or \fB\-x\fP.)
|
||||
.TP
|
||||
\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP
|
||||
Make tags based on regexp matching for each line of the files
|
||||
following this option, in addition to the tags made with the standard
|
||||
parsing based on language. May be freely intermixed with filenames
|
||||
and the \fB\-R\fP option. The regexps are cumulative, i.e. each
|
||||
option will add to the previous ones. The regexps are of the form:
|
||||
.br
|
||||
|
||||
\fB/\fP\fItagregexp\fP[\fB/\fP\fInameregexp\fP]\fB/\fP
|
||||
.br
|
||||
|
||||
where \fItagregexp\fP is used to match the lines that must be tagged.
|
||||
It should not match useless characters. If the match is
|
||||
such that more characters than needed are unavoidably matched by
|
||||
\fItagregexp\fP, it may be useful to add a \fInameregexp\fP, to
|
||||
narrow down the tag scope. \fBctags\fP ignores regexps without a
|
||||
\fInameregexp\fP.
|
||||
.br
|
||||
Here are some examples. All the regexps are quoted to protect them
|
||||
from shell interpretation.
|
||||
.br
|
||||
|
||||
Tag the DEFVAR macros in the emacs source files:
|
||||
.br
|
||||
\fI\-\-regex\='/[ \\t]*DEFVAR_[A-Z_ \\t(]+"\\([^"]+\\)"\/'\fP
|
||||
.br
|
||||
|
||||
Tag VHDL files (this example is a single long line, broken here for
|
||||
formatting reasons):
|
||||
.br
|
||||
\fI\-\-language\=none\ \-\-regex='/[\ \\t]*\\(ARCHITECTURE\\|\\
|
||||
CONFIGURATION\\)\ +[^\ ]*\ +OF/'\ \-\-regex\='/[\ \\t]*\\
|
||||
\\(ATTRIBUTE\\|ENTITY\\|FUNCTION\\|PACKAGE\\(\ BODY\\)?\\
|
||||
\\|PROCEDURE\\|PROCESS\\|TYPE\\)[\ \\t]+\\([^\ \\t(]+\\)/\\3/'\fP
|
||||
.br
|
||||
|
||||
Tag Cobol files:
|
||||
.br
|
||||
\fI\-\-language\=none \-\-regex\='/.......[a\-zA\-Z0\-9\-]+\\./'\fP
|
||||
.br
|
||||
|
||||
Tag Postscript files:
|
||||
.br
|
||||
\fI\-\-language\=none \-\-regex\='#/[^\ \\t{]+#/'\fP
|
||||
.br
|
||||
|
||||
Tag TCL files (this last example shows the usage of a \fItagregexp\fP):
|
||||
.br
|
||||
\fI\-\-lang\=none \-\-regex\='/proc[\ \\t]+\\([^\ \\t]+\\)/\\1/'\fP
|
||||
|
||||
.TP
|
||||
.B \-R, \-\-no\-regex
|
||||
Don't do any more regexp matching on the following files. May be
|
||||
freely intermixed with filenames and the \fB\-\-regex\fP option.
|
||||
.TP
|
||||
.B \-S, \-\-ignore\-indentation
|
||||
Don't rely on indentation as much as we normally do. Currently, this
|
||||
means not to assume that a closing brace in the first column is the
|
||||
final brace of a function or structure definition in C and C++.
|
||||
.TP
|
||||
.B \-t, \-\-typedefs
|
||||
Record typedefs in C code as tags. Since this is the default behaviour
|
||||
of \fBetags\fP, only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-T, \-\-typedefs\-and\-c++
|
||||
Generate tag entries for typedefs, struct, enum, and union tags, and
|
||||
C++ member functions. Since this is the default behaviour
|
||||
of \fBetags\fP, only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-u, \-\-update
|
||||
Update tag entries for \fIfiles\fP specified on command line, leaving
|
||||
tag entries for other files in place. Currently, this is implemented
|
||||
by deleting the existing entries for the given files and then
|
||||
rewriting the new entries at the end of the tags file. It is often
|
||||
faster to simply rebuild the entire tag file than to use this.
|
||||
Only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-v, \-\-vgrind
|
||||
Instead of generating a tag file, write index (in \fBvgrind\fP format)
|
||||
to standard output. Only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-w, \-\-no\-warn
|
||||
Suppress warning messages about duplicate entries. The \fBetags\fP
|
||||
program does not check for duplicate entries, so this option is not
|
||||
allowed with it.
|
||||
.TP
|
||||
.B \-x, \-\-cxref
|
||||
Instead of generating a tag file, write a cross reference (in
|
||||
\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option.
|
||||
.TP
|
||||
.B \-H, \-\-help
|
||||
Print usage information.
|
||||
.TP
|
||||
.B \-V, \-\-version
|
||||
Print the current version of the program (same as the version of the
|
||||
emacs \fBetags\fP is shipped with).
|
||||
|
||||
.SH "SEE ALSO"
|
||||
`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
|
||||
Stallman.
|
||||
.br
|
||||
.BR cxref ( 1 ),
|
||||
.BR emacs ( 1 ),
|
||||
.BR vgrind ( 1 ),
|
||||
.BR vi ( 1 ).
|
||||
|
||||
.SH COPYING
|
||||
Copyright (c) 1992 Free Software Foundation, Inc.
|
||||
.PP
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
.PP
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
.PP
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be included in
|
||||
translations approved by the Free Software Foundation instead of in
|
||||
the original English.
|
67
etc/gnu.xpm
Normal file
67
etc/gnu.xpm
Normal file
|
@ -0,0 +1,67 @@
|
|||
/* XPM */
|
||||
/*****************************************************************************/
|
||||
/* GNU Emacs bitmap conv. to pixmap by Przemek Klosowski (przemek@nist.gov) */
|
||||
/*****************************************************************************/
|
||||
static char * image_name [] = {
|
||||
/**/
|
||||
"50 50 7 1",
|
||||
/**/
|
||||
" s mask c none",
|
||||
"B c blue",
|
||||
"x c black",
|
||||
": c sandy brown",
|
||||
"+ c saddle brown",
|
||||
"' c grey",
|
||||
". c white",
|
||||
" ",
|
||||
" ",
|
||||
" x ",
|
||||
" :x ",
|
||||
" :::x ",
|
||||
" ::x ",
|
||||
" x ::x ",
|
||||
" x: xxx :::x ",
|
||||
" x: xxx xxx:xxx x::x ",
|
||||
" x:: xxxx::xxx:::::xx x::x ",
|
||||
" x:: x:::::::xx::::::xx x::x ",
|
||||
" x:: xx::::::::x:::::::xx xx::x ",
|
||||
" x:: xx::::::::::::::::::x xx::xx ",
|
||||
" x::x xx:::::xxx:::::::xxx:xxx xx:::xx ",
|
||||
" x:::x xx:::::xx...xxxxxxxxxxxxxxx:::xx ",
|
||||
" x:::x xx::::::xx..xxx...xxxx...xxxxxxxx ",
|
||||
" x:::x x::::::xx.xxx.......x.x.......xxxx ",
|
||||
" x:::xx x:::x::xx.xx..........x.xx.........x ",
|
||||
" x::::xx::xx:::x.xx....''''x'x'x''.xxx.....x ",
|
||||
" xx::::xxxx::xx.xx.xxxx.'''''''.xxx xxxx ",
|
||||
" xx::::::::xx..x.xxx..'''''''''.xx ",
|
||||
" xxx:::::xxx..xx.xx.xx.xxx.'''''.xx ",
|
||||
" xxx::xx...xx.xx.BBBB..xx''''''xx ",
|
||||
" xxxx.....xx.xxBB:BB.xx'''''''xx ",
|
||||
" xx.....xx...x.BBBx.xxx''''''xx ",
|
||||
" x....xxxx..xx...xxx''''''''''xx ",
|
||||
" x..xxxxxx..x.......x..''''''''xx ",
|
||||
" x.x xxx.x.x.x...xxxx.'''''''''xx ",
|
||||
" x xxx.x.x.xx...xx..'''''''''xx ",
|
||||
" xx.x..x.x.xx........''''''''x ",
|
||||
" xx'.xx.x.x.x.x.......'''''''''x ",
|
||||
" xx'..xxxx..x...x.......'''''''x ",
|
||||
" xx''.xx.x..xx...x.......'''.xxx ",
|
||||
" xx''..x.x.x.x.x.xx.xxxxx.'.xx+xx ",
|
||||
" xx''..x.xx..xx.x.x.x+++xxxxx+++x ",
|
||||
" xx'''.x..xxx.x.x.x.x+++++xxx+xxx ",
|
||||
" xx''.xx..x..xx.xxxx++x+++x++xxx ",
|
||||
" xx''..xx.xxx.xxx.xxx++xx+x++xx ",
|
||||
" xx'''.xx.xx..xx.xxxx++x+++xxx ",
|
||||
" xx'''.xxx.xx.xxxxxxxxx++++xxx ",
|
||||
" xx''...xx.xx.xxxxxx++xxxxxxx ",
|
||||
" xx''''..x..xxx..xxxx+++++xx ",
|
||||
" xx''''..x..xx..xxxx++++xx ",
|
||||
" xxx'''''x.xx.xxxxxxxxxxx ",
|
||||
" xxx'''''..xxx xxxxx ",
|
||||
" xxxx''''xxxx ",
|
||||
" xxx'''xxx ",
|
||||
" xxxxx ",
|
||||
" ",
|
||||
" "
|
||||
};
|
||||
|
312
etc/ms-7bkermit
Normal file
312
etc/ms-7bkermit
Normal file
|
@ -0,0 +1,312 @@
|
|||
;;; This file is designed for 7-bit connections.
|
||||
;;; Use the file ms-kermit if you have an 8-bit connection.
|
||||
|
||||
;;; This kermit script maps the IBM-PC keyboard for use with Gnu Emacs.
|
||||
;;; The ALT key is used to generate Meta characters and, in conjunction
|
||||
;;; with the CTRL key, Control-Meta characters. A few other useful
|
||||
;;; mappings are also performed.
|
||||
;;; Andy Lowry, May 1989
|
||||
|
||||
;;; Exchange ESC and backquote... tilde stays put (shift-backquote)
|
||||
set key \27 `
|
||||
set key ` \27
|
||||
|
||||
;;; BACKSPACE deletes backward one character
|
||||
set key scan \270 \127
|
||||
|
||||
;;; The following mappings affect certain special keys... all the keys
|
||||
;;; are duplicated on the numeric keypad when NUM LOCK is off, but
|
||||
;;; the keypad versions are NOT mapped (string definition space too small
|
||||
;;; for that)
|
||||
|
||||
;;; INSERT toggles overwrite mode
|
||||
set key scan \4434 \27xoverwrite-mode\13
|
||||
;;; HOME moves point to beginning of buffer
|
||||
set key scan \4423 \27<
|
||||
;;; PAGE-UP scrolls backward one screen
|
||||
set key scan \4425 \27v
|
||||
;;; DELETE deletes one character *forward*
|
||||
set key scan \4435 \4
|
||||
;;; END moves point to end of buffer
|
||||
set key scan \4431 \27>
|
||||
;;; PAGE-DOWN scrolls forward one screen
|
||||
set key scan \4433 \22
|
||||
;;; ARROW keys move in the appropriate directions
|
||||
set key scan \4424 \16
|
||||
set key scan \4427 \2
|
||||
set key scan \4432 \14
|
||||
set key scan \4429 \6
|
||||
|
||||
;;; META versions of all the printing characters except uppercase
|
||||
;;; letters are generated by using the ALT key. The definition string
|
||||
;;; consists of an ESC character followed by the META-ized character.
|
||||
;;; The characters are listed roughly left-to-right and top-to-bottom
|
||||
;;; as they appear on the keyboard
|
||||
set key scan \2345 \27`
|
||||
set key scan \2424 \27\o61 ; need to use char code, since digit
|
||||
set key scan \2425 \27\o62 ; would not terminate '\27'
|
||||
set key scan \2426 \27\o63
|
||||
set key scan \2427 \27\o64
|
||||
set key scan \2428 \27\o65
|
||||
set key scan \2429 \27\o66
|
||||
set key scan \2430 \27\o67
|
||||
set key scan \2431 \27\o70
|
||||
set key scan \2432 \27\o71
|
||||
set key scan \2433 \27\o60
|
||||
set key scan \2434 \27\45
|
||||
set key scan \2435 \27=
|
||||
set key scan \2857 \27~
|
||||
set key scan \2936 \27!
|
||||
set key scan \2937 \27@
|
||||
set key scan \2938 \27#
|
||||
set key scan \2939 \27$
|
||||
set key scan \2940 \27%
|
||||
set key scan \2941 \27^
|
||||
set key scan \2942 \27&
|
||||
set key scan \2943 \27*
|
||||
set key scan \2944 \27(
|
||||
set key scan \2945 \27)
|
||||
set key scan \2946 \27_
|
||||
set key scan \2947 \27+
|
||||
set key scan \2469 \27\9
|
||||
set key scan \2320 \27q
|
||||
set key scan \2321 \27w
|
||||
set key scan \2322 \27e
|
||||
set key scan \2323 \27r
|
||||
set key scan \2324 \27t
|
||||
set key scan \2325 \27y
|
||||
set key scan \2326 \27u
|
||||
set key scan \2327 \27i
|
||||
set key scan \2328 \27o
|
||||
set key scan \2329 \27p
|
||||
set key scan \2330 \27[
|
||||
set key scan \2842 \27{
|
||||
set key scan \2331 \27]
|
||||
set key scan \2843 \27}
|
||||
set key scan \2347 \27\
|
||||
set key scan \2859 \27|
|
||||
set key scan \2334 \27a
|
||||
set key scan \2335 \27s
|
||||
set key scan \2336 \27d
|
||||
set key scan \2337 \27f
|
||||
set key scan \2338 \27g
|
||||
set key scan \2339 \27h
|
||||
set key scan \2340 \27j
|
||||
set key scan \2341 \27k
|
||||
set key scan \2342 \27l
|
||||
set key scan \2343 \27\59
|
||||
set key scan \2855 \27:
|
||||
set key scan \2344 \27'
|
||||
set key scan \2856 \27"
|
||||
set key scan \2348 \27z
|
||||
set key scan \2349 \27x
|
||||
set key scan \2350 \27c
|
||||
set key scan \2351 \27v
|
||||
set key scan \2352 \27b
|
||||
set key scan \2353 \27n
|
||||
set key scan \2354 \27m
|
||||
set key scan \2355 \27,
|
||||
set key scan \2867 \27<
|
||||
set key scan \2356 \27.
|
||||
set key scan \2868 \27>
|
||||
set key scan \2357 \27/
|
||||
set key scan \2869 \27?
|
||||
|
||||
;;; CONTROL-META characters are generated by using both the CTRL and
|
||||
;;; ALT keys simultaneously. All the lowercase letters are included.
|
||||
;;; The definition string consists of an ESC character followed by
|
||||
;;; the control character corresponding to the letter.
|
||||
set key scan \3344 \27\17
|
||||
set key scan \3345 \27\23
|
||||
set key scan \3346 \27\5
|
||||
set key scan \3347 \27\18
|
||||
set key scan \3348 \27\20
|
||||
set key scan \3349 \27\25
|
||||
set key scan \3350 \27\21
|
||||
set key scan \3351 \27\9
|
||||
set key scan \3352 \27\15
|
||||
set key scan \3353 \27\16
|
||||
set key scan \3358 \27\1
|
||||
set key scan \3359 \27\19
|
||||
set key scan \3360 \27\4
|
||||
set key scan \3361 \27\6
|
||||
set key scan \3362 \27\7
|
||||
set key scan \3363 \27\8
|
||||
set key scan \3364 \27\10
|
||||
set key scan \3365 \27\11
|
||||
set key scan \3366 \27\12
|
||||
set key scan \3372 \27\26
|
||||
set key scan \3373 \27\24
|
||||
set key scan \3374 \27\3
|
||||
set key scan \3375 \27\22
|
||||
set key scan \3376 \27\2
|
||||
set key scan \3377 \27\14
|
||||
set key scan \3378 \27\13
|
||||
|
||||
end of msiem2.ini
|
||||
------------------
|
||||
|
||||
msiema.hlp
|
||||
-----------
|
||||
Date: Wed, 14 Sep 88 05:20:08 GMT
|
||||
From: spolsky@YALE.ARPA
|
||||
Subject: Using MS kermit 2.31 with emacs
|
||||
Keywords: MS-DOS Kermit 2.31, EMACS, Meta Key
|
||||
|
||||
If you are using kermit (version 2.31 only) with emacs on a mainframe, the
|
||||
following file may help you. It assigns all the Alt-keys so that the Alt key
|
||||
may be used as a "Meta" shift, e.g. Alt-x produces M-x, etc. Note that it
|
||||
will distinguish correctly between upper and lower case and accepts all
|
||||
printables. (If anybody has the patience to do the Meta-Ctrl combinations,
|
||||
please post them!) This actually sends "escapes" so you don't need 8 bits.
|
||||
This file also sets up the cursor keys to behave as expected.
|
||||
|
||||
On extended keyboards (the ones with a separate cursor pad, like PS/2s) you
|
||||
also get assignments for Page Up/Down, Home, End, Insert, Delete, etc.
|
||||
|
||||
Please let me know if you find any problems with this.
|
||||
|
||||
Joel Spolsky bitnet: spolsky@yalecs uucp: ...!yale!spolsky
|
||||
Yale University arpa: spolsky@yale.edu voicenet: 203-436-1483
|
||||
|
||||
[Ed. - Thanks, Joel! Your key definitions file has been put in the kermit
|
||||
distribution area as msiema.ini ("ms" for MS-Kermit, "i" because it's an
|
||||
initialization file, "ema" for EMACS), along with this message as msiema.hlp.]
|
||||
|
||||
end of msiema.hlp
|
||||
-----------------
|
||||
|
||||
|
||||
msiema.ini
|
||||
------------
|
||||
; Emacs keyboard layout for Kermit 2.31
|
||||
; by Joel Spolsky, Yale Univ. Save this in a file, then
|
||||
; initialize it by issuing the kermit command
|
||||
; take filename
|
||||
; It will set up the keyboard to allow ALT to be used
|
||||
; as a meta-key, and will allow cursor keys to be used
|
||||
; with emacs.
|
||||
|
||||
; First, define all the ALT keys to send ESC+key
|
||||
; to simulate "meta"
|
||||
|
||||
set key \2320 \27q ;; letters: unshifted
|
||||
set key \2321 \27w
|
||||
set key \2322 \27e
|
||||
set key \2323 \27r
|
||||
set key \2324 \27t
|
||||
set key \2325 \27y
|
||||
set key \2326 \27u
|
||||
set key \2327 \27i
|
||||
set key \2328 \27o
|
||||
set key \2329 \27p
|
||||
set key \2334 \27a
|
||||
set key \2335 \27s
|
||||
set key \2336 \27d
|
||||
set key \2337 \27f
|
||||
set key \2338 \27g
|
||||
set key \2339 \27h
|
||||
set key \2340 \27j
|
||||
set key \2341 \27k
|
||||
set key \2342 \27l
|
||||
set key \2348 \27z
|
||||
set key \2349 \27x
|
||||
set key \2350 \27c
|
||||
set key \2351 \27v
|
||||
set key \2352 \27b
|
||||
set key \2353 \27n
|
||||
set key \2354 \27m
|
||||
set key \2832 \27Q ;; letters: shifted
|
||||
set key \2833 \27W
|
||||
set key \2834 \27E
|
||||
set key \2835 \27R
|
||||
set key \2836 \27T
|
||||
set key \2837 \27Y
|
||||
set key \2838 \27U
|
||||
set key \2839 \27I
|
||||
set key \2840 \27O
|
||||
set key \2841 \27P
|
||||
set key \2846 \27A
|
||||
set key \2847 \27S
|
||||
set key \2848 \27D
|
||||
set key \2849 \27F
|
||||
set key \2850 \27G
|
||||
set key \2851 \27H
|
||||
set key \2852 \27J
|
||||
set key \2853 \27K
|
||||
set key \2854 \27L
|
||||
set key \2860 \27Z
|
||||
set key \2861 \27X
|
||||
set key \2862 \27C
|
||||
set key \2863 \27V
|
||||
set key \2864 \27B
|
||||
set key \2865 \27N
|
||||
set key \2866 \27M
|
||||
set key \2857 \27\126 ; ALT + ~ ;; special symbols begin here
|
||||
set key \2345 \27\96 ; ALT + `
|
||||
set key \2936 \27\33 ; ALT + !
|
||||
set key \2937 \27\64 ; ALT + @
|
||||
set key \2938 \27\35 ; ALT + #
|
||||
set key \2939 \27\36 ; ALT + $
|
||||
set key \2940 \27\37 ; ALT + %
|
||||
set key \2941 \27\94 ; ALT + ^
|
||||
set key \2942 \27\38 ; ALT + &
|
||||
set key \2943 \27\42 ; ALT + *
|
||||
set key \2944 \27\40 ; ALT + (
|
||||
set key \2945 \27\41 ; ALT + )
|
||||
set key \2946 \27\95 ; ALT + _
|
||||
set key \2947 \27\43 ; ALT + +
|
||||
set key \2842 \27\123 ; ALT + {
|
||||
set key \2843 \27\125 ; ALT + }
|
||||
set key \2330 \27\91 ; ALT + [
|
||||
set key \2331 \27\93 ; ALT + ]
|
||||
set key \2859 \27\124 ; ALT + :
|
||||
set key \2347 \27\92 ; ALT + \
|
||||
set key \2867 \27< ; ALT + <
|
||||
set key \2868 \27> ; ALT + >
|
||||
set key \2343 \27\59 ; ALT + ;
|
||||
set key \2855 \27\58 ; ALT + :
|
||||
set key \2344 \27\39 ; ALT + '
|
||||
set key \2856 \27\34 ; ALT + "
|
||||
set key \2355 \27\44 ; ALT + ,
|
||||
set key \2356 \27\46 ; ALT + .
|
||||
set key \2357 \27\47 ; ALT + /
|
||||
set key \2869 \27\63 ; ALT + ?
|
||||
set key \2424 \27\49 ;; numbers
|
||||
set key \2425 \27\50
|
||||
set key \2426 \27\51
|
||||
set key \2427 \27\52
|
||||
set key \2428 \27\53
|
||||
set key \2429 \27\54
|
||||
set key \2430 \27\55
|
||||
set key \2431 \27\56
|
||||
set key \2432 \27\57
|
||||
set key \2433 \27\48
|
||||
|
||||
;; These 6 special keys for extended (PS/2) keyboards:
|
||||
set key \4434 \25 ;; Insert is like ^Y - yank from kill ring
|
||||
set key \4435 \23 ;; Delete is like ^W - kill to ring
|
||||
set key \4423 \1 ;; Home is ^A
|
||||
set key \4431 \5 ;; End is ^E
|
||||
set key \4425 \27V ;; Page up is Esc-V
|
||||
set key \4433 \22 ;; Page dn is ^v
|
||||
|
||||
set key \328 \16 ;; up cursor is ^P
|
||||
set key \331 \2 ;; left cursor is ^B
|
||||
set key \333 \6 ;; right cursor is ^F
|
||||
set key \336 \14 ;; down cursor is ^N
|
||||
set key \4427 \2 ;; left cursor on extended kbd
|
||||
set key \4432 \14 ;; down cursor on extended kbd
|
||||
set key \4424 \16 ;; up cursor on extended kbd
|
||||
set key \4429 \6 ;; right cursor on extended kbd
|
||||
|
||||
set key \5491 \27b ;; ctrl-left cursor is M-b
|
||||
set key \5492 \27f ;; ctrl-right cursor is M-f
|
||||
|
||||
;; move kermit's screen scroll (playback) features to Alt- Home,End,PgUp,PgDn
|
||||
;; (this is an issue for extended keyboards only)
|
||||
|
||||
set key \2455 \khomscn
|
||||
set key \2463 \kendscn
|
||||
set key \2457 \kupscn
|
||||
set key \2465 \kdnscn
|
167
etc/ms-kermit
Normal file
167
etc/ms-kermit
Normal file
|
@ -0,0 +1,167 @@
|
|||
;;; This file is designed for an 8-bit connection.
|
||||
;;; Use the file ms-7bkermit if you have a 7-bit connection.
|
||||
|
||||
;; Meta key mappings for EMACS
|
||||
;; By Robert Earl (rearl@watnxt3.ucr.edu)
|
||||
;; May 13, 1990
|
||||
;;
|
||||
;; WARNING:
|
||||
;; requires an 8-bit path to host. many dialups and lans won't pass the
|
||||
;; eighth bit by default and may require a special command to turn this
|
||||
;; off. `screen' is known to mask the eighth bit of input as well.
|
||||
|
||||
set term controls 8-bit
|
||||
set translation key off
|
||||
|
||||
;; control keys
|
||||
set key \3449 \128 ;; m-c-@
|
||||
set key \3358 \129 ;; m-c-a
|
||||
set key \3376 \130 ;; m-c-b
|
||||
set key \3374 \131 ;; m-c-c
|
||||
set key \3360 \132 ;; m-c-d
|
||||
set key \3346 \133 ;; m-c-e
|
||||
set key \3361 \134 ;; m-c-f
|
||||
set key \3362 \135 ;; m-c-g
|
||||
set key \3342 \136 ;; m-bs
|
||||
set key \3363 \136 ;; m-c-h (sends same code as above)
|
||||
set key \2469 \137 ;; m-tab
|
||||
set key \3351 \137 ;; m-c-i (same as above)
|
||||
set key \3364 \138 ;; m-c-j
|
||||
set key \3365 \139 ;; m-c-k
|
||||
set key \3366 \140 ;; m-c-l
|
||||
;set key \3378 \141 ;; m-c-m
|
||||
set key \2332 \141 ;; m-ret (sends same code as above)
|
||||
set key \3377 \142 ;; m-c-n
|
||||
set key \3352 \143 ;; m-c-o
|
||||
set key \3353 \144 ;; m-c-p
|
||||
set key \3344 \145 ;; m-c-q
|
||||
set key \3347 \146 ;; m-c-r
|
||||
set key \3359 \147 ;; m-c-s
|
||||
set key \3348 \148 ;; m-c-t
|
||||
set key \3350 \149 ;; m-c-u
|
||||
set key \3375 \150 ;; m-c-v
|
||||
set key \3345 \151 ;; m-c-w
|
||||
set key \3373 \152 ;; m-c-x
|
||||
set key \3349 \153 ;; m-c-y
|
||||
set key \3372 \154 ;; m-c-z
|
||||
|
||||
;; misc keys
|
||||
;set key \3354 \155 ;; m-c-[
|
||||
set key \2305 \155 ;; m-esc (sends same as above)
|
||||
set key \3371 \156 ;; m-c-\
|
||||
set key \3355 \157 ;; m-c-]
|
||||
set key \3453 \158 ;; m-c-^
|
||||
set key \3458 \159 ;; m-c-_
|
||||
|
||||
;; \160 is conspicuously missing here--
|
||||
;; alt-spc doesn't generate a distinct scan code...
|
||||
;; neither do shift-spc and ctrl-spc.
|
||||
;; no idea why.
|
||||
|
||||
set key \2936 \161 ;; m-!
|
||||
set key \2856 \162 ;; m-"
|
||||
set key \2938 \163 ;; m-#
|
||||
set key \2939 \164 ;; m-$
|
||||
set key \2940 \165 ;; m-%
|
||||
set key \2942 \166 ;; m-&
|
||||
set key \2344 \167 ;; m-'
|
||||
set key \2944 \168 ;; m-(
|
||||
set key \2945 \169 ;; m-)
|
||||
set key \2943 \170 ;; m-*
|
||||
set key \2947 \171 ;; m-+
|
||||
set key \2355 \172 ;; m-,
|
||||
set key \2434 \173 ;; m--
|
||||
set key \2356 \174 ;; m-.
|
||||
set key \2357 \175 ;; m-/
|
||||
|
||||
;; number keys
|
||||
set key \2433 \176 ;; m-0
|
||||
set key \2424 \177 ;; m-1
|
||||
set key \2425 \178
|
||||
set key \2426 \179
|
||||
set key \2427 \180
|
||||
set key \2428 \181
|
||||
set key \2429 \182
|
||||
set key \2430 \183
|
||||
set key \2431 \184
|
||||
set key \2432 \185 ;; m-9
|
||||
|
||||
set key \2855 \186 ;; m-:
|
||||
set key \2343 \187 ;; m-;
|
||||
set key \2867 \188 ;; m-<
|
||||
set key \2435 \189 ;; m-=
|
||||
set key \2868 \190 ;; m->
|
||||
set key \2869 \191 ;; m-?
|
||||
set key \2937 \192 ;; m-@
|
||||
|
||||
;; shifted A-Z
|
||||
set key \2846 \193 ;; m-A
|
||||
set key \2864 \194
|
||||
set key \2862 \195
|
||||
set key \2848 \196
|
||||
set key \2834 \197
|
||||
set key \2849 \198
|
||||
set key \2850 \199
|
||||
set key \2851 \200
|
||||
set key \2839 \201
|
||||
set key \2852 \202
|
||||
set key \2853 \203
|
||||
set key \2854 \204
|
||||
set key \2866 \205
|
||||
set key \2865 \206
|
||||
set key \2840 \207
|
||||
set key \2841 \208
|
||||
set key \2832 \209
|
||||
set key \2835 \210
|
||||
set key \2847 \211
|
||||
set key \2836 \212
|
||||
set key \2838 \213
|
||||
set key \2863 \214
|
||||
set key \2833 \215
|
||||
set key \2861 \216
|
||||
set key \2837 \217
|
||||
set key \2860 \218 ;; m-Z
|
||||
|
||||
set key \2330 \219 ;; m-[
|
||||
set key \2347 \220 ;; m-\
|
||||
set key \2331 \221 ;; m-]
|
||||
set key \2941 \222 ;; m-^
|
||||
set key \2946 \223 ;; m-_
|
||||
set key \2345 \224 ;; m-`
|
||||
|
||||
;; lowercase a-z
|
||||
set key \2334 \225 ;; m-a
|
||||
set key \2352 \226
|
||||
set key \2350 \227
|
||||
set key \2336 \228
|
||||
set key \2322 \229
|
||||
set key \2337 \230
|
||||
set key \2338 \231
|
||||
set key \2339 \232
|
||||
set key \2327 \233
|
||||
set key \2340 \234
|
||||
set key \2341 \235
|
||||
set key \2342 \236
|
||||
set key \2354 \237
|
||||
set key \2353 \238
|
||||
set key \2328 \239
|
||||
set key \2329 \240
|
||||
set key \2320 \241
|
||||
set key \2323 \242
|
||||
set key \2335 \243
|
||||
set key \2324 \244
|
||||
set key \2326 \245
|
||||
set key \2351 \246
|
||||
set key \2321 \247
|
||||
set key \2349 \248
|
||||
set key \2325 \249
|
||||
set key \2348 \250 ;; m-z
|
||||
|
||||
;; more shifted misc. keys
|
||||
set key \2842 \251 ;; m-{
|
||||
set key \2859 \252 ;; m-|
|
||||
set key \2843 \253 ;; m-}
|
||||
set key \2857 \254 ;; m-~
|
||||
set key \2318 \255 ;; m-del
|
||||
|
||||
|
1
etc/refcard.bit
Normal file
1
etc/refcard.bit
Normal file
|
@ -0,0 +1 @@
|
|||
@end
|
653
etc/refcard.tex
Normal file
653
etc/refcard.tex
Normal file
|
@ -0,0 +1,653 @@
|
|||
% Reference Card for GNU Emacs version 20 on Unix systems
|
||||
%**start of header
|
||||
\newcount\columnsperpage
|
||||
|
||||
% This file can be printed with 1, 2, or 3 columns per page (see below).
|
||||
% Specify how many you want here. Nothing else needs to be changed.
|
||||
|
||||
\columnsperpage=1
|
||||
|
||||
% Copyright (c) 1987, 1993, 1996, 1997 Free Software Foundation, Inc.
|
||||
|
||||
% This file is part of GNU Emacs.
|
||||
|
||||
% GNU Emacs is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2, or (at your option)
|
||||
% any later version.
|
||||
|
||||
% GNU Emacs is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with GNU Emacs; see the file COPYING. If not, write to
|
||||
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
% Boston, MA 02111-1307, USA.
|
||||
|
||||
% This file is intended to be processed by plain TeX (TeX82).
|
||||
%
|
||||
% The final reference card has six columns, three on each side.
|
||||
% This file can be used to produce it in any of three ways:
|
||||
% 1 column per page
|
||||
% produces six separate pages, each of which needs to be reduced to 80%.
|
||||
% This gives the best resolution.
|
||||
% 2 columns per page
|
||||
% produces three already-reduced pages.
|
||||
% You will still need to cut and paste.
|
||||
% 3 columns per page
|
||||
% produces two pages which must be printed sideways to make a
|
||||
% ready-to-use 8.5 x 11 inch reference card.
|
||||
% For this you need a dvi device driver that can print sideways.
|
||||
% Which mode to use is controlled by setting \columnsperpage above.
|
||||
%
|
||||
% Author:
|
||||
% Stephen Gildea
|
||||
% Internet: gildea@mit.edu
|
||||
%
|
||||
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
|
||||
% for their many good ideas.
|
||||
|
||||
% If there were room, it would be nice to see a section on Dired.
|
||||
|
||||
\def\versionnumber{2.2}
|
||||
\def\year{1997}
|
||||
|
||||
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
|
||||
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
|
||||
Permissions on back. v\versionnumber}}
|
||||
|
||||
\def\copyrightnotice{
|
||||
\vskip 1ex plus 2 fill\begingroup\small
|
||||
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
||||
\centerline{v\versionnumber{} for GNU Emacs version 20, June \year}
|
||||
\centerline{designed by Stephen Gildea}
|
||||
|
||||
Permission is granted to make and distribute copies of
|
||||
this card provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
For copies of the GNU Emacs manual, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
\endgroup}
|
||||
|
||||
% make \bye not \outer so that the \def\bye in the \else clause below
|
||||
% can be scanned without complaint.
|
||||
\def\bye{\par\vfill\supereject\end}
|
||||
|
||||
\newdimen\intercolumnskip %horizontal space between columns
|
||||
\newbox\columna %boxes to hold columns already built
|
||||
\newbox\columnb
|
||||
|
||||
\def\ncolumns{\the\columnsperpage}
|
||||
|
||||
\message{[\ncolumns\space
|
||||
column\if 1\ncolumns\else s\fi\space per page]}
|
||||
|
||||
\def\scaledmag#1{ scaled \magstep #1}
|
||||
|
||||
% This multi-way format was designed by Stephen Gildea October 1986.
|
||||
% Note that the 1-column format is fontfamily-independent.
|
||||
\if 1\ncolumns %one-column format uses normal size
|
||||
\hsize 4in
|
||||
\vsize 10in
|
||||
\voffset -.7in
|
||||
\font\titlefont=\fontname\tenbf \scaledmag3
|
||||
\font\headingfont=\fontname\tenbf \scaledmag2
|
||||
\font\smallfont=\fontname\sevenrm
|
||||
\font\smallsy=\fontname\sevensy
|
||||
|
||||
\footline{\hss\folio}
|
||||
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
||||
\else %2 or 3 columns uses prereduced size
|
||||
\hsize 3.2in
|
||||
\vsize 7.95in
|
||||
\hoffset -.75in
|
||||
\voffset -.745in
|
||||
\font\titlefont=cmbx10 \scaledmag2
|
||||
\font\headingfont=cmbx10 \scaledmag1
|
||||
\font\smallfont=cmr6
|
||||
\font\smallsy=cmsy6
|
||||
\font\eightrm=cmr8
|
||||
\font\eightbf=cmbx8
|
||||
\font\eightit=cmti8
|
||||
\font\eighttt=cmtt8
|
||||
\font\eightmi=cmmi8
|
||||
\font\eightsy=cmsy8
|
||||
\textfont0=\eightrm
|
||||
\textfont1=\eightmi
|
||||
\textfont2=\eightsy
|
||||
\def\rm{\eightrm}
|
||||
\def\bf{\eightbf}
|
||||
\def\it{\eightit}
|
||||
\def\tt{\eighttt}
|
||||
\normalbaselineskip=.8\normalbaselineskip
|
||||
\normallineskip=.8\normallineskip
|
||||
\normallineskiplimit=.8\normallineskiplimit
|
||||
\normalbaselines\rm %make definitions take effect
|
||||
|
||||
\if 2\ncolumns
|
||||
\let\maxcolumn=b
|
||||
\footline{\hss\rm\folio\hss}
|
||||
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
|
||||
\else \if 3\ncolumns
|
||||
\let\maxcolumn=c
|
||||
\nopagenumbers
|
||||
\else
|
||||
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
|
||||
\errmessage{Illegal number of columns per page}
|
||||
\fi\fi
|
||||
|
||||
\intercolumnskip=.46in
|
||||
\def\abc{a}
|
||||
\output={% %see The TeXbook page 257
|
||||
% This next line is useful when designing the layout.
|
||||
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
||||
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
||||
\else\if a\abc
|
||||
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||
%% in case we never use \columnb (two-column mode)
|
||||
\global\setbox\columnb\hbox to -\intercolumnskip{}
|
||||
\else
|
||||
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||
\def\multicolumnformat{\shipout\vbox{\makeheadline
|
||||
\hbox{\box\columna\hskip\intercolumnskip
|
||||
\box\columnb\hskip\intercolumnskip\columnbox}
|
||||
\makefootline}\advancepageno}
|
||||
\def\columnbox{\leftline{\pagebody}}
|
||||
|
||||
\def\bye{\par\vfill\supereject
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\end}
|
||||
\fi
|
||||
|
||||
% we won't be using math mode much, so redefine some of the characters
|
||||
% we might want to talk about
|
||||
\catcode`\^=12
|
||||
\catcode`\_=12
|
||||
|
||||
\chardef\\=`\\
|
||||
\chardef\{=`\{
|
||||
\chardef\}=`\}
|
||||
|
||||
\hyphenation{mini-buf-fer}
|
||||
|
||||
\parindent 0pt
|
||||
\parskip 1ex plus .5ex minus .5ex
|
||||
|
||||
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
||||
|
||||
% newcolumn - force a new column. Use sparingly, probably only for
|
||||
% the first column of a page, which should have a title anyway.
|
||||
\outer\def\newcolumn{\vfill\eject}
|
||||
|
||||
% title - page title. Argument is title text.
|
||||
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
|
||||
|
||||
% section - new major section. Argument is section name.
|
||||
\outer\def\section#1{\par\filbreak
|
||||
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
|
||||
\vskip 2ex plus 1ex minus 1.5ex}
|
||||
|
||||
\newdimen\keyindent
|
||||
|
||||
% beginindentedkeys...endindentedkeys - key definitions will be
|
||||
% indented, but running text, typically used as headings to group
|
||||
% definitions, will not.
|
||||
\def\beginindentedkeys{\keyindent=1em}
|
||||
\def\endindentedkeys{\keyindent=0em}
|
||||
\endindentedkeys
|
||||
|
||||
% paralign - begin paragraph containing an alignment.
|
||||
% If an \halign is entered while in vertical mode, a parskip is never
|
||||
% inserted. Using \paralign instead of \halign solves this problem.
|
||||
\def\paralign{\vskip\parskip\halign}
|
||||
|
||||
% \<...> - surrounds a variable name in a code example
|
||||
\def\<#1>{{\it #1\/}}
|
||||
|
||||
% kbd - argument is characters typed literally. Like the Texinfo command.
|
||||
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||
|
||||
% beginexample...endexample - surrounds literal text, such a code example.
|
||||
% typeset in a typewriter font with line breaks preserved
|
||||
\def\beginexample{\par\leavevmode\begingroup
|
||||
\obeylines\obeyspaces\parskip0pt\tt}
|
||||
{\obeyspaces\global\let =\ }
|
||||
\def\endexample{\endgroup}
|
||||
|
||||
% key - definition of a key.
|
||||
% \key{description of key}{key-name}
|
||||
% prints the description left-justified, and the key-name in a \kbd
|
||||
% form near the right margin.
|
||||
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
|
||||
{\hsize=.75\hsize\rightskip=1em
|
||||
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
|
||||
|
||||
\newbox\metaxbox
|
||||
\setbox\metaxbox\hbox{\kbd{M-x }}
|
||||
\newdimen\metaxwidth
|
||||
\metaxwidth=\wd\metaxbox
|
||||
|
||||
% metax - definition of a M-x command.
|
||||
% \metax{description of command}{M-x command-name}
|
||||
% Tries to justify the beginning of the command name at the same place
|
||||
% as \key starts the key name. (The "M-x " sticks out to the left.)
|
||||
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
|
||||
{\hskip\keyindent\relax#1\hfil}%
|
||||
\hskip -\metaxwidth minus 1fil
|
||||
\kbd{#2}\hfil}}
|
||||
|
||||
% threecol - like "key" but with two key names.
|
||||
% for example, one for doing the action backward, and one for forward.
|
||||
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
|
||||
&\kbd{#3}\hfil\quad\cr}
|
||||
|
||||
%**end of header
|
||||
|
||||
|
||||
\title{GNU Emacs Reference Card}
|
||||
|
||||
\centerline{(for version 20)}
|
||||
|
||||
\section{Starting Emacs}
|
||||
|
||||
To enter GNU Emacs 20, just type its name: \kbd{emacs}
|
||||
|
||||
To read in a file to edit, see Files, below.
|
||||
|
||||
\section{Leaving Emacs}
|
||||
|
||||
\key{suspend Emacs (or iconify it under X)}{C-z}
|
||||
\key{exit Emacs permanently}{C-x C-c}
|
||||
|
||||
\section{Files}
|
||||
|
||||
\key{{\bf read} a file into Emacs}{C-x C-f}
|
||||
\key{{\bf save} a file back to disk}{C-x C-s}
|
||||
\key{save {\bf all} files}{C-x s}
|
||||
\key{{\bf insert} contents of another file into this buffer}{C-x i}
|
||||
\key{replace this file with the file you really want}{C-x C-v}
|
||||
\key{write buffer to a specified file}{C-x C-w}
|
||||
\key{version control checkin/checkout}{C-x C-q}
|
||||
|
||||
\section{Getting Help}
|
||||
|
||||
The help system is simple. Type \kbd{C-h} (or \kbd{F1}) and follow
|
||||
the directions. If you are a first-time user, type \kbd{C-h t} for a
|
||||
{\bf tutorial}.
|
||||
|
||||
\key{remove help window}{C-x 1}
|
||||
\key{scroll help window}{C-M-v}
|
||||
|
||||
\key{apropos: show commands matching a string}{C-h a}
|
||||
\key{show the function a key runs}{C-h c}
|
||||
\key{describe a function}{C-h f}
|
||||
\key{get mode-specific information}{C-h m}
|
||||
|
||||
\section{Error Recovery}
|
||||
|
||||
\key{{\bf abort} partially typed or executing command}{C-g}
|
||||
\metax{{\bf recover} a file lost by a system crash}{M-x recover-file}
|
||||
\key{{\bf undo} an unwanted change}{C-x u {\rm or} C-_}
|
||||
\metax{restore a buffer to its original contents}{M-x revert-buffer}
|
||||
\key{redraw garbaged screen}{C-l}
|
||||
|
||||
\section{Incremental Search}
|
||||
|
||||
\key{search forward}{C-s}
|
||||
\key{search backward}{C-r}
|
||||
\key{regular expression search}{C-M-s}
|
||||
\key{reverse regular expression search}{C-M-r}
|
||||
|
||||
\key{select previous search string}{M-p}
|
||||
\key{select next later search string}{M-n}
|
||||
\key{exit incremental search}{RET}
|
||||
\key{undo effect of last character}{DEL}
|
||||
\key{abort current search}{C-g}
|
||||
|
||||
Use \kbd{C-s} or \kbd{C-r} again to repeat the search in either direction.
|
||||
If Emacs is still searching, \kbd{C-g} cancels only the part not done.
|
||||
|
||||
\shortcopyrightnotice
|
||||
|
||||
\section{Motion}
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{{\bf entity to move over}}{{\bf backward}}{{\bf forward}}
|
||||
\threecol{character}{C-b}{C-f}
|
||||
\threecol{word}{M-b}{M-f}
|
||||
\threecol{line}{C-p}{C-n}
|
||||
\threecol{go to line beginning (or end)}{C-a}{C-e}
|
||||
\threecol{sentence}{M-a}{M-e}
|
||||
\threecol{paragraph}{M-\{}{M-\}}
|
||||
\threecol{page}{C-x [}{C-x ]}
|
||||
\threecol{sexp}{C-M-b}{C-M-f}
|
||||
\threecol{function}{C-M-a}{C-M-e}
|
||||
\threecol{go to buffer beginning (or end)}{M-<}{M->}
|
||||
}
|
||||
|
||||
\key{scroll to next screen}{C-v}
|
||||
\key{scroll to previous screen}{M-v}
|
||||
\key{scroll left}{C-x <}
|
||||
\key{scroll right}{C-x >}
|
||||
\key{scroll current line to center of screen}{C-u C-l}
|
||||
|
||||
\section{Killing and Deleting}
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{{\bf entity to kill}}{{\bf backward}}{{\bf forward}}
|
||||
\threecol{character (delete, not kill)}{DEL}{C-d}
|
||||
\threecol{word}{M-DEL}{M-d}
|
||||
\threecol{line (to end of)}{M-0 C-k}{C-k}
|
||||
\threecol{sentence}{C-x DEL}{M-k}
|
||||
\threecol{sexp}{M-- C-M-k}{C-M-k}
|
||||
}
|
||||
|
||||
\key{kill {\bf region}}{C-w}
|
||||
\key{copy region to kill ring}{M-w}
|
||||
\key{kill through next occurrence of {\it char}}{M-z {\it char}}
|
||||
|
||||
\key{yank back last thing killed}{C-y}
|
||||
\key{replace last yank with previous kill}{M-y}
|
||||
|
||||
\section{Marking}
|
||||
|
||||
\key{set mark here}{C-@ {\rm or} C-SPC}
|
||||
\key{exchange point and mark}{C-x C-x}
|
||||
|
||||
\key{set mark {\it arg\/} {\bf words} away}{M-@}
|
||||
\key{mark {\bf paragraph}}{M-h}
|
||||
\key{mark {\bf page}}{C-x C-p}
|
||||
\key{mark {\bf sexp}}{C-M-@}
|
||||
\key{mark {\bf function}}{C-M-h}
|
||||
\key{mark entire {\bf buffer}}{C-x h}
|
||||
|
||||
\section{Query Replace}
|
||||
|
||||
\key{interactively replace a text string}{M-\%}
|
||||
\metax{using regular expressions}{M-x query-replace-regexp}
|
||||
|
||||
Valid responses in query-replace mode are
|
||||
|
||||
\key{{\bf replace} this one, go on to next}{SPC}
|
||||
\key{replace this one, don't move}{,}
|
||||
\key{{\bf skip} to next without replacing}{DEL}
|
||||
\key{replace all remaining matches}{!}
|
||||
\key{{\bf back up} to the previous match}{^}
|
||||
\key{{\bf exit} query-replace}{RET}
|
||||
\key{enter recursive edit (\kbd{C-M-c} to exit)}{C-r}
|
||||
|
||||
\section{Multiple Windows}
|
||||
|
||||
When two commands are shown, the second is for ``other frame.''
|
||||
|
||||
\key{delete all other windows}{C-x 1}
|
||||
|
||||
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{split window, above and below}{C-x 2\ \ \ \ }{C-x 5 2}
|
||||
\threecol{delete this window}{C-x 0\ \ \ \ }{C-x 5 0}
|
||||
}}
|
||||
\key{split window, side by side}{C-x 3}
|
||||
|
||||
\key{scroll other window}{C-M-v}
|
||||
|
||||
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{switch cursor to another window}{C-x o}{C-x 5 o}
|
||||
|
||||
\threecol{select buffer in other window}{C-x 4 b}{C-x 5 b}
|
||||
\threecol{display buffer in other window}{C-x 4 C-o}{C-x 5 C-o}
|
||||
\threecol{find file in other window}{C-x 4 f}{C-x 5 f}
|
||||
\threecol{find file read-only in other window}{C-x 4 r}{C-x 5 r}
|
||||
\threecol{run Dired in other window}{C-x 4 d}{C-x 5 d}
|
||||
\threecol{find tag in other window}{C-x 4 .}{C-x 5 .}
|
||||
}}
|
||||
|
||||
\key{grow window taller}{C-x ^}
|
||||
\key{shrink window narrower}{C-x \{}
|
||||
\key{grow window wider}{C-x \}}
|
||||
|
||||
\section{Formatting}
|
||||
|
||||
\key{indent current {\bf line} (mode-dependent)}{TAB}
|
||||
\key{indent {\bf region} (mode-dependent)}{C-M-\\}
|
||||
\key{indent {\bf sexp} (mode-dependent)}{C-M-q}
|
||||
\key{indent region rigidly {\it arg\/} columns}{C-x TAB}
|
||||
|
||||
\key{insert newline after point}{C-o}
|
||||
\key{move rest of line vertically down}{C-M-o}
|
||||
\key{delete blank lines around point}{C-x C-o}
|
||||
\key{join line with previous (with arg, next)}{M-^}
|
||||
\key{delete all white space around point}{M-\\}
|
||||
\key{put exactly one space at point}{M-SPC}
|
||||
|
||||
\key{fill paragraph}{M-q}
|
||||
\key{set fill column}{C-x f}
|
||||
\key{set prefix each line starts with}{C-x .}
|
||||
|
||||
\key{set face}{M-g}
|
||||
|
||||
\section{Case Change}
|
||||
|
||||
\key{uppercase word}{M-u}
|
||||
\key{lowercase word}{M-l}
|
||||
\key{capitalize word}{M-c}
|
||||
|
||||
\key{uppercase region}{C-x C-u}
|
||||
\key{lowercase region}{C-x C-l}
|
||||
|
||||
\section{The Minibuffer}
|
||||
|
||||
The following keys are defined in the minibuffer.
|
||||
|
||||
\key{complete as much as possible}{TAB}
|
||||
\key{complete up to one word}{SPC}
|
||||
\key{complete and execute}{RET}
|
||||
\key{show possible completions}{?}
|
||||
\key{fetch previous minibuffer input}{M-p}
|
||||
\key{fetch later minibuffer input or default}{M-n}
|
||||
\key{regexp search backward through history}{M-r}
|
||||
\key{regexp search forward through history}{M-s}
|
||||
\key{abort command}{C-g}
|
||||
|
||||
Type \kbd{C-x ESC ESC} to edit and repeat the last command that used the
|
||||
minibuffer. Type \kbd{F10} to activate the menu bar using the minibuffer.
|
||||
|
||||
\newcolumn
|
||||
\title{GNU Emacs Reference Card}
|
||||
|
||||
\section{Buffers}
|
||||
|
||||
\key{select another buffer}{C-x b}
|
||||
\key{list all buffers}{C-x C-b}
|
||||
\key{kill a buffer}{C-x k}
|
||||
|
||||
\section{Transposing}
|
||||
|
||||
\key{transpose {\bf characters}}{C-t}
|
||||
\key{transpose {\bf words}}{M-t}
|
||||
\key{transpose {\bf lines}}{C-x C-t}
|
||||
\key{transpose {\bf sexps}}{C-M-t}
|
||||
|
||||
\section{Spelling Check}
|
||||
|
||||
\key{check spelling of current word}{M-\$}
|
||||
\metax{check spelling of all words in region}{M-x ispell-region}
|
||||
\metax{check spelling of entire buffer}{M-x ispell-buffer}
|
||||
|
||||
\section{Tags}
|
||||
|
||||
\key{find a tag (a definition)}{M-.}
|
||||
\key{find next occurrence of tag}{C-u M-.}
|
||||
\metax{specify a new tags file}{M-x visit-tags-table}
|
||||
|
||||
\metax{regexp search on all files in tags table}{M-x tags-search}
|
||||
\metax{run query-replace on all the files}{M-x tags-query-replace}
|
||||
\key{continue last tags search or query-replace}{M-,}
|
||||
|
||||
\section{Shells}
|
||||
|
||||
\key{execute a shell command}{M-!}
|
||||
\key{run a shell command on the region}{M-|}
|
||||
\key{filter region through a shell command}{C-u M-|}
|
||||
\key{start a shell in window \kbd{*shell*}}{M-x shell}
|
||||
|
||||
\section{Rectangles}
|
||||
|
||||
\key{copy rectangle to register}{C-x r r}
|
||||
\key{kill rectangle}{C-x r k}
|
||||
\key{yank rectangle}{C-x r y}
|
||||
\key{open rectangle, shifting text right}{C-x r o}
|
||||
\key{blank out rectangle}{C-x r c}
|
||||
\key{prefix each line with a string}{C-x r t}
|
||||
|
||||
\section{Abbrevs}
|
||||
|
||||
\key{add global abbrev}{C-x a g}
|
||||
\key{add mode-local abbrev}{C-x a l}
|
||||
\key{add global expansion for this abbrev}{C-x a i g}
|
||||
\key{add mode-local expansion for this abbrev}{C-x a i l}
|
||||
\key{explicitly expand abbrev}{C-x a e}
|
||||
|
||||
\key{expand previous word dynamically}{M-/}
|
||||
|
||||
\section{Regular Expressions}
|
||||
|
||||
\key{any single character except a newline}{. {\rm(dot)}}
|
||||
\key{zero or more repeats}{*}
|
||||
\key{one or more repeats}{+}
|
||||
\key{zero or one repeat}{?}
|
||||
\key{quote regular expression special character {\it c\/}}{\\{\it c}}
|
||||
\key{alternative (``or'')}{\\|}
|
||||
\key{grouping}{\\( {\rm$\ldots$} \\)}
|
||||
\key{same text as {\it n\/}th group}{\\{\it n}}
|
||||
\key{at word break}{\\b}
|
||||
\key{not at word break}{\\B}
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{{\bf entity}}{{\bf match start}}{{\bf match end}}
|
||||
\threecol{line}{^}{\$}
|
||||
\threecol{word}{\\<}{\\>}
|
||||
\threecol{buffer}{\\`}{\\'}
|
||||
|
||||
\threecol{{\bf class of characters}}{{\bf match these}}{{\bf match others}}
|
||||
\threecol{explicit set}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
|
||||
\threecol{word-syntax character}{\\w}{\\W}
|
||||
\threecol{character with syntax {\it c}}{\\s{\it c}}{\\S{\it c}}
|
||||
}
|
||||
|
||||
\section{International Character Sets}
|
||||
|
||||
\metax{specify principal language}{M-x set-language-environment}
|
||||
\metax{show all input methods}{M-x list-input-methods}
|
||||
\key{enable or disable input method}{C-\\}
|
||||
\key{set coding system for next command}{C-x RET c}
|
||||
\metax{show all coding systems}{M-x list-coding-systems}
|
||||
\metax{choose preferred coding system}{M-x prefer-coding-system}
|
||||
|
||||
\section{Info}
|
||||
|
||||
\key{enter the Info documentation reader}{C-h i}
|
||||
\key{find specified function or variable in Info}{C-h C-i}
|
||||
\beginindentedkeys
|
||||
|
||||
Moving within a node:
|
||||
|
||||
\key{scroll forward}{SPC}
|
||||
\key{scroll reverse}{DEL}
|
||||
\key{beginning of node}{. {\rm (dot)}}
|
||||
|
||||
Moving between nodes:
|
||||
|
||||
\key{{\bf next} node}{n}
|
||||
\key{{\bf previous} node}{p}
|
||||
\key{move {\bf up}}{u}
|
||||
\key{select menu item by name}{m}
|
||||
\key{select {\it n\/}th menu item by number (1--9)}{{\it n}}
|
||||
\key{follow cross reference (return with \kbd{l})}{f}
|
||||
\key{return to last node you saw}{l}
|
||||
\key{return to directory node}{d}
|
||||
\key{go to any node by name}{g}
|
||||
|
||||
Other:
|
||||
|
||||
\key{run Info {\bf tutorial}}{h}
|
||||
\key{{\bf quit} Info}{q}
|
||||
\key{search nodes for regexp}{M-s}
|
||||
|
||||
\endindentedkeys
|
||||
|
||||
\section{Registers}
|
||||
|
||||
\key{save region in register}{C-x r s}
|
||||
\key{insert register contents into buffer}{C-x r i}
|
||||
|
||||
\key{save value of point in register}{C-x r SPC}
|
||||
\key{jump to point saved in register}{C-x r j}
|
||||
|
||||
\section{Keyboard Macros}
|
||||
|
||||
\key{{\bf start} defining a keyboard macro}{C-x (}
|
||||
\key{{\bf end} keyboard macro definition}{C-x )}
|
||||
\key{{\bf execute} last-defined keyboard macro}{C-x e}
|
||||
\key{append to last keyboard macro}{C-u C-x (}
|
||||
\metax{name last keyboard macro}{M-x name-last-kbd-macro}
|
||||
\metax{insert Lisp definition in buffer}{M-x insert-kbd-macro}
|
||||
|
||||
\section{Commands Dealing with Emacs Lisp}
|
||||
|
||||
\key{eval {\bf sexp} before point}{C-x C-e}
|
||||
\key{eval current {\bf defun}}{C-M-x}
|
||||
\metax{eval {\bf region}}{M-x eval-region}
|
||||
\key{read and eval minibuffer}{M-:}
|
||||
\metax{load from standard system directory}{M-x load-library}
|
||||
|
||||
\section{Simple Customization}
|
||||
|
||||
\metax{customize variables and faces}{M-x customize}
|
||||
|
||||
% The intended audience here is the person who wants to make simple
|
||||
% customizations and knows Lisp syntax.
|
||||
|
||||
Making global key bindings in Emacs Lisp (examples):
|
||||
|
||||
\beginexample%
|
||||
(global-set-key "\\C-cg" 'goto-line)
|
||||
(global-set-key "\\M-\#" 'query-replace-regexp)
|
||||
\endexample
|
||||
|
||||
\section{Writing Commands}
|
||||
|
||||
\beginexample%
|
||||
(defun \<command-name> (\<args>)
|
||||
"\<documentation>" (interactive "\<template>")
|
||||
\<body>)
|
||||
\endexample
|
||||
|
||||
An example:
|
||||
|
||||
\beginexample%
|
||||
(defun this-line-to-top-of-window (line)
|
||||
"Reposition line point is on to top of window.
|
||||
With ARG, put point on line ARG."
|
||||
(interactive "P")
|
||||
(recenter (if (null line)
|
||||
0
|
||||
(prefix-numeric-value line))))
|
||||
\endexample
|
||||
|
||||
The \kbd{interactive} spec says how to read arguments interactively.
|
||||
Type \kbd{C-h f interactive} for more details.
|
||||
|
||||
\copyrightnotice
|
||||
|
||||
\bye
|
||||
|
||||
% Local variables:
|
||||
% compile-command: "tex refcard"
|
||||
% End:
|
38
etc/ulimit.hack
Normal file
38
etc/ulimit.hack
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# ulimit.hack: Create an intermediate program for use in
|
||||
# between kernel initialization and init startup.
|
||||
# This is needed on a 3b system if the standard CDLIMIT is
|
||||
# so small that the dumped Emacs file cannot be written.
|
||||
# This program causes everyone to get a bigger CDLIMIT value
|
||||
# so that the dumped Emacs can be written out.
|
||||
#
|
||||
# Users of V.3.1 and later should not use this; see etc/MACHINES
|
||||
# and reconfig your kernel's CDLIMIT parameter instead.
|
||||
#
|
||||
# Caveat: Heaven help you if you screw this up. This puts
|
||||
# a new program in as /etc/init, which then execs the real init.
|
||||
#
|
||||
cat > ulimit.init.c << \EOF
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
ulimit(2, 262144L); /* "2" is the "set" command. */
|
||||
/* 262,144 allows for 128Mb files to be written. */
|
||||
/* If that value isn't suitable, roll your own. */
|
||||
execv("/etc/real.init", argv);
|
||||
}
|
||||
EOF
|
||||
#
|
||||
# Compile it and put it in place of the usual init program.
|
||||
#
|
||||
cc ulimit.init.c -o ulimit.init
|
||||
mv /etc/init /etc/real.init
|
||||
mv ulimit.init /etc/ulimit.init
|
||||
ln /etc/ulimit.init /etc/init
|
||||
mv ulimit.init.c /etc/ulimit.init.c # to keep src for this hack nearby.
|
||||
chmod 0754 /etc/init
|
||||
exit 0
|
||||
#
|
||||
# Upon system reboot, all processes will inherit the new large ulimit.
|
681
etc/vipcard.tex
Normal file
681
etc/vipcard.tex
Normal file
|
@ -0,0 +1,681 @@
|
|||
% Quick Reference Card for VIP 3.5 under GNU Emacs version 18 on Unix systems
|
||||
%**start of header
|
||||
\newcount\columnsperpage
|
||||
|
||||
% This file can be printed with 1, 2, or 3 columns per page (see below).
|
||||
% Specify how many you want here. Nothing else needs to be changed.
|
||||
|
||||
\columnsperpage=1
|
||||
|
||||
% Copyright (c) 1987 Free Software Foundation, Inc.
|
||||
|
||||
% This file is part of GNU Emacs.
|
||||
|
||||
% This file is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY. No author or distributor
|
||||
% accepts responsibility to anyone for the consequences of using it
|
||||
% or for whether it serves any particular purpose or describes
|
||||
% any piece of software unless they say so in writing. Refer to the
|
||||
% GNU Emacs General Public License for full details.
|
||||
%
|
||||
% Permission is granted to copy, modify and redistribute this source
|
||||
% file provided the copyright notice and permission notices are
|
||||
% preserved on all copies.
|
||||
%
|
||||
% Permission is granted to process this file through TeX and print the
|
||||
% results, provided the printed document carries copyright and
|
||||
% permission notices identical to the ones below.
|
||||
|
||||
% This file is intended to be processed by plain TeX (TeX82).
|
||||
%
|
||||
% The final reference card has six columns, three on each side.
|
||||
% This file can be used to produce it in any of three ways:
|
||||
% 1 column per page
|
||||
% produces six separate pages, each of which needs to be reduced to 80%.
|
||||
% This gives the best resolution.
|
||||
% 2 columns per page
|
||||
% produces three already-reduced pages.
|
||||
% You will still need to cut and paste.
|
||||
% 3 columns per page
|
||||
% produces two pages which must be printed sideways to make a
|
||||
% ready-to-use 8.5 x 11 inch reference card.
|
||||
% For this you need a dvi device driver that can print sideways.
|
||||
% Which mode to use is controlled by setting \columnsperpage above.
|
||||
%
|
||||
% Author:
|
||||
% Masahiko Sato
|
||||
% Internet: ms@sail.stanford.edu
|
||||
% Junet: masahiko@sato.riec.tohoku.junet
|
||||
%
|
||||
% The original TeX code for formatting the reference card was written by:
|
||||
% Stephen Gildea
|
||||
% UUCP: mit-erl!gildea
|
||||
% Internet: gildea@erl.mit.edu
|
||||
|
||||
|
||||
\def\versionnumber{1.2}
|
||||
\def\year{1987}
|
||||
\def\version{September \year\ v\versionnumber}
|
||||
|
||||
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
|
||||
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
|
||||
Permissions on back. v\versionnumber}}
|
||||
|
||||
\def\copyrightnotice{
|
||||
%\vskip 1ex plus 2 fill\begingroup\small
|
||||
\vskip 1ex \begingroup\small
|
||||
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
||||
\centerline{designed by Masahiko Sato, \version}
|
||||
\centerline{for VIP 3.5 under GNU Emacs version 18 on Unix systems}
|
||||
|
||||
Permission is granted to make and distribute copies of
|
||||
this card provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
For copies of the GNU Emacs manual, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
\endgroup}
|
||||
|
||||
% make \bye not \outer so that the \def\bye in the \else clause below
|
||||
% can be scanned without complaint.
|
||||
\def\bye{\par\vfill\supereject\end}
|
||||
|
||||
\newdimen\intercolumnskip
|
||||
\newbox\columna
|
||||
\newbox\columnb
|
||||
|
||||
\def\ncolumns{\the\columnsperpage}
|
||||
|
||||
\message{[\ncolumns\space
|
||||
column\if 1\ncolumns\else s\fi\space per page]}
|
||||
|
||||
\def\scaledmag#1{ scaled \magstep #1}
|
||||
|
||||
% This multi-way format was designed by Stephen Gildea
|
||||
% October 1986.
|
||||
% Slightly modified by Masahiko Sato, September 1987.
|
||||
\if 1\ncolumns
|
||||
\hsize 4in
|
||||
\vsize 10in
|
||||
%\voffset -.7in
|
||||
\voffset -.57in
|
||||
\font\titlefont=\fontname\tenbf \scaledmag3
|
||||
\font\headingfont=\fontname\tenbf \scaledmag2
|
||||
\font\miniheadingfont=\fontname\tenbf \scaledmag1 % masahiko
|
||||
\font\smallfont=\fontname\sevenrm
|
||||
\font\smallsy=\fontname\sevensy
|
||||
|
||||
\footline{\hss\folio}
|
||||
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
||||
\else
|
||||
%\hsize 3.2in
|
||||
%\vsize 7.95in
|
||||
\hsize 3.41in % masahiko
|
||||
\vsize 8in % masahiko
|
||||
\hoffset -.75in
|
||||
\voffset -.745in
|
||||
\font\titlefont=cmbx10 \scaledmag2
|
||||
\font\headingfont=cmbx10 \scaledmag1
|
||||
\font\miniheadingfont=cmbx10 % masahiko
|
||||
\font\smallfont=cmr6
|
||||
\font\smallsy=cmsy6
|
||||
\font\eightrm=cmr8
|
||||
\font\eightbf=cmbx8
|
||||
\font\eightit=cmti8
|
||||
\font\eightsl=cmsl8
|
||||
\font\eighttt=cmtt8
|
||||
\font\eightsy=cmsy8
|
||||
\textfont0=\eightrm
|
||||
\textfont2=\eightsy
|
||||
\def\rm{\eightrm}
|
||||
\def\bf{\eightbf}
|
||||
\def\it{\eightit}
|
||||
\def\sl{\eightsl} % masahiko
|
||||
\def\tt{\eighttt}
|
||||
\normalbaselineskip=.8\normalbaselineskip
|
||||
\normallineskip=.8\normallineskip
|
||||
\normallineskiplimit=.8\normallineskiplimit
|
||||
\normalbaselines\rm %make definitions take effect
|
||||
|
||||
\if 2\ncolumns
|
||||
\let\maxcolumn=b
|
||||
\footline{\hss\rm\folio\hss}
|
||||
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
|
||||
\else \if 3\ncolumns
|
||||
\let\maxcolumn=c
|
||||
\nopagenumbers
|
||||
\else
|
||||
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
|
||||
\errmessage{Illegal number of columns per page}
|
||||
\fi\fi
|
||||
|
||||
%\intercolumnskip=.46in
|
||||
\intercolumnskip=.19in % masahiko .19x4 + 3.41x3 = 10.99
|
||||
\def\abc{a}
|
||||
\output={%
|
||||
% This next line is useful when designing the layout.
|
||||
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
||||
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
||||
\else\if a\abc
|
||||
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||
%% in case we never use \columnb (two-column mode)
|
||||
\global\setbox\columnb\hbox to -\intercolumnskip{}
|
||||
\else
|
||||
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||
\def\multicolumnformat{\shipout\vbox{\makeheadline
|
||||
\hbox{\box\columna\hskip\intercolumnskip
|
||||
\box\columnb\hskip\intercolumnskip\columnbox}
|
||||
\makefootline}\advancepageno}
|
||||
\def\columnbox{\leftline{\pagebody}}
|
||||
|
||||
\def\bye{\par\vfill\supereject
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\end}
|
||||
\fi
|
||||
|
||||
% we won't be using math mode much, so redefine some of the characters
|
||||
% we might want to talk about
|
||||
\catcode`\^=12
|
||||
\catcode`\_=12
|
||||
|
||||
\chardef\\=`\\
|
||||
\chardef\{=`\{
|
||||
\chardef\}=`\}
|
||||
|
||||
\hyphenation{mini-buf-fer}
|
||||
|
||||
\parindent 0pt
|
||||
\parskip 1ex plus .5ex minus .5ex
|
||||
|
||||
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
||||
|
||||
\outer\def\newcolumn{\vfill\eject}
|
||||
|
||||
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
|
||||
|
||||
\outer\def\section#1{\par\filbreak
|
||||
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
|
||||
\vskip 2ex plus 1ex minus 1.5ex}
|
||||
|
||||
% masahiko
|
||||
\outer\def\subsection#1{\par\filbreak
|
||||
\vskip 2ex plus 2ex minus 2ex {\miniheadingfont #1}\mark{#1}%
|
||||
\vskip 1ex plus 1ex minus 1.5ex}
|
||||
|
||||
\newdimen\keyindent
|
||||
|
||||
\def\beginindentedkeys{\keyindent=1em}
|
||||
\def\endindentedkeys{\keyindent=0em}
|
||||
\endindentedkeys
|
||||
|
||||
\def\paralign{\vskip\parskip\halign}
|
||||
|
||||
\def\<#1>{$\langle${\rm #1}$\rangle$}
|
||||
|
||||
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||
|
||||
\def\beginexample{\par\leavevmode\begingroup
|
||||
\obeylines\obeyspaces\parskip0pt\tt}
|
||||
{\obeyspaces\global\let =\ }
|
||||
\def\endexample{\endgroup}
|
||||
|
||||
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
|
||||
{\hsize=.75\hsize\rightskip=1em
|
||||
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
|
||||
|
||||
\newbox\metaxbox
|
||||
\setbox\metaxbox\hbox{\kbd{M-x }}
|
||||
\newdimen\metaxwidth
|
||||
\metaxwidth=\wd\metaxbox
|
||||
|
||||
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
|
||||
{\hskip\keyindent\relax#1\hfil}%
|
||||
\hskip -\metaxwidth minus 1fil
|
||||
\kbd{#2}\hfil}}
|
||||
|
||||
\def\fivecol#1#2#3#4#5{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad&\kbd{#4}\quad&\kbd{#5}\cr}
|
||||
|
||||
\def\fourcol#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad&\kbd{#4}\quad\cr}
|
||||
|
||||
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad\cr}
|
||||
|
||||
\def\twocol#1#2{\hskip\keyindent\relax\kbd{#1}\hfil&\kbd{#2}\quad\cr}
|
||||
|
||||
\def\twocolkey#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad&\relax#3\hfil&\kbd{#4}\quad\cr}
|
||||
|
||||
%**end of header
|
||||
|
||||
\beginindentedkeys
|
||||
|
||||
\title{VIP Quick Reference Card}
|
||||
|
||||
\centerline{(for version 3.5 under GNU Emacs version 18)}
|
||||
|
||||
%\copyrightnotice
|
||||
|
||||
\section{Loading VIP}
|
||||
|
||||
Just type \kbd{M-x vip-mode} followed by \kbd{RET}
|
||||
|
||||
\section{VIP Modes}
|
||||
|
||||
VIP has three modes: {\it emacs mode}, {\it vi mode} and {\it insert mode}.
|
||||
Mode line tells you which mode you are in.
|
||||
In emacs mode you can do all the normal GNU Emacs editing.
|
||||
This card explains only vi mode and insert mode.
|
||||
{\bf GNU Emacs Reference Card} explains emacs mode.
|
||||
You can switch modes as follows.
|
||||
|
||||
\key{from emacs mode to vi mode}{C-z}
|
||||
\key{from vi mode to emacs mode}{C-z}
|
||||
\metax{from vi mode to insert mode}{i, I, a, A, o, O {\rm or} C-o}
|
||||
\key{from insert mode to vi mode}{ESC}
|
||||
|
||||
If you wish to be in vi mode just after you startup Emacs,
|
||||
include the line:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{(setq term-setup-hook 'vip-mode)}
|
||||
|
||||
in your \kbd{.emacs} file.
|
||||
Or, you can put the following alias in your \kbd{.cshrc} file.
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{alias vip 'emacs \\!* -f vip-mode'}
|
||||
|
||||
|
||||
\section{Insert Mode}
|
||||
Insert mode is like emacs mode except for the following.
|
||||
|
||||
\key{go back to vi mode}{ESC}
|
||||
\key{delete previous character}{C-h}
|
||||
\key{delete previous word}{C-w}
|
||||
\key{emulate \kbd{ESC} key in emacs mode}{C-z}
|
||||
|
||||
The rest of this card explains commands in {\bf vi mode}.
|
||||
|
||||
\section{Getting Information on VIP}
|
||||
|
||||
Execute info command by typing \kbd{M-x info} and select menu item
|
||||
\kbd{vip}. Also:
|
||||
|
||||
\key{describe function attached to the key {\it x}}{C-h k {\it x}}
|
||||
|
||||
\section{Leaving Emacs}
|
||||
|
||||
\key{suspend Emacs}{X Z {\rm or} :st}
|
||||
\metax{exit Emacs permanently}{Z Z {\rm or} X C {\rm or} :q}
|
||||
|
||||
\section{Error Recovery}
|
||||
|
||||
\key{abort partially typed or executing command}{C-g}
|
||||
\key{redraw messed up screen}{C-l}
|
||||
\metax{{\bf recover} a file lost by a system crash}{M-x recover-file}
|
||||
\metax{restore a buffer to its original contents}{M-x revert-buffer}
|
||||
|
||||
\shortcopyrightnotice
|
||||
|
||||
\section{Counts}
|
||||
|
||||
Most commands in vi mode accept a {\it count} which can be supplied as a
|
||||
prefix to the commands. In most cases, if a count is given, the
|
||||
command is executed that many times. E.g., \kbd{5 d d} deletes 5
|
||||
lines.
|
||||
|
||||
%\shortcopyrightnotice
|
||||
\section{Registers}
|
||||
|
||||
There are 26 registers (\kbd{a} to \kbd{z}) that can store texts
|
||||
and marks.
|
||||
You can append a text at the end of a register (say \kbd{x}) by
|
||||
specifying the register name in capital letter (say \kbd{X}).
|
||||
There are also 9 read only registers (\kbd{1} to \kbd{9}) that store
|
||||
up to 9 previous changes.
|
||||
We will use {\it x\/} to denote a register.
|
||||
\section{Entering Insert Mode}
|
||||
|
||||
\key{{\bf insert} at point}{i}
|
||||
\key{{\bf append} after cursor}{a}
|
||||
\key{{\bf insert} before first non-white}{I}
|
||||
\key{{\bf append} at end of line}{A}
|
||||
\key{{\bf open} line below}{o}
|
||||
\key{{\bf open} line above}{O}
|
||||
\key{{\bf open} line at point}{C-o}
|
||||
|
||||
\section{Buffers and Windows}
|
||||
|
||||
\key{move cursor to {\bf next} window}{C-n}
|
||||
\key{delete current window}{X 0}
|
||||
\key{delete other windows}{X 1}
|
||||
\key{split current window into two windows}{X 2}
|
||||
\key{show current buffer in two windows}{X 3}
|
||||
\key{{\bf switch} to a buffer in the current window}{s {\sl buffer}}
|
||||
\key{{\bf switch} to a buffer in another window}{S {\sl buffer}}
|
||||
\key{{\bf kill} a buffer}{K}
|
||||
\key{list existing {\bf buffers}}{X B}
|
||||
|
||||
\section{Files}
|
||||
|
||||
\metax{{\bf visit} file in the current window}{v {\sl file} {\rm or} :e {\sl file}}
|
||||
\key{{\bf visit} file in another window}{V {\sl file}}
|
||||
\key{{\bf save} buffer to the associated file}{X S}
|
||||
\key{{\bf write} buffer to a specified file}{X W}
|
||||
\key{{\bf insert} a specified file at point}{X I}
|
||||
\key{{\bf get} information on the current {\bf file}}{g {\rm or} :f}
|
||||
\key{run the {\bf directory} editor}{X d}
|
||||
|
||||
\section{Viewing the Buffer}
|
||||
|
||||
\key{scroll to next screen}{SPC {\rm or} C-f}
|
||||
\key{scroll to previous screen}{RET {\rm or} C-b}
|
||||
\key{scroll {\bf down} half screen}{C-d}
|
||||
\key{scroll {\bf up} half screen}{C-u}
|
||||
\key{scroll down one line}{C-e}
|
||||
\key{scroll up one line}{C-y}
|
||||
|
||||
\key{put current line on the {\bf home} line}{z H {\rm or} z RET}
|
||||
\key{put current line on the {\bf middle} line}{z M {\rm or} z .}
|
||||
\key{put current line on the {\bf last} line}{z L {\rm or} z -}
|
||||
|
||||
\section{Marking and Returning}
|
||||
|
||||
\key{{\bf mark} point in register {\it x}}{m {\it x}}
|
||||
\key{set mark at buffer beginning}{m <}
|
||||
\key{set mark at buffer end}{m >}
|
||||
\key{set mark at point}{m .}
|
||||
\key{jump to mark}{m ,}
|
||||
\key{exchange point and mark}{` `}
|
||||
\key{... and skip to first non-white on line}{' '}
|
||||
\key{go to mark {\it x}}{` {\it x}}
|
||||
\key{... and skip to first non-white on line}{' {\it x}}
|
||||
|
||||
\section{Macros}
|
||||
|
||||
\key{start remembering keyboard macro}{X (}
|
||||
\key{finish remembering keyboard macro}{X )}
|
||||
\key{call last keyboard macro}{*}
|
||||
\key{execute macro stored in register {\it x}}{@ {\it x}}
|
||||
|
||||
\section{Motion Commands}
|
||||
|
||||
\key{go backward one character}{h}
|
||||
\key{go forward one character}{l}
|
||||
\key{next line keeping the column}{j}
|
||||
\key{previous line keeping the column}{k}
|
||||
\key{next line at first non-white}{+}
|
||||
\key{previous line at first non-white}{-}
|
||||
|
||||
\key{beginning of line}{0}
|
||||
\key{first non-white on line}{^}
|
||||
\key{end of line}{\$}
|
||||
\key{go to {\it n}-th column on line}{{\it n} |}
|
||||
|
||||
\key{go to {\it n}-th line}{{\it n} G}
|
||||
\key{go to last line}{G}
|
||||
\key{find matching parenthesis for \kbd{()}, \kbd{\{\}} and \kbd{[]}}{\%}
|
||||
|
||||
\key{go to {\bf home} window line}{H}
|
||||
\key{go to {\bf middle} window line}{M}
|
||||
\key{go to {\bf last} window line}{L}
|
||||
|
||||
\subsection{Words, Sentences, Paragraphs}
|
||||
|
||||
\key{forward {\bf word}}{w {\rm or} W}
|
||||
\key{{\bf backward} word}{b {\rm or} B}
|
||||
\key{{\bf end} of word}{e {\rm or} E}
|
||||
|
||||
In the case of capital letter commands, a word is delimited by a
|
||||
non-white character.
|
||||
|
||||
\key{forward sentence}{)}
|
||||
\key{backward sentence}{(}
|
||||
|
||||
\key{forward paragraph}{\}}
|
||||
\key{backward paragraph}{\{}
|
||||
|
||||
\subsection{Find Characters on the Line}
|
||||
|
||||
\key{{\bf find} {\it c} forward on line}{f {\it c}}
|
||||
\key{{\bf find} {\it c} backward on line}{F {\it c}}
|
||||
\key{up {\bf to} {\it c} forward on line}{t {\it c}}
|
||||
\key{up {\bf to} {\it c} backward on line}{T {\it c}}
|
||||
\key{repeat previous \kbd{f}, \kbd{F}, \kbd{t} or \kbd{T}}{;}
|
||||
\key{... in the opposite direction}{,}
|
||||
|
||||
\newcolumn
|
||||
\title{VIP Quick Reference Card}
|
||||
|
||||
\section{Searching and Replacing}
|
||||
|
||||
\key{search forward for {\sl pat}}{/ {\sl pat}}
|
||||
\key{search backward for {\sl pat}}{?\ {\sl pat}}
|
||||
\key{repeat previous search}{n}
|
||||
\key{... in the opposite direction}{N}
|
||||
|
||||
\key{incremental {\bf search}}{C-s}
|
||||
\key{{\bf reverse} incremental search}{C-r}
|
||||
|
||||
\key{{\bf replace}}{R}
|
||||
\key{{\bf query} replace}{Q}
|
||||
\key{{\bf replace} a character by another character {\it c}}{r {\it c}}
|
||||
|
||||
\section{Modifying Commands}
|
||||
|
||||
The delete (yank, change) commands explained below accept a motion command as
|
||||
their argument and delete (yank, change) the region determined by the motion
|
||||
command. Motion commands are classified into {\it point commands} and
|
||||
{\it line commands}. In the case of line commands, whole lines will
|
||||
be affected by the command. Motion commands will be represented by
|
||||
{\it m} below.
|
||||
|
||||
The point commands are as follows:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{h l 0 ^ \$ w W b B e E ( ) / ?\ ` f F t T \% ; ,}
|
||||
|
||||
The line commands are as follows:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{j k + - H M L \{ \} G '}
|
||||
|
||||
\subsection{Delete/Yank/Change Commands}
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
||||
\fourcol{}{{\bf delete}}{{\bf yank}}{{\bf change}}
|
||||
\fourcol{region determined by {\it m}}{d {\it m}}{y {\it m}}{c {\it m}}
|
||||
\fourcol{... into register {\it x}}{" {\it x\/} d {\it m}}{" {\it x\/} y {\it m}}{" {\it x\/} c {\it m}}
|
||||
\fourcol{a line}{d d}{Y {\rm or} y y}{c c}
|
||||
\fourcol{current {\bf region}}{d r}{y r}{c r}
|
||||
\fourcol{expanded {\bf region}}{d R}{y R}{c R}
|
||||
\fourcol{to end of line}{D}{y \$}{c \$}
|
||||
\fourcol{a character after point}{x}{y l}{c l}
|
||||
\fourcol{a character before point}{DEL}{y h}{c h}
|
||||
}
|
||||
|
||||
\subsection{Put Back Commands}
|
||||
|
||||
Deleted/yanked/changed text can be put back by the following commands.
|
||||
|
||||
\key{{\bf Put} back at point/above line}{P}
|
||||
\key{... from register {\it x}}{" {\it x\/} P}
|
||||
\key{{\bf put} back after point/below line}{p}
|
||||
\key{... from register {\it x}}{" {\it x\/} p}
|
||||
|
||||
\subsection{Repeating and Undoing Modifications}
|
||||
|
||||
\key{{\bf undo} last change}{u {\rm or} :und}
|
||||
\key{repeat last change}{.\ {\rm (dot)}}
|
||||
|
||||
Undo is undoable by \kbd{u} and repeatable by \kbd{.}.
|
||||
For example, \kbd{u...} will undo 4 previous changes.
|
||||
A \kbd{.} after \kbd{5dd} is equivalent to \kbd{5dd},
|
||||
while \kbd{3.} after \kbd{5dd} is equivalent to \kbd{3dd}.
|
||||
|
||||
\section{Miscellaneous Commands}
|
||||
|
||||
\endindentedkeys
|
||||
|
||||
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
||||
\fivecol{}{{\bf shift left}}{{\bf shift right}}{{\bf filter shell command}}{{\bf indent}}
|
||||
\fivecol{region}{< {\it m}}{> {\it m}}{!\ {\it m\/} {\sl shell-com}}{= {\it m}}
|
||||
\fivecol{line}{< <}{> >}{!\ !\ {\sl shell-com}}{= =}
|
||||
}
|
||||
|
||||
\key{emulate \kbd{ESC}/\kbd{C-h} in emacs mode}{ESC{\rm /}C-h}
|
||||
\key{emulate \kbd{C-c}/\kbd{C-x} in emacs mode}{C{\rm /}X}
|
||||
|
||||
\key{{\bf join} lines}{J}
|
||||
|
||||
\key{lowercase region}{\# c {\it m}}
|
||||
\key{uppercase region}{\# C {\it m}}
|
||||
\key{execute last keyboard macro on each line in the region}{\# g {\it m}}
|
||||
|
||||
\key{insert specified string for each line in the region}{\# q {\it m}}
|
||||
\key{check spelling of the words in the region}{\# s {\it m}}
|
||||
|
||||
\section{Differences from Vi}
|
||||
|
||||
\beginindentedkeys
|
||||
|
||||
In VIP some keys behave rather differently from Vi.
|
||||
The table below lists such keys, and you can get the effect of typing
|
||||
these keys by typing the corresponding keys in the VIP column.
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\threecol{}{{\bf Vi}}{{\bf VIP}}
|
||||
\threecol{forward character}{SPC}{l}
|
||||
\threecol{backward character}{C-h}{h}
|
||||
\threecol{next line at first non-white}{RET}{+}
|
||||
\threecol{delete previous character}{X}{DEL}
|
||||
\threecol{get information on file}{C-g}{g}
|
||||
\threecol{substitute characters}{s}{x i}
|
||||
\threecol{substitute line}{S}{c c}
|
||||
\threecol{change to end of line}{C {\rm or} R}{c \$}
|
||||
}
|
||||
|
||||
(Strictly speaking, \kbd{C} and \kbd{R} behave slightly differently in Vi.)
|
||||
|
||||
\section{Customization}
|
||||
|
||||
By default, search is case sensitive.
|
||||
You can change this by including the following line in your \kbd{.vip} file.
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{(setq vip-case-fold-search t)}
|
||||
|
||||
\beginindentedkeys
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\twocol{{\bf variable}}{{\bf default value}}
|
||||
\twocol{vip-search-wrap-around}{t}
|
||||
\twocol{vip-case-fold-search}{nil}
|
||||
\twocol{vip-re-search}{nil}
|
||||
\twocol{vip-re-replace}{nil}
|
||||
\twocol{vip-re-query-replace}{nil}
|
||||
\twocol{vip-open-with-indent}{nil}
|
||||
\twocol{vip-help-in-insert-mode}{nil}
|
||||
\twocol{vip-shift-width}{8}
|
||||
\twocol{vip-tags-file-name}{"TAGS"}
|
||||
}
|
||||
|
||||
%\subsection{Customizing Key Bindings}
|
||||
|
||||
Include (some of) following lines in your \kbd{.vip} file
|
||||
to restore Vi key bindings.
|
||||
|
||||
\beginexample
|
||||
(define-key vip-mode-map "\\C-g" 'vip-info-on-file)
|
||||
(define-key vip-mode-map "\\C-h" 'vip-backward-char)
|
||||
(define-key vip-mode-map "\\C-m" 'vip-next-line-at-bol)
|
||||
(define-key vip-mode-map " " 'vip-forward-char)
|
||||
(define-key vip-mode-map "g" 'vip-keyboard-quit)
|
||||
(define-key vip-mode-map "s" 'vip-substitute)
|
||||
(define-key vip-mode-map "C" 'vip-change-to-eol)
|
||||
(define-key vip-mode-map "R" 'vip-change-to-eol)
|
||||
(define-key vip-mode-map "S" 'vip-substitute-line)
|
||||
(define-key vip-mode-map "X" 'vip-delete-backward-char)
|
||||
\endexample
|
||||
|
||||
\newcolumn
|
||||
|
||||
\title{Ex Commands in VIP}
|
||||
|
||||
In vi mode, an Ex command is entered by typing:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{:\ {\sl ex-command} RET}
|
||||
|
||||
\section{Ex Addresses}
|
||||
|
||||
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=2pt&#\tabskip=5pt plus 1 fil&#\cr
|
||||
\twocolkey{current line}{.}{next line with {\sl pat}}{/ {\sl pat} /}
|
||||
\twocolkey{line {\it n}}{{\it n}}{previous line with {\sl pat}}{?\ {\sl pat} ?}
|
||||
\twocolkey{last line}{\$}{{\it n\/} line before {\it a}}{{\it a} - {\it n}}
|
||||
\twocolkey{next line}{+}{{\it a\/} through {\it b}}{{\it a\/} , {\it b}}
|
||||
\twocolkey{previous line}{-}{line marked with {\it x}}{' {\it x}}
|
||||
\twocolkey{entire buffer}{\%}{previous context}{' '}
|
||||
}
|
||||
|
||||
Addresses can be specified in front of a command.
|
||||
For example,
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{:.,.+10m\$}
|
||||
|
||||
moves 11 lines below current line to the end of buffer.
|
||||
|
||||
\section{Ex Commands}
|
||||
|
||||
\endindentedkeys
|
||||
|
||||
\key{mark lines matching {\sl pat} and execute {\sl cmds} on these lines}{:g /{\sl pat}/ {\sl cmds}}
|
||||
|
||||
\key{mark lines {\it not\/} matching {\sl pat} and execute {\sl cmds} on these lines}{:v /{\sl pat}/ {\sl cmds}}
|
||||
|
||||
|
||||
\key{{\bf move} specified lines after {\sl addr}}{:m {\sl addr}}
|
||||
\key{{\bf copy} specified lines after {\sl addr}}{:co\rm\ (or \kbd{:t})\ \sl addr}
|
||||
\key{{\bf delete} specified lines [into register {\it x\/}]}{:d {\rm [{\it x\/}]}}
|
||||
\key{{\bf yank} specified lines [into register {\it x\/}]}{:y {\rm [{\it x\/}]}}
|
||||
\key{{\bf put} back text [from register {\it x\/}]}{:pu {\rm [{\it x\/}]}}
|
||||
|
||||
\key{{\bf substitute} {\sl repl} for first string on line matching {\sl pat}}{:s /{\sl pat}/{\sl repl}/}
|
||||
|
||||
\key{repeat last substitution}{:\&}
|
||||
\key{repeat previous substitute with previous search pattern as {\sl pat}}{:\~{}}
|
||||
|
||||
\key{{\bf read} in a file}{:r {\sl file}}
|
||||
\key{{\bf read} in the output of a shell command}{:r!\ {\sl command}}
|
||||
\key{write out specified lines into {\sl file}}{:w {\sl file}}
|
||||
\key{write out specified lines at the end of {\sl file}}{:w>> {\sl file}}
|
||||
\key{write out and then quit}{:wq {\sl file}}
|
||||
|
||||
\key{define a macro {\it x} that expands to {\sl cmd}}{:map {\it x} {\sl cmd}}
|
||||
\key{remove macro expansion associated with {\it x}}{:unma {\it x}}
|
||||
|
||||
\key{print line number}{:=}
|
||||
\key{print {\bf version} number of VIP}{:ve}
|
||||
|
||||
\key{shift specified lines to the right}{:>}
|
||||
\key{shift specified lines to the left}{:<}
|
||||
|
||||
\key{{\bf join} lines}{:j}
|
||||
\key{mark specified line to register {\it x}}{:k {\it x}}
|
||||
\key{{\bf set} a variable's value}{:se}
|
||||
\key{run a sub{\bf shell} in a window}{:sh}
|
||||
\key{execute shell command {\sl command}}{:!\ {\sl command}}
|
||||
\key{find first definition of {\bf tag} {\sl tag}}{:ta {\sl tag}}
|
||||
|
||||
|
||||
\copyrightnotice
|
||||
|
||||
\bye
|
||||
|
||||
% Local variables:
|
||||
% compile-command: "tex refcard"
|
||||
% End:
|
746
etc/viperCard.tex
Normal file
746
etc/viperCard.tex
Normal file
|
@ -0,0 +1,746 @@
|
|||
% ViperCard -- The Reference Card for Viper under GNU Emacs 20 and XEmacs 20
|
||||
%**start of header
|
||||
\newcount\columnsperpage
|
||||
|
||||
% This file can be printed with 1 or 2 columns per page (see below).
|
||||
% Specify how many you want here. Nothing else needs to be changed.
|
||||
|
||||
\columnsperpage=2
|
||||
|
||||
% Copyright (c) 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
|
||||
% This file is part of GNU Emacs.
|
||||
|
||||
% This file is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY. No author or distributor
|
||||
% accepts responsibility to anyone for the consequences of using it
|
||||
% or for whether it serves any particular purpose or describes
|
||||
% any piece of software unless they say so in writing. Refer to the
|
||||
% GNU Emacs General Public License for full details.
|
||||
%
|
||||
% Permission is granted to copy, modify and redistribute this source
|
||||
% file provided the copyright notice and permission notices are
|
||||
% preserved on all copies.
|
||||
%
|
||||
% Permission is granted to process this file through TeX and print the
|
||||
% results, provided the printed document carries copyright and
|
||||
% permission notices identical to the ones below.
|
||||
|
||||
% This file is intended to be processed by plain TeX (TeX82).
|
||||
%
|
||||
% The final reference card has six columns, three on each side.
|
||||
% This file can be used to produce it in any of three ways:
|
||||
% 1 column per page
|
||||
% produces six separate pages, each of which needs to be reduced to 80%.
|
||||
% This gives the best resolution.
|
||||
% 2 columns per page
|
||||
% produces three already-reduced pages.
|
||||
% You will still need to cut and paste.
|
||||
% 3 columns per page
|
||||
% produces two pages which must be printed sideways to make a
|
||||
% ready-to-use 8.5 x 11 inch reference card.
|
||||
% For this you need a dvi device driver that can print sideways.
|
||||
% Which mode to use is controlled by setting \columnsperpage above.
|
||||
%
|
||||
% Author of Viper:
|
||||
% Michael Kifer
|
||||
% email: kifer@cs.sunysb.edu
|
||||
%
|
||||
% Author of VIP 4.3:
|
||||
% Aamod Sane
|
||||
% email: sane@cs.uiuc.edu
|
||||
%
|
||||
% Author of VIP 3.5:
|
||||
% Masahiko Sato
|
||||
% email: ms@sail.stanford.edu
|
||||
%
|
||||
% The original TeX code for formatting the reference card was written by:
|
||||
% Stephen Gildea
|
||||
% UUCP: mit-erl!gildea
|
||||
% email: gildea@erl.mit.edu
|
||||
|
||||
|
||||
\def\versionnumber{3.0}
|
||||
\def\year{1997}
|
||||
\def\version{August \year\ v\versionnumber}
|
||||
|
||||
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
|
||||
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
|
||||
Permissions on back. v\versionnumber}}
|
||||
|
||||
\def\copyrightnotice{
|
||||
%\vskip 1ex plus 2 fill\begingroup\small
|
||||
\vskip 1ex \begingroup\small
|
||||
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
||||
\centerline{by Michael Kifer, Viper \version}
|
||||
\centerline{by Aamod Sane, VIP version 4.3}
|
||||
\centerline{by Masahiko Sato, VIP version 3.5}
|
||||
|
||||
Permission is granted to make and distribute copies of
|
||||
this card provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
For copies of the GNU Emacs manual, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
\endgroup}
|
||||
|
||||
% make \bye not \outer so that the \def\bye in the \else clause below
|
||||
% can be scanned without complaint.
|
||||
\def\bye{\par\vfill\supereject\end}
|
||||
|
||||
\newdimen\intercolumnskip
|
||||
\newbox\columna
|
||||
\newbox\columnb
|
||||
|
||||
\def\ncolumns{\the\columnsperpage}
|
||||
|
||||
\message{[\ncolumns\space
|
||||
column\if 1\ncolumns\else s\fi\space per page]}
|
||||
|
||||
\def\scaledmag#1{ scaled \magstep #1}
|
||||
|
||||
% This multi-way format was designed by Stephen Gildea
|
||||
% October 1986.
|
||||
% Slightly modified by Masahiko Sato, September 1987.
|
||||
\if 1\ncolumns
|
||||
\hsize 4in
|
||||
\vsize 10in
|
||||
%\voffset -.7in
|
||||
\voffset -.57in
|
||||
\font\titlefont=\fontname\tenbf \scaledmag3
|
||||
\font\headingfont=\fontname\tenbf \scaledmag2
|
||||
\font\miniheadingfont=\fontname\tenbf \scaledmag1 % masahiko
|
||||
\font\smallfont=\fontname\sevenrm
|
||||
\font\smallsy=\fontname\sevensy
|
||||
|
||||
\footline{\hss\folio}
|
||||
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
||||
\else
|
||||
%\hsize 3.2in
|
||||
%\vsize 7.95in
|
||||
\hsize 3.41in % masahiko
|
||||
\vsize 8in % masahiko
|
||||
\hoffset -.75in
|
||||
\voffset -.745in
|
||||
\font\titlefont=cmbx10 \scaledmag2
|
||||
\font\headingfont=cmbx10 \scaledmag1
|
||||
\font\miniheadingfont=cmbx10 % masahiko
|
||||
\font\smallfont=cmr6
|
||||
\font\smallsy=cmsy6
|
||||
\font\eightrm=cmr8
|
||||
\font\eightbf=cmbx8
|
||||
\font\eightit=cmti8
|
||||
\font\eightsl=cmsl8
|
||||
\font\eighttt=cmtt8
|
||||
\font\eightsy=cmsy8
|
||||
\textfont0=\eightrm
|
||||
\textfont2=\eightsy
|
||||
\def\rm{\eightrm}
|
||||
\def\bf{\eightbf}
|
||||
\def\it{\eightit}
|
||||
\def\sl{\eightsl} % masahiko
|
||||
\def\tt{\eighttt}
|
||||
\normalbaselineskip=.8\normalbaselineskip
|
||||
\normallineskip=.8\normallineskip
|
||||
\normallineskiplimit=.8\normallineskiplimit
|
||||
\normalbaselines\rm %make definitions take effect
|
||||
|
||||
\if 2\ncolumns
|
||||
\let\maxcolumn=b
|
||||
\footline{\hss\rm\folio\hss}
|
||||
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
|
||||
\else \if 3\ncolumns
|
||||
\let\maxcolumn=c
|
||||
\nopagenumbers
|
||||
\else
|
||||
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
|
||||
\errmessage{Illegal number of columns per page}
|
||||
\fi\fi
|
||||
|
||||
%\intercolumnskip=.46in
|
||||
\intercolumnskip=.19in % masahiko .19x4 + 3.41x3 = 10.99
|
||||
\def\abc{a}
|
||||
\output={%
|
||||
% This next line is useful when designing the layout.
|
||||
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
||||
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
||||
\else\if a\abc
|
||||
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||
%% in case we never use \columnb (two-column mode)
|
||||
\global\setbox\columnb\hbox to -\intercolumnskip{}
|
||||
\else
|
||||
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||
\def\multicolumnformat{\shipout\vbox{\makeheadline
|
||||
\hbox{\box\columna\hskip\intercolumnskip
|
||||
\box\columnb\hskip\intercolumnskip\columnbox}
|
||||
\makefootline}\advancepageno}
|
||||
\def\columnbox{\leftline{\pagebody}}
|
||||
|
||||
\def\bye{\par\vfill\supereject
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\if a\abc \else\null\vfill\eject\fi
|
||||
\end}
|
||||
\fi
|
||||
|
||||
% we won't be using math mode much, so redefine some of the characters
|
||||
% we might want to talk about
|
||||
\catcode`\^=12
|
||||
\catcode`\_=12
|
||||
|
||||
\chardef\\=`\\
|
||||
\chardef\{=`\{
|
||||
\chardef\}=`\}
|
||||
|
||||
\hyphenation{mini-buf-fer}
|
||||
|
||||
\parindent 0pt
|
||||
\parskip 1ex plus .5ex minus .5ex
|
||||
|
||||
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
||||
|
||||
\outer\def\newcolumn{\vfill\eject}
|
||||
|
||||
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
|
||||
|
||||
\outer\def\section#1{\par\filbreak
|
||||
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
|
||||
\vskip 2ex plus 1ex minus 1.5ex}
|
||||
|
||||
% masahiko
|
||||
\outer\def\subsection#1{\par\filbreak
|
||||
\vskip 2ex plus 2ex minus 2ex {\miniheadingfont #1}\mark{#1}%
|
||||
\vskip 1ex plus 1ex minus 1.5ex}
|
||||
|
||||
\newdimen\keyindent
|
||||
|
||||
\def\beginindentedkeys{\keyindent=1em}
|
||||
\def\endindentedkeys{\keyindent=0em}
|
||||
\endindentedkeys
|
||||
|
||||
\def\paralign{\vskip\parskip\halign}
|
||||
|
||||
\def\<#1>{$\langle${\rm #1}$\rangle$}
|
||||
|
||||
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||
|
||||
\def\beginexample{\par\leavevmode\begingroup
|
||||
\obeylines\obeyspaces\parskip0pt\tt}
|
||||
{\obeyspaces\global\let =\ }
|
||||
\def\endexample{\endgroup}
|
||||
|
||||
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
|
||||
{\hsize=.75\hsize\rightskip=1em
|
||||
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
|
||||
|
||||
\newbox\metaxbox
|
||||
\setbox\metaxbox\hbox{\kbd{M-x }}
|
||||
\newdimen\metaxwidth
|
||||
\metaxwidth=\wd\metaxbox
|
||||
|
||||
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
|
||||
{\hskip\keyindent\relax#1\hfil}%
|
||||
\hskip -\metaxwidth minus 1fil
|
||||
\kbd{#2}\hfil}}
|
||||
|
||||
\def\fivecol#1#2#3#4#5{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad&\kbd{#4}\quad&\kbd{#5}\cr}
|
||||
|
||||
\def\fourcol#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad&\kbd{#4}\quad\cr}
|
||||
|
||||
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||
&\kbd{#3}\quad\cr}
|
||||
|
||||
\def\twocol#1#2{\hskip\keyindent\relax\kbd{#1}\hfil&\kbd{#2}\quad\cr}
|
||||
|
||||
\def\twocolkey#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad&\relax#3\hfil&\kbd{#4}\quad\cr}
|
||||
|
||||
%**end of header
|
||||
|
||||
\beginindentedkeys
|
||||
|
||||
\title{ViperCard: Viper Reference Pal}
|
||||
|
||||
\centerline{(Version 3.0 (Polyglot) for Emacs 20 and XEmacs 20)}
|
||||
|
||||
%\copyrightnotice
|
||||
|
||||
\section{Loading Viper}
|
||||
|
||||
Just type \kbd{M-x viper-mode} followed by \kbd{RET}
|
||||
|
||||
OR put
|
||||
|
||||
(setq viper-mode t)
|
||||
(require 'viper)
|
||||
|
||||
in .emacs
|
||||
|
||||
\section{Viper States}
|
||||
|
||||
Viper has four states: {\it emacs state}, {\it vi state}, {\it insert state},
|
||||
{\it replace state}.
|
||||
Mode line tells you which state you are in.
|
||||
In emacs state you can do all the normal GNU Emacs editing.
|
||||
This card explains only vi state and insert state (replace state is similar
|
||||
to insert state).
|
||||
{\bf GNU Emacs Reference Card} explains emacs state.
|
||||
You can switch states as follows.
|
||||
|
||||
\key{from emacs state to vi state}{C-z}
|
||||
\key{from vi state to emacs state}{C-z}
|
||||
\key{from vi state to emacs state for 1 command}{$\backslash$}
|
||||
\metax{from vi state to insert state}{i, I, a, A, o, O}
|
||||
\metax{from vi state to replace state}{c, C, R}
|
||||
\key{from insert or replace state to vi state}{ESC}
|
||||
\key{from insert state to vi state for 1 command}{C-z}
|
||||
|
||||
|
||||
\section{Insert Mode}
|
||||
You can do editing in insert state.
|
||||
|
||||
\metax{go back to vi state}{ESC}
|
||||
\metax{delete previous character}{C-h, DEL}
|
||||
\key{delete previous word}{C-w}
|
||||
\key{delete line word}{C-u}
|
||||
\key{indent shiftwidth forward}{C-t}
|
||||
\key{indent shiftwidth backward}{C-d}
|
||||
\key{delete line word}{C-u}
|
||||
\key{quote following character}{C-v}
|
||||
\key{emulate Meta key in emacs state}{C-$\backslash$}
|
||||
\key{escape to Vi state for one command}{C-z}
|
||||
|
||||
\vskip 2mm
|
||||
|
||||
{\bf The rest of this card explains commands in {\bf vi state}.}
|
||||
|
||||
\section{Getting Information on Viper}
|
||||
|
||||
Execute info command by typing \kbd{M-x info} and select menu item
|
||||
\kbd{viper}. Also:
|
||||
|
||||
\key{describe function attached to the key {\it x}}{$\backslash$ C-h k {\it x}}
|
||||
|
||||
\section{Leaving Emacs}
|
||||
|
||||
\metax{suspend Emacs}{:st {\rm or} :su}
|
||||
\metax{exit Emacs permanently}{C-xC-c}
|
||||
\metax{exit current file}{:wq {\rm or} :q}
|
||||
|
||||
\shortcopyrightnotice
|
||||
|
||||
\section{Error Recovery}
|
||||
|
||||
\metax{abort command}{C-c (user level = 1)}
|
||||
\metax{abort command}{C-g (user level > 1)}
|
||||
\key{redraw messed up screen}{C-l}
|
||||
\metax{{\bf recover} after system crash}{:rec file}
|
||||
\metax{restore a buffer }{:e!\ {\rm or} M-x revert-buffer}
|
||||
|
||||
|
||||
\section{Counts}
|
||||
|
||||
Most commands in vi state accept a {\it count} which can be supplied as a
|
||||
prefix to the commands. In most cases, if a count is given, the
|
||||
command is executed that many times. E.g., \kbd{5 d d} deletes 5
|
||||
lines.
|
||||
|
||||
\section{Registers}
|
||||
|
||||
There are 26 registers (\kbd{a} to \kbd{z}) that can store texts
|
||||
and marks.
|
||||
You can append a text at the end of a register (say \kbd{x}) by
|
||||
specifying the register name in capital letter (say \kbd{X}).
|
||||
There are also 9 read only registers (\kbd{1} to \kbd{9}) that store
|
||||
up to 9 previous changes.
|
||||
We will use {\it x\/} to denote a register.
|
||||
\section{Entering Insert Mode}
|
||||
|
||||
\key{{\bf insert} at point}{i}
|
||||
\key{{\bf append} after cursor}{a}
|
||||
\key{{\bf insert} before first non-white}{I}
|
||||
\key{{\bf append} at end of line}{A}
|
||||
\key{{\bf open} line below}{o}
|
||||
\key{{\bf open} line above}{O}
|
||||
|
||||
\section{Buffers and Windows}
|
||||
|
||||
\key{move cursor to {\bf next} window}{C-x o}
|
||||
\key{delete current window}{C-x 0}
|
||||
\key{delete other windows}{C-x 1}
|
||||
\key{split current window into two windows}{C-x 2}
|
||||
\key{{\bf switch} to a buffer in the current window}{C-x {\sl buffer}}
|
||||
\metax{{\bf switch} to a buffer in another window}{:n, :b, {\rm or} C-x 4 {\sl buf}}
|
||||
\key{{\bf kill} a buffer}{:q! {\rm or} C-x k}
|
||||
\key{list existing {\bf buffers}}{:args {\rm or} C-x b}
|
||||
|
||||
\section{Files}
|
||||
|
||||
\metax{{\bf visit} file in the current window}{v {\sl file} {\rm or} :e {\sl file}}
|
||||
\key{{\bf visit} file in another window}{V {\sl file}}
|
||||
\key{{\bf visit} file in another frame}{C-v {\sl file}}
|
||||
\key{{\bf save} buffer to the associated file}{:w {\rm or} C-xC-s}
|
||||
\metax{{\bf write} buffer to a specified file}{:w {\sl file} {\rm or} C-xC-w}
|
||||
\metax{{\bf insert} a specified file at point}{:r {\sl file} {\rm or} C-xi}
|
||||
\key{{\bf get} information on the current {\bf file}}{C-c g {\rm or} :f}
|
||||
\key{run the {\bf directory} editor}{:e RET {\rm or} C-xd}
|
||||
|
||||
%\shortcopyrightnotice
|
||||
|
||||
\section{Viewing the Buffer}
|
||||
|
||||
\key{scroll to next screen}{C-f}
|
||||
\key{scroll to previous screen}{C-b}
|
||||
\key{scroll {\bf down} half screen}{C-d}
|
||||
\key{scroll {\bf up} half screen}{C-u}
|
||||
\key{scroll down one line}{C-e}
|
||||
\key{scroll up one line}{C-y}
|
||||
|
||||
\key{put current line on the {\bf home} line}{z H {\rm or} z RET}
|
||||
\key{put current line on the {\bf middle} line}{z M {\rm or} z .}
|
||||
\key{put current line on the {\bf last} line}{z L {\rm or} z -}
|
||||
|
||||
\section{Marking and Returning}
|
||||
|
||||
\key{{\bf mark} point in register {\it x}}{m {\it x}}
|
||||
\key{set mark at buffer beginning}{m <}
|
||||
\key{set mark at buffer end}{m >}
|
||||
\key{set mark at point}{m .}
|
||||
\key{jump to mark}{m ,}
|
||||
\key{exchange point and mark}{` `}
|
||||
\key{... and skip to first non-white on line}{' '}
|
||||
\key{go to mark {\it x}}{` {\it x}}
|
||||
\key{... and skip to first non-white on line}{' {\it x}}
|
||||
\key{view contents of marker {\it x}}{[ {\it x}}
|
||||
\key{view contents of register {\it x}}{] {\it x}}
|
||||
|
||||
\section{Macros}
|
||||
|
||||
Emacs style macros:
|
||||
|
||||
\key{start remembering keyboard macro}{C-x (}
|
||||
\key{finish remembering keyboard macro}{C-x )}
|
||||
\key{call last keyboard macro}{*}
|
||||
|
||||
\key{start remembering keyboard macro}{@ \#}
|
||||
\key{finish macro and put into register {\it x}}{@ {\it x}}
|
||||
\key{execute macro stored in register {\it x}}{@ {\it x}}
|
||||
\key{repeat last @{\it x} command}{@ @}
|
||||
|
||||
\key{Pull last macro into register {\it x}}{@ ! {\it x}}
|
||||
|
||||
Vi-style macros (keys to be hit in quick succession):
|
||||
|
||||
\key{define Vi-style macro for Vi state}{:map}
|
||||
\key{define Vi-style macro for Insert state}{:map!}
|
||||
|
||||
\key{toggle case-sensitive search}{//}
|
||||
\key{toggle regular expression search}{///}
|
||||
\key{toggle `\%' to ignore parentheses inside comments}{\%\%\%}
|
||||
|
||||
|
||||
\section{Motion Commands}
|
||||
|
||||
\key{go backward one character}{h {\rm or} C-h}
|
||||
\key{go forward one character}{l}
|
||||
\metax{next line keeping the column}{j {\rm or} LF {\rm or} C-n}
|
||||
\key{previous line keeping the column}{k}
|
||||
\metax{next line at first non-white}{+ {\rm or} RET {\rm or} C-p}
|
||||
\key{previous line at first non-white}{-}
|
||||
|
||||
\key{beginning of line}{0}
|
||||
\key{first non-white on line}{^}
|
||||
\key{end of line}{\$}
|
||||
\key{go to {\it n}-th column on line}{{\it n} |}
|
||||
|
||||
\key{go to {\it n}-th line}{{\it n} G}
|
||||
\key{go to last line}{G}
|
||||
\key{find matching parenthesis for \kbd{()}, \kbd{\{\}} and \kbd{[]}}{\%}
|
||||
|
||||
\key{go to {\bf home} window line}{H}
|
||||
\key{go to {\bf middle} window line}{M}
|
||||
\key{go to {\bf last} window line}{L}
|
||||
|
||||
\subsection{Words, Sentences, Paragraphs, Headings}
|
||||
|
||||
\key{forward {\bf word}}{w {\rm or} W}
|
||||
\key{{\bf backward} word}{b {\rm or} B}
|
||||
\key{{\bf end} of word}{e {\rm or} E}
|
||||
|
||||
In the case of capital letter commands, a word is delimited by a
|
||||
non-white character.
|
||||
|
||||
\key{forward sentence}{)}
|
||||
\key{backward sentence}{(}
|
||||
|
||||
\key{forward paragraph}{\}}
|
||||
\key{backward paragraph}{\{}
|
||||
|
||||
\key{forward heading}{]]}
|
||||
\key{backward heading}{[[}
|
||||
\key{end of heading}{[]}
|
||||
|
||||
\subsection{Find Characters on the Line}
|
||||
|
||||
\key{{\bf find} {\it c} forward on line}{f {\it c}}
|
||||
\key{{\bf find} {\it c} backward on line}{F {\it c}}
|
||||
\key{up {\bf to} {\it c} forward on line}{t {\it c}}
|
||||
\key{up {\bf to} {\it c} backward on line}{T {\it c}}
|
||||
\key{repeat previous \kbd{f}, \kbd{F}, \kbd{t} or \kbd{T}}{;}
|
||||
\key{... in the opposite direction}{,}
|
||||
|
||||
%\newcolumn
|
||||
%\title{Viper Quick Reference Card}
|
||||
|
||||
\section{Searching and Replacing}
|
||||
|
||||
\key{search forward for {\sl pat}}{/ {\sl pat}}
|
||||
\key{search backward with previous {\sl pat}}{?\ RET}
|
||||
\key{search forward with previous {\sl pat}}{/ RET}
|
||||
\key{search backward for {\sl pat}}{?\ {\sl pat}}
|
||||
\key{repeat previous search}{n}
|
||||
\key{... in the opposite direction}{N}
|
||||
|
||||
\key{{\bf query} replace}{Q}
|
||||
\key{{\bf replace} a character by another character {\it c}}{r {\it c}}
|
||||
\key{{\bf overwrite} {\it n} lines}{{\it n} R}
|
||||
|
||||
\metax{{\bf buffer} search (if enabled)}{g {\it move command}}
|
||||
|
||||
\section{Modifying Commands}
|
||||
|
||||
Most commands that operate on text regions accept the motion commands,
|
||||
to describe regions. They also accept the Emacs region specifications
|
||||
{\bf r} and {\bf R}. {\bf r} describes the region between {\it point}
|
||||
and {\it mark}, and {\bf R} describes whole lines in that region.
|
||||
Motion commands are classified into {\it point commands} and
|
||||
{\it line commands}. In the case of line commands, whole lines will
|
||||
be affected by the command.
|
||||
|
||||
The point commands are as follows:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{h l 0 ^ \$ w W b B e E ( ) / ?\ ` f F t T \% ; ,}
|
||||
|
||||
The line commands are as follows:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{j k + - H M L \{ \} G '}
|
||||
|
||||
These region specifiers will be referred to as {\it m} below.
|
||||
|
||||
\subsection{Delete/Yank/Change Commands}
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
||||
\fourcol{}{{\bf delete}}{{\bf yank}}{{\bf change}}
|
||||
\fourcol{region determined by {\it m}}{d {\it m}}{y {\it m}}{c {\it m}}
|
||||
\fourcol{... into register {\it x}}{" {\it x\/} d {\it m}}{" {\it x\/} y {\it m}}{" {\it x\/} c {\it m}}
|
||||
\fourcol{a line}{d d}{Y {\rm or} y y}{c c}
|
||||
\fourcol{current {\bf region}}{d r}{y r}{c r}
|
||||
\fourcol{expanded {\bf region}}{d R}{y R}{c R}
|
||||
\fourcol{to end of line}{D}{y \$}{c \$}
|
||||
\fourcol{a character after point}{x}{y l}{c l}
|
||||
\fourcol{a character before point}{DEL}{y h}{c h}
|
||||
}
|
||||
|
||||
\vskip 2ex
|
||||
\key{Overwrite {\it n} lines}{{\it n} R}
|
||||
|
||||
\subsection{Put Back Commands}
|
||||
|
||||
Deleted/yanked/changed text can be put back by the following commands.
|
||||
|
||||
\key{{\bf Put} back at point/above line}{P}
|
||||
\key{... from register {\it x}}{" {\it x\/} P}
|
||||
\key{{\bf put} back after point/below line}{p}
|
||||
\key{... from register {\it x}}{" {\it x\/} p}
|
||||
|
||||
\subsection{Repeating and Undoing Modifications}
|
||||
|
||||
\key{{\bf undo} last change}{u {\rm or} :und}
|
||||
\key{repeat last change}{.\ {\rm (dot)}}
|
||||
|
||||
Undo is undoable by \kbd{u} and repeatable by \kbd{.}.
|
||||
For example, \kbd{u...} will undo 4 previous changes.
|
||||
A \kbd{.} after \kbd{5dd} is equivalent to \kbd{5dd},
|
||||
while \kbd{3.} after \kbd{5dd} is equivalent to \kbd{3dd}.
|
||||
|
||||
\section{Miscellaneous Commands}
|
||||
|
||||
\endindentedkeys
|
||||
|
||||
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
||||
\fivecol{}{{\bf shift left}}{{\bf shift right}}{{\bf filter shell command}}{{\bf indent}}
|
||||
\fivecol{region}{< {\it m}}{> {\it m}}{!\ {\it m\/} {\sl shell-com}}{= {\it m}}
|
||||
\fivecol{line}{< <}{> >}{!\ !\ {\sl shell-com}}{= =}
|
||||
}
|
||||
|
||||
\key{{\bf join} lines}{J}
|
||||
\key{toggle case (takes count)}{\~{}}
|
||||
|
||||
\key{view register {\it x}}{] {\it x}}
|
||||
\key{view marker {\it x}}{] {\it x}}
|
||||
|
||||
\key{lowercase region}{\# c {\it m}}
|
||||
\key{uppercase region}{\# C {\it m}}
|
||||
\key{execute last keyboard macro on each line in the region}{\# g {\it m}}
|
||||
|
||||
\key{insert specified string for each line in the region}{\# q {\it m}}
|
||||
\key{check spelling of the words in the region}{\# s {\it m}}
|
||||
|
||||
\key{repeat previous ex substitution}{\&}
|
||||
\key{change to previous file}{C-^}
|
||||
|
||||
\key{Viper Meta key}{_}
|
||||
|
||||
\section{Customization}
|
||||
|
||||
By default, search is case sensitive.
|
||||
You can change this by including the following line in your \kbd{\~{}/.vip} file.
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{(setq viper-case-fold-search t)}
|
||||
|
||||
The following is a subset of the variety of
|
||||
options available for customizing Viper.
|
||||
See the Viper manual for details on these and other options.
|
||||
|
||||
\beginindentedkeys
|
||||
|
||||
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
||||
\twocol{{\bf variable}}{{\bf default value}}
|
||||
\twocol{viper-search-wrap-around}{t}
|
||||
\twocol{viper-case-fold-search}{nil}
|
||||
\twocol{viper-re-search}{t}
|
||||
\twocol{viper-re-replace}{t}
|
||||
\twocol{viper-re-query-replace}{t}
|
||||
\twocol{viper-auto-indent}{nil}
|
||||
\twocol{viper-shift-width}{8}
|
||||
\twocol{viper-tags-file-name}{"TAGS"}
|
||||
\twocol{viper-no-multiple-ESC}{t}
|
||||
\twocol{viper-ex-style-motion}{t}
|
||||
\twocol{viper-always}{t}
|
||||
\twocol{viper-custom-file-name}{"\~{}/.vip"}
|
||||
\twocol{ex-find-file-shell}{"csh"}
|
||||
\twocol{ex-cycle-other-window}{t}
|
||||
\twocol{ex-cycle-through-non-buffers}{t}
|
||||
\twocol{blink-matching-paren}{t}
|
||||
\twocol{buffer-read-only}{{\it buffer dependent}}
|
||||
}
|
||||
|
||||
To bind keys in Vi command state, put lines like these in your
|
||||
\kbd{\~{}/.vip} file:
|
||||
|
||||
\beginexample
|
||||
(define-key viper-vi-global-user-map "\\C-v" 'scroll-down)
|
||||
(define-key viper-vi-global-user-map "\\C-cm" 'smail)
|
||||
\endexample
|
||||
|
||||
|
||||
\newcolumn
|
||||
|
||||
\title{Ex Commands in Viper}
|
||||
|
||||
In vi state, an Ex command is entered by typing:
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{:\ {\sl ex-command} RET}
|
||||
|
||||
\section{Ex Addresses}
|
||||
|
||||
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=2pt&#\tabskip=5pt plus 1 fil&#\cr
|
||||
\twocolkey{current line}{.}{next line with {\sl pat}}{/ {\sl pat} /}
|
||||
\twocolkey{line {\it n}}{{\it n}}{previous line with {\sl pat}}{?\ {\sl pat} ?}
|
||||
\twocolkey{last line}{\$}{{\it n\/} line before {\it a}}{{\it a} - {\it n}}
|
||||
\twocolkey{next line}{+}{{\it a\/} through {\it b}}{{\it a\/} , {\it b}}
|
||||
\twocolkey{previous line}{-}{line marked with {\it x}}{' {\it x}}
|
||||
\twocolkey{entire buffer}{\%}{previous context}{' '}
|
||||
}
|
||||
|
||||
Addresses can be specified in front of a command.
|
||||
For example,
|
||||
|
||||
\hskip 5ex
|
||||
\kbd{:.,.+10m\$}
|
||||
|
||||
moves 11 lines below current line to the end of buffer.
|
||||
|
||||
\section{Ex Commands}
|
||||
|
||||
Avoid Ex text manipulation commands except substitute.
|
||||
There are better VI equivalents
|
||||
for all of them. Also note that all Ex commands expand \% to
|
||||
current file name. To include a \% in the command, escape it with a $\backslash$.
|
||||
Similarly, \# is replaced by previous file. For Viper, this is the
|
||||
first file in the {\sl :args} listing for that buffer. This defaults
|
||||
to the previous file in the VI sense if you have one window.
|
||||
Ex commands can be made to have history. See the manual for details.
|
||||
|
||||
\subsection{Ex Text Commands}
|
||||
|
||||
\endindentedkeys
|
||||
|
||||
\key{mark lines matching {\sl pat} and execute {\sl cmds} on these lines}{:g /{\sl pat}/ {\sl cmds}}
|
||||
|
||||
\key{mark lines {\it not\/} matching {\sl pat} and execute {\sl cmds} on these lines}{:v /{\sl pat}/ {\sl cmds}}
|
||||
|
||||
|
||||
\key{{\bf move} specified lines after {\sl addr}}{:m {\sl addr}}
|
||||
\key{{\bf copy} specified lines after {\sl addr}}{:co\rm\ (or \kbd{:t})\ \sl addr}
|
||||
\key{{\bf delete} specified lines [into register {\it x\/}]}{:d {\rm [{\it x\/}]}}
|
||||
\key{{\bf yank} specified lines [into register {\it x\/}]}{:y {\rm [{\it x\/}]}}
|
||||
\key{{\bf put} back text [from register {\it x\/}]}{:pu {\rm [{\it x\/}]}}
|
||||
|
||||
\key{{\bf substitute} {\sl repl} for first string on line matching {\sl pat}}{:s /{\sl pat}/{\sl repl}/}
|
||||
|
||||
\key{repeat last substitution}{:\&}
|
||||
\key{repeat previous substitute with previous search pattern as {\sl pat}}{:\~{}}
|
||||
|
||||
\subsection{Ex File and Shell Commands}
|
||||
|
||||
\key{{\bf edit} file}{:e {\sl file}}
|
||||
\key{reedit messed up current file}{:e!}
|
||||
\key{edit previous file}{:e\#}
|
||||
\key{{\bf read} in a file}{:r {\sl file}}
|
||||
\key{{\bf read} in the output of a shell command}{:r {\sl !command}}
|
||||
\key{write out specified lines into {\sl file}}{:w {\sl file}}
|
||||
\key{save all modified buffers, ask confirmation}{:W {\sl file}}
|
||||
\key{save all modified buffers, no confirmation}{:WW {\sl file}}
|
||||
\key{write out specified lines at the end of {\sl file}}{:w>> {\sl file}}
|
||||
\key{{\bf write} to the input of a shell command}{:w {\sl !command}}
|
||||
\key{write out and then quit}{:wq {\sl file}}
|
||||
|
||||
\key{run a sub{\bf shell} in a window}{:sh}
|
||||
\key{execute shell command {\sl command}}{:!\ {\sl command}}
|
||||
\key{execute previous shell command with {\it args} appended}{:!! {\sl args}}
|
||||
|
||||
\subsection{Ex Miscellaneous Commands}
|
||||
|
||||
\key{define a macro {\it x} that expands to {\sl cmd}}{:map {\it x} {\sl cmd}}
|
||||
\key{remove macro expansion associated with {\it x}}{:unma {\it x}}
|
||||
\key{define a macro {\it x} that expands to {\sl cmd} in insert state}{:map!\ {\it x} {\sl cmd}}
|
||||
\key{remove macro expansion associated with {\it x} in insert state}{:unma!\ {\it x}}
|
||||
|
||||
\key{print line number}{:.=}
|
||||
\key{print last line number}{:=}
|
||||
\key{print {\bf version} number of Viper}{:ve}
|
||||
|
||||
\key{shift specified lines to the right}{:>}
|
||||
\key{shift specified lines to the left}{:<}
|
||||
|
||||
\key{{\bf join} lines}{:j}
|
||||
\key{mark specified line to register {\it x}}{:k {\it x}}
|
||||
\key{{\bf set} a variable's value}{:se}
|
||||
\key{find first definition of {\bf tag} {\sl tag}}{:ta {\sl tag}}
|
||||
|
||||
\key{Current directory}{:pwd}
|
||||
|
||||
|
||||
\copyrightnotice
|
||||
|
||||
\bye
|
||||
|
||||
% Local variables:
|
||||
% compile-command: "tex viperCard"
|
||||
% End:
|
68
man/back.texi
Normal file
68
man/back.texi
Normal file
|
@ -0,0 +1,68 @@
|
|||
\input rotate
|
||||
|
||||
\font\title=ptmb at20pt
|
||||
\font\body=ptmr at12pt
|
||||
\font\price=ptmr at10pt
|
||||
|
||||
\baselineskip=13pt
|
||||
\parskip=13pt
|
||||
\parindent=0pt
|
||||
|
||||
\nopagenumbers
|
||||
|
||||
\hsize=7in
|
||||
\vsize=9.25in
|
||||
|
||||
\voffset=-1in
|
||||
\hoffset=-1in
|
||||
|
||||
\hbox to7in{%
|
||||
\vbox to9.25in{
|
||||
\hsize=6in
|
||||
\leftskip=.75in
|
||||
\rightskip=.25in
|
||||
|
||||
\vskip2in
|
||||
|
||||
\title
|
||||
\hfil GNU Emacs\hfil
|
||||
|
||||
\body
|
||||
Most of the GNU Emacs text editor is written in the programming
|
||||
language called Emacs Lisp. You can write new code in Emacs Lisp and
|
||||
install it as an extension to the editor. However, Emacs Lisp is more
|
||||
than a mere ``extension language''; it is a full computer programming
|
||||
language in its own right. You can use it as you would any other
|
||||
programming language.
|
||||
|
||||
Because Emacs Lisp is designed for use in an editor, it has special
|
||||
features for scanning and parsing text as well as features for handling
|
||||
files, buffers, displays, subprocesses, and so on. Emacs Lisp is
|
||||
closely integrated with the editing facilities; thus, editing commands
|
||||
are functions that can also conveniently be called from Lisp programs,
|
||||
and parameters for customization are ordinary Lisp variables.
|
||||
|
||||
This manual describes Emacs Lisp. Generally speaking, the earlier
|
||||
chapters describe features of Emacs Lisp that have counterparts in
|
||||
many programming languages, and later chapters describe features that
|
||||
are peculiar to Emacs Lisp or relate specifically to editing.
|
||||
|
||||
\vfil
|
||||
|
||||
\leftskip=0pt
|
||||
\rightskip=0pt
|
||||
|
||||
\parfillskip=0pt\hfil%
|
||||
ISBN-1-882114-04-3
|
||||
|
||||
\vskip.5in
|
||||
}%
|
||||
\setbox0=\vbox to1in{
|
||||
\vfil\hskip.5in
|
||||
{\price FSF $\bullet$ US\$25.00 $\bullet$ Printed in USA}
|
||||
\vskip.5in
|
||||
}%
|
||||
\rotl0%
|
||||
}
|
||||
|
||||
\eject\bye
|
Loading…
Add table
Reference in a new issue