diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 881210aab9a..083f64704ae 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -738,7 +738,7 @@ survive a crash even if @code{fsync} works properly. The @code{write-region-inhibit-fsync} variable controls whether Emacs invokes @code{fsync} after saving a file. The variable's default value is @code{nil} when Emacs is interactive, and @code{t} -when Emacs runs in batch mode. +when Emacs runs in batch mode (@pxref{Initial Options, batch mode}). Emacs never uses @code{fsync} when writing auto-save files, as these files might lose data anyway. @@ -824,6 +824,25 @@ diff-buffer-with-file} command. @xref{Comparing Files}. @cindex file shadows @findex shadow-initialize + You can arrange to keep identical @dfn{shadow} copies of certain +files in more than one place---possibly on different machines. To do +this, first you must set up a @dfn{shadow file group}, which is a set +of identically-named files shared between a list of sites. The file +group is permanent and applies to further Emacs sessions as well as +the current one. Once the group is set up, every time you exit Emacs, +it will copy the file you edited to the other files in its group. You +can also do the copying without exiting Emacs, by typing @w{@kbd{M-x +shadow-copy-files}}. + +@cindex shadow cluster +A @dfn{shadow cluster} is a group of hosts that share directories, so +that copying to or from one of them is sufficient to update the file +on all of them. Each shadow cluster has a name, and specifies the +network address of a primary host (the one we copy files to), and a +regular expression that matches the host names of all the other hosts +in the cluster. You can define a shadow cluster with @w{@kbd{M-x +shadow-define-cluster}}. + @table @kbd @item M-x shadow-initialize Set up file shadowing. @@ -839,32 +858,15 @@ Copy all pending shadow files. Cancel the instruction to shadow some files. @end table -You can arrange to keep identical @dfn{shadow} copies of certain files -in more than one place---possibly on different machines. To do this, -first you must set up a @dfn{shadow file group}, which is a set of -identically-named files shared between a list of sites. The file -group is permanent and applies to further Emacs sessions as well as -the current one. Once the group is set up, every time you exit Emacs, -it will copy the file you edited to the other files in its group. You -can also do the copying without exiting Emacs, by typing @kbd{M-x -shadow-copy-files}. - -To set up a shadow file group, use @kbd{M-x -shadow-define-literal-group} or @kbd{M-x shadow-define-regexp-group}. -See their documentation strings for further information. +To set up a shadow file group, use @w{@kbd{M-x +shadow-define-literal-group}} or @w{@kbd{M-x +shadow-define-regexp-group}}. See their documentation strings for +further information. Before copying a file to its shadows, Emacs asks for confirmation. You can answer ``no'' to bypass copying of this file, this time. If you want to cancel the shadowing permanently for a certain file, use -@kbd{M-x shadow-cancel} to eliminate or change the shadow file group. - -A @dfn{shadow cluster} is a group of hosts that share directories, so -that copying to or from one of them is sufficient to update the file -on all of them. Each shadow cluster has a name, and specifies the -network address of a primary host (the one we copy files to), and a -regular expression that matches the host names of all the other hosts -in the cluster. You can define a shadow cluster with @kbd{M-x -shadow-define-cluster}. +@w{@kbd{M-x shadow-cancel}} to eliminate or change the shadow file group. @node Time Stamps @subsection Updating Time Stamps Automatically diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index b351a741aa5..bb01f10d2cb 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -776,16 +776,16 @@ Search}. @cindex regular expression @cindex regexp - This manual describes regular expression features that users -typically use. @xref{Regular Expressions,,, elisp, The Emacs Lisp -Reference Manual}, for additional features used mainly in Lisp -programs. + This section (and this manual in general) describes regular +expression features that users typically use. @xref{Regular +Expressions,,, elisp, The Emacs Lisp Reference Manual}, for additional +features used mainly in Lisp programs. Regular expressions have a syntax in which a few characters are special constructs and the rest are @dfn{ordinary}. An ordinary character matches that same character and nothing else. The special characters are @samp{$^.*+?[\}. The character @samp{]} is special if -it ends a character alternative (see later). The character @samp{-} +it ends a character alternative (see below). The character @samp{-} is special inside a character alternative. Any other character appearing in a regular expression is ordinary, unless a @samp{\} precedes it. (When you use regular expressions in a Lisp program, @@ -803,11 +803,11 @@ of ``the same string'', rather than an exception.) Any two regular expressions @var{a} and @var{b} can be concatenated. The result is a regular expression which matches a string if @var{a} matches some amount of the beginning of that string and @var{b} -matches the rest of the string. For example, concatenating the -regular expressions @samp{f} and @samp{o} gives the regular expression -@samp{fo}, which matches only the string @samp{fo}. Still trivial. -To do something nontrivial, you need to use one of the special -characters. Here is a list of them. +matches the rest of the string. As a trivial example, concatenating +the regular expressions @samp{f} and @samp{o} gives the regular +expression @samp{fo}, which matches only the string @samp{fo}. To do +something less trivial, you need to use one of the special characters. +Here is a list of them. @table @asis @item @kbd{.}@: @r{(Period)} @@ -1025,13 +1025,13 @@ To record a matched substring for future reference. This last application is not a consequence of the idea of a parenthetical grouping; it is a separate feature that is assigned as a -second meaning to the same @samp{\( @dots{} \)} construct. In practice +second meaning to the same @w{@samp{\( @dots{} \)}} construct. In practice there is usually no conflict between the two meanings; when there is -a conflict, you can use a shy group. +a conflict, you can use a shy group, described below. @item \(?: @dots{} \) @cindex shy group, in regexp -specifies a shy group that does not record the matched substring; +specifies a @dfn{shy group} that does not record the matched substring; you can't refer back to it with @samp{\@var{d}} (see below). This is useful in mechanically combining regular expressions, so that you can add groups for syntactic purposes without interfering with the @@ -1908,7 +1908,7 @@ which Emacs will use this display mode. The variable @code{search-slow-window-lines} controls the number of lines in the window Emacs pops up for displaying the search results; the default is 1 line. Normally, this window will pop up at the bottom of the window -that displays the buffer where you start searching, bit if the value +that displays the buffer where you start searching, but if the value of @code{search-slow-window-lines} is negative, that means to put the window at the top and give it the number of lines that is the absolute -value of that value. +value of @code{search-slow-window-lines}. diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 1a883e0f142..0c17e1e72ef 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -209,6 +209,20 @@ session, it runs the hook @code{edebug-setup-hook}, then sets it to @code{nil}. You can use this to load Edebug specifications associated with a package you are using, but only when you use Edebug. +@cindex edebug, failure to instrument + If Edebug detects a syntax error while instrumenting, it leaves point +at the erroneous code and signals an @code{invalid-read-syntax} error. +@c FIXME? I can't see that it "leaves point at the erroneous code". +Example: + +@example +@error{} Invalid read syntax: "Expected lambda expression" +@end example + + One potential reason for such a failure to instrument is that some +macro definitions are not yet known to Emacs. To work around this, +load the file which defines the function you are about to instrument. + @findex eval-expression @r{(Edebug)} To remove instrumentation from a definition, simply re-evaluate its definition in a way that does not instrument. There are two ways of @@ -216,10 +230,6 @@ evaluating forms that never instrument them: from a file with @code{load}, and from the minibuffer with @code{eval-expression} (@kbd{M-:}). - If Edebug detects a syntax error while instrumenting, it leaves point -at the erroneous code and signals an @code{invalid-read-syntax} error. -@c FIXME? I can't see that it "leaves point at the erroneous code". - @xref{Edebug Eval}, for other evaluation functions available inside of Edebug. diff --git a/etc/PROBLEMS b/etc/PROBLEMS index e7f6c267cbb..dedbf80b353 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -241,12 +241,33 @@ before starting Emacs, or run Emacs as root. ** Emacs crashes when you try to view a file with complex characters. -For example, the etc/HELLO file (as shown by C-h h). -The message "symbol lookup error: /usr/bin/emacs: undefined symbol: OTF_open" -is shown in the terminal from which you launched Emacs. -This problem only happens when you use a graphical display (ie not -with -nw) and compiled Emacs with the "libotf" library for complex -text handling. +One possible reason for this could be a bug in the libotf or the +libm17n-flt/m17n-db libraries Emacs uses for displaying complex +scripts. Make sure you have the latest versions of these libraries +installed. If the problem still persists with the latest released +versions of these libraries, you can try building these libraries from +their CVS repository: + + cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/m17n co libotf + cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/m17n co m17n-db + cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/m17n co m17n-lib + +One known problem that causes such crashes is with using Noto Serif +Kannada fonts. To work around that, force Emacs not to select these +fonts, by adding the following to your ~/.emacs init file: + + (push "Noto Serif Kannada" face-ignored-fonts) + +You can try this interactively in a running Emacs session like this: + + M-: (push "Noto Serif Kannada" face-ignored-fonts) RET + +Another set of problems is caused by an incompatible libotf library. +In this case, displaying the etc/HELLO file (as shown by C-h h) +triggers the following message to be shown in the terminal from which +you launched Emacs: + + symbol lookup error: /usr/bin/emacs: undefined symbol: OTF_open This problem occurs because unfortunately there are two libraries called "libotf". One is the library for handling OpenType fonts, @@ -457,6 +478,21 @@ The solution was to upgrade Semantic to version 2.0pre4 (distributed with CEDET 1.0pre4) or later. Note that Emacs includes Semantic since 23.2, and this issue does not apply to the included version. +*** Display artifacts on GUI frames on X-based systems. + +This is known to be caused by using double-buffering (which is enabled +by default in Emacs 26 and later). The artifacts typically appear +after commands that cause Emacs to scroll the display. + +You can disable double-buffering by evaluating the following form: + + (modify-all-frames-parameters '((inhibit-double-buffering . t))) + +To make this permanent, add it to your ~/.emacs init file. + +Note that disabling double-buffering will cause flickering of the +display in some situations. + *** Self-documentation messages are garbled. This means that the file 'etc/DOC' doesn't properly correspond diff --git a/lisp/subr.el b/lisp/subr.el index e7a0ffc5bea..24bd28839fc 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3032,10 +3032,9 @@ remove properties specified by `yank-excluded-properties'." run-start prop nil end))) (funcall fun value run-start run-end) (setq run-start run-end))))) - (with-silent-modifications - (if (eq yank-excluded-properties t) - (set-text-properties start end nil) - (remove-list-of-text-properties start end yank-excluded-properties))))) + (if (eq yank-excluded-properties t) + (set-text-properties start end nil) + (remove-list-of-text-properties start end yank-excluded-properties)))) (defvar yank-undo-function) diff --git a/lisp/window.el b/lisp/window.el index d7fdceb2058..abd1a68b1f0 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -8452,7 +8452,7 @@ of WINDOW. Optional argument LEFT, if non-nil, means to return values suitable for buffers displaying right to left text." ;; Process lines as returned by ‘window-lines-pixel-dimensions’. - ;; STACK is a stack that contains rows that have to be processed yet. + ;; STACK is a stack that contains rows that have yet to be processed. (let* ((window (window-normalize-window window t)) (disjoint (and (consp count) (cdr count))) (count (or (and (numberp count) count) diff --git a/src/indent.c b/src/indent.c index 1a8bcebddc9..316171e609b 100644 --- a/src/indent.c +++ b/src/indent.c @@ -813,7 +813,7 @@ DEFUN ("indent-to", Findent_to, Sindent_to, 1, 2, "NIndent to column: ", Optional second argument MINIMUM says always do at least MINIMUM spaces even if that goes past COLUMN; by default, MINIMUM is zero. -The return value is COLUMN. */) +The return value is the column where the insertion ends. */) (Lisp_Object column, Lisp_Object minimum) { EMACS_INT mincol;