*** empty log message ***
This commit is contained in:
parent
5632e6b46b
commit
574efc8387
3 changed files with 86 additions and 49 deletions
|
@ -91,18 +91,23 @@ You'll have to write programs specially to use it, though.
|
|||
As a result, certain macros, functions, and predicates no longer handle
|
||||
specifications for floating point numbers.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The function @code{string-to-number}, the predicate @code{floatp}, and
|
||||
the variable @code{float-output-format} have all been eliminated.
|
||||
|
||||
@item
|
||||
The functions @code{float}, @code{truncate}, @code{floor}, @code{ceil},
|
||||
@code{round}, and @code{logb} do not exist; neither do the functions
|
||||
@code{abs}, @code{cos}, @code{sin}, @code{tan}, @code{acos},
|
||||
@code{asin}, @code{atan}, @code{exp}, @code{expt}, @code{log10},
|
||||
@code{log}, or @code{sqrt}.
|
||||
|
||||
@item
|
||||
The @code{format} function no longer handles the specifications
|
||||
@samp{%e}, @samp{%f} and @samp{%g} for printing floating point numbers;
|
||||
likewise for @code{message}.
|
||||
@end bullet
|
||||
|
||||
@section Changes in Basic Editing Functions
|
||||
|
||||
|
@ -169,6 +174,8 @@ We eliminated text properties.
|
|||
Many file-related functions have been eliminated or simplified. Here is
|
||||
a basic listing of these functions.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The functions @code{file-accessible-directory-p}, @code{file-truename},
|
||||
@code{make-directory}, @code{delete-directory},
|
||||
@code{set-visited-file-modtime}, @code{directory-abbrev-alist},
|
||||
|
@ -177,17 +184,22 @@ The functions @code{file-accessible-directory-p}, @code{file-truename},
|
|||
@code{set-default-file-modes}, @code{default-file-modes}, and
|
||||
@code{unix-sync} have been eliminated.
|
||||
|
||||
@item
|
||||
We got rid of the ``initial file name'' argument to
|
||||
@code{read-file-name}.
|
||||
|
||||
@item
|
||||
Additionally, we removed the 12th element from the list returned by
|
||||
@code{file-attributes}.
|
||||
|
||||
@item
|
||||
@code{directory-files} always sorts the list of files. It's not user
|
||||
friendly to process the files in any haphazard order.
|
||||
|
||||
@item
|
||||
We eliminated the variables @code{write-contents-hooks} and
|
||||
@code{local-write-file-hooks}.
|
||||
@end bullet
|
||||
|
||||
@section Making Certain File Names ``Magic''
|
||||
|
||||
|
@ -207,7 +219,7 @@ of creeping featurism.
|
|||
@itemize @bullet
|
||||
@item
|
||||
The functions @code{mouse-position} and @code{set-mouse-position}, and
|
||||
the special form @code{track-mouse} have been eliminated.
|
||||
the special form @code{track-mouse}, have been eliminated.
|
||||
|
||||
@item
|
||||
Likewise, the functions @code{x-set-selection}, @code{x-set-cut-buffer},
|
||||
|
@ -334,7 +346,7 @@ accept strings.
|
|||
We removed the @code{read-event}, @code{event-start},
|
||||
@code{posn-window}, @code{posn-point}, @code{posn-col-row},
|
||||
@code{posn-timestamp}, @code{scroll-bar-scale}, and @code{event-end}
|
||||
functions, since they were only useful for non-character events.
|
||||
functions, since they were useful only for non-character events.
|
||||
|
||||
@item
|
||||
We removed the @code{unread-command-events} and @code{last-event-frame}
|
||||
|
@ -357,29 +369,39 @@ same encoding used in strings: 128 plus the corresponding non-Meta
|
|||
|
||||
@section Menus
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
You can no longer define menus as keymaps; good system design requires
|
||||
crafting a special-purpose interface for each facility, so it can
|
||||
precisely fit the requirements of that facility. We decided that
|
||||
unifying keymaps and menus was simply too much of a strain.
|
||||
|
||||
In Emacs 18, you can only activate menus with the mouse. Using them
|
||||
@item
|
||||
In Emacs 18, you can activate menus only with the mouse. Using them
|
||||
with a keyboard was too confusing for too many users.
|
||||
|
||||
@item
|
||||
Emacs 18 has no menu bars. All functions and variables related to the
|
||||
menu bar have been eliminated.
|
||||
@end bullet
|
||||
|
||||
@section Changes in Minibuffer Features
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The minibuffer history feature has been eliminated. Thus, we removed
|
||||
the optional argument @var{hist} from the minibuffer input functions
|
||||
@code{read-from-minibuffer} and @code{completing-read}.
|
||||
|
||||
@item
|
||||
The @var{initial} argument to @code{read-from-minibuffer} and other
|
||||
minibuffer input functions can no longer be a cons cell
|
||||
@code{(@var{string} . @var{position})}.
|
||||
|
||||
@item
|
||||
In the function @code{read-no-blanks-input}, the @var{initial} argument
|
||||
is no longer optional.
|
||||
@end bullet
|
||||
|
||||
@section New Features for Defining Commands
|
||||
|
||||
|
@ -399,15 +421,20 @@ special meaning.
|
|||
|
||||
@section Removed Features for Reading Input
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
We removed the third argument (@var{meta}) from the function
|
||||
@code{set-input-mode}. Consequently, we added the variable
|
||||
@code{meta-flag}; set it to @code{t} to enable use of a Meta key, and
|
||||
to @code{nil} to disable it. (Those are the only two alternatives.)
|
||||
|
||||
@item
|
||||
We also removed the variable @code{extra-keyboard-modifiers}.
|
||||
|
||||
@item
|
||||
We removed the function @code{keyboard-translate} and the variables
|
||||
@code{num-input-keys} and @code{function-key-map}.
|
||||
@end itemize
|
||||
|
||||
@section Removed Syntax Table Features
|
||||
|
||||
|
@ -427,10 +454,13 @@ We abolished the variable @code{words-include-escapes}.
|
|||
|
||||
@section The Case Table
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Case tables do not exist in Emacs 18. Due to this change, we have
|
||||
removed the associated functions @code{set-standard-case-table},
|
||||
@code{standard-case-table}, @code{current-case-table},
|
||||
@code{set-case-table}, and @code{set-case-syntax-pair}.
|
||||
@end itemize
|
||||
|
||||
@section Features for Dealing with Buffers
|
||||
|
||||
|
@ -480,11 +510,12 @@ is local in the current buffer.
|
|||
|
||||
@section Features for Subprocesses
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@code{call-process} and @code{call-process-region} no longer indicate
|
||||
the termination status of the subprocess. We call on users to have faith
|
||||
that the subprocess executed properly.
|
||||
|
||||
@itemize
|
||||
@item
|
||||
The standard asynchronous subprocess features do not work on VMS;
|
||||
instead, special VMS asynchronous subprocess functions have been added.
|
||||
|
@ -540,11 +571,15 @@ We removed the variable @code{command-debug-status} and the function
|
|||
|
||||
@section Memory Allocation Changes
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
We removed the function @code{memory-limit}.
|
||||
|
||||
@item
|
||||
The list returned by @code{garbage-collect} no longer contains an
|
||||
element to describe floating point numbers, since there aren't any
|
||||
floating point numbers in Emacs 18.
|
||||
@end itemize
|
||||
|
||||
@section Hook Changes
|
||||
|
||||
|
|
|
@ -39,12 +39,12 @@ routines, but not the editing commands.
|
|||
the real runnable Emacs executable. These arguments direct
|
||||
@file{temacs} to evaluate the Lisp files specified in the file
|
||||
@file{loadup.el}. These files set up the normal Emacs editing
|
||||
environment, resulting in an Emacs which is still impure but no longer
|
||||
environment, resulting in an Emacs that is still impure but no longer
|
||||
bare.
|
||||
|
||||
It takes a substantial time to load the standard Lisp files. Luckily,
|
||||
you don't have to do this each time you run Emacs; @file{temacs} can
|
||||
dump out an executable program called @file{emacs} which has these files
|
||||
dump out an executable program called @file{emacs} that has these files
|
||||
preloaded. @file{emacs} starts more quickly because it does not need to
|
||||
load the files. This is the Emacs executable that is normally
|
||||
installed.
|
||||
|
@ -64,7 +64,7 @@ extra time is not too severe a problem.
|
|||
|
||||
@cindex @file{site-load.el}
|
||||
You can specify additional files to preload by writing a library named
|
||||
@file{site-load.el} which loads them. You may need to increase the
|
||||
@file{site-load.el} that loads them. You may need to increase the
|
||||
value of @code{PURESIZE}, in @file{src/puresize.h}, to make room for the
|
||||
additional files. (Try adding increments of 20000 until it is big
|
||||
enough.) However, the advantage of preloading additional files
|
||||
|
@ -134,7 +134,8 @@ which reduces their usefulness at present, but we hope they will be
|
|||
convenient in the future.
|
||||
|
||||
@defvar emacs-major-version
|
||||
The major version number of Emacs, as an integer.
|
||||
The major version number of Emacs, as an integer. For Emacs version
|
||||
19.23, the value is 19.
|
||||
@end defvar
|
||||
|
||||
@defvar emacs-minor-version
|
||||
|
@ -148,14 +149,14 @@ The minor version number of Emacs, as an integer. For Emacs version
|
|||
|
||||
Emacs Lisp uses two kinds of storage for user-created Lisp objects:
|
||||
@dfn{normal storage} and @dfn{pure storage}. Normal storage is where
|
||||
all the new data which is created during an Emacs session is kept; see
|
||||
the following section for information on normal storage. Pure storage
|
||||
is used for certain data in the preloaded standard Lisp files---data
|
||||
that should never change during actual use of Emacs.
|
||||
all the new data created during an Emacs session is kept; see the
|
||||
following section for information on normal storage. Pure storage is
|
||||
used for certain data in the preloaded standard Lisp files---data that
|
||||
should never change during actual use of Emacs.
|
||||
|
||||
Pure storage is allocated only while @file{temacs} is loading the
|
||||
standard preloaded Lisp libraries. In the file @file{emacs}, it is
|
||||
marked as read-only (on operating systems which permit this), so that
|
||||
marked as read-only (on operating systems that permit this), so that
|
||||
the memory space can be shared by all the Emacs jobs running on the
|
||||
machine at once. Pure storage is not expandable; a fixed amount is
|
||||
allocated when Emacs is compiled, and if that is not sufficient for the
|
||||
|
@ -221,26 +222,26 @@ might be a more intuitive metaphor for this facility.)
|
|||
The garbage collector operates by finding and marking all Lisp objects
|
||||
that are still accessible to Lisp programs. To begin with, it assumes
|
||||
all the symbols, their values and associated function definitions, and
|
||||
any data presently on the stack, are accessible. Any objects which can
|
||||
any data presently on the stack, are accessible. Any objects that can
|
||||
be reached indirectly through other accessible objects are also
|
||||
accessible.
|
||||
|
||||
When marking is finished, all objects still unmarked are garbage. No
|
||||
matter what the Lisp program or the user does, it is impossible to refer
|
||||
to them, since there is no longer a way to reach them. Their space
|
||||
might as well be reused, since no one will miss them. The second,
|
||||
``sweep'' phase of the garbage collector arranges to reuse them.
|
||||
might as well be reused, since no one will miss them. The second
|
||||
(``sweep'') phase of the garbage collector arranges to reuse them.
|
||||
|
||||
@cindex free list
|
||||
The sweep phase puts unused cons cells onto a @dfn{free list}
|
||||
for future allocation; likewise for symbols and markers. It compacts
|
||||
the accessible strings so they occupy fewer 8k blocks; then it frees the
|
||||
other 8k blocks. Vectors, buffers, windows and other large objects are
|
||||
other 8k blocks. Vectors, buffers, windows, and other large objects are
|
||||
individually allocated and freed using @code{malloc} and @code{free}.
|
||||
|
||||
@cindex CL note---allocate more storage
|
||||
@quotation
|
||||
@b{Common Lisp note:} unlike other Lisps, GNU Emacs Lisp does not
|
||||
@b{Common Lisp note:} Unlike other Lisps, GNU Emacs Lisp does not
|
||||
call the garbage collector when the free list is empty. Instead, it
|
||||
simply requests the operating system to allocate more storage, and
|
||||
processing continues until @code{gc-cons-threshold} bytes have been
|
||||
|
@ -333,7 +334,7 @@ called.
|
|||
The initial threshold value is 100,000. If you specify a larger
|
||||
value, garbage collection will happen less often. This reduces the
|
||||
amount of time spent garbage collecting, but increases total memory use.
|
||||
You may want to do this when running a program which creates lots of
|
||||
You may want to do this when running a program that creates lots of
|
||||
Lisp data.
|
||||
|
||||
You can make collections more frequent by specifying a smaller value,
|
||||
|
@ -469,11 +470,11 @@ should be a single sentence.
|
|||
name list that every C function must have, followed by ordinary C
|
||||
declarations for the arguments. For a function with a fixed maximum
|
||||
number of arguments, declare a C argument for each Lisp argument, and
|
||||
give them all type @code{Lisp_Object}. If the function has no upper
|
||||
limit on the number of arguments in Lisp, then in C it receives two
|
||||
arguments: the first is the number of Lisp arguments, and the second is
|
||||
the address of a block containing their values. They have types
|
||||
@code{int} and @w{@code{Lisp_Object *}}.
|
||||
give them all type @code{Lisp_Object}. When a Lisp function has no
|
||||
upper limit on the number of arguments, its implementation in C actually
|
||||
receives exactly two arguments: the first is the number of Lisp
|
||||
arguments, and the second is the address of a block containing their
|
||||
values. They have types @code{int} and @w{@code{Lisp_Object *}}.
|
||||
|
||||
Within the function @code{For} itself, note the use of the macros
|
||||
@code{GCPRO1} and @code{UNGCPRO}. @code{GCPRO1} is used to ``protect''
|
||||
|
@ -524,8 +525,8 @@ file, add to it a @code{syms_of_@var{filename}} (e.g.,
|
|||
of these functions are called, and add a call to
|
||||
@code{syms_of_@var{filename}} there.
|
||||
|
||||
This function @code{syms_of_@var{filename}} is also the place to
|
||||
define any C variables which are to be visible as Lisp variables.
|
||||
The function @code{syms_of_@var{filename}} is also the place to define
|
||||
any C variables that are to be visible as Lisp variables.
|
||||
@code{DEFVAR_LISP} makes a C variable of type @code{Lisp_Object} visible
|
||||
in Lisp. @code{DEFVAR_INT} makes a C variable of type @code{int}
|
||||
visible in Lisp with a value that is always an integer.
|
||||
|
@ -643,7 +644,7 @@ Many are accessible indirectly in Lisp programs via Lisp primitives.
|
|||
|
||||
@table @code
|
||||
@item name
|
||||
The buffer name is a string which names the buffer. It is guaranteed to
|
||||
The buffer name is a string that names the buffer. It is guaranteed to
|
||||
be unique. @xref{Buffer Names}.
|
||||
|
||||
@item save_modified
|
||||
|
@ -696,7 +697,7 @@ gap, must check each of these markers and perhaps update it.
|
|||
@xref{Markers}.
|
||||
|
||||
@item backed_up
|
||||
This field is a flag which tells whether a backup file has been made
|
||||
This field is a flag that tells whether a backup file has been made
|
||||
for the visited file of this buffer.
|
||||
|
||||
@item mark
|
||||
|
@ -744,7 +745,7 @@ The frame that this window is on.
|
|||
Non-@code{nil} if this window is a minibuffer window.
|
||||
|
||||
@item buffer
|
||||
The buffer which the window is displaying. This may change often during
|
||||
The buffer that the window is displaying. This may change often during
|
||||
the life of the window.
|
||||
|
||||
@item dedicated
|
||||
|
@ -756,7 +757,7 @@ This is the value of point in the current buffer when this window is
|
|||
selected; when it is not selected, it retains its previous value.
|
||||
|
||||
@item start
|
||||
he position in the buffer which is the first character to be displayed
|
||||
The position in the buffer that is the first character to be displayed
|
||||
in the window.
|
||||
|
||||
@item force_start
|
||||
|
@ -806,7 +807,7 @@ to a window's parent.
|
|||
Parent windows do not display buffers, and play little role in display
|
||||
except to shape their child windows. Emacs Lisp programs usually have
|
||||
no access to the parent windows; they operate on the windows at the
|
||||
leaves of the tree, that actually display buffers.
|
||||
leaves of the tree, which actually display buffers.
|
||||
|
||||
@item hscroll
|
||||
This is the number of columns that the display in the window is scrolled
|
||||
|
@ -869,8 +870,9 @@ A flag, non-@code{nil} if this is really a child process.
|
|||
It is @code{nil} for a network connection.
|
||||
|
||||
@item mark
|
||||
A marker indicating the position of end of last output from this process
|
||||
inserted into the buffer. This is usually the end of the buffer.
|
||||
A marker indicating the position of the end of the last output from this
|
||||
process inserted into the buffer. This is often but not always the end
|
||||
of the buffer.
|
||||
|
||||
@item kill_without_query
|
||||
If this is non-@code{nil}, killing Emacs while this process is still
|
||||
|
|
|
@ -144,10 +144,10 @@ always, @code{forward-line} is more convenient as well as more
|
|||
predictable and robust. @xref{Text Lines}.
|
||||
|
||||
@item
|
||||
Don't use functions that set the mark in your Lisp code (unless you are
|
||||
writing a command to set the mark). The mark is a user-level feature,
|
||||
so it is incorrect to change the mark except to supply a value for the
|
||||
user's benefit. @xref{The Mark}.
|
||||
Don't call functions that set the mark, unless setting the mark is one
|
||||
of the intended features of your program. The mark is a user-level
|
||||
feature, so it is incorrect to change the mark except to supply a value
|
||||
for the user's benefit. @xref{The Mark}.
|
||||
|
||||
In particular, don't use these functions:
|
||||
|
||||
|
@ -228,7 +228,7 @@ Function calls are slow in Emacs Lisp even when a compiled function
|
|||
is calling another compiled function.
|
||||
|
||||
@item
|
||||
Using the primitive list-searching functions @code{memq}, @code{assq} or
|
||||
Using the primitive list-searching functions @code{memq}, @code{assq}, or
|
||||
@code{assoc} is even faster than explicit iteration. It may be worth
|
||||
rearranging a data structure so that one of these primitive search
|
||||
functions can be used.
|
||||
|
@ -273,7 +273,7 @@ the speed. @xref{Inline Functions}.
|
|||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Every command, function or variable intended for users to know about
|
||||
Every command, function, or variable intended for users to know about
|
||||
should have a documentation string.
|
||||
|
||||
@item
|
||||
|
@ -282,12 +282,12 @@ string, and you can save space by using a comment instead.
|
|||
|
||||
@item
|
||||
The first line of the documentation string should consist of one or two
|
||||
complete sentences which stand on their own as a summary. @kbd{M-x
|
||||
complete sentences that stand on their own as a summary. @kbd{M-x
|
||||
apropos} displays just the first line, and if it doesn't stand on its
|
||||
own, the result looks bad. In particular, start the first line with a
|
||||
capital letter and end with a period.
|
||||
|
||||
The documentation string can have additional lines which expand on the
|
||||
The documentation string can have additional lines that expand on the
|
||||
details of how to use the function or variable. The additional lines
|
||||
should be made up of complete sentences also, but they may be filled if
|
||||
that looks good.
|
||||
|
@ -316,7 +316,7 @@ Do not start or end a documentation string with whitespace.
|
|||
|
||||
@item
|
||||
Format the documentation string so that it fits in an Emacs window on an
|
||||
80 column screen. It is a good idea for most lines to be no wider than
|
||||
80-column screen. It is a good idea for most lines to be no wider than
|
||||
60 characters. The first line can be wider if necessary to fit the
|
||||
information that ought to be there.
|
||||
|
||||
|
@ -334,8 +334,8 @@ starting double-quote is not part of the string!
|
|||
@item
|
||||
A variable's documentation string should start with @samp{*} if the
|
||||
variable is one that users would often want to set interactively. If
|
||||
the value is a long list, or a function, or if the variable would only
|
||||
be set in init files, then don't start the documentation string with
|
||||
the value is a long list, or a function, or if the variable would be set
|
||||
only in init files, then don't start the documentation string with
|
||||
@samp{*}. @xref{Defining Variables}.
|
||||
|
||||
@item
|
||||
|
@ -413,7 +413,7 @@ Lisp mode and related modes, the @kbd{M-;} (@code{indent-for-comment})
|
|||
command automatically inserts such a @samp{;} in the right place, or
|
||||
aligns such a comment if it is already present.
|
||||
|
||||
(The following examples are taken from the Emacs sources.)
|
||||
This and following examples are taken from the Emacs sources.
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
|
@ -444,7 +444,7 @@ Every function that has no documentation string (because it is use only
|
|||
internally within the package it belongs to), should have instead a
|
||||
two-semicolon comment right before the function, explaining what the
|
||||
function does and how to call it properly. Explain precisely what each
|
||||
argument means and how the function interprets its possible value.
|
||||
argument means and how the function interprets its possible values.
|
||||
|
||||
@item ;;;
|
||||
Comments that start with three semicolons, @samp{;;;}, should start at
|
||||
|
@ -460,7 +460,7 @@ For example:
|
|||
@end group
|
||||
@end smallexample
|
||||
|
||||
Another use for triple-semicolon comments is for commenting out line
|
||||
Another use for triple-semicolon comments is for commenting out lines
|
||||
within a function. We use triple-semicolons for this precisely so that
|
||||
they remain at the left margin.
|
||||
|
||||
|
@ -485,7 +485,7 @@ program. For example:
|
|||
The indentation commands of the Lisp modes in Emacs, such as @kbd{M-;}
|
||||
(@code{indent-for-comment}) and @key{TAB} (@code{lisp-indent-line})
|
||||
automatically indent comments according to these conventions,
|
||||
depending on the the number of semicolons. @xref{Comments,,
|
||||
depending on the number of semicolons. @xref{Comments,,
|
||||
Manipulating Comments, emacs, The GNU Emacs Manual}.
|
||||
|
||||
@node Library Headers
|
||||
|
@ -512,7 +512,7 @@ them. This section explains these conventions. First, an example:
|
|||
;; Keywords: docs
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
@var{copying conditions}@dots{}
|
||||
@var{copying permissions}@dots{}
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue