Merge from origin/emacs-26
90bea37
; * etc/PROBLEMS: Fix fvwm version number in last commitaf82d1f
* etc/PROBLEMS: Document stickyness problem with FVWM (Bug#31...4a3aed2
Update Emacs Lisp Intro to match current behavior21f2247
Merge branch 'emacs-26' of git.savannah.gnu.org:/srv/git/emac...3257085
Fix previous commit6d23525
Fix typos in several manuals (Bug#31610)9188291
Add detailed documentation about lock filese5471b2
Add commentary for subtle aspect of frame.el Conflicts: doc/lispintro/emacs-lisp-intro.texi
This commit is contained in:
commit
02c7d45d49
12 changed files with 77 additions and 39 deletions
|
@ -769,13 +769,16 @@ file.
|
||||||
|
|
||||||
@findex ask-user-about-lock
|
@findex ask-user-about-lock
|
||||||
@cindex locking files
|
@cindex locking files
|
||||||
|
@cindex .#, lock file names
|
||||||
|
@cindex file locking
|
||||||
When you make the first modification in an Emacs buffer that is
|
When you make the first modification in an Emacs buffer that is
|
||||||
visiting a file, Emacs records that the file is @dfn{locked} by you.
|
visiting a file, Emacs records that the file is @dfn{locked} by you.
|
||||||
(It does this by creating a specially-named symbolic link@footnote{If
|
(It does this by creating a specially-named symbolic link@footnote{If
|
||||||
your file system does not support symbolic links, a regular file is
|
your file system does not support symbolic links, a regular file is
|
||||||
used.} with special contents in the same directory.) Emacs removes the lock
|
used.} with special contents in the same directory. @xref{File
|
||||||
when you save the changes. The idea is that the file is locked
|
Locks,,, elisp} for more details.) Emacs removes the lock when you
|
||||||
whenever an Emacs buffer visiting it has unsaved changes.
|
save the changes. The idea is that the file is locked whenever an
|
||||||
|
Emacs buffer visiting it has unsaved changes.
|
||||||
|
|
||||||
@vindex create-lockfiles
|
@vindex create-lockfiles
|
||||||
You can prevent the creation of lock files by setting the variable
|
You can prevent the creation of lock files by setting the variable
|
||||||
|
|
|
@ -484,7 +484,7 @@ Narrowing and Widening
|
||||||
|
|
||||||
@code{car}, @code{cdr}, @code{cons}: Fundamental Functions
|
@code{car}, @code{cdr}, @code{cons}: Fundamental Functions
|
||||||
|
|
||||||
* Strange Names:: An historical aside: why the strange names?
|
* Strange Names:: A historical aside: why the strange names?
|
||||||
* car & cdr:: Functions for extracting part of a list.
|
* car & cdr:: Functions for extracting part of a list.
|
||||||
* cons:: Constructing a list.
|
* cons:: Constructing a list.
|
||||||
* nthcdr:: Calling @code{cdr} repeatedly.
|
* nthcdr:: Calling @code{cdr} repeatedly.
|
||||||
|
@ -1818,10 +1818,12 @@ You will create a @file{*Backtrace*} buffer that says:
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
Debugger entered--Lisp error: (void-function fill-column)
|
Debugger entered--Lisp error: (void-function fill-column)
|
||||||
(fill-column)
|
(fill-column)
|
||||||
eval((fill-column))
|
eval((fill-column) nil)
|
||||||
eval-last-sexp-1(nil)
|
elisp--eval-last-sexp(nil)
|
||||||
eval-last-sexp(nil)
|
eval-last-sexp(nil)
|
||||||
call-interactively(eval-last-sexp)
|
funcall-interactively(eval-last-sexp nil)
|
||||||
|
call-interactively(eval-last-sexp nil nil)
|
||||||
|
command-execute(eval-last-sexp)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -1868,9 +1870,11 @@ says:
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
Debugger entered--Lisp error: (void-variable +)
|
Debugger entered--Lisp error: (void-variable +)
|
||||||
eval(+)
|
eval(+)
|
||||||
eval-last-sexp-1(nil)
|
elisp--eval-last-sexp(nil)
|
||||||
eval-last-sexp(nil)
|
eval-last-sexp(nil)
|
||||||
call-interactively(eval-last-sexp)
|
funcall-interactively(eval-last-sexp nil)
|
||||||
|
call-interactively(eval-last-sexp nil nil)
|
||||||
|
command-execute(eval-last-sexp)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -2137,10 +2141,12 @@ You will create and enter a @file{*Backtrace*} buffer that says:
|
||||||
Debugger entered--Lisp error:
|
Debugger entered--Lisp error:
|
||||||
(wrong-type-argument number-or-marker-p hello)
|
(wrong-type-argument number-or-marker-p hello)
|
||||||
+(2 hello)
|
+(2 hello)
|
||||||
eval((+ 2 'hello))
|
eval((+ 2 'hello) nil)
|
||||||
eval-last-sexp-1(nil)
|
elisp--eval-last-sexp(t)
|
||||||
eval-last-sexp(nil)
|
eval-last-sexp(nil)
|
||||||
call-interactively(eval-last-sexp)
|
funcall-interactively(eval-print-last-sexp nil)
|
||||||
|
call-interactively(eval-print-last-sexp nil nil)
|
||||||
|
command-execute(eval-print-last-sexp)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -6797,7 +6803,7 @@ will see @code{cons} as well as two variants on @code{cdr},
|
||||||
namely, @code{setcdr} and @code{nthcdr}. (@xref{copy-region-as-kill}.)
|
namely, @code{setcdr} and @code{nthcdr}. (@xref{copy-region-as-kill}.)
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Strange Names:: An historical aside: why the strange names?
|
* Strange Names:: A historical aside: why the strange names?
|
||||||
* car & cdr:: Functions for extracting part of a list.
|
* car & cdr:: Functions for extracting part of a list.
|
||||||
* cons:: Constructing a list.
|
* cons:: Constructing a list.
|
||||||
* nthcdr:: Calling @code{cdr} repeatedly.
|
* nthcdr:: Calling @code{cdr} repeatedly.
|
||||||
|
@ -7678,7 +7684,7 @@ The first part of the code looks like this:
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
@code{char-table-p} is an hitherto unseen function. It determines
|
@code{char-table-p} is a hitherto unseen function. It determines
|
||||||
whether its argument is a character table. When it is, it sets the
|
whether its argument is a character table. When it is, it sets the
|
||||||
character passed to @code{zap-to-char} to one of them, if that
|
character passed to @code{zap-to-char} to one of them, if that
|
||||||
character exists, or to the character itself. (This becomes important
|
character exists, or to the character itself. (This becomes important
|
||||||
|
@ -18104,10 +18110,11 @@ Debugger entered--Lisp error: (void-function 1=)
|
||||||
triangle-bugged(4)
|
triangle-bugged(4)
|
||||||
@end group
|
@end group
|
||||||
@group
|
@group
|
||||||
eval((triangle-bugged 4))
|
eval((triangle-bugged 4) nil)
|
||||||
eval-last-sexp-1(nil)
|
eval-expression((triangle-bugged 4) nil nil 127)
|
||||||
eval-last-sexp(nil)
|
funcall-interactively(eval-expression (triangle-bugged 4) nil nil 127)
|
||||||
call-interactively(eval-last-sexp)
|
call-interactively(eval-expression nil nil)
|
||||||
|
command-execute(eval-expression)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -18221,12 +18228,13 @@ function:
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
Debugger entered--entering a function:
|
Debugger entered--entering a function:
|
||||||
* triangle-bugged(5)
|
* triangle-bugged(5)
|
||||||
eval((triangle-bugged 5))
|
eval((triangle-bugged 5) nil)
|
||||||
@end group
|
@end group
|
||||||
@group
|
@group
|
||||||
eval-last-sexp-1(nil)
|
eval-expression((triangle-bugged 5) nil nil 127)
|
||||||
eval-last-sexp(nil)
|
funcall-interactively(eval-expression (triangle-bugged 5) nil nil 127)
|
||||||
call-interactively(eval-last-sexp)
|
call-interactively(eval-expression nil nil)
|
||||||
|
command-execute(eval-expression)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -18245,9 +18253,11 @@ Debugger entered--beginning evaluation of function call form:
|
||||||
eval((triangle-bugged 5))
|
eval((triangle-bugged 5))
|
||||||
@end group
|
@end group
|
||||||
@group
|
@group
|
||||||
eval-last-sexp-1(nil)
|
eval((triangle-bugged 5) nil)
|
||||||
eval-last-sexp(nil)
|
eval-expression((triangle-bugged 5) nil nil 127)
|
||||||
call-interactively(eval-last-sexp)
|
funcall-interactively(eval-expression (triangle-bugged 5) nil nil 127)
|
||||||
|
call-interactively(eval-expression nil nil)
|
||||||
|
command-execute(eval-expression)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
@ -18272,12 +18282,13 @@ Debugger entered--beginning evaluation of function call form:
|
||||||
* (let ((total 0)) (while (> number 0) (setq total ...)
|
* (let ((total 0)) (while (> number 0) (setq total ...)
|
||||||
(setq number ...)) total)
|
(setq number ...)) total)
|
||||||
* triangle-bugged(5)
|
* triangle-bugged(5)
|
||||||
eval((triangle-bugged 5))
|
eval((triangle-bugged 5) nil)
|
||||||
@group
|
@group
|
||||||
@end group
|
@end group
|
||||||
eval-last-sexp-1(nil)
|
eval-expression((triangle-bugged 5) nil nil 127)
|
||||||
eval-last-sexp(nil)
|
funcall-interactively(eval-expression (triangle-bugged 5) nil nil 127)
|
||||||
call-interactively(eval-last-sexp)
|
call-interactively(eval-expression nil nil)
|
||||||
|
command-execute(eval-expression)
|
||||||
---------- Buffer: *Backtrace* ----------
|
---------- Buffer: *Backtrace* ----------
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
|
@ -1048,7 +1048,7 @@ commands operate as if that portion did not exist, allowing a single
|
||||||
@code{next-line} command to skip any number of hidden lines.
|
@code{next-line} command to skip any number of hidden lines.
|
||||||
However, character movement commands (such as @code{forward-char}) do
|
However, character movement commands (such as @code{forward-char}) do
|
||||||
not skip the hidden portion, and it is possible (if tricky) to insert
|
not skip the hidden portion, and it is possible (if tricky) to insert
|
||||||
or delete text in an hidden portion.
|
or delete text in a hidden portion.
|
||||||
|
|
||||||
In the examples below, we show the @emph{display appearance} of the
|
In the examples below, we show the @emph{display appearance} of the
|
||||||
buffer @code{foo}, which changes with the value of
|
buffer @code{foo}, which changes with the value of
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
by concept. The list includes each symbol's message and a cross reference
|
by concept. The list includes each symbol's message and a cross reference
|
||||||
to a description of how the error can occur.
|
to a description of how the error can occur.
|
||||||
|
|
||||||
Each error symbol has an set of parent error conditions that is a
|
Each error symbol has a set of parent error conditions that is a
|
||||||
list of symbols. Normally this list includes the error symbol itself
|
list of symbols. Normally this list includes the error symbol itself
|
||||||
and the symbol @code{error}. Occasionally it includes additional
|
and the symbol @code{error}. Occasionally it includes additional
|
||||||
symbols, which are intermediate classifications, narrower than
|
symbols, which are intermediate classifications, narrower than
|
||||||
|
|
|
@ -712,6 +712,7 @@ with-temp-buffer,, The Current Buffer}.
|
||||||
@section File Locks
|
@section File Locks
|
||||||
@cindex file locks
|
@cindex file locks
|
||||||
@cindex lock file
|
@cindex lock file
|
||||||
|
@cindex .#, lock file names
|
||||||
|
|
||||||
When two users edit the same file at the same time, they are likely
|
When two users edit the same file at the same time, they are likely
|
||||||
to interfere with each other. Emacs tries to prevent this situation
|
to interfere with each other. Emacs tries to prevent this situation
|
||||||
|
@ -720,8 +721,17 @@ modified.
|
||||||
Emacs can then detect the first attempt to modify a buffer visiting a
|
Emacs can then detect the first attempt to modify a buffer visiting a
|
||||||
file that is locked by another Emacs job, and ask the user what to do.
|
file that is locked by another Emacs job, and ask the user what to do.
|
||||||
The file lock is really a file, a symbolic link with a special name,
|
The file lock is really a file, a symbolic link with a special name,
|
||||||
stored in the same directory as the file you are editing. (On file
|
stored in the same directory as the file you are editing. The name is
|
||||||
systems that do not support symbolic links, a regular file is used.)
|
constructed by prepending @file{.#} to the filename of the buffer.
|
||||||
|
The target of the symbolic link will be of the form
|
||||||
|
@code{@var{user}@@@var{host}.@var{pid}:@var{boot}}, where @var{user}
|
||||||
|
is replaced with the current username (from @code{user-login-name}),
|
||||||
|
@var{host} with the name of the host where Emacs is running (from
|
||||||
|
@code{system-name}), @var{pid} with Emacs's process id, and @var{boot}
|
||||||
|
with the time since the last reboot. @code{:@var{boot}} is omitted if
|
||||||
|
the boot time is unavailable. (On file systems that do not support
|
||||||
|
symbolic links, a regular file is used instead, with contents of the
|
||||||
|
form @code{@var{user}@@@var{host}.@var{pid}:@var{boot}}.)
|
||||||
|
|
||||||
When you access files using NFS, there may be a small probability that
|
When you access files using NFS, there may be a small probability that
|
||||||
you and another user will both lock the same file simultaneously.
|
you and another user will both lock the same file simultaneously.
|
||||||
|
|
|
@ -214,7 +214,7 @@ have been omitted.)
|
||||||
@cindex skeleton language
|
@cindex skeleton language
|
||||||
|
|
||||||
@findex skeleton-insert
|
@findex skeleton-insert
|
||||||
Skeletons are an shorthand extension to the Lisp language, where various
|
Skeletons are a shorthand extension to the Lisp language, where various
|
||||||
atoms directly perform either actions on the current buffer or rudimentary
|
atoms directly perform either actions on the current buffer or rudimentary
|
||||||
flow control mechanisms. Skeletons are interpreted by the function
|
flow control mechanisms. Skeletons are interpreted by the function
|
||||||
@code{skeleton-insert}.
|
@code{skeleton-insert}.
|
||||||
|
|
|
@ -5134,7 +5134,7 @@ that Org can parse this line correctly:
|
||||||
|
|
||||||
In this example, @samp{GTD} is the @emph{group tag} and it is related to two
|
In this example, @samp{GTD} is the @emph{group tag} and it is related to two
|
||||||
other tags: @samp{Control}, @samp{Persp}. Defining @samp{Control} and
|
other tags: @samp{Control}, @samp{Persp}. Defining @samp{Control} and
|
||||||
@samp{Persp} as group tags creates an hierarchy of tags:
|
@samp{Persp} as group tags creates a hierarchy of tags:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
#+TAGS: [ Control : Context Task ]
|
#+TAGS: [ Control : Context Task ]
|
||||||
|
@ -11178,7 +11178,7 @@ Org exports text in this block only when using ASCII back-end.
|
||||||
@cindex horizontal rules, in ASCII export
|
@cindex horizontal rules, in ASCII export
|
||||||
|
|
||||||
ASCII back-end recognizes only one attribute, @code{:width}, which specifies
|
ASCII back-end recognizes only one attribute, @code{:width}, which specifies
|
||||||
the width of an horizontal rule in number of characters. The keyword and
|
the width of a horizontal rule in number of characters. The keyword and
|
||||||
syntax for specifying widths is:
|
syntax for specifying widths is:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
|
|
@ -4330,7 +4330,7 @@ Same as @code{tabstop}, but affects all buffers.
|
||||||
@cindex auto fill
|
@cindex auto fill
|
||||||
@cindex word wrap
|
@cindex word wrap
|
||||||
wrapmargin: In append mode Vi automatically
|
wrapmargin: In append mode Vi automatically
|
||||||
puts a <lf> whenever there is a <sp> or <ht>
|
puts an <lf> whenever there is an <sp> or <ht>
|
||||||
within <wm> columns from the right margin.
|
within <wm> columns from the right margin.
|
||||||
@item wrapscan
|
@item wrapscan
|
||||||
@itemx ws
|
@itemx ws
|
||||||
|
|
|
@ -1937,7 +1937,7 @@ rule:
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Set the @code{reparse-symbol} property of the expanded tag to
|
Set the @code{reparse-symbol} property of the expanded tag to
|
||||||
@samp{rule}. A important consequence is that:
|
@samp{rule}. An important consequence is that:
|
||||||
|
|
||||||
@strong{Every nonterminal having any rule that calls @code{EXPANDTAG}
|
@strong{Every nonterminal having any rule that calls @code{EXPANDTAG}
|
||||||
in a semantic action, should be declared as a start symbol!}
|
in a semantic action, should be declared as a start symbol!}
|
||||||
|
|
|
@ -1271,6 +1271,14 @@ do not know what. If it is an Emacs bug, we hope someone can
|
||||||
explain what the bug is so we can fix it. In the mean time, removing
|
explain what the bug is so we can fix it. In the mean time, removing
|
||||||
the resource prevents the problem.
|
the resource prevents the problem.
|
||||||
|
|
||||||
|
*** FVWM: Some versions of FVWM incorrectly set the 'sticky' frame parameter.
|
||||||
|
|
||||||
|
Version 2.6.4 of the FVWM can make a frame sticky (appear on all user
|
||||||
|
desktops) when setting the 'sticky' frame parameter to nil. This may
|
||||||
|
happen without any special user interaction, for example, when Emacs
|
||||||
|
restores a saved desktop. A fix is to install version 2.6.8 of FVWM,
|
||||||
|
see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31650.
|
||||||
|
|
||||||
** General X problems
|
** General X problems
|
||||||
|
|
||||||
*** Redisplay using X is much slower than previous Emacs versions.
|
*** Redisplay using X is much slower than previous Emacs versions.
|
||||||
|
|
|
@ -2463,6 +2463,9 @@ See also `toggle-frame-maximized'."
|
||||||
;; F5 then produces the correct effect, the variable doesn't need
|
;; F5 then produces the correct effect, the variable doesn't need
|
||||||
;; to be in this list; otherwise, it does.
|
;; to be in this list; otherwise, it does.
|
||||||
(mapc (lambda (var)
|
(mapc (lambda (var)
|
||||||
|
;; Using symbol-function here tells the watcher machinery to
|
||||||
|
;; call the C function set-buffer-redisplay directly, thus
|
||||||
|
;; avoiding a potential GC.
|
||||||
(add-variable-watcher var (symbol-function 'set-buffer-redisplay)))
|
(add-variable-watcher var (symbol-function 'set-buffer-redisplay)))
|
||||||
'(line-spacing
|
'(line-spacing
|
||||||
overline-margin
|
overline-margin
|
||||||
|
|
|
@ -849,7 +849,10 @@ syms_of_filelock (void)
|
||||||
Vtemporary_file_directory = Qnil;
|
Vtemporary_file_directory = Qnil;
|
||||||
|
|
||||||
DEFVAR_BOOL ("create-lockfiles", create_lockfiles,
|
DEFVAR_BOOL ("create-lockfiles", create_lockfiles,
|
||||||
doc: /* Non-nil means use lockfiles to avoid editing collisions. */);
|
doc: /* Non-nil means use lockfiles to avoid editing collisions.
|
||||||
|
The name of the (per-buffer) lockfile is constructed by prepending a
|
||||||
|
'.#' to the name of the file being locked. See also `lock-buffer' and
|
||||||
|
Info node `(emacs)Interlocking'. */);
|
||||||
create_lockfiles = 1;
|
create_lockfiles = 1;
|
||||||
|
|
||||||
defsubr (&Sunlock_buffer);
|
defsubr (&Sunlock_buffer);
|
||||||
|
|
Loading…
Add table
Reference in a new issue