Merge remote-tracking branch 'savannah/master' into HEAD

This commit is contained in:
Andrea Corallo 2020-10-10 11:00:35 +02:00
commit f7e7ff4fb1
107 changed files with 1076 additions and 639 deletions

View file

@ -3528,7 +3528,7 @@
Port to Solaris 8.
Without this change, 'configure' fails because the recently-added
wait3 prototype in config.h messes up later 'configure' tests.
Fix this problem by droping wait3 and WRETCODE, as they're
Fix this problem by dropping wait3 and WRETCODE, as they're
no longer needed on hosts that are current porting targets.
* configure.ac (wait3, WRETCODE): Remove, fixing a FIXME.
All uses changed to waitpid and WEXITSTATUS.

View file

@ -315,7 +315,7 @@
* lisp/net/gnutls.el (gnutls-trustfiles): Update the names of the
systems in the comments. Reported by Richard Stallman <rms@gnu.org>
in
https://lists.gnu.org/archive/html/emacs-devel/2020-07/msg00455.html.
https://lists.gnu.org/r/emacs-devel/2020-07/msg00455.html.
2020-07-17 Eli Zaretskii <eliz@gnu.org>
@ -611,8 +611,8 @@
of 2019-10-13T15:36:02Z!contovob@tcd.ie.
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-10/msg00550.html
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00473.html
https://lists.gnu.org/r/emacs-devel/2019-10/msg00550.html
https://lists.gnu.org/r/emacs-devel/2020-06/msg00473.html
* doc/lispref/nonascii.texi (Specifying Coding Systems): Use more
specific cross-reference to progn even if info.el displays it
@ -727,8 +727,8 @@
Minor improvements to EDE and EIEIO manuals
For discussion, see the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00630.html
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00099.html
https://lists.gnu.org/r/emacs-devel/2020-05/msg00630.html
https://lists.gnu.org/r/emacs-devel/2020-06/msg00099.html
* doc/misc/ede.texi (ede-generic-project): Clean up example.
* doc/misc/eieio.texi (Accessing Slots): Document slot-value as a
@ -1573,7 +1573,7 @@
* etc/NEWS: Rearrange image sections.
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg01315.html
https://lists.gnu.org/r/emacs-devel/2020-04/msg01315.html
2020-04-22 Paul Eggert <eggert@cs.ucla.edu>
@ -1616,7 +1616,7 @@
* doc/emacs/files.texi (Image Mode): Mention image-auto-resize and
image-auto-resize-on-window-resize.
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg01160.html
https://lists.gnu.org/r/emacs-devel/2020-04/msg01160.html
2020-04-21 Juri Linkov <juri@linkov.net>
@ -1944,7 +1944,7 @@
These changes fix actual or latent bugs in regexps that match
file names, such as PATTERN arguments to 'directory-files'. See
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00265.html
https://lists.gnu.org/r/emacs-devel/2020-04/msg00265.html
* admin/authors.el (authors-obsolete-files-regexps)
(authors-renamed-files-regexps):
@ -2036,7 +2036,7 @@
Clarify documentation on inhibit-modification-hooks intended usage
Cf. bug#40332 and the discussion at
https://lists.gnu.org/archive/html/emacs-devel/2020-03/msg00921.html
https://lists.gnu.org/r/emacs-devel/2020-03/msg00921.html
* doc/lispref/text.texi (Change Hooks):
* src/insdel.c (syms_of_insdel): Clarify the intended usage of
@ -2173,9 +2173,9 @@
LENGTH (i). This happens when delete_interval is called from
set_intervals_multibyte_1, because the caller zeroes out the
total_length field of the interval to be deleted. See
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00131.html
https://lists.gnu.org/r/emacs-devel/2020-04/msg00131.html
for more details. See also a related old discussion at
https://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00399.html.
https://lists.gnu.org/r/emacs-devel/2012-07/msg00399.html.
2020-04-08 Eli Zaretskii <eliz@gnu.org>
@ -2212,7 +2212,7 @@
like GNOME shell that use invisible outer frame borders.
For further information see the thread starting with
https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00343.html
https://lists.gnu.org/r/emacs-devel/2020-01/msg00343.html
* src/frame.c (syms_of_frame): New symbol Qxg_frame_set_char_size_4.
* src/gtkutil.c (xg_frame_set_char_size): Hide child frame
@ -2771,7 +2771,7 @@
and will be *the* mailing list for discussions and announcements about
ERC going forward. The other two lists, erc-announce and erc-commit,
are now retired. For more details, see the announcement at
<https://lists.gnu.org/archive/html/emacs-erc/2020-03/msg00001.html>.
<https://lists.gnu.org/r/emacs-erc/2020-03/msg00001.html>.
2020-03-06 Roland Winkler <winkler@gnu.org>
@ -5120,7 +5120,7 @@
* lisp/progmodes/xref.el (xref--find-buffer-visiting):
Speed up by using get-file-buffer.
(xref--collect-matches): Remove the condition on remote-id.
(https://lists.gnu.org/archive/html/emacs-devel/2019-12/msg00753.html)
(https://lists.gnu.org/r/emacs-devel/2019-12/msg00753.html)
2019-12-27 Dmitry Gutov <dgutov@yandex.ru>
@ -5634,7 +5634,7 @@
Speed up vc-dir-update
* lisp/vc/vc-dir.el (vc-dir-update): Speed up.
(https://lists.gnu.org/archive/html/emacs-devel/2019-12/msg00568.html)
(https://lists.gnu.org/r/emacs-devel/2019-12/msg00568.html)
2019-12-20 Alan Mackenzie <acm@muc.de>
@ -6779,7 +6779,7 @@
frame-monitor-workarea (and display-monitor-attributes-list).
For details on why some GTK menus were empty please see thread
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01061.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg01061.html
* src/gtkutil.c (menubar_map_cb, xg_update_frame_menubar): Scale up
req.height so that the menu bar's height is in device pixels as
@ -6900,7 +6900,7 @@
so in case of the active minibuffer, calling minibuffer-message will allow
sit-for to wait the complete timeout, because discard-input will discard
all initial events that prevent sit-for from waiting during startup.
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg00581.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg00581.html
2019-11-30 Alan Mackenzie <acm@muc.de>
@ -6939,7 +6939,7 @@
Use run-with-idle-timer instead of debounce for responsive image scaling.
* lisp/emacs-lisp/timer.el (debounce, debounce-reduce): Revert macro addition.
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01133.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg01133.html
* lisp/image.el (image-increase-size, image-decrease-size):
Use run-with-idle-timer.
@ -8251,7 +8251,7 @@
(do-after-load-evaluation): Replace run-with-timer with run-with-idle-timer
to give a chance for the minibuffer to handle initial events before sit-for.
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg00581.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg00581.html
2019-11-17 Juri Linkov <juri@linkov.net>
@ -8342,7 +8342,7 @@
* lisp/simple.el (eval-expression-print-maximum-character): Use choice type.
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg00433.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg00433.html
2019-11-16 Juri Linkov <juri@linkov.net>
@ -8589,7 +8589,7 @@
changing point-min. It wasn't necessary for vertical-motion to
work, and it had some adverse effects on how font-lock rules were
applied
(https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg00522.html).
(https://lists.gnu.org/r/emacs-devel/2019-11/msg00522.html).
This can also be an alternative fix for bug#38049.
2019-11-14 Alan Mackenzie <acm@muc.de>
@ -9194,7 +9194,7 @@
Use read-char-from-minibuffer instead of read-char-choice.
Remove special handling of original window scrolling
that is now supported in the minibuffer. This fixes
https://lists.gnu.org/archive/html/emacs-devel/2019-10/msg01020.html
https://lists.gnu.org/r/emacs-devel/2019-10/msg01020.html
(files--ask-user-about-large-file): Use read-char-from-minibuffer
instead of read-char-choice.
@ -9585,7 +9585,7 @@
Call vc-file-clearprops on new file too for the case when
old and new files were renamed to each other back and forth.
https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg00069.html
https://lists.gnu.org/r/emacs-devel/2019-11/msg00069.html
2019-11-06 Juri Linkov <juri@linkov.net>
@ -11092,7 +11092,7 @@
(tab-line-mode--turn-on): New function.
(tab-line-exclude-modes): New defcustom.
(tab-line-exclude): New buffer-local variable.
https://lists.gnu.org/archive/html/emacs-devel/2019-10/msg00988.html
https://lists.gnu.org/r/emacs-devel/2019-10/msg00988.html
* lisp/dired.el (dired-mark-pop-up): Set tab-line-exclude to nil.
Don't set tab-line-format. (Bug#37699)
@ -15340,7 +15340,7 @@
Implementation for VC projects that uses 'git ls-files' or 'hg
status --all' for listing. With gratitude to Tassilo Horn who has
done most of the legwork and wrote the first version of the code
(https://lists.gnu.org/archive/html/emacs-devel/2019-10/msg00069.html).
(https://lists.gnu.org/r/emacs-devel/2019-10/msg00069.html).
(project--vc-list-files): New function, to be used by the above.
(project--find-regexp-in-files):
Silence warnings about nonexistent files.
@ -17981,7 +17981,7 @@
'query-replace-regexp undo: Update next-replacement after undo'
(30c4f35a6fc8a6507930923766c3126ac1c2063f)
See https://lists.gnu.org/archive/html/emacs-devel/2019-09/msg00364.html
See https://lists.gnu.org/r/emacs-devel/2019-09/msg00364.html
* lisp/replace.el(perform-replace): Rename variable
to next-replacement-replaced.
@ -19170,7 +19170,7 @@
* lisp/net/nsm.el (nsm-protocol-check--renegotiation-info-ext): Don't
check when using TLS1.3, renegotiation has been removed from TLS.
Reported in
<https://lists.gnu.org/archive/html/help-gnu-emacs/2019-09/msg00005.html>
<https://lists.gnu.org/r/help-gnu-emacs/2019-09/msg00005.html>
2019-09-04 Paul Eggert <eggert@cs.ucla.edu>
@ -19320,7 +19320,7 @@
Avoid macros in pdumper.c when its easy
Problem with DUMP_SET_REFERRER mentioned by Pip Cet at end of:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00548.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00548.html
* src/pdumper.c (DANGEROUS, EMACS_RELOC_TYPE_BITS)
(EMACS_RELOC_LENGTH_BITS, DUMP_RELOC_TYPE_BITS)
(DUMP_RELOC_ALIGNMENT_BITS, DUMP_RELOC_OFFSET_BITS)
@ -21681,7 +21681,7 @@
method. Set up any user-defined fringe bitmaps in addition to
the standard bitmaps.
Suggested by Liam Quinlan <liamkquinlan@gmail.com> in
https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00259.html.
https://lists.gnu.org/r/emacs-devel/2019-08/msg00259.html.
(w32_reset_fringes) [HAVE_NTGUI]: Do nothing if the frame's
redisplay_interface doesn't implement the
@ -22067,7 +22067,7 @@
Suggested by Oleh Krehel and implemented by Basil Contovounesios in
the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00547.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00547.html
* lisp/array.el (xor): Move unused function from here...
* lisp/subr.el: ...to here, and improve.
@ -22947,7 +22947,7 @@
Make gravatar.el more configurable
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00528.html
* etc/NEWS: Announce changes in gravatar.el user options.
@ -22973,7 +22973,7 @@
Fix some minor gravatar.el issues
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00528.html
* lisp/image/gravatar.el (gravatar-hash): Trim leading and trailing
whitespace in given address, as per the Gravatar docs.
(gravatar-retrieve-synchronously): Silence call to
@ -22986,7 +22986,7 @@
DRY in gravatar.el
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00528.html
* lisp/image/gravatar.el (gravatar-data->image): Remove.
(gravatar-retrieve, gravatar-retrieve-synchronously): Reuse
url-fetch-from-cache and gravatar-retrieved to reduce duplication.
@ -22999,7 +22999,7 @@
Use lexical-binding for Gravatar support
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00528.html
* lisp/gnus/gnus-gravatar.el: Use lexical-binding. Link custom
group 'gnus-gravatar' to 'gravatar'.
(gnus-gravatar-size, gnus-gravatar-too-ugly): Doc fix.
@ -23177,7 +23177,7 @@
Fix property stripping in image-file-yank-handler
Fix proposed by Martin Rudalics <rudalics@gmx.at> in:
https://lists.gnu.org/archive/html/emacs-devel/2008-12/msg00945.html
https://lists.gnu.org/r/emacs-devel/2008-12/msg00945.html
* lisp/image-file.el (image-file-yank-handler): Handle case when
yank-excluded-properties is t.
@ -28310,7 +28310,7 @@
This changeset also rearranges native image transform code
for other platforms to make it cleaner, and also removes
the support for native cropping. For the discussions, see
https://lists.gnu.org/archive/html/emacs-devel/2019-06/msg00242.html
https://lists.gnu.org/r/emacs-devel/2019-06/msg00242.html
* src/w32term.c (w32_image_rotations_p, transform): New functions.
(w32_draw_image_foreground): If image rotation is requested
@ -28832,8 +28832,8 @@
Remove gnus-bug from report-emacs-bug TODO entry
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg01196.html
https://lists.gnu.org/archive/html/emacs-devel/2019-06/msg00967.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg01196.html
https://lists.gnu.org/r/emacs-devel/2019-06/msg00967.html
* etc/TODO: Remove gnus-bug from list of obsolete bug-reporting
commands now that it is implemented in terms of report-emacs-bug.
@ -35048,7 +35048,7 @@
Fix url-copy-file argument handling
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00500.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00500.html
* lisp/url/url-handlers.el: Update autoloaded docstrings.
Quote function symbols as such.
(url-handler-regexp): Make grouping construct shy.
@ -35208,7 +35208,7 @@
Use lexical-binding in tempo.el and add tests
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00395.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00395.html
* lisp/tempo.el: Use lexical-binding.
(tempo-define-template): Expand documentation to mention
`tempo-user-elements'.
@ -35265,8 +35265,8 @@
Improve C and Elisp Git diff hunk headers
For discussion, see the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00457.html
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00369.html
https://lists.gnu.org/r/emacs-devel/2019-03/msg00457.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00369.html
* autogen.sh: Extend the built-in Git xfuncname pattern 'cpp' to
match preprocessor and DEFUN macros, and the 'elisp' pattern to
@ -35278,7 +35278,7 @@
Thanks to Basil L. Contovounesios for additional cleanups.
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00177.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00177.html
* lisp/delim-col.el: Use lexical-binding.
@ -35798,8 +35798,8 @@
Remove XEmacs audio checks from mm-decode.el
For discussion, see the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg01087.html
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00584.html
https://lists.gnu.org/r/emacs-devel/2019-03/msg01087.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00584.html
* lisp/gnus/mm-decode.el (mm-inline-media-tests): Remove no-op media
tests for XEmacs features.
@ -36178,7 +36178,7 @@
Add docstring to project--read-file-cpd-relative
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00460.html
https://lists.gnu.org/r/emacs-devel/2019-05/msg00460.html
* lisp/progmodes/project.el (project--read-file-cpd-relative):
Describe arglist as promised by user option
project-read-file-name-function.
@ -36457,7 +36457,7 @@
Allow customizing the display of project file names when reading
To hopefully resolve a long-running discussion
(https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00162.html).
(https://lists.gnu.org/r/emacs-devel/2019-05/msg00162.html).
* lisp/progmodes/project.el (project-read-file-name-function):
New variable.
@ -37629,7 +37629,7 @@
* lisp/progmodes/xref.el (xref--read-identifier): Abort on empty
input if there is no default
(https://lists.gnu.org/archive/html/help-gnu-emacs/2019-05/msg00012.html).
(https://lists.gnu.org/r/help-gnu-emacs/2019-05/msg00012.html).
2019-05-02 Alan Mackenzie <acm@muc.de>
@ -38137,7 +38137,7 @@
This should not be necessary, and is merely a precaution. For
background, see:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00639.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg00639.html
* src/frame.c:
* src/xdisp.c: Check for existence of terminal hooks before use.
@ -39037,7 +39037,7 @@
Improve pure and side-effect-free docs
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg00316.html
* doc/lispref/customize.texi (Composite Types): Do not overspecify
:match-alternatives predicates.
* doc/lispref/eval.texi (Intro Eval): Anchor definition of "side
@ -40266,7 +40266,7 @@
Optimize byte-compilation of proper-list-p
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg00316.html
* lisp/emacs-lisp/byte-opt.el: Optimize proper-list-p as a
predicate.
* lisp/subr.el: Mark proper-list-p as pure, and side-effect and
@ -41453,7 +41453,7 @@
Fix more regexp oddities
Problems reported by Mattias Engdegård in:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00178.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg00178.html
* lisp/progmodes/sh-script.el (sh-get-indent-info):
Reorder skip-chars-forward arg so that it does not look like a regexp.
* lisp/progmodes/verilog-mode.el (verilog-sk-define-signal):
@ -41479,7 +41479,7 @@
* lisp/frame.el (display-planes): Use logb over truncate + log
Suggested by Basil L. Contovounesios:
https://lists.gnu.org/archive/html/bug-gnu-emacs/2019-03/msg01052.html
https://lists.gnu.org/r/bug-gnu-emacs/2019-03/msg01052.html
2019-04-06 Alexander Gramiak <agrambot@gmail.com>
@ -41786,7 +41786,7 @@
(gnus-dup-suppress-articles): DRY.
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00974.html
https://lists.gnu.org/r/emacs-devel/2019-03/msg00974.html
2019-04-02 Wilson Snyder <wsnyder@wsnyder.org>
@ -41980,7 +41980,7 @@
Do not set indent-line-function in text-mode
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg01012.html
https://lists.gnu.org/r/emacs-devel/2019-03/msg01012.html
* lisp/textmodes/text-mode.el (text-mode): Do not reset
indent-line-function to its global default value of indent-relative.
* doc/lispref/modes.texi (Example Major Modes):
@ -42626,7 +42626,7 @@
i18n: Add function ngettext for pluralization.
* lisp/international/mule-cmds.el (ngettext): New function.
https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
https://lists.gnu.org/r/emacs-devel/2019-03/msg00586.html
* lisp/replace.el (flush-lines, how-many, occur-1, occur-engine)
(perform-replace): Use ngettext.
@ -42909,7 +42909,7 @@
This reverts commit 3eb93c07f7a60ac9ce8a16f10c3afd5a3a31243a.
There was no consensus for that commit, see
https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00150.html.
https://lists.gnu.org/r/emacs-devel/2016-01/msg00150.html.
Also, reverting this commit should fix Bug#31238.
2019-03-21 Eli Zaretskii <eliz@gnu.org>
@ -46161,7 +46161,7 @@
Rename multifile.el to fileloop.el
* lisp/multifile.el: Rename to fileloop.el as discussed in
https://lists.gnu.org/archive/html/emacs-devel/2018-12/msg00475.html.
https://lists.gnu.org/r/emacs-devel/2018-12/msg00475.html.
Update symbol prefixes and all callers
2019-02-07 Aurelien Aptel <aaptel@suse.com>
@ -47560,7 +47560,7 @@
but that only affects a small corner case of c-toggle-auto-newline,
which is not turned on by default.
See https://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00360.html
See https://lists.gnu.org/r/emacs-devel/2019-01/msg00360.html
for more information.
* lisp/progmodes/cc-cmds.el (c--disable-fix-of-bug-33794): New
@ -49008,7 +49008,7 @@
* lisp/progmodes/project.el (project--completing-read-strict):
Extract the common parent directory of all files first
(https://lists.gnu.org/archive/html/emacs-devel/2018-12/msg00444.html).
(https://lists.gnu.org/r/emacs-devel/2018-12/msg00444.html).
2018-12-28 Michael Albinus <michael.albinus@gmx.de>
@ -52604,7 +52604,7 @@
Advertise new hi-lock 'M-s h' key prefix in lisp/bindings.el
https://lists.gnu.org/archive/html/emacs-devel/2015-07/msg00104.html
https://lists.gnu.org/r/emacs-devel/2015-07/msg00104.html
2018-11-07 Juri Linkov <juri@linkov.net>
@ -54667,7 +54667,7 @@
Fix a previous commit
Suggested by Stefan Monnier here:
https://lists.gnu.org/archive/html/emacs-devel/2018-09/msg00783.html
https://lists.gnu.org/r/emacs-devel/2018-09/msg00783.html
* lisp/replace.el (occur--parse-occur-buffer): Since point is at the
beginning of the buffer, use `point'.
@ -57449,7 +57449,7 @@
* lisp/calendar/todo-mode.el (todo-jump-to-category): Improve code
by using bound-and-true-p. This leaves a byte-compiler warning
unsilenced, but ideally, there shouldn't be a warning here (see
https://lists.gnu.org/archive/html/emacs-devel/2018-08/msg00131.html).
https://lists.gnu.org/r/emacs-devel/2018-08/msg00131.html).
(todo--fifiles-history): New variable.
(todo-find-filtered-items-file): Use it to fix the filtered items
files history list for completing-read.
@ -59294,7 +59294,7 @@
Fix custom-available-themes file expansion
For discussion, see thread starting at
https://lists.gnu.org/archive/html/emacs-devel/2018-05/msg00222.html.
https://lists.gnu.org/r/emacs-devel/2018-05/msg00222.html.
* lisp/custom.el: (custom-available-themes): Use directory-files
instead of performing arbitrary wildcard expansion in file names.
(custom-theme--load-path): Document return value.
@ -59320,8 +59320,8 @@
* etc/themes/whiteboard-theme.el:
* etc/themes/wombat-theme.el: Disable no-byte-compile.
https://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00614.html
https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00060.html
https://lists.gnu.org/r/emacs-devel/2018-01/msg00614.html
https://lists.gnu.org/r/emacs-devel/2018-02/msg00060.html
2018-07-13 Basil L. Contovounesios <contovob@tcd.ie>
@ -59330,8 +59330,8 @@
* lisp/custom.el (load-theme):
Load byte-compiled file of safe themes when available.
https://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00614.html
https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00060.html
https://lists.gnu.org/r/emacs-devel/2018-01/msg00614.html
https://lists.gnu.org/r/emacs-devel/2018-02/msg00060.html
2018-07-13 Robert Pluim <rpluim@gmail.com>
@ -59629,11 +59629,11 @@
Add predicate proper-list-p
For discussion, see emacs-devel thread starting at
https://lists.gnu.org/archive/html/emacs-devel/2018-04/msg00460.html.
https://lists.gnu.org/r/emacs-devel/2018-04/msg00460.html.
* lisp/subr.el (proper-list-p): New function.
Implementation suggested by Paul Eggert <eggert@cs.ucla.edu> in
https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00138.html.
https://lists.gnu.org/r/emacs-devel/2018-06/msg00138.html.
* doc/lispref/lists.texi (List Elements):
* etc/NEWS: Document proper-list-p.
* lisp/org/ob-core.el (org-babel-insert-result):
@ -60559,7 +60559,7 @@
Mark a specific electric-pair-mode test as an expected failure
See https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00535.html
See https://lists.gnu.org/r/emacs-devel/2018-06/msg00535.html
* test/lisp/electric-tests.el
(electric-pair-whitespace-chomping-2-at-point-4-in-c++-mode-in-strings):
@ -62491,7 +62491,7 @@
with C sources. The green light for this change had already been
given some time ago in
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00385.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00385.html
* src/Makefile.in (check-syntax): New target.
(.PHONY): Add check-syntax.
@ -64326,7 +64326,7 @@
Use next-error-found to set next-error-last-buffer.
https://lists.gnu.org/archive/html/emacs-devel/2018-04/msg00207.html
https://lists.gnu.org/r/emacs-devel/2018-04/msg00207.html
* lisp/simple.el (next-error-buffer): New buffer-local variable
instead of making buffer-local next-error-last-buffer. (Bug#20489)
@ -65735,7 +65735,7 @@
2018-04-05 Tino Calancha <tino.calancha@gmail.com>
Require secrets.el iif Emacs has dbusbind support
Require secrets.el if Emacs has dbusbind support
* test/lisp/net/secrets-tests.el: Require secrets.el if
and only if, Emacs has been compiled with dbusbind support.
@ -65794,7 +65794,7 @@
and disabled by `disabled'.
(search-exit-option): Doc fix.
(isearch-post-command-hook): Check for isearch-forward.
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00438.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00438.html
2018-04-04 Juri Linkov <juri@linkov.net>
@ -66167,7 +66167,7 @@
Don't wait for visible frames to become visible
For discussion, see thread starting at
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00807.html.
https://lists.gnu.org/r/emacs-devel/2018-03/msg00807.html.
* src/xterm.c (x_make_frame_visible): Check FRAME_VISIBLE_P before
calling x_wait_for_event.
@ -67190,22 +67190,22 @@
* lisp/emacs-lisp/package.el (package-enable-at-startup): Update
docstring to note that packages are now made available before loading
the init file, rather than afterwards. See
https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00632.html
https://lists.gnu.org/r/emacs-devel/2018-02/msg00632.html
(package-load-list): Refer to "making available" rather than "loading"
for packages. See
https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00298.html
https://lists.gnu.org/r/emacs-devel/2018-02/msg00298.html
* lisp/startup.el (command-line): Call `custom-reevaluate-setting' on
predefined variables before loading the early init file and before
`package-initialize' is called. This prevents
`Info-default-directory-list' from being unbound when
`package-initialize' tries to access it during startup. See
https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00545.html
https://lists.gnu.org/r/emacs-devel/2018-02/msg00545.html
* lisp/emacs-lisp/package.el (package-initialize): Issue a warning
if called twice.
See: https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00626.html
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00301.html
See: https://lists.gnu.org/r/emacs-devel/2018-02/msg00626.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00301.html
2018-03-18 Glenn Morris <rgm@gnu.org>
@ -67236,7 +67236,7 @@
Date: Fri, 16 Mar 2018 10:23:31 -0500
Message-ID: <87po44jb7w.fsf@red-bean.com>
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00555.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00555.html
2018-03-18 Nicolas Petton <nicolas@petton.fr>
@ -67885,7 +67885,7 @@
* doc/emacs/search.texi: Replace search-exit-option option nil with append.
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00202.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00202.html
2018-03-08 Charles A. Roelli <charles@aurox.ch>
@ -68097,7 +68097,7 @@
* doc/emacs/search.texi (Not Exiting Isearch): Document new
values shift-move and move of search-exit-option.
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00013.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00013.html
2018-03-03 Glenn Morris <rgm@gnu.org>
@ -68177,7 +68177,7 @@
but the Emacs 24 byte compiler doesn't recognize that
define-obsolete-variable-alias defines a variable).
[1]: https://lists.gnu.org/archive/html/emacs-devel/2018-02/msg00826.html
[1]: https://lists.gnu.org/r/emacs-devel/2018-02/msg00826.html
2018-03-01 Glenn Morris <rgm@gnu.org>
@ -68976,11 +68976,11 @@
Discussion on emacs-devel leading up to this change (approximately 150
messages):
- https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00154.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00433.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00023.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00599.html
- https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00332.html
- https://lists.gnu.org/r/emacs-devel/2017-08/msg00154.html
- https://lists.gnu.org/r/emacs-devel/2017-08/msg00433.html
- https://lists.gnu.org/r/emacs-devel/2017-09/msg00023.html
- https://lists.gnu.org/r/emacs-devel/2017-09/msg00599.html
- https://lists.gnu.org/r/emacs-devel/2017-10/msg00332.html
* lisp/startup.el (early-init-file): New variable.
(load-user-init-file): New function.
@ -71454,7 +71454,7 @@
In the macro expansion of the example above, right after:
(setq k (+ k 1))
evaluate the rest of the body forms iif the condition
evaluate the rest of the body forms if the condition
(< k 2)
is still valid.
@ -73761,7 +73761,7 @@
Merge from origin/emacs-26
a89f0b6f33 maint: shorten https://lists.gnu.org/archive/html/... links
a89f0b6f33 maint: shorten https://lists.gnu.org/r/... links
8be3aee281 Merge from Gnulib
265cee553f Work around GCC bug 80776 on Fedora 27 x86
dc7a97fb84 Tweak copy-file, rename-file doc
@ -74031,7 +74031,7 @@
* lisp/emacs-lisp/copyright.el (copyright-update-year): Enlarge the
scope of save-excursion. Reported in:
https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00271.html
https://lists.gnu.org/r/emacs-devel/2017-04/msg00271.html
2017-11-19 Vibhav Pant <vibhavp@gmail.com>
@ -76193,7 +76193,7 @@
Clarify Gravatar docs
For discussion, see the following thread:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00528.html
* doc/misc/gnus.texi (X-Face): Fix cross-reference.
(Gravatars):
* lisp/gnus/gnus-gravatar.el (gnus-gravatar-too-ugly):
@ -76247,7 +76247,7 @@
This explanation was given by Eli Zaretskii on emacs-devel.
For discussion, see:
https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00294.html
https://lists.gnu.org/r/emacs-devel/2019-07/msg00294.html
* src/buffer.c (syms_of_buffer): Add warning to doc string of
bidi-display-reordering to explain that it should only be used for
@ -77164,7 +77164,7 @@
Backport: Improve pure and side-effect-free docs
For discussion, see thread starting at:
https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html
https://lists.gnu.org/r/emacs-devel/2019-04/msg00316.html
* doc/lispref/customize.texi (Composite Types): Do not overspecify
:match-alternatives predicates.
* doc/lispref/eval.texi (Intro Eval): Anchor definition of "side
@ -78845,7 +78845,7 @@
* doc/misc/ediff.texi (Major Entry Points): Update and clarify
the documentation of 'ediff-windows-wordwise' and
'ediff-regions-wordwise'. See the discussion starting at
https://lists.gnu.org/archive/html/help-gnu-emacs/2018-11/msg00197.html
https://lists.gnu.org/r/help-gnu-emacs/2018-11/msg00197.html
for the details.
2019-01-07 Eli Zaretskii <eliz@gnu.org>
@ -80362,7 +80362,7 @@
Fix math-imaginary-i check
Reported by Bastian Erdnüß at
<https://lists.gnu.org/archive/html/emacs-devel/2018-08/msg00300.html>.
<https://lists.gnu.org/r/emacs-devel/2018-08/msg00300.html>.
* lisp/calc/calc-cplx.el (math-imaginary-i): Check for a value
of (polar 1 <quarter-circle>).
@ -81058,7 +81058,7 @@
reject :server and :nowait (Bug#31903)", the sense of the SERVER check
was accidentally reversed so that we ended up looking for the wrong
ADDRESS. Reported by T.V Raman in
<https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00437.html>.
<https://lists.gnu.org/r/emacs-devel/2018-07/msg00437.html>.
2018-07-12 Eli Zaretskii <eliz@gnu.org>
@ -81111,8 +81111,8 @@
lists.
For discussion, see the following emacs-devel subthreads:
https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00112.html
https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00138.html
https://lists.gnu.org/r/emacs-devel/2018-06/msg00112.html
https://lists.gnu.org/r/emacs-devel/2018-06/msg00138.html
2018-07-10 John Shahid <jvshahid@gmail.com>
@ -81220,8 +81220,8 @@
Fix (length NON-SEQUENCE) documentation
Suggested by Eli Zaretskii <eliz@gnu.org> in the following threads:
https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00171.html
https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00206.html
https://lists.gnu.org/r/emacs-devel/2018-07/msg00171.html
https://lists.gnu.org/r/emacs-devel/2018-07/msg00206.html
* doc/lispref/sequences.texi (Sequence Functions): Mention that
'length' signals a 'wrong-type-argument' also when given a
@ -81400,7 +81400,7 @@
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage): Call 'git
ls-files -u' for the ls-files-conflict stage
(https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00885.html).
(https://lists.gnu.org/r/emacs-devel/2018-06/msg00885.html).
2018-06-27 Eli Zaretskii <eliz@gnu.org>
@ -81461,7 +81461,7 @@
See discussion:
https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00826.html
https://lists.gnu.org/r/emacs-devel/2018-06/msg00826.html
From: Eli Zaretskii
Subject: Re: [Emacs-diffs] \
emacs-26 9a53b6d: Say how to override a primitive interactive spec
@ -81508,7 +81508,7 @@
From this thread on Emacs Devel:
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00923.html
https://lists.gnu.org/r/emacs-devel/2018-03/msg00923.html
From: Eli Zaretskii
To: Karl Fogel
CC: Juri Linkov, Emacs Devel
@ -82175,7 +82175,7 @@
Don't wait for visible frames to become visible
For discussion, see thread starting at
https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00807.html.
https://lists.gnu.org/r/emacs-devel/2018-03/msg00807.html.
* src/xterm.c (x_make_frame_visible): Check FRAME_VISIBLE_P before
calling x_wait_for_event.
@ -85543,7 +85543,7 @@
* doc/lispref/customize.texi (Custom Themes): Clarify .el preference.
https://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00824.html.
https://lists.gnu.org/r/emacs-devel/2018-01/msg00824.html.
2018-02-02 Eli Zaretskii <eliz@gnu.org>
@ -88280,7 +88280,7 @@
2017-11-26 Paul Eggert <eggert@cs.ucla.edu>
maint: shorten https://lists.gnu.org/archive/html/... links
maint: shorten https://lists.gnu.org/r/... links
2017-11-26 Paul Eggert <eggert@cs.ucla.edu>
@ -88288,7 +88288,7 @@
This incorporates:
2017-11-23 stat: work around Solaris bug with tv_nsec < 0
2017-11-12 maint: shorten https://lists.gnu.org/archive/html/... links
2017-11-12 maint: shorten https://lists.gnu.org/r/... links
* build-aux/config.sub, doc/misc/texinfo.tex, lib/allocator.h:
* lib/fstatat.c, lib/intprops.h, lib/lstat.c, lib/signal.in.h:
* lib/stat-time.h, lib/stdio-impl.h, lib/stdio.in.h:
@ -89542,7 +89542,7 @@
arbitrary buffers where this variable's value doesn't make sense.
For a way to trigger a problem due to this, see discussion starting in
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00645.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00645.html
* lisp/textmodes/tex-mode.el (tex-chktex): Use
with-current-buffer.
@ -90150,7 +90150,7 @@
* configure.ac (CYGWIN_OBJ): Leave empty on QNX.
Problem reported by Elad Lahav in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00750.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00750.html
2017-10-26 Dmitry Gutov <dgutov@yandex.ru>
@ -90242,9 +90242,9 @@
Port to QNX
Simplified version of a patch proposed by Elad Lahav in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00716.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00716.html
which is based on a previous patch I proposed in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00707.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00707.html
* configure.ac (opsys, CFLAGS, LIBS_SYSTEM, hybrid_malloc)
(system_alloc, FIRST_PTY_LETTER, CYGWIN_OBJ):
Set appropriately for QNX.
@ -90637,7 +90637,7 @@
Augment Flymake API for third-party extensions
See
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00619.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00619.html
* doc/misc/flymake.texi (Flymake error types): Rewrite
example.
@ -91060,9 +91060,9 @@
Do not under-align pseudovectors
Problem reported by Fabrice Popineau in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00357.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00357.html
Also see diagnosis by Eli Zaretskii in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00476.html
https://lists.gnu.org/r/emacs-devel/2017-10/msg00476.html
* src/alloc.c (vector_alignment):
Now a multiple of alignof (max_align_t).
@ -114927,7 +114927,7 @@
2017-01-28 Yuri D'Elia <wavexx@thregr.org>
Subject: Check Bcc after the Messag hook has run
Subject: Check Bcc after the Message hook has run
* lisp/gnus/message.el (message-send): If the hook modifies
the message (mml tags or headers), we should check bcc on the

View file

@ -563,7 +563,7 @@ finishes.
Spell checking also works, by means of special support for synchronous
invocation of the @code{ispell} program. This is slower than the
asynchronous invocation on other platforms
asynchronous invocation on other platforms.
Instead of the Shell mode, which doesn't work on MS-DOS, you can use
the @kbd{M-x eshell} command. This invokes the Eshell package that

View file

@ -1984,11 +1984,21 @@ the @code{search-highlight-submatches} variable. If this variable's
value is @code{nil}, no special highlighting is done, but if the value
is non-@code{nil}, text that matches @samp{\( @dots{} \)} constructs
(a.k.a.@: ``subexpressions'') in the regular expression will be
highlighted with distinct faces, named @code{isearch-group-odd}
for the odd group matches, and @code{isearch-group-even}
for the even group matches. For instance, when searching for
@samp{foo-\([0-9]+\)}, the part matched by @samp{[0-9]+} will be
highlighted with the @code{isearch-group-odd} face.
highlighted with distinct faces. By default, two distinct faces are
defined, named @code{isearch-group-1} and @code{isearch-group-2}.
With these two faces, odd-numbered subexpressions will be highlighted
using the @code{isearch-group-1} face and even-numbered subexpressions
will be highlighted using the @code{isearch-group-2} face. For
instance, when searching for @samp{foo-\([0-9]+\)\([a-z]+\)}, the part
matched by @samp{[0-9]+} will be highlighted with the
@code{isearch-group-1} face, and the part matched by @samp{[a-z]+}
will be highlighted using @code{isearch-group-2}. If you define
additional faces using the same numbering scheme, i.e.@:
@code{isearch-group-3}, @code{isearch-group-4}, @dots{}, then the face
@code{isearch-group-@var{M}} will be used to highlight the @var{M}'th,
@code{@var{N}+@var{M}}'th, @code{2@var{N}+@var{M}}'th, @dots{}
subexpressions, where @var{N} is the total number of faces of the form
@code{isearch-group-@var{M}}.
@cindex lazy highlighting customizations
@vindex isearch-lazy-highlight

View file

@ -227,7 +227,7 @@ supports it in developing GNU and promoting software freedom.''
@c learn Emacs Lisp starting with the Emacs Lisp Reference Manual.
@c
@c Richard Stallman <rms@gnu.org>,
@c https://lists.gnu.org/archive/html/emacs-devel/2018-05/msg00374.html
@c https://lists.gnu.org/r/emacs-devel/2018-05/msg00374.html
@shortcontents
@contents

View file

@ -930,9 +930,8 @@ was specified to run but remapped into another command.
@defun this-command-keys
This function returns a string or vector containing the key sequence
that invoked the present command, plus any previous commands that
generated the prefix argument for this command. Any events read by the
command using @code{read-event} without a timeout get tacked on to the end.
that invoked the present command. Any events read by the command
using @code{read-event} without a timeout get tacked on to the end.
However, if the command has called @code{read-key-sequence}, it
returns the last read key sequence. @xref{Key Sequence Input}. The
@ -943,7 +942,7 @@ fit in a string. @xref{Input Events}.
@group
(this-command-keys)
;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
@result{} "^U^X^E"
@result{} "^X^E"
@end group
@end example
@end defun

View file

@ -1970,36 +1970,45 @@ This function returns the width in columns of the string @var{string},
if it were displayed in the current buffer and the selected window.
@end defun
@defun truncate-string-to-width string width &optional start-column padding ellipsis
This function returns the part of @var{string} that fits within
@var{width} columns, as a new string.
@defun truncate-string-to-width string width &optional start-column padding ellipsis ellipsis-text-property
This function returns a new string that is a truncation of @var{string}
which fits within @var{width} columns on display.
If @var{string} does not reach @var{width}, then the result ends where
@var{string} ends. If one multi-column character in @var{string}
extends across the column @var{width}, that character is not included in
the result. Thus, the result can fall short of @var{width} but cannot
go beyond it.
If @var{string} is narrower than @var{width}, the result is equal to
@var{string}; otherwise excess characters are omitted from the result.
If a multi-column character in @var{string} exceeds the goal
@var{width}, that character is omitted from the result. Thus, the
result can sometimes fall short of @var{width}, but cannot go beyond
it.
The optional argument @var{start-column} specifies the starting column.
If this is non-@code{nil}, then the first @var{start-column} columns of
the string are omitted from the value. If one multi-column character in
the string are omitted from the result. If one multi-column character in
@var{string} extends across the column @var{start-column}, that
character is not included.
character is omitted.
The optional argument @var{padding}, if non-@code{nil}, is a padding
character added at the beginning and end of the result string, to extend
it to exactly @var{width} columns. The padding character is used at the
end of the result if it falls short of @var{width}. It is also used at
the beginning of the result if one multi-column character in
character added at the beginning and end of the result string, to
extend it to exactly @var{width} columns. The padding character is
appended at the end of the result if it falls short of @var{width}, as
many times as needed to reach @var{width}. It is also prepended at
the beginning of the result if a multi-column character in
@var{string} extends across the column @var{start-column}.
@vindex truncate-string-ellipsis
If @var{ellipsis} is non-@code{nil}, it should be a string which will
replace the end of @var{string} (including any padding) if it extends
beyond @var{width}, unless the display width of @var{string} is equal
to or less than the display width of @var{ellipsis}. If
@var{ellipsis} is non-@code{nil} and not a string, it stands for
the value of the variable @code{truncate-string-ellipsis}.
replace the end of @var{string} when it is truncated. In this case,
more charcaters will be removed from @var{string} to free enough space
for @var{ellipsis} to fit within @var{width} columns. However, if
the display width of @var{string} is less than the display width of
@var{ellipsis}, @var{ellipsis} will not be appended to the result. If
@var{ellipsis} is non-@code{nil} and not a string, it stands for the
value returned by the function @code{truncate-string-ellipsis},
described below.
The optional argument @var{ellipsis-text-property}, if non-@code{nil},
means hide the excess parts of @var{string} with a @code{display} text
property (@pxref{Display Property}) showing the ellipsis, instead of
actually truncating the string.
@example
(truncate-string-to-width "\tab\t" 12 4)
@ -2009,6 +2018,16 @@ the value of the variable @code{truncate-string-ellipsis}.
@end example
@end defun
@defun truncate-string-ellipsis
This function returns the string to be used as an ellipses in
@code{truncate-string-to-width} and other similar contexts. The value
is that of the variable @code{truncate-string-ellipsis}, if it's
non-@code{nil}, the string with the single character @sc{U+2026
HORIZONTAL ELLIPSIS} if that character can be displayed on the
selected frame, and the string @samp{...} otherwise.
@end defun
The following function returns the size in pixels of text as if it were
displayed in a given window. This function is used by
@code{fit-window-to-buffer} and @code{fit-frame-to-buffer}

View file

@ -863,19 +863,20 @@ to a non-@code{nil} value.
@end example
@noindent
Custom printing prints this as @samp{Result: #1=(#1# y)}. The
@samp{#1=} notation labels the structure that follows it with the label
@samp{1}, and the @samp{#1#} notation references the previously labeled
structure. This notation is used for any shared elements of lists or
vectors.
If @code{print-circle} is non-@code{nil}, printing functions (e.g.,
@code{prin1}) will print @code{a} as @samp{#1=(#1# y)}. The
@samp{#1=} notation labels the structure that follows it with the
label @samp{1}, and the @samp{#1#} notation references the previously
labeled structure. This notation is used for any shared elements of
lists or vectors.
@defopt edebug-print-circle
If non-@code{nil}, Edebug binds @code{print-circle} to this value while
printing results. The default value is @code{t}.
@end defopt
Other programs can also use custom printing; see @file{cust-print.el}
for details.
See @xref{Output Functions} for further details about how printing
can be customized.
@node Trace Buffer
@subsection Trace Buffer

View file

@ -548,7 +548,7 @@ the functions in the list @code{after-insert-file-functions}.
(@pxref{Coding Systems}) used for decoding the file's contents,
including end-of-line conversion. However, if the file contains null
bytes, it is by default visited without any code conversions.
@xref{Lisp and Coding Systems, inhibit-nul-byte-detection}.
@xref{Lisp and Coding Systems, inhibit-null-byte-detection}.
If @var{visit} is non-@code{nil}, this function additionally marks the
buffer as unmodified and sets up various fields in the buffer so that it

View file

@ -1729,7 +1729,8 @@ The command named @var{mode} first performs the standard actions such as
setting the variable named @var{mode} and then executes the @var{body}
forms, if any. It then runs the mode hook variable
@code{@var{mode}-hook} and finishes by evaluating any form in
@code{:after-hook}.
@code{:after-hook}. (Note that all of this, including running the
hook, is done both when the mode is enabled and disabled.)
@end defmac
The initial value must be @code{nil} except in cases where (1) the

View file

@ -1379,7 +1379,7 @@ operates on the contents of @var{string} instead of bytes in the buffer.
@end defun
@cindex null bytes, and decoding text
@defvar inhibit-nul-byte-detection
@defvar inhibit-null-byte-detection
If this variable has a non-@code{nil} value, null bytes are ignored
when detecting the encoding of a region or a string. This allows the
encoding of text that contains null bytes to be correctly detected,

View file

@ -1839,7 +1839,7 @@ system comes from @code{coding-system-for-read}, if that is
non-@code{nil}; or else from the defaulting mechanism (@pxref{Default
Coding Systems}). If the text output by a process contains null
bytes, Emacs by default uses @code{no-conversion} for it; see
@ref{Lisp and Coding Systems, inhibit-nul-byte-detection}, for how to
@ref{Lisp and Coding Systems, inhibit-null-byte-detection}, for how to
control this behavior.
@strong{Warning:} Coding systems such as @code{undecided}, which

View file

@ -63,7 +63,7 @@ another. An overview of D-Bus can be found at
* Signals:: Sending and receiving signals.
* Alternative Buses:: Alternative buses and environments.
* Errors and Events:: Errors and events.
* Monitoring Events:: Monitoring events.
* Monitoring Messages:: Monitoring messages.
* Index:: Index including concepts, functions, variables.
* GNU Free Documentation License:: The license for this documentation.
@ -1622,7 +1622,9 @@ are constructed incrementally by adding single methods or properties
at a time, @var{dont-register-service} can be used to prevent other
clients from discovering the still incomplete interface.
@noindent Example:
@code{dbus-register-property} returns a Lisp object, which can be used
as argument in @code{dbus-unregister-object} for removing the
registration for @var{property}. Example:
@lisp
(dbus-register-property
@ -1687,9 +1689,9 @@ It is also possible to apply the @code{dbus-get-property},
@defun dbus-unregister-object object
This function unregisters @var{object} from the D-Bus. @var{object}
must be the result of a preceding @code{dbus-register-method},
@code{dbus-register-property} or @code{dbus-register-signal} call
(@pxref{Signals}). It returns @code{t} if @var{object} has been
unregistered, @code{nil} otherwise.
@code{dbus-register-property}, @code{dbus-register-signal}
(@pxref{Signals}) or @code{dbus-register-monitor} call. It returns
@code{t} if @var{object} has been unregistered, @code{nil} otherwise.
When @var{object} identifies the last method or property, which is
registered for the respective service, Emacs releases its association
@ -2099,24 +2101,24 @@ D-Bus applications running. They should therefore check carefully,
whether a given D-Bus error is related to them.
@node Monitoring Events
@chapter Monitoring events.
@node Monitoring Messages
@chapter Monitoring messages.
@cindex monitoring
@defun dbus-register-monitor bus &optional handler &key type sender destination path interface member
This function registers @var{handler} for monitor events on the D-Bus
@var{bus}.
This function registers @var{handler} for monitoring messages on the
D-Bus @var{bus}.
@var{bus} is either a Lisp keyword, @code{:system} or @code{:session},
or a string denoting the bus address.
@findex dbus-monitor-handler
@var{handler} is the function to be called when a monitor event
arrives. It is called with the `args' slot of the monitor event,
which are stripped off the type keywords. If @var{handler} is
@code{nil}, the default handler @code{dbus-monitor-handler} is
applied. This default handler behaves similar to the
@command{dbus-monitor} program.
@var{handler} is the function to be called when a D-Bus event to be
monitored arrives. It is called with the @var{args} slot of the D-Bus
event (@pxref{Errors and Events}), which are stripped off the type
keywords. If @var{handler} is @code{nil}, the default handler
@code{dbus-monitor-handler} is applied. This default handler behaves
similar to the @command{dbus-monitor} program.
The other arguments are keyword-value pairs. @code{:type @var{type}}
defines the message type to be monitored. If given, it must be equal
@ -2132,6 +2134,9 @@ names.
@code{:member @var{member}} is either a method name, a signal name, or
an error name.
@code{dbus-register-monitor} returns a Lisp object, which can be used
as argument in @code{dbus-unregister-object} for removing the monitor.
The following form shows all D-Bus events on the session bus in buffer
@samp{*D-Bus Monitor*}:

View file

@ -1737,12 +1737,6 @@ of doing your job. Note that this variable is used before
@vindex gnus-no-groups-message
Message displayed by Gnus when no groups are available.
@item gnus-use-backend-marks
@vindex gnus-use-backend-marks
If non-@code{nil}, Gnus will store article marks both in the
@file{.newsrc.eld} file and in the backends. This will slow down
group operation some.
@end table

View file

@ -1088,7 +1088,7 @@
}
% The -2 in the arguments here gives all the input to TeX catcode 12
% (other) or 10 (space), preventing undefined control sequence errors. See
% https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
% https://lists.gnu.org/r/bug-texinfo/2019-08/msg00031.html
%
\endgroup
\def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}

View file

@ -4280,8 +4280,8 @@ first saving to a temporary file.
@vindex tramp-local-host-regexp
When connecting to a local host, @value{tramp} uses some internal
optimizations. They fail, when there is a chrooted environment. In
order to disable those optimizations, set user option
optimizations. They fail when Emacs runs in a chrooted environment.
In order to disable those optimizations, set user option
@code{tramp-local-host-regexp} to @code{nil}.

View file

@ -85,6 +85,10 @@ useful on systems such as FreeBSD which ships only with "etc/termcap".
* Changes in Emacs 28.1
*** New var 'redisplay-skip-initial-frame' to enable batch redisplay tests.
Setting it to nil forces the redisplay to do its job even in the
initial frame used in batch mode.
---
** Support for the 'strike-through' face attribute on TTY frames.
If your terminal's termcap or terminfo database entry has the 'smxx'
@ -541,6 +545,11 @@ grep emits SGR ANSI escape sequences to color its output. The new variable
markers in order to provide highlighting in the source buffer. The variable
can be customized to accommodate other grep-like tools.
---
*** The 'lgrep' command now ignores directories.
On systems where the grep command supports it, directories will be
skipped.
** Help
+++
@ -1102,9 +1111,12 @@ keystrokes.
+++
*** Interactive regular expression search now uses faces for sub-groups.
E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-odd' face
E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-1' face
on the part of the regexp that matches the sub-expression "[0-9]+".
The even group matches are highlighted with the 'isearch-group-even' face.
By default, there are two faces for sub-group highlighting, but you
can define more faces whose names are of the form 'isearch-group-N',
where N are successive numbers above 2.
This is controlled by the 'search-highlight-submatches' user option.
This feature is available only on terminals that have enough colors to
distinguish between sub-expression highlighting.
@ -1474,6 +1486,12 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el.
* Lisp Changes in Emacs 28.1
+++
** 'truncate-string-ellipsis' now uses '…' by default.
Modes that use 'truncate-string-to-width' with non-nil, non-string
argument 'ellipsis', will now indicate truncation using '…' when
the selected frame can display it, and using "..." otherwise.
+++
*** New command 'make-directory-autoloads'.
This does the same as the old command 'update-directory-autoloads',
@ -1611,6 +1629,8 @@ convert them to a list '(R G B)' of primary color values.
This user option can be one of the predefined styles or a function to
personalize the uniquified buffer name.
+++
** 'inhibit-nul-byte-detection' is renamed to 'inhibit-null-byte-detection'.
* Changes in Emacs 28.1 on Non-Free Operating Systems

View file

@ -786,7 +786,7 @@ build emacs with Cairo enabled ("configure --with-cairo" and have the
appropriate Cairo development packages installed) as this
configuration does not suffer from this problem. See
<https://github.com/googlefonts/Inconsolata/issues/42> and
<https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-01/msg00456.html>
<https://lists.gnu.org/r/bug-gnu-emacs/2020-01/msg00456.html>
for more discussion.
** Under X, an unexpected monospace font is used as the default font.

View file

@ -525,7 +525,7 @@ Save backtraces when errors happen during specified filters, specified
timers, and specified hooks.
** Install mmc@maruska.dyndns.org's no-flicker change
https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html
https://lists.gnu.org/r/emacs-devel/2005-12/msg00699.html
I don't know if this is still relevant. I can't reach the URLs in
the above message thread and double-buffering may have solved some
@ -849,7 +849,7 @@ designed to be compatible with multiple Emacs ports.
(See the scratch/nsxwidget branch, and the discussion around
Objective-C code and GCC at
https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html)
https://lists.gnu.org/r/emacs-devel/2019-08/msg00072.html )
**** Respect 'frame-inhibit-implied-resize'
When the variable 'frame-inhibit-implied-resize' is non-nil, frames

View file

@ -16274,7 +16274,7 @@
(c-guess-basic-syntax): Adapt case 5B for the new
`c-just-after-func-arglist-p'. Merge cases 5B.1 and 5B.3.
Remove cases 5D.1 and 5D.2 since they aren't trigged anymore (case 5B.1
Remove cases 5D.1 and 5D.2 since they aren't triggered anymore (case 5B.1
covers all cases now).
* progmodes/cc-defs.el (c-point): Add `bosws' and `eosws'.
@ -32889,7 +32889,7 @@
2005-01-14 Nick Roberts <nickrob@snap.net.nz>
* xt-mouse.el (xterm-mouse-event): Compute window co-ordinates
* xt-mouse.el (xterm-mouse-event): Compute window coordinates
more carefully.
2005-01-13 Stefan Monnier <monnier@iro.umontreal.ca>

View file

@ -6540,8 +6540,8 @@
(newsticker--image-get): New arguments FILENAME and DIRECTORY.
Use `url-retrieve' if `newsticker-retrieval-method' is 'intern.
(newsticker--image-download-by-wget): New. Use process properties
for storing informations.
(newsticker--image-sentinel): Read informations from process properties.
for storing information.
(newsticker--image-sentinel): Read information from process properties.
(newsticker--image-save)
(newsticker--image-remove)
(newsticker--image-download-by-url)

View file

@ -403,7 +403,7 @@
(setq a (math-clip a w)))
(let ((two-to-sizem1 (math-power-of-2 (1- w)))
(sh (calcFunc-lsh a n w)))
(cond ((Math-natnum-lessp a two-to-sizem1)
(cond ((zerop (logand a two-to-sizem1))
sh)
((Math-lessp n (- 1 w))
(math-add (math-mul two-to-sizem1 2) -1))

View file

@ -195,13 +195,13 @@ during a flush when the cache is given a new value of nil.")
(make-variable-buffer-local 'semantic-parse-tree-state)
(defmacro semantic-parse-tree-unparseable ()
"Indicate that the current buffer is unparseable.
"Indicate that the current buffer is unparsable.
It is also true that the parse tree will need either updating or
a rebuild. This state will be changed when the user edits the buffer."
'(setq semantic-parse-tree-state 'unparseable))
(defmacro semantic-parse-tree-unparseable-p ()
"Return non-nil if the current buffer has been marked unparseable."
"Return non-nil if the current buffer has been marked unparsable."
'(eq semantic-parse-tree-state 'unparseable))
(defmacro semantic-parse-tree-set-needs-update ()
@ -539,14 +539,14 @@ If the buffer cache is out of date, attempt an incremental reparse.
If the buffer has not been parsed before, or if the incremental reparse
fails, then parse the entire buffer.
If a lexical error had been previously discovered and the buffer
was marked unparseable, then do nothing, and return the cache."
was marked unparsable, then do nothing, and return the cache."
(and
;; Is this a semantic enabled buffer?
(semantic-active-p)
;; Application hooks say the buffer is safe for parsing
(run-hook-with-args-until-failure
'semantic--before-fetch-tags-hook)
;; If the buffer was previously marked unparseable,
;; If the buffer was previously marked unparsable,
;; then don't waste our time.
(not (semantic-parse-tree-unparseable-p))
;; The parse tree actually needs to be refreshed
@ -617,7 +617,7 @@ Does nothing if the current buffer doesn't need reparsing."
;; do them here, then all the bovination hooks are not run, and
;; we save lots of time.
(cond
;; If the buffer was previously marked unparseable,
;; If the buffer was previously marked unparsable,
;; then don't waste our time.
((semantic-parse-tree-unparseable-p)
nil)

View file

@ -362,6 +362,7 @@ This variable is buffer-local."
;; Some implementations of passwd use "Password (again)" as the 2nd prompt.
;; Something called "perforce" uses "Enter password:".
;; OpenVPN prints a prompt like: "Enter Auth Password:".
;; OpenBSD doas prints "doas (user@host) password:".
;; See ert test `comint-test-password-regexp'.
(defcustom comint-password-prompt-regexp
(concat
@ -370,7 +371,7 @@ This variable is buffer-local."
'("Enter" "enter" "Enter same" "enter same" "Enter the" "enter the"
"Enter Auth" "enter auth" "Old" "old" "New" "new" "'s" "login"
"Kerberos" "CVS" "UNIX" " SMB" "LDAP" "PEM" "SUDO"
"[sudo]" "Repeat" "Bad" "Retype")
"[sudo]" "doas" "Repeat" "Bad" "Retype")
t)
;; Allow for user name to precede password equivalent (Bug#31075).
" +.*\\)"

View file

@ -487,6 +487,14 @@ Return a list suitable for use in `interactive'."
(if (symbolp v) v nil)
(intern val)))))
(defvar custom-actioned-widget nil
"Widget for which to show the menu of available actions.
When showing a menu for a custom-variable, custom-face or custom-group widget,
the respective custom-*-action functions bind this variable to that widget, and
the respective custom-*-menu menus use the binding in their :enable and
:selected forms.")
(defun custom-menu-filter (menu widget)
"Convert MENU to the form used by `widget-choose'.
MENU should be in the same format as `custom-variable-menu'.
@ -2851,53 +2859,81 @@ otherwise."
(defun custom-variable-standard-value (widget)
(get (widget-value widget) 'standard-value))
(defvar custom-variable-menu
`(("Set for Current Session" custom-variable-set
(lambda (widget)
(eq (widget-get widget :custom-state) 'modified)))
;; Note that in all the backquoted code in this file, we test
;; init-file-user rather than user-init-file. This is in case
;; cus-edit is loaded by something in site-start.el, because
;; user-init-file is not set at that stage.
;; https://lists.gnu.org/r/emacs-devel/2007-10/msg00310.html
,@(when (or custom-file init-file-user)
'(("Save for Future Sessions" custom-variable-save
(lambda (widget)
(memq (widget-get widget :custom-state)
'(modified set changed rogue))))))
("Undo Edits" custom-redraw
(lambda (widget)
(and (default-boundp (widget-value widget))
(memq (widget-get widget :custom-state) '(modified changed)))))
("Revert This Session's Customization" custom-variable-reset-saved
(lambda (widget)
(memq (widget-get widget :custom-state)
'(modified set changed rogue))))
,@(when (or custom-file init-file-user)
'(("Erase Customization" custom-variable-reset-standard
(lambda (widget)
(and (get (widget-value widget) 'standard-value)
(memq (widget-get widget :custom-state)
'(modified set changed saved rogue)))))))
("Set to Backup Value" custom-variable-reset-backup
(lambda (widget)
(get (widget-value widget) 'backup-value)))
("---" ignore ignore)
("Add Comment" custom-comment-show custom-comment-invisible-p)
("---" ignore ignore)
("Show Current Value" custom-variable-edit
(lambda (widget)
(eq (widget-get widget :custom-form) 'lisp)))
("Show Saved Lisp Expression" custom-variable-edit-lisp
(lambda (widget)
(eq (widget-get widget :custom-form) 'edit))))
"Alist of actions for the `custom-variable' widget.
(defvar custom-variable-menu nil
"If non-nil, an alist of actions for the `custom-variable' widget.
This variable is kept for backward compatibility reasons, please use
`custom-variable-extended-menu' instead.
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
the menu entry, ACTION is the function to call on the widget when the
menu is selected, and FILTER is a predicate which takes a `custom-variable'
widget as an argument, and returns non-nil if ACTION is valid on that
widget. If FILTER is nil, ACTION is always valid.")
(defvar custom-variable-extended-menu
;; No need to give the keymap a prompt, `widget-choose' takes care of it.
(let ((map (make-sparse-keymap)))
(define-key-after map [custom-variable-set]
'(menu-item "Set for Current Session" custom-variable-set
:enable (eq (widget-get custom-actioned-widget :custom-state)
'modified)))
;; Conditionally add items that depend on having loaded the custom-file,
;; rather than giving it a :visible form, because we used to conditionally
;; add this item when using simplified menus.
;; Note that we test init-file-user rather than user-init-file. This is
;; in case cus-edit is loaded by something in site-start.el, because
;; user-init-file is not set at that stage.
;; https://lists.gnu.org/r/emacs-devel/2007-10/msg00310.html
(when (or custom-file init-file-user)
(define-key-after map [custom-variable-save]
'(menu-item "Save for Future Sessions" custom-variable-save
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set changed rogue)))))
(define-key-after map [custom-redraw]
'(menu-item "Undo Edits" custom-redraw
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified changed))))
(define-key-after map [custom-variable-reset-saved]
'(menu-item "Revert This Session's Customization"
custom-variable-reset-saved
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set changed rogue))))
(when (or custom-file init-file-user)
(define-key-after map [custom-variable-reset-standard]
'(menu-item "Erase Customization" custom-variable-reset-standard
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set changed saved rogue)))))
(define-key-after map [custom-variable-reset-backup]
'(menu-item "Set to Backup Value" custom-variable-reset-backup
:enable (get
(widget-value custom-actioned-widget)
'backup-value)))
(define-key-after map [sep0]
'(menu-item "---"))
(define-key-after map [custom-comment-show]
'(menu-item "Add Comment" custom-comment-show
:enable (custom-comment-invisible-p custom-actioned-widget)))
(define-key-after map [sep1]
'(menu-item "---"))
(define-key-after map [custom-variable-edit]
'(menu-item "Show Current Value" custom-variable-edit
:button (:radio . (eq (widget-get custom-actioned-widget
:custom-form)
'edit))))
(define-key-after map [custom-variable-edit-lisp]
'(menu-item "Show Saved Lisp Expression" custom-variable-edit-lisp
:button (:radio . (eq (widget-get custom-actioned-widget
:custom-form)
'lisp))))
map)
"A menu for `custom-variable' widgets.
Used in `custom-variable-action' to show a menu to the user.")
(defun custom-variable-action (widget &optional event)
"Show the menu for `custom-variable' WIDGET.
Optional EVENT is the location for the menu."
@ -2907,12 +2943,17 @@ Optional EVENT is the location for the menu."
(custom-variable-state-set widget))
(custom-redraw-magic widget)
(let* ((completion-ignore-case t)
(custom-actioned-widget widget)
(answer (widget-choose (concat "Operation on "
(custom-unlispify-tag-name
(widget-get widget :value)))
(custom-menu-filter custom-variable-menu
widget)
event)))
(custom-unlispify-tag-name
(widget-get widget :value)))
;; Get rid of checks like this one if we ever
;; remove the simplified menus.
(if custom-variable-menu
(custom-menu-filter custom-variable-menu
widget)
custom-variable-extended-menu)
event)))
(if answer
(funcall answer widget)))))
@ -3676,39 +3717,66 @@ the present value is saved to its :shown-value property instead."
(widget-put widget :children children)
(custom-face-state-set widget))))))
(defvar custom-face-menu
`(("Set for Current Session" custom-face-set)
,@(when (or custom-file init-file-user)
'(("Save for Future Sessions" custom-face-save)))
("Undo Edits" custom-redraw
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified changed))))
("Revert This Session's Customization" custom-face-reset-saved
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified set changed))))
,@(when (or custom-file init-file-user)
'(("Erase Customization" custom-face-reset-standard
(lambda (widget)
(get (widget-value widget) 'face-defface-spec)))))
("---" ignore ignore)
("Add Comment" custom-comment-show custom-comment-invisible-p)
("---" ignore ignore)
("For Current Display" custom-face-edit-selected
(lambda (widget)
(not (eq (widget-get widget :custom-form) 'selected))))
("For All Kinds of Displays" custom-face-edit-all
(lambda (widget)
(not (eq (widget-get widget :custom-form) 'all))))
("Show Lisp Expression" custom-face-edit-lisp
(lambda (widget)
(not (eq (widget-get widget :custom-form) 'lisp)))))
"Alist of actions for the `custom-face' widget.
(defvar custom-face-menu nil
"If non-nil, an alist of actions for the `custom-face' widget.
This variable is kept for backward compatibility reasons, please use
`custom-face-extended-menu' instead.
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
the menu entry, ACTION is the function to call on the widget when the
menu is selected, and FILTER is a predicate which takes a `custom-face'
widget as an argument, and returns non-nil if ACTION is valid on that
widget. If FILTER is nil, ACTION is always valid.")
(defvar custom-face-extended-menu
(let ((map (make-sparse-keymap)))
(define-key-after map [custom-face-set]
'(menu-item "Set for Current Session" custom-face-set))
(when (or custom-file init-file-user)
(define-key-after map [custom-face-save]
'(menu-item "Save for Future Sessions" custom-face-save)))
(define-key-after map [custom-redraw]
'(menu-item "Undo Edits" custom-redraw
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified changed))))
(define-key-after map [custom-face-reset-saved]
'(menu-item "Revert This Session's Customization" custom-face-reset-saved
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set changed))))
(when (or custom-file init-file-user)
(define-key-after map [custom-face-reset-standard]
'(menu-item "Erase Customization" custom-face-reset-standard
:enable (get (widget-value custom-actioned-widget)
'face-defface-spec))))
(define-key-after map [sep0]
'(menu-item "---"))
(define-key-after map [custom-comment-show]
'(menu-item "Add Comment" custom-comment-show
:enable (custom-comment-invisible-p custom-actioned-widget)))
(define-key-after map [sep1]
'(menu-item "---"))
(define-key-after map [custom-face-edit-selected]
'(menu-item "For Current Display" custom-face-edit-selected
:button (:radio . (eq (widget-get custom-actioned-widget
:custom-form)
'selected))))
(define-key-after map [custom-face-edit-all]
'(menu-item "For All Kinds of Displays" custom-face-edit-all
:button (:radio . (eq (widget-get custom-actioned-widget
:custom-form)
'all))))
(define-key-after map [custom-face-edit-lisp]
'(menu-item "Show Lisp Expression" custom-face-edit-lisp
:button (:radio . (eq (widget-get custom-actioned-widget
:custom-form)
'lisp))))
map)
"A menu for `custom-face' widgets.
Used in `custom-face-action' to show a menu to the user.")
(defun custom-face-edit-selected (widget)
"Edit selected attributes of the value of WIDGET."
(widget-put widget :custom-state 'unknown)
@ -3775,12 +3843,15 @@ Optional EVENT is the location for the menu."
(if (eq (widget-get widget :custom-state) 'hidden)
(custom-toggle-hide widget)
(let* ((completion-ignore-case t)
(custom-actioned-widget widget)
(symbol (widget-get widget :value))
(answer (widget-choose (concat "Operation on "
(custom-unlispify-tag-name symbol))
(custom-menu-filter custom-face-menu
widget)
event)))
(if custom-face-menu
(custom-menu-filter custom-face-menu
widget)
custom-face-extended-menu)
event)))
(if answer
(funcall answer widget)))))
@ -4310,43 +4381,65 @@ This works for both graphical and text displays."
(insert "\n")
(custom-group--draw-horizontal-line)))))
(defvar custom-group-menu
`(("Set for Current Session" custom-group-set
(lambda (widget)
(eq (widget-get widget :custom-state) 'modified)))
,@(when (or custom-file init-file-user)
'(("Save for Future Sessions" custom-group-save
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified set))))))
("Undo Edits" custom-group-reset-current
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified))))
("Revert This Session's Customizations" custom-group-reset-saved
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified set))))
,@(when (or custom-file init-file-user)
'(("Erase Customization" custom-group-reset-standard
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified set saved)))))))
"Alist of actions for the `custom-group' widget.
(defvar custom-group-menu nil
"If non-nil, an alist of actions for the `custom-group' widget.
This variable is kept for backward compatibility reasons, please use
`custom-group-extended-menu' instead.
Each entry has the form (NAME ACTION FILTER) where NAME is the name of
the menu entry, ACTION is the function to call on the widget when the
menu is selected, and FILTER is a predicate which takes a `custom-group'
widget as an argument, and returns non-nil if ACTION is valid on that
widget. If FILTER is nil, ACTION is always valid.")
(defvar custom-group-extended-menu
(let ((map (make-sparse-keymap)))
(define-key-after map [custom-group-set]
'(menu-item "Set for Current Session" custom-group-set
:enable (eq (widget-get custom-actioned-widget :custom-state)
'modified)))
(when (or custom-file init-file-user)
(define-key-after map [custom-group-save]
'(menu-item "Save for Future Sessions" custom-group-save
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set)))))
(define-key-after map [custom-group-reset-current]
'(menu-item "Undo Edits" custom-group-reset-current
:enable (eq (widget-get custom-actioned-widget :custom-state)
'modified)))
(define-key-after map [custom-group-reset-saved]
'(menu-item "Revert This Session's Customizations"
custom-group-reset-saved
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set))))
(when (or custom-file init-file-user)
(define-key-after map [custom-group-reset-standard]
'(menu-item "Erase Customization" custom-group-reset-standard
:enable (memq
(widget-get custom-actioned-widget :custom-state)
'(modified set saved)))))
map)
"A menu for `custom-group' widgets.
Used in `custom-group-action' to show a menu to the user.")
(defun custom-group-action (widget &optional event)
"Show the menu for `custom-group' WIDGET.
Optional EVENT is the location for the menu."
(if (eq (widget-get widget :custom-state) 'hidden)
(custom-toggle-hide widget)
(let* ((completion-ignore-case t)
(custom-actioned-widget widget)
(answer (widget-choose (concat "Operation on "
(custom-unlispify-tag-name
(widget-get widget :value)))
(custom-menu-filter custom-group-menu
widget)
event)))
(if custom-group-menu
(custom-menu-filter custom-group-menu
widget)
custom-group-extended-menu)
event)))
(if answer
(funcall answer widget)))))

View file

@ -910,17 +910,27 @@ Resize the containing frame if needed."
(width-diff (- img-width win-width))
(height-diff (- img-height win-height))
(new-frame-params
;; If we can't resize the window, try and resize the frame.
;; We used to compare the `window-width/height` and the
;; `frame-width/height` instead of catching the errors, but
;; it's too fiddly (e.g. in the presence of the miniwindow,
;; the height the frame should be equal to the height of the
;; root window +1).
(append
(if (= (window-width) (frame-width))
`((width . (text-pixels
. ,(+ (frame-text-width) width-diff))))
(enlarge-window (/ width-diff (frame-char-width)) 'horiz)
nil)
(if (= (window-height) (frame-height))
`((height . (text-pixels
. ,(+ (frame-text-height) height-diff))))
(enlarge-window (/ height-diff (frame-char-height)) nil)
nil))))
(condition-case nil
(progn
(enlarge-window (/ width-diff (frame-char-width)) 'horiz)
nil)
(error
`((width . (text-pixels
. ,(+ (frame-text-width) width-diff))))))
(condition-case nil
(progn
(enlarge-window (/ height-diff (frame-char-height)) nil)
nil)
(error
`((height . (text-pixels
. ,(+ (frame-text-height) height-diff)))))))))
(when new-frame-params
(modify-frame-parameters (selected-frame) new-frame-params))))

View file

@ -284,7 +284,7 @@ The information is logged to `byte-compile-log-buffer'."
;; This needs to be autoloaded because it needs to be available to
;; Emacs before the byte compiler is loaded, otherwise Emacs will not
;; know that this variable is marked as safe until it is too late.
;; (See https://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00261.html )
;; (See https://lists.gnu.org/r/emacs-devel/2018-01/msg00261.html )
;;;###autoload(put 'byte-compile-error-on-warn 'safe-local-variable 'booleanp)
(defconst byte-compile-warning-types

View file

@ -1244,13 +1244,10 @@ face specs for the new background mode."
;; during startup with -rv on the command
;; line for the initial frame, because frames
;; are not recorded in the pdump file.
(assq face (frame-face-alist))
(assq face (frame-face-alist frame))
(face-spec-match-p face
(face-user-default-spec face)
;; FIXME: why selected-frame and
;; not the frame that is the
;; argument to this function?
(selected-frame))))
frame)))
(push face locally-modified-faces)))
;; Now change to the new frame parameters
(modify-frame-parameters frame params)

View file

@ -3812,7 +3812,6 @@ has been fetched."
t))))
(defun gnus-agent-store-article (article group)
(declare (obsolete nil "28.1"))
(let* ((gnus-command-method (gnus-find-method-for-group group))
(file (gnus-agent-article-name (number-to-string article) group))
(file-name-coding-system nnmail-pathname-coding-system)

View file

@ -7092,7 +7092,10 @@ If given a prefix, show the hidden text instead."
gnus-summary-buffer)
(when gnus-keep-backlog
(gnus-backlog-enter-article
group article (current-buffer))))
group article (current-buffer)))
(when (and gnus-agent
(gnus-agent-group-covered-p group))
(gnus-agent-store-article article group)))
(setq result 'article))
(methods
(setq gnus-override-method (pop methods)))

View file

@ -225,6 +225,12 @@ that was fetched."
(save-excursion
(save-restriction
(narrow-to-region mark (point-max))
;; Put the articles into the agent, if they aren't already.
(when (and gnus-agent
(gnus-agent-group-covered-p group))
(save-restriction
(narrow-to-region mark (point-max))
(gnus-agent-store-article article group)))
;; Prefetch images for the groups that want that.
(when (fboundp 'gnus-html-prefetch-images)
(gnus-html-prefetch-images summary))

View file

@ -6240,8 +6240,8 @@ If WHERE is `summary', the summary mode line format will be used."
;; We might have to chop a bit of the string off...
(when (> (length mode-string) max-len)
(setq mode-string
(concat (truncate-string-to-width mode-string (- max-len 3))
"...")))))
(truncate-string-to-width
mode-string (- max-len 3) nil nil t)))))
;; Update the mode line.
(setq mode-line-buffer-identification
(gnus-mode-line-buffer-identification (list mode-string)))

View file

@ -1106,7 +1106,8 @@ point and mark around the citation text as modified."
If nil, don't insert a signature.
If t, insert `message-signature-file'.
If a function or form, insert its result.
See `mail-signature' for the recommended format of a signature."
See `mail-signature' for the recommended format of a signature.
Also see `message-signature-insert-empty-line'."
:version "23.2"
:type '(choice string
(const :tag "None" nil)

View file

@ -1597,7 +1597,7 @@ If point is on a group name, this function operates on that group."
(defun ibuffer-compile-make-substring-form (strvar maxvar from-end-p)
(if from-end-p
;; FIXME: not sure if this case is correct (Bug#24972)
`(truncate-string-to-width str strlen (- strlen ,maxvar) nil ?\s)
`(truncate-string-to-width str strlen (- strlen ,maxvar) ?\s)
`(truncate-string-to-width ,strvar ,maxvar nil ?\s)))
(defun ibuffer-compile-make-format-form (strvar widthform alignment)

View file

@ -638,14 +638,14 @@ Do the right thing if the file has been compressed or zipped."
(insert-file-contents-literally fullname visit)
(let ((inhibit-read-only t)
(coding-system-for-write 'no-conversion)
(inhibit-nul-byte-detection t) ; Index nodes include null bytes
(inhibit-null-byte-detection t) ; Index nodes include null bytes
(default-directory (or (file-name-directory fullname)
default-directory)))
(or (consp decoder)
(setq decoder (list decoder)))
(apply #'call-process-region (point-min) (point-max)
(car decoder) t t nil (cdr decoder))))
(let ((inhibit-nul-byte-detection t)) ; Index nodes include null bytes
(let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes
(insert-file-contents fullname visit)))
;; Clear the caches of modified Info files.
@ -1375,7 +1375,7 @@ is non-nil)."
;; Index nodes include null bytes. DIR
;; files should not have indices, but who
;; knows...
(let ((inhibit-nul-byte-detection t))
(let ((inhibit-null-byte-detection t))
(insert-file-contents file)
(setq Info-dir-file-name file)
(push (current-buffer) buffers)

View file

@ -329,12 +329,12 @@ Optional argument DIRNAME if specified is the directory name under which
the generated Emacs Lisp is saved.
The name of generated file is specified by the variable `ja-dic-filename'."
(interactive "FSKK dictionary file: ")
(let* ((coding-system-for-read 'euc-japan)
(skkbuf (get-buffer-create " *skkdic-unannotated*"))
(let* ((skkbuf (get-buffer-create " *skkdic-unannotated*"))
(buf (get-buffer-create "*skkdic-work*")))
;; Set skkbuf to an unannotated copy of the dictionary.
(with-current-buffer skkbuf
(insert-file-contents (expand-file-name filename))
(let ((coding-system-for-read 'euc-japan))
(insert-file-contents (expand-file-name filename)))
(re-search-forward "^[^;]")
(while (re-search-forward ";[^\n/]*/" nil t)
(replace-match "/")))

View file

@ -44,9 +44,22 @@
(setq i (1+ i)))))
string)
(defvar truncate-string-ellipsis "..." ;"…"
(defvar truncate-string-ellipsis nil
"String to use to indicate truncation.
Serves as default value of ELLIPSIS argument to `truncate-string-to-width'.")
Serves as default value of ELLIPSIS argument to `truncate-string-to-width'
returned by the function `truncate-string-ellipsis'.")
(defun truncate-string-ellipsis ()
"Return the string used to indicate truncation.
Use the value of the variable `truncate-string-ellipsis' when it's non-nil.
Otherwise, return the Unicode character U+2026 \"HORIZONTAL ELLIPSIS\"
when it's displayable on the selected frame, or `...'. This function
needs to be called on every use of `truncate-string-to-width' to
decide whether the selected frame can display that Unicode character."
(cond
(truncate-string-ellipsis)
((char-displayable-p ?…) "")
("...")))
;;;###autoload
(defun truncate-string-to-width (str end-column
@ -73,7 +86,7 @@ If ELLIPSIS is non-nil, it should be a string which will replace the
end of STR (including any padding) if it extends beyond END-COLUMN,
unless the display width of STR is equal to or less than the display
width of ELLIPSIS. If it is non-nil and not a string, then ELLIPSIS
defaults to `truncate-string-ellipsis'.
defaults to `truncate-string-ellipsis', or to three dots when it's nil.
If ELLIPSIS-TEXT-PROPERTY is non-nil, a too-long string will not
be truncated, but instead the elided parts will be covered by a
@ -81,7 +94,7 @@ be truncated, but instead the elided parts will be covered by a
(or start-column
(setq start-column 0))
(when (and ellipsis (not (stringp ellipsis)))
(setq ellipsis truncate-string-ellipsis))
(setq ellipsis (truncate-string-ellipsis)))
(let ((str-len (length str))
(str-width (string-width str))
(ellipsis-width (if ellipsis (string-width ellipsis) 0))

View file

@ -856,10 +856,10 @@ VALUE is a CCL program name defined by `define-ccl-program'. The
CCL program reads a character sequence and writes a byte sequence
as an encoding result.
`:inhibit-nul-byte-detection'
`:inhibit-null-byte-detection'
VALUE non-nil means Emacs ignore null bytes on code detection.
See the variable `inhibit-nul-byte-detection'. This attribute
See the variable `inhibit-null-byte-detection'. This attribute
is meaningful only when `:coding-type' is `undecided'.
`:inhibit-iso-escape-detection'
@ -904,7 +904,7 @@ non-ASCII files. This attribute is meaningful only when
:ccl-encoder
:valids))
((eq coding-type 'undecided)
'(:inhibit-nul-byte-detection
'(:inhibit-null-byte-detection
:inhibit-iso-escape-detection
:prefer-utf-8))))))

View file

@ -271,8 +271,12 @@ are `word-search-regexp' \(`\\[isearch-toggle-word]'), `isearch-symbol-regexp'
(defcustom search-highlight-submatches t
"Whether to highlight regexp subexpressions of the current regexp match.
The faces used to do the highlights are named `isearch-group-odd' and
`isearch-group-even'."
The faces used to do the highlights are named `isearch-group-1',
`isearch-group-2', etc. (By default, only these 2 are defined.)
When there are more matches than faces, then faces are reused from the
beginning, in a cyclical manner, so the `isearch-group-1' face is
isreused for the third match. If you want to use more distinctive colors,
you can define more of these faces using the same numbering scheme."
:type 'boolean
:version "28.1")
@ -887,7 +891,7 @@ variable by the command `isearch-toggle-lax-whitespace'.")
"Stack of search status elements.
Each element is an `isearch--state' struct where the slots are
[STRING MESSAGE POINT SUCCESS FORWARD OTHER-END WORD/REGEXP-FUNCTION
ERROR WRAPPED BARRIER CASE-FOLD-SEARCH POP-FUN]")
ERROR WRAPPED BARRIER CASE-FOLD-SEARCH POP-FUN MATCH-DATA]")
(defvar isearch-string "") ; The current search string.
(defvar isearch-message "") ; text-char-description version of isearch-string
@ -903,6 +907,7 @@ Each element is an `isearch--state' struct where the slots are
"Recorded minimum/maximal point for the current search.")
(defvar isearch-just-started nil)
(defvar isearch-start-hscroll 0) ; hscroll when starting the search.
(defvar isearch-match-data nil) ; match-data of regexp-based search
;; case-fold-search while searching.
;; either nil, t, or 'yes. 'yes means the same as t except that mixed
@ -1221,6 +1226,7 @@ used to set the value of `isearch-regexp-function'."
isearch-small-window nil
isearch-just-started t
isearch-start-hscroll (window-hscroll)
isearch-match-data nil
isearch-opoint (point)
search-ring-yank-pointer nil
@ -1349,8 +1355,8 @@ The last thing is to trigger a new round of lazy highlighting."
(set-window-hscroll (selected-window) current-scroll))))
(if isearch-other-end
(if (< isearch-other-end (point)) ; isearch-forward?
(isearch-highlight isearch-other-end (point))
(isearch-highlight (point) isearch-other-end))
(isearch-highlight isearch-other-end (point) isearch-match-data)
(isearch-highlight (point) isearch-other-end isearch-match-data))
(isearch-dehighlight))))
(setq ;; quit-flag nil not for isearch-mode
isearch-adjusted nil
@ -1508,7 +1514,8 @@ REGEXP if non-nil says use the regexp search ring."
(barrier isearch-barrier)
(case-fold-search isearch-case-fold-search)
(pop-fun (if isearch-push-state-function
(funcall isearch-push-state-function))))))
(funcall isearch-push-state-function)))
(match-data isearch-match-data))))
(string nil :read-only t)
(message nil :read-only t)
(point nil :read-only t)
@ -1520,7 +1527,8 @@ REGEXP if non-nil says use the regexp search ring."
(wrapped nil :read-only t)
(barrier nil :read-only t)
(case-fold-search nil :read-only t)
(pop-fun nil :read-only t))
(pop-fun nil :read-only t)
(match-data nil :read-only t))
(defun isearch--set-state (cmd)
(setq isearch-string (isearch--state-string cmd)
@ -1532,7 +1540,8 @@ REGEXP if non-nil says use the regexp search ring."
isearch-error (isearch--state-error cmd)
isearch-wrapped (isearch--state-wrapped cmd)
isearch-barrier (isearch--state-barrier cmd)
isearch-case-fold-search (isearch--state-case-fold-search cmd))
isearch-case-fold-search (isearch--state-case-fold-search cmd)
isearch-match-data (isearch--state-match-data cmd))
(if (functionp (isearch--state-pop-fun cmd))
(funcall (isearch--state-pop-fun cmd) cmd))
(goto-char (isearch--state-point cmd)))
@ -1624,6 +1633,7 @@ You can update the global isearch variables by setting new values to
(isearch-adjusted isearch-adjusted)
(isearch-yank-flag isearch-yank-flag)
(isearch-error isearch-error)
(isearch-match-data isearch-match-data)
(multi-isearch-file-list-new multi-isearch-file-list)
(multi-isearch-buffer-list-new multi-isearch-buffer-list)
@ -3432,6 +3442,7 @@ Optional third argument, if t, means if fail just return nil (no error).
(match-beginning 0) (match-end 0)))
(setq retry nil)))
(setq isearch-just-started nil)
(setq isearch-match-data (match-data t))
(if isearch-success
(setq isearch-other-end
(if isearch-forward (match-beginning 0) (match-end 0)))))
@ -3663,27 +3674,27 @@ since they have special meaning in a regexp."
(defvar isearch-overlay nil)
(defvar isearch-submatches-overlays nil)
(defface isearch-group-odd
(defface isearch-group-1
'((((class color) (min-colors 88) (background light))
(:background "#ff00ff" :foreground "lightskyblue1"))
(:background "#f000f0" :foreground "lightskyblue1"))
(((class color) (min-colors 88) (background dark))
(:background "palevioletred3" :foreground "brown4"))
(:background "palevioletred1" :foreground "brown4"))
(t (:inherit isearch)))
"Face for highlighting Isearch the odd group matches."
:group 'isearch
:version "28.1")
(defface isearch-group-even
(defface isearch-group-2
'((((class color) (min-colors 88) (background light))
(:background "#800080" :foreground "lightskyblue1"))
(:background "#a000a0" :foreground "lightskyblue1"))
(((class color) (min-colors 88) (background dark))
(:background "#905070" :foreground "brown4"))
(:background "palevioletred3" :foreground "brown4"))
(t (:inherit isearch)))
"Face for highlighting Isearch the even group matches."
:group 'isearch
:version "28.1")
(defun isearch-highlight (beg end)
(defun isearch-highlight (beg end &optional match-data)
(if search-highlight
(if isearch-overlay
;; Overlay already exists, just move it.
@ -3693,18 +3704,24 @@ since they have special meaning in a regexp."
;; 1001 is higher than lazy's 1000 and ediff's 100+
(overlay-put isearch-overlay 'priority 1001)
(overlay-put isearch-overlay 'face isearch-face)))
(when (and search-highlight-submatches
isearch-regexp)
(mapc 'delete-overlay isearch-submatches-overlays)
(setq isearch-submatches-overlays nil)
(dotimes (i (/ (length (match-data)) 2))
(unless (zerop i)
(let ((ov (make-overlay (match-beginning i) (match-end i))))
(overlay-put ov 'face (if (zerop (mod i 2))
'isearch-group-even
'isearch-group-odd))
(overlay-put ov 'priority 1002)
(push ov isearch-submatches-overlays))))))
(let ((submatch-data (cddr (butlast match-data)))
(group 0)
ov face)
(while submatch-data
(setq group (1+ group))
(setq ov (make-overlay (pop submatch-data) (pop submatch-data))
face (intern-soft (format "isearch-group-%d" group)))
;; Recycle faces from beginning.
(unless (facep face)
(setq group 1 face 'isearch-group-1))
(overlay-put ov 'face face)
(overlay-put ov 'priority 1002)
(push ov isearch-submatches-overlays)))))
(defun isearch-dehighlight ()
(when isearch-overlay

View file

@ -937,7 +937,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\='
(quail-define-package
"danish-postfix" "Latin-1" "DA<" t
"Danish input method (rule: AE -> Æ, OE -> Ø, AA -> Å, E\\=' -> É)
"Danish input method (rule: AE -> Æ, OE -> Ø, AA -> Å, E\\=' -> É, E= -> €)
Doubling the postfix separates the letter and postfix: e.g. aee -> ae
"
@ -951,6 +951,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("AA" )
("aa" )
("E'" )
("E=" ?€)
("e'" )
("AEE" ["AE"])
@ -960,6 +961,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("AAA" ["AA"])
("aaa" ["aa"])
("E''" ["E'"])
("E==" ["E="])
("e''" ["e'"])
)
@ -1034,6 +1036,7 @@ AE -> Ä
AEE -> AE
OE -> Ö
OEE -> OE
E= ->
"
nil t nil nil nil nil nil nil nil nil t)
@ -1042,11 +1045,13 @@ OEE -> OE
("ae" )
("OE" )
("oe" )
("E=" ?€)
("AEE" ["AE"])
("aee" ["ae"])
("OEE" ["OE"])
("oee" ["oe"])
("E==" ["E="])
)
(quail-define-package
@ -1061,6 +1066,8 @@ Par exemple: a\\=` -> à e\\=' -> é.
En doublant la frappe des diacritiques, ils s'isoleront de la lettre.
Par exemple: e\\='\\=' -> e\\='
est produit par E=.
Œ est produit par O/."
nil t nil nil nil nil nil nil nil nil t)
@ -1073,6 +1080,7 @@ Par exemple: e\\='\\=' -> e\\='
("E'" )
("E^" )
("E\"" )
("E=" ?€)
("e`" )
("e'" )
("e^" )
@ -1104,6 +1112,7 @@ Par exemple: e\\='\\=' -> e\\='
("E''" ["E'"])
("E^^" ["E^"])
("E\"\"" ["E\""])
("E==" ["E="])
("e``" ["e`"])
("e''" ["e'"])
("e^^" ["e^"])
@ -1140,6 +1149,7 @@ ue -> ü (not after a/e/q)
uee -> ue
sz -> ß
szz -> sz
E= ->
"
nil t nil nil nil nil nil nil nil nil t)
@ -1152,6 +1162,7 @@ szz -> sz
("ue" )
("sz" )
("SZ" ?ẞ)
("E=" ?€)
("AEE" ["AE"])
("aee" ["ae"])
@ -1168,6 +1179,7 @@ szz -> sz
("Aue" ["Aue"])
("que" ["que"])
("Que" ["Que"])
("E==" ["E="])
)
(quail-define-package
@ -1184,6 +1196,7 @@ AE -> Æ
OE -> Ö
D/ -> Ð (eth)
T/ -> Þ (thorn)
E= ->
Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\='
" nil t nil nil nil nil nil nil nil nil t)
@ -1238,7 +1251,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\='
a\\=` -> à A\\=` -> À e\\=' -> é << -> «
e\\=` -> è E\\=` -> È E\\=' -> É >> -> »
i\\=` -> ì I\\=` -> Ì o_ -> º
i\\=` -> ì I\\=` -> Ì E= -> o_ -> º
o\\=` -> ò O\\=` -> Ò a_ -> ª
u\\=` -> ù U\\=` -> Ù
@ -1252,6 +1265,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\=`\\=` -> a\\=`
("a`" )
("E`" )
("E'" )
("E=" ?€)
("e`" )
("e'" )
("I`" )
@ -1269,6 +1283,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\=`\\=` -> a\\=`
("a``" ["a`"])
("E``" ["E`"])
("E''" ["E'"])
("E==" ["E="])
("e``" ["e`"])
("e''" ["e'"])
("I``" ["I`"])
@ -1285,7 +1300,8 @@ Doubling the postfix separates the letter and postfix: e.g. a\\=`\\=` -> a\\=`
(quail-define-package
"norwegian-postfix" "Latin-1" "NO<" t
"Norwegian (Norsk) input method (rule: AE->Æ OE->Ø AA->Å E\\='->É)
"Norwegian (Norsk) input method (rule: AE->Æ OE->Ø AA->Å E\\='->É
E= -> )
Doubling the postfix separates the letter and postfix: e.g. aee -> ae
"
@ -1299,6 +1315,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("AA" )
("aa" )
("E'" )
("E=" ?€)
("e'" )
("AEE" ["AE"])
@ -1308,6 +1325,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("AAA" ["AA"])
("aaa" ["aa"])
("E''" ["E'"])
("E==" ["E="])
("e''" ["e'"])
)
@ -1322,6 +1340,7 @@ aa -> å
a\" -> ä
o\" -> ö
e\\=' -> é
E= ->
Doubling the postfix separates the letter and postfix:
aee -> ae o\"\" -> o\" etc.
@ -1339,6 +1358,7 @@ aee -> ae o\"\" -> o\" etc.
("O\"" )
("o\"" )
("E'" )
("E=" ?€)
("e'" )
("AEE" ["AE"])
@ -1352,6 +1372,7 @@ aee -> ae o\"\" -> o\" etc.
("O\"\"" ["O\""])
("o\"\"" ["o\""])
("E''" ["E'"])
("E==" ["E="])
("e''" ["e'"])
)
@ -1361,6 +1382,7 @@ aee -> ae o\"\" -> o\" etc.
A\\=' -> Á
E\\=' -> É
E= ->
I\\=' -> Í
O\\=' -> Ó
U\\=' -> Ú
@ -1376,6 +1398,7 @@ a\\='\\=' -> a\\=' n~~ -> n~, etc.
("A'" )
("a'" )
("E'" )
("E=" ?€)
("e'" )
("I'" )
("i'" )
@ -1393,6 +1416,7 @@ a\\='\\=' -> a\\=' n~~ -> n~, etc.
("A''" ["A'"])
("a''" ["a'"])
("E''" ["E'"])
("E==" ["E="])
("e''" ["e'"])
("I''" ["I'"])
("i''" ["i'"])
@ -1410,7 +1434,8 @@ a\\='\\=' -> a\\=' n~~ -> n~, etc.
(quail-define-package
"swedish-postfix" "Latin-1" "SV<" t
"Swedish (Svenska) input method (rule: AA -> Å AE -> Ä OE -> Ö E\\=' -> É)
"Swedish (Svenska) input method
(rule: AA -> Å AE -> Ä OE -> Ö E\\=' -> É E= -> )
Doubling the postfix separates the letter and postfix: e.g. aee -> ae
" nil t nil nil nil nil nil nil nil nil t)
@ -1423,6 +1448,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("OE" )
("oe" )
("E'" )
("E=" ?€)
("e'" )
("AAA" ["AA"])
@ -1432,6 +1458,7 @@ Doubling the postfix separates the letter and postfix: e.g. aee -> ae
("OEE" ["OE"])
("oee" ["oe"])
("E''" ["E'"])
("E==" ["E="])
("e''" ["e'"])
)

View file

@ -2622,7 +2622,7 @@ is copied instead of being cut."
;; this for all windows on all visible frames. In addition we save
;; also the cursor type for the window's buffer so we can restore it
;; in case we modified it.
;; https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00090.html
;; https://lists.gnu.org/r/emacs-devel/2017-12/msg00090.html
(walk-window-tree
(lambda (window)
(setq states

View file

@ -912,8 +912,9 @@ discovering the still incomplete interface."
(defun dbus-unregister-object (object)
"Unregister OBJECT from D-Bus.
OBJECT must be the result of a preceding `dbus-register-method',
`dbus-register-property' or `dbus-register-signal' call. It
returns t if OBJECT has been unregistered, nil otherwise.
`dbus-register-signal', `dbus-register-property' or
`dbus-register-monitor' call. The function returns t if OBJECT
has been unregistered, nil otherwise.
When OBJECT identifies the last method or property, which is
registered for the respective service, Emacs releases its
@ -951,7 +952,10 @@ association to the service from D-Bus."
(when (eq type :signal)
(dbus-call-method
bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
"RemoveMatch" (nth 4 elt)))))
"RemoveMatch" (nth 4 elt)))
;; Delete monitor connection by reestablishing private bus.
(when (eq type :monitor)
(dbus-init-bus bus 'private))))
;; Check, whether there is still a registered function or property
;; for the given service. If not, unregister the service from the
@ -2037,7 +2041,7 @@ either a method name, a signal name, or an error name."
(when dbus-debug (message "%s" dbus-registered-objects-table))
;; Return the object.
(list key key1)))
(list key (list nil nil handler))))
(defconst dbus-monitor-method-call
(propertize "method-call" 'face 'font-lock-function-name-face)

View file

@ -8426,6 +8426,7 @@ comment at the start of cc-engine.el for more info."
;; o - 'found if it's a type that matches one in `c-found-types';
;; o - 'maybe if it's an identifier that might be a type;
;; o - 'decltype if it's a decltype(variable) declaration; - or
;; o - 'no-id if "auto" precluded parsing a type identifier.
;; o - nil if it can't be a type (the point isn't moved then).
;;
;; The point is assumed to be at the beginning of a token.
@ -8450,9 +8451,12 @@ comment at the start of cc-engine.el for more info."
;; prefix of a type.
(when c-opt-type-modifier-prefix-key ; e.g. "const" "volatile", but NOT "typedef"
(while (looking-at c-opt-type-modifier-prefix-key)
(when (looking-at c-no-type-key)
(setq res 'no-id))
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq res 'prefix)))
(or (eq res 'no-id)
(setq res 'prefix))))
(cond
((looking-at c-typeof-key) ; e.g. C++'s "decltype".
@ -8503,28 +8507,30 @@ comment at the start of cc-engine.el for more info."
(setq res t))
(unless res (goto-char start))) ; invalid syntax
((progn
(setq pos nil)
(if (looking-at c-identifier-start)
(save-excursion
(setq id-start (point)
name-res (c-forward-name))
(when name-res
(setq id-end (point)
id-range c-last-identifier-range))))
(and (cond ((looking-at c-primitive-type-key)
(setq res t))
((c-with-syntax-table c-identifier-syntax-table
(looking-at c-known-type-key))
(setq res 'known)))
(or (not id-end)
(>= (save-excursion
(save-match-data
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq pos (point))))
id-end)
(setq res nil))))
((and
(not (eq res 'no-id))
(progn
(setq pos nil)
(if (looking-at c-identifier-start)
(save-excursion
(setq id-start (point)
name-res (c-forward-name))
(when name-res
(setq id-end (point)
id-range c-last-identifier-range))))
(and (cond ((looking-at c-primitive-type-key)
(setq res t))
((c-with-syntax-table c-identifier-syntax-table
(looking-at c-known-type-key))
(setq res 'known)))
(or (not id-end)
(>= (save-excursion
(save-match-data
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq pos (point))))
id-end)
(setq res nil)))))
;; Looking at a primitive or known type identifier. We've
;; checked for a name first so that we don't go here if the
;; known type match only is a prefix of another name.
@ -8599,7 +8605,7 @@ comment at the start of cc-engine.el for more info."
(goto-char start)
(setq res nil)))))
(when res
(when (not (memq res '(nil no-id)))
;; Skip trailing type modifiers. If any are found we know it's
;; a type.
(when c-opt-type-modifier-key
@ -9452,12 +9458,11 @@ This function might do hidden buffer changes."
(when (setq found-type (c-forward-type t)) ; brace-block-too
;; Found a known or possible type or a prefix of a known type.
(when (and (c-major-mode-is 'c++-mode) ; C++11 style "auto"?
(eq prev-kwd-sym (c-keyword-sym "auto"))
(looking-at "[=(]")) ; FIXME!!! proper regexp.
(setq new-style-auto t)
(setq found-type nil)
(goto-char start)) ; position of foo in "auto foo"
(when (and (eq found-type 'no-id)
(save-excursion
(and (c-forward-name) ; over the identifier
(looking-at "[=(]")))) ; FIXME!!! proper regexp.
(setq new-style-auto t)) ; position of foo in "auto foo"
(when at-type
;; Got two identifiers with nothing but whitespace
@ -9540,7 +9545,7 @@ This function might do hidden buffer changes."
;; over all specifiers and type identifiers. The reason
;; to do this for a known type prefix is to make things
;; like "unsigned INT16" work.
(and found-type (not (eq found-type t))))))
(and found-type (not (memq found-type '(t no-id)))))))
(cond
((eq at-type t)
@ -9560,6 +9565,10 @@ This function might do hidden buffer changes."
;; followed by another type.
(setq at-type t))
((eq at-type 'no-id)
;; For an auto type, we assume we definitely have a type construct.
(setq at-type t))
((not at-type)
;; Got no type but set things up to continue anyway to handle
;; the various cases when a declaration doesn't start with a

View file

@ -2122,7 +2122,9 @@ fontified with the keyword face and not the type face."
t nil
c '("const" "restrict" "volatile")
c++ '("const" "noexcept" "volatile")
objc '("const" "volatile"))
objc '("const" "volatile")
t (append (c-lang-const c-no-type-kwds)
(c-lang-const c-type-modifier-prefix-kwds)))
(c-lang-defconst c-opt-type-modifier-prefix-key
;; Adorned regexp matching `c-type-modifier-prefix-kwds', or nil in
@ -2349,6 +2351,16 @@ will be handled."
t (c-make-keywords-re t (c-lang-const c-using-kwds)))
(c-lang-defvar c-using-key (c-lang-const c-using-key))
(c-lang-defconst c-no-type-kwds
"Keywords which remove the need to specify a type in declarations"
t nil
c++ '("auto"))
(c-lang-defconst c-no-type-key
;; Regexp matching an entry from `c-no-type-kwds'
t (c-make-keywords-re t (c-lang-const c-no-type-kwds)))
(c-lang-defvar c-no-type-key (c-lang-const c-no-type-key))
(c-lang-defconst c-typeless-decl-kwds
"Keywords introducing declarations where the (first) identifier
\(declarator) follows directly after the keyword, without any type.
@ -2362,7 +2374,6 @@ will be handled."
;; {...}").
t (append (c-lang-const c-class-decl-kwds)
(c-lang-const c-brace-list-decl-kwds))
c++ (append (c-lang-const c-typeless-decl-kwds) '("auto")) ; C++11.
;; Note: "manages" for CORBA CIDL clashes with its presence on
;; `c-type-list-kwds' for IDL.
idl (append (c-lang-const c-typeless-decl-kwds)
@ -2397,7 +2408,8 @@ If any of these also are on `c-type-list-kwds', `c-ref-list-kwds',
`c-<>-type-kwds', or `c-<>-arglist-kwds' then the associated clauses
will be handled."
t nil
(c c++) '("auto" "extern" "inline" "register" "static")
(c c++) '("extern" "inline" "register" "static")
c (append '("auto") (c-lang-const c-modifier-kwds))
c++ (append '("constexpr" "explicit" "friend" "mutable" "template"
"thread_local" "virtual")
;; "using" is now handled specially (2020-09-14).

View file

@ -703,10 +703,10 @@ The value depends on `grep-command', `grep-template',
(let ((grep-options
(concat (if grep-use-null-device "-n" "-nH")
(if grep-use-null-filename-separator " --null")
(if (grep-probe grep-program
`(nil nil nil "-e" "foo" ,null-device)
nil 1)
" -e"))))
(when (grep-probe grep-program
`(nil nil nil "-e" "foo" ,null-device)
nil 1)
" -e"))))
(unless grep-command
(setq grep-command
(format "%s %s %s " grep-program
@ -1121,6 +1121,11 @@ command before it's run."
grep-find-ignored-files
" --exclude=")))))
(when command
(when (grep-probe grep-program
`(nil nil nil "--directories=skip" "foo"
,null-device)
nil 1)
(setq command (concat command " --directories=skip")))
(if confirm
(setq command
(read-from-minibuffer "Confirm: "

View file

@ -66,6 +66,9 @@
;; `project-combine-directories' and `project-subtract-directories',
;; mainly for use in the abovementioned generics' implementations.
;;
;; `project-known-project-roots' and `project-remember-project' to
;; interact with the "known projects" list.
;;
;; Commands:
;;
;; `project-prefix-map' contains the full list of commands defined in

View file

@ -1576,7 +1576,8 @@ is not modified."
(concat
"Next buffer to search "
(cond
((eq read-buffer-function #'ido-read-buffer)
((or (eq read-buffer-function #'ido-read-buffer)
(bound-and-true-p ido-everywhere))
(substitute-command-keys
"(\\<ido-completion-map>\\[ido-select-text] to end): "))
((bound-and-true-p fido-mode)

View file

@ -837,10 +837,11 @@ Elements of ALIST that are not conses are ignored."
If KEY is not found in ALIST, return DEFAULT.
Equality with KEY is tested by TESTFN, defaulting to `eq'.
You can use `alist-get' in PLACE expressions. This will modify
an existing association (more precisely, the first one if
multiple exist), or add a new element to the beginning of ALIST,
destructively modifying the list stored in ALIST.
You can use `alist-get' in \"place expressions\"; i.e., as a
generalized variable. Doing this will modify an existing
association (more precisely, the first one if multiple exist), or
add a new element to the beginning of ALIST, destructively
modifying the list stored in ALIST.
Example:
@ -1627,8 +1628,8 @@ be a list of the form returned by `event-start' and `event-end'."
(make-obsolete-variable 'x-gtk-use-window-move nil "26.1")
(defvaralias 'messages-buffer-max-lines 'message-log-max)
(define-obsolete-variable-alias 'inhibit-null-byte-detection
'inhibit-nul-byte-detection "27.1")
(define-obsolete-variable-alias 'inhibit-nul-byte-detection
'inhibit-null-byte-detection "28.1")
(make-obsolete-variable 'load-dangerous-libraries
"no longer used." "27.1")

View file

@ -363,22 +363,18 @@ to `tab-bar-tab-name-truncated'."
:group 'tab-bar
:version "27.1")
(defvar tab-bar-tab-name-ellipsis nil)
(defvar tab-bar-tab-name-ellipsis t)
(defun tab-bar-tab-name-truncated ()
"Generate tab name from the buffer of the selected window.
Truncate it to the length specified by `tab-bar-tab-name-truncated-max'.
Append ellipsis `tab-bar-tab-name-ellipsis' in this case."
(let ((tab-name (buffer-name (window-buffer (minibuffer-selected-window))))
(ellipsis (cond
(tab-bar-tab-name-ellipsis)
((char-displayable-p ?…) "")
("..."))))
(let ((tab-name (buffer-name (window-buffer (minibuffer-selected-window)))))
(if (< (length tab-name) tab-bar-tab-name-truncated-max)
tab-name
(propertize (truncate-string-to-width
tab-name tab-bar-tab-name-truncated-max nil nil
ellipsis)
tab-bar-tab-name-ellipsis)
'help-echo tab-name))))

View file

@ -240,8 +240,7 @@ to `tab-line-tab-name-truncated-buffer'."
:group 'tab-line
:version "27.1")
(defvar tab-line-tab-name-ellipsis
(if (char-displayable-p ?…) "" "..."))
(defvar tab-line-tab-name-ellipsis t)
(defun tab-line-tab-name-truncated-buffer (buffer &optional _buffers)
"Generate tab name from BUFFER.

View file

@ -4943,6 +4943,12 @@ If optional argument STATE is positive, turn borders on."
(cons (+ window-x window-start-x)
(+ window-y window-start-y))))
(defun artist--adjust-x (x)
"Adjust the X position wrt. `display-line-numbers-mode'."
(let ((adjust (line-number-display-width)))
(if (= adjust 0)
x
(- x adjust 2))))
(defun artist-mouse-draw-continously (ev)
"Generic function for shapes that require 1 point as input.
@ -4964,7 +4970,7 @@ The event, EV, is the mouse event."
(ev-start (event-start ev))
(initial-win (posn-window ev-start))
(ev-start-pos (artist-coord-win-to-buf (posn-col-row ev-start)))
(x1 (car ev-start-pos))
(x1 (artist--adjust-x (car ev-start-pos)))
(y1 (cdr ev-start-pos))
(shape)
(timer))
@ -4981,7 +4987,7 @@ The event, EV, is the mouse event."
(member 'down (event-modifiers ev)))
(setq ev-start-pos (artist-coord-win-to-buf
(posn-col-row (event-start ev))))
(setq x1 (car ev-start-pos))
(setq x1 (artist--adjust-x (car ev-start-pos)))
(setq y1 (cdr ev-start-pos))
;; Cancel previous timer
@ -5061,7 +5067,7 @@ The event, EV, is the mouse event."
(ev-start (event-start ev))
(initial-win (posn-window ev-start))
(ev-start-pos (artist-coord-win-to-buf (posn-col-row ev-start)))
(x1-last (car ev-start-pos))
(x1-last (artist--adjust-x (car ev-start-pos)))
(y1-last (cdr ev-start-pos))
(x2 x1-last)
(y2 y1-last)
@ -5153,7 +5159,7 @@ The event, EV, is the mouse event."
;;
(setq ev-start-pos (artist-coord-win-to-buf
(posn-col-row (event-start ev))))
(setq x2 (car ev-start-pos))
(setq x2 (artist--adjust-x (car ev-start-pos)))
(setq y2 (cdr ev-start-pos))
;; Draw the new shape (if not rubber-banding, place both marks)
@ -5180,7 +5186,7 @@ The event, EV, is the mouse event."
;; set x2 and y2
(setq ev-start-pos (artist-coord-win-to-buf
(posn-col-row (event-start ev))))
(setq x2 (car ev-start-pos))
(setq x2 (artist--adjust-x (car ev-start-pos)))
(setq y2 (cdr ev-start-pos))
;; First undraw last shape
@ -5265,7 +5271,7 @@ Operation is done once. The event, EV, is the mouse event."
(arrow-set-fn (artist-go-get-arrow-set-fn-from-symbol op))
(ev-start (event-start ev))
(ev-start-pos (artist-coord-win-to-buf (posn-col-row ev-start)))
(x1 (car ev-start-pos))
(x1 (artist--adjust-x (car ev-start-pos)))
(y1 (cdr ev-start-pos)))
(select-window (posn-window ev-start))
(artist-funcall init-fn x1 y1)
@ -5299,7 +5305,7 @@ The event, EV, is the mouse event."
(ev-start (event-start ev))
(initial-win (posn-window ev-start))
(ev-start-pos (artist-coord-win-to-buf (posn-col-row ev-start)))
(x1 (car ev-start-pos))
(x1 (artist--adjust-x (car ev-start-pos)))
(y1 (cdr ev-start-pos))
(x2)
(y2)
@ -5313,7 +5319,7 @@ The event, EV, is the mouse event."
(member 'down (event-modifiers ev)))
(setq ev-start-pos (artist-coord-win-to-buf
(posn-col-row (event-start ev))))
(setq x2 (car ev-start-pos))
(setq x2 (artist--adjust-x (car ev-start-pos)))
(setq y2 (cdr ev-start-pos))
(if (not (eq initial-win (posn-window (event-start ev))))

View file

@ -50,14 +50,19 @@ The ordering of the return value respects `menu-bar-final-items'."
(menu-end '()))
(map-keymap
(lambda (key binding)
(push (cons key binding)
;; If KEY is the name of an item that we want to put last,
;; move it to the end.
(if (memq key menu-bar-final-items)
menu-end
menu-bar)))
(let ((pos (seq-position menu-bar-final-items key))
(menu-item (cons key binding)))
(if pos
;; If KEY is the name of an item that we want to put
;; last, store it separately with explicit ordering for
;; sorting.
(push (cons pos menu-item) menu-end)
(push menu-item menu-bar))))
(tmm-get-keybind [menu-bar]))
`(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end))))
`(keymap ,@(nreverse menu-bar)
,@(mapcar #'cdr (sort menu-end
(lambda (a b)
(< (car a) (car b))))))))
;;;###autoload (define-key global-map "\M-`" 'tmm-menubar)
;;;###autoload (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@ -96,7 +101,10 @@ to invoke `tmm-menubar' instead, customize the variable
(or (null visible)
(eval visible)))))))
(setq column (+ column (length name) 1)))))
menu-bar))))
menu-bar)
;; Check the last menu item.
(when (> column x-position)
(setq menu-bar-item prev-key)))))
(tmm-prompt menu-bar nil menu-bar-item)))
;;;###autoload

View file

@ -1795,9 +1795,9 @@ The difference to vc-do-command is that this function always invokes
(defun vc-git--call (buffer command &rest args)
;; We don't need to care the arguments. If there is a file name, it
;; is always a relative one. This works also for remote
;; directories. We enable `inhibit-nul-byte-detection', otherwise
;; directories. We enable `inhibit-null-byte-detection', otherwise
;; Tramp's eol conversion might be confused.
(let ((inhibit-nul-byte-detection t)
(let ((inhibit-null-byte-detection t)
(coding-system-for-read
(or coding-system-for-read vc-git-log-output-coding-system))
(coding-system-for-write

View file

@ -1038,7 +1038,9 @@ If the current buffer is in `vc-dir' or Dired mode, FILESET is the
list of marked files, or the current directory if no files are
marked.
Otherwise, if the current buffer is visiting a version-controlled
file, FILESET is a single-file list containing that file's name.
file or is an indirect buffer whose base buffer visits a
version-controlled file, FILESET is a single-file list containing
that file's name.
Otherwise, if ALLOW-UNREGISTERED is non-nil and the visited file
is unregistered, FILESET is a single-file list containing the
name of the visited file.
@ -1052,6 +1054,14 @@ possible values of STATE are explained in `vc-state', and MODEL in
the returned list.
BEWARE: this function may change the current buffer."
(with-current-buffer (or (buffer-base-buffer) (current-buffer))
(vc-deduce-fileset-1 not-state-changing
allow-unregistered
state-model-only-files)))
(defun vc-deduce-fileset-1 (not-state-changing
allow-unregistered
state-model-only-files)
(let (backend)
(cond
((derived-mode-p 'vc-dir-mode)
@ -1073,7 +1083,7 @@ BEWARE: this function may change the current buffer."
(derived-mode-p 'dired-mode)))))
(progn ;FIXME: Why not `with-current-buffer'? --Stef.
(set-buffer vc-parent-buffer)
(vc-deduce-fileset not-state-changing allow-unregistered state-model-only-files)))
(vc-deduce-fileset-1 not-state-changing allow-unregistered state-model-only-files)))
((and (not buffer-file-name)
(setq backend (vc-responsible-backend default-directory)))
(list backend nil))
@ -1883,6 +1893,10 @@ state of each file in the fileset."
t (list backend (list rootdir)) rev1 rev2
(called-interactively-p 'interactive)))))
(defun vc-maybe-buffer-sync (not-urgent)
(with-current-buffer (or (buffer-base-buffer) (current-buffer))
(when buffer-file-name (vc-buffer-sync not-urgent))))
;;;###autoload
(defun vc-diff (&optional historic not-urgent)
"Display diffs between file revisions.
@ -1895,6 +1909,7 @@ saving the buffer."
(interactive (list current-prefix-arg t))
(if historic
(call-interactively 'vc-version-diff)
(vc-maybe-buffer-sync not-urgent)
(let ((fileset (vc-deduce-fileset t)))
(vc-buffer-sync-fileset fileset not-urgent)
(vc-diff-internal t fileset nil nil
@ -1981,7 +1996,7 @@ saving the buffer."
(interactive (list current-prefix-arg t))
(if historic
(call-interactively 'vc-version-ediff)
(when buffer-file-name (vc-buffer-sync not-urgent))
(vc-maybe-buffer-sync not-urgent)
(vc-version-ediff (cadr (vc-deduce-fileset t)) nil nil)))
;;;###autoload
@ -1998,7 +2013,7 @@ saving the buffer."
(if historic
;; We want the diff for the VC root dir.
(call-interactively 'vc-root-version-diff)
(when buffer-file-name (vc-buffer-sync not-urgent))
(vc-maybe-buffer-sync not-urgent)
(let ((backend (vc-deduce-backend))
(default-directory default-directory)
rootdir working-revision)
@ -2038,17 +2053,18 @@ Return nil if the root directory cannot be identified."
If the current file is named `F', the revision is named `F.~REV~'.
If `F.~REV~' already exists, use it instead of checking it out again."
(interactive
(save-current-buffer
(with-current-buffer (or (buffer-base-buffer) (current-buffer))
(vc-ensure-vc-buffer)
(list
(vc-read-revision "Revision to visit (default is working revision): "
(list buffer-file-name)))))
(vc-ensure-vc-buffer)
(let* ((file buffer-file-name)
(revision (if (string-equal rev "")
(vc-working-revision file)
rev)))
(switch-to-buffer-other-window (vc-find-revision file revision))))
(with-current-buffer (or (buffer-base-buffer) (current-buffer))
(vc-ensure-vc-buffer)
(let* ((file buffer-file-name)
(revision (if (string-equal rev "")
(vc-working-revision file)
rev)))
(switch-to-buffer-other-window (vc-find-revision file revision)))))
(defun vc-find-revision (file revision &optional backend)
"Read REVISION of FILE into a buffer and return the buffer.

View file

@ -10126,7 +10126,7 @@
2010-01-06 Jan Djärv <jan.h.d@swipnet.se>
* font.c (font_open_entity): Enable chache and call cached_font_ok
* font.c (font_open_entity): Enable cache and call cached_font_ok
for the driver if defined.
(QCuser_spec): New symbol.
(font_spec_from_name): Save name as user-spec.

View file

@ -1658,7 +1658,7 @@ sdata_size (ptrdiff_t n)
#define GC_STRING_EXTRA GC_STRING_OVERRUN_COOKIE_SIZE
/* Exact bound on the number of bytes in a string, not counting the
terminating NUL. A string cannot contain more bytes than
terminating null. A string cannot contain more bytes than
STRING_BYTES_BOUND, nor can it be so long that the size_t
arithmetic in allocate_string_data would overflow while it is
calculating a value to be passed to malloc. */

View file

@ -2338,7 +2338,7 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
and make it L right away, to avoid the
potentially costly loop below. This is
important when the buffer has a long series of
control characters, like binary NULs, and no
control characters, like binary nulls, and no
R2L characters at all. */
&& new_level == 0
&& !bidi_explicit_dir_char (bidi_it->ch)
@ -2996,7 +2996,7 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
}
/* The next two "else if" clauses are shortcuts for the
important special case when we have a long sequence of
neutral or WEAK_BN characters, such as whitespace or NULs or
neutral or WEAK_BN characters, such as whitespace or nulls or
other control characters, on the base embedding level of the
paragraph, and that sequence goes all the way to the end of
the paragraph and follows a character whose resolved

View file

@ -353,7 +353,7 @@ emacs_mpz_pow_ui (mpz_t rop, mpz_t const base, unsigned long exp)
/* Yield an upper bound on the buffer size needed to contain a C
string representing the NUM in base BASE. This includes any
preceding '-' and the terminating NUL. */
preceding '-' and the terminating null. */
static ptrdiff_t
mpz_bufsize (mpz_t const num, int base)
{
@ -418,7 +418,7 @@ bignum_to_string (Lisp_Object num, int base)
/* Create a bignum by scanning NUM, with digits in BASE.
NUM must consist of an optional '-', a nonempty sequence
of base-BASE digits, and a terminating NUL byte, and
of base-BASE digits, and a terminating null byte, and
the represented number must not be in fixnum range. */
Lisp_Object

View file

@ -712,7 +712,7 @@ invoke it (via an `interactive' spec that contains, for instance, an
default:
{
/* How many bytes are left unprocessed in the specs string?
(Note that this excludes the trailing NUL byte.) */
(Note that this excludes the trailing null byte.) */
ptrdiff_t bytes_left = string_len - (tem - string);
unsigned letter;

View file

@ -5707,7 +5707,7 @@ setup_coding_system (Lisp_Object coding_system, struct coding_system *coding)
coding->common_flags |= CODING_REQUIRE_DETECTION_MASK;
coding->spec.undecided.inhibit_nbd
= (encode_inhibit_flag
(AREF (attrs, coding_attr_undecided_inhibit_nul_byte_detection)));
(AREF (attrs, coding_attr_undecided_inhibit_null_byte_detection)));
coding->spec.undecided.inhibit_ied
= (encode_inhibit_flag
(AREF (attrs, coding_attr_undecided_inhibit_iso_escape_detection)));
@ -6535,9 +6535,9 @@ detect_coding (struct coding_system *coding)
{
int c, i;
struct coding_detection_info detect_info;
bool nul_byte_found = 0, eight_bit_found = 0;
bool null_byte_found = 0, eight_bit_found = 0;
bool inhibit_nbd = inhibit_flag (coding->spec.undecided.inhibit_nbd,
inhibit_nul_byte_detection);
inhibit_null_byte_detection);
bool inhibit_ied = inhibit_flag (coding->spec.undecided.inhibit_ied,
inhibit_iso_escape_detection);
bool prefer_utf_8 = coding->spec.undecided.prefer_utf_8;
@ -6550,7 +6550,7 @@ detect_coding (struct coding_system *coding)
if (c & 0x80)
{
eight_bit_found = 1;
if (nul_byte_found)
if (null_byte_found)
break;
}
else if (c < 0x20)
@ -6565,7 +6565,7 @@ detect_coding (struct coding_system *coding)
if (! (detect_info.rejected & CATEGORY_MASK_ISO_7_ELSE))
{
/* We didn't find an 8-bit code. We may
have found a NUL-byte, but it's very
have found a null-byte, but it's very
rare that a binary file conforms to
ISO-2022. */
src = src_end;
@ -6577,7 +6577,7 @@ detect_coding (struct coding_system *coding)
}
else if (! c && !inhibit_nbd)
{
nul_byte_found = 1;
null_byte_found = 1;
if (eight_bit_found)
break;
}
@ -6609,7 +6609,7 @@ detect_coding (struct coding_system *coding)
coding->head_ascii++;
}
if (nul_byte_found || eight_bit_found
if (null_byte_found || eight_bit_found
|| coding->head_ascii < coding->src_bytes
|| detect_info.found)
{
@ -6627,7 +6627,7 @@ detect_coding (struct coding_system *coding)
}
else
{
if (nul_byte_found)
if (null_byte_found)
{
detect_info.checked |= ~CATEGORY_MASK_UTF_16;
detect_info.rejected |= ~CATEGORY_MASK_UTF_16;
@ -6700,7 +6700,7 @@ detect_coding (struct coding_system *coding)
else
found = CODING_ID_NAME (this->id);
}
else if (nul_byte_found)
else if (null_byte_found)
found = Qno_conversion;
else if ((detect_info.rejected & CATEGORY_MASK_ANY)
== CATEGORY_MASK_ANY)
@ -8476,7 +8476,7 @@ from_unicode (Lisp_Object str)
Lisp_Object
from_unicode_buffer (const wchar_t *wstr)
{
/* We get one of the two final NUL bytes for free. */
/* We get one of the two final null bytes for free. */
ptrdiff_t len = 1 + sizeof (wchar_t) * wcslen (wstr);
AUTO_STRING_WITH_LEN (str, (char *) wstr, len);
return from_unicode (str);
@ -8489,7 +8489,7 @@ to_unicode (Lisp_Object str, Lisp_Object *buf)
/* We need to make another copy (in addition to the one made by
code_convert_string_norecord) to ensure that the final string is
_doubly_ zero terminated --- that is, that the string is
terminated by two zero bytes and one utf-16le NUL character.
terminated by two zero bytes and one utf-16le null character.
Because strings are already terminated with a single zero byte,
we just add one additional zero. */
str = make_uninit_string (SBYTES (*buf) + 1);
@ -8605,7 +8605,7 @@ detect_coding_system (const unsigned char *src,
ptrdiff_t id;
struct coding_detection_info detect_info;
enum coding_category base_category;
bool nul_byte_found = 0, eight_bit_found = 0;
bool null_byte_found = 0, eight_bit_found = 0;
if (NILP (coding_system))
coding_system = Qundecided;
@ -8632,7 +8632,7 @@ detect_coding_system (const unsigned char *src,
struct coding_system *this UNINIT;
int c, i;
bool inhibit_nbd = inhibit_flag (coding.spec.undecided.inhibit_nbd,
inhibit_nul_byte_detection);
inhibit_null_byte_detection);
bool inhibit_ied = inhibit_flag (coding.spec.undecided.inhibit_ied,
inhibit_iso_escape_detection);
bool prefer_utf_8 = coding.spec.undecided.prefer_utf_8;
@ -8644,7 +8644,7 @@ detect_coding_system (const unsigned char *src,
if (c & 0x80)
{
eight_bit_found = 1;
if (nul_byte_found)
if (null_byte_found)
break;
}
else if (c < 0x20)
@ -8659,7 +8659,7 @@ detect_coding_system (const unsigned char *src,
if (! (detect_info.rejected & CATEGORY_MASK_ISO_7_ELSE))
{
/* We didn't find an 8-bit code. We may
have found a NUL-byte, but it's very
have found a null-byte, but it's very
rare that a binary file confirm to
ISO-2022. */
src = src_end;
@ -8671,7 +8671,7 @@ detect_coding_system (const unsigned char *src,
}
else if (! c && !inhibit_nbd)
{
nul_byte_found = 1;
null_byte_found = 1;
if (eight_bit_found)
break;
}
@ -8682,7 +8682,7 @@ detect_coding_system (const unsigned char *src,
coding.head_ascii++;
}
if (nul_byte_found || eight_bit_found
if (null_byte_found || eight_bit_found
|| coding.head_ascii < coding.src_bytes
|| detect_info.found)
{
@ -8697,7 +8697,7 @@ detect_coding_system (const unsigned char *src,
}
else
{
if (nul_byte_found)
if (null_byte_found)
{
detect_info.checked |= ~CATEGORY_MASK_UTF_16;
detect_info.rejected |= ~CATEGORY_MASK_UTF_16;
@ -8744,7 +8744,7 @@ detect_coding_system (const unsigned char *src,
}
if ((detect_info.rejected & CATEGORY_MASK_ANY) == CATEGORY_MASK_ANY
|| nul_byte_found)
|| null_byte_found)
{
detect_info.found = CATEGORY_MASK_RAW_TEXT;
id = CODING_SYSTEM_ID (Qno_conversion);
@ -8846,7 +8846,7 @@ detect_coding_system (const unsigned char *src,
{
if (detect_info.found & ~CATEGORY_MASK_UTF_16)
{
if (nul_byte_found)
if (null_byte_found)
normal_eol = EOL_SEEN_LF;
else
normal_eol = detect_eol (coding.source, src_bytes,
@ -11320,8 +11320,8 @@ usage: (define-coding-system-internal ...) */)
{
if (nargs < coding_arg_undecided_max)
goto short_args;
ASET (attrs, coding_attr_undecided_inhibit_nul_byte_detection,
args[coding_arg_undecided_inhibit_nul_byte_detection]);
ASET (attrs, coding_attr_undecided_inhibit_null_byte_detection,
args[coding_arg_undecided_inhibit_null_byte_detection]);
ASET (attrs, coding_attr_undecided_inhibit_iso_escape_detection,
args[coding_arg_undecided_inhibit_iso_escape_detection]);
ASET (attrs, coding_attr_undecided_prefer_utf_8,
@ -12086,18 +12086,18 @@ to explicitly specify some coding system that doesn't use ISO-2022
escape sequence (e.g., `latin-1') on reading by \\[universal-coding-system-argument]. */);
inhibit_iso_escape_detection = 0;
DEFVAR_BOOL ("inhibit-nul-byte-detection",
inhibit_nul_byte_detection,
doc: /* If non-nil, Emacs ignores NUL bytes on code detection.
DEFVAR_BOOL ("inhibit-null-byte-detection",
inhibit_null_byte_detection,
doc: /* If non-nil, Emacs ignores null bytes on code detection.
By default, Emacs treats it as binary data, and does not attempt to
decode it. The effect is as if you specified `no-conversion' for
reading that text.
Set this to non-nil when a regular text happens to include NUL bytes.
Examples are Index nodes of Info files and NUL-byte delimited output
from GNU Find and GNU Grep. Emacs will then ignore the NUL bytes and
Set this to non-nil when a regular text happens to include null bytes.
Examples are Index nodes of Info files and null-byte delimited output
from GNU Find and GNU Grep. Emacs will then ignore the null bytes and
decode text as usual. */);
inhibit_nul_byte_detection = 0;
inhibit_null_byte_detection = 0;
DEFVAR_BOOL ("disable-ascii-optimization", disable_ascii_optimization,
doc: /* If non-nil, Emacs does not optimize code decoder for ASCII files.
@ -12156,7 +12156,7 @@ internal character representation. */);
"automatic conversion on decoding.");
plist[15] = args[coding_arg_eol_type] = Qnil;
args[coding_arg_plist] = CALLMANY (Flist, plist);
args[coding_arg_undecided_inhibit_nul_byte_detection] = make_fixnum (0);
args[coding_arg_undecided_inhibit_null_byte_detection] = make_fixnum (0);
args[coding_arg_undecided_inhibit_iso_escape_detection] = make_fixnum (0);
Fdefine_coding_system_internal (coding_arg_undecided_max, args);

View file

@ -82,7 +82,7 @@ enum define_coding_ccl_arg_index
enum define_coding_undecided_arg_index
{
coding_arg_undecided_inhibit_nul_byte_detection = coding_arg_max,
coding_arg_undecided_inhibit_null_byte_detection = coding_arg_max,
coding_arg_undecided_inhibit_iso_escape_detection,
coding_arg_undecided_prefer_utf_8,
coding_arg_undecided_max
@ -139,7 +139,7 @@ enum coding_attr_index
coding_attr_emacs_mule_full,
coding_attr_undecided_inhibit_nul_byte_detection,
coding_attr_undecided_inhibit_null_byte_detection,
coding_attr_undecided_inhibit_iso_escape_detection,
coding_attr_undecided_prefer_utf_8,
@ -353,7 +353,7 @@ struct emacs_mule_spec
struct undecided_spec
{
/* Inhibit NUL byte detection. 1 means always inhibit,
/* Inhibit null byte detection. 1 means always inhibit,
-1 means do not inhibit, 0 means rely on user variable. */
int inhibit_nbd;

View file

@ -446,12 +446,18 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object)
{
Lisp_Object elt1 = XD_NEXT_VALUE (elt);
if (CONSP (elt1) && STRINGP (XCAR (elt1)) && NILP (XCDR (elt1)))
subsig = SSDATA (XCAR (elt1));
{
subsig = SSDATA (XCAR (elt1));
elt = Qnil;
}
}
while (!NILP (elt))
{
if (subtype != XD_OBJECT_TO_DBUS_TYPE (CAR_SAFE (elt)))
char x[DBUS_MAXIMUM_SIGNATURE_LENGTH];
subtype = XD_OBJECT_TO_DBUS_TYPE (CAR_SAFE (elt));
xd_signature (x, subtype, dtype, CAR_SAFE (XD_NEXT_VALUE (elt)));
if (strcmp (subsig, x) != 0)
wrong_type_argument (intern ("D-Bus"), CAR_SAFE (elt));
elt = CDR_SAFE (XD_NEXT_VALUE (elt));
}
@ -1937,11 +1943,12 @@ syms_of_dbusbind (void)
doc: /* Hash table of registered functions for D-Bus.
There are two different uses of the hash table: for accessing
registered interfaces properties, targeted by signals or method calls,
and for calling handlers in case of non-blocking method call returns.
registered interfaces properties, targeted by signals, method calls or
monitors, and for calling handlers in case of non-blocking method call
returns.
In the first case, the key in the hash table is the list (TYPE BUS
INTERFACE MEMBER). TYPE is one of the Lisp symbols `:method',
[INTERFACE MEMBER]). TYPE is one of the Lisp symbols `:method',
`:signal', `:property' or `:monitor'. BUS is either a Lisp symbol,
`:system', `:session', `:system-private' or `:session-private', or a
string denoting the bus address. INTERFACE is a string which denotes
@ -1951,17 +1958,18 @@ signal or a property INTERFACE is offering. All arguments can be nil.
The value in the hash table is a list of quadruple lists ((UNAME
SERVICE PATH OBJECT [RULE]) ...). SERVICE is the service name as
registered, UNAME is the corresponding unique name. In case of
registered methods and properties, UNAME is nil. PATH is the object
path of the sending object. All of them can be nil, which means a
wildcard then.
registered methods, properties and monitors, UNAME is nil. PATH is
the object path of the sending object. All of them can be nil, which
means a wildcard then.
OBJECT is either the handler to be called when a D-Bus message, which
matches the key criteria, arrives (TYPE `:method', `:signal' and
`:monitor'), or a list (ACCESS EMITS-SIGNAL VALUE) for TYPE
`:property'.
For entries of type `:signal', there is also a fifth element RULE,
which keeps the match string the signal is registered with.
For entries of type `:signal' or `:monitor', there is also a fifth
element RULE, which keeps the match string the signal or monitor is
registered with.
In the second case, the key in the hash table is the list (:serial BUS
SERIAL). BUS is either a Lisp symbol, `:system' or `:session', or a

View file

@ -929,7 +929,7 @@ file_attributes (int fd, char const *name,
struct stat s;
/* An array to hold the mode string generated by filemodestring,
including its terminating space and NUL byte. */
including its terminating space and null byte. */
char modes[sizeof "-rwxr-xr-x "];
char *uname = NULL, *gname = NULL;

View file

@ -1996,7 +1996,7 @@ struct bidi_string_data {
Lisp_Object lstring; /* Lisp string to reorder, or nil */
const unsigned char *s; /* string data, or NULL if reordering buffer */
ptrdiff_t schars; /* the number of characters in the string,
excluding the terminating NUL */
excluding the terminating null */
ptrdiff_t bufpos; /* buffer position of lstring, or 0 if N/A */
bool_bf from_disp_str : 1; /* True means the string comes from a
display property */

View file

@ -1830,7 +1830,7 @@ adjust_frame_glyphs (struct frame *f)
/* Don't forget the buffer for decode_mode_spec. */
adjust_decode_mode_spec_buffer (f);
f->glyphs_initialized_p = 1;
f->glyphs_initialized_p = true;
unblock_input ();
}
@ -2251,7 +2251,7 @@ free_glyphs (struct frame *f)
/* Block interrupt input so that we don't get surprised by an X
event while we're in an inconsistent state. */
block_input ();
f->glyphs_initialized_p = 0;
f->glyphs_initialized_p = false;
/* Release window sub-matrices. */
if (!NILP (f->root_window))
@ -3236,9 +3236,16 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
build_frame_matrix (f);
/* Update the display. */
update_begin (f);
paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p, 1, false);
update_end (f);
if (FRAME_INITIAL_P (f))
/* No actual display to update so the "update" is a nop and
obviously isn't interrupted by pending input. */
paused_p = false;
else
{
update_begin (f);
paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p, 1, false);
update_end (f);
}
if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
{

View file

@ -233,7 +233,7 @@ get_doc_string (Lisp_Object filepos, bool unibyte, bool definition)
}
/* Scan the text and perform quoting with ^A (char code 1).
^A^A becomes ^A, ^A0 becomes a NUL char, and ^A_ becomes a ^_. */
^A^A becomes ^A, ^A0 becomes a null char, and ^A_ becomes a ^_. */
from = get_doc_string_buffer + offset;
to = get_doc_string_buffer + offset;
while (from != p)

View file

@ -35,7 +35,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
sequence.
. It accepts a pointer to the end of the format string, so the format string
could include embedded NUL characters.
could include embedded null characters.
. It signals an error if the length of the formatted string is about to
overflow ptrdiff_t or size_t, to avoid producing strings longer than what
@ -123,7 +123,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
to fit and return BUFSIZE - 1; if this truncates a multibyte
sequence, store '\0' into the sequence's first byte.
Returns the number of bytes stored into BUFFER, excluding
the terminating NUL byte. Output is always NUL-terminated.
the terminating null byte. Output is always null-terminated.
String arguments are passed as C strings.
Integers are passed as C integers. */

View file

@ -3069,7 +3069,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
: FLT_RADIX == 16 ? 4
: -1)),
/* Maximum number of bytes (including terminating NUL) generated
/* Maximum number of bytes (including terminating null) generated
by any format, if precision is no more than USEFUL_PRECISION_MAX.
On all practical hosts, %Lf is the worst case. */
SPRINTF_BUFSIZE = (sizeof "-." + (LDBL_MAX_10_EXP + 1)

View file

@ -2772,7 +2772,7 @@ decode_env_path (const char *evarname, const char *defalt, bool empty)
}
}
else if (cnv_result != 0 && d > path_utf8)
d[-1] = '\0'; /* remove last semi-colon and NUL-terminate PATH */
d[-1] = '\0'; /* remove last semi-colon and null-terminate PATH */
} while (q);
path_copy = path_utf8;
#else /* MSDOS */

View file

@ -1710,7 +1710,7 @@ See also the function `substitute-in-file-name'.")
#endif
/* Put into BUF the concatenation of DIR and FILE, with an intervening
directory separator if needed. Return a pointer to the NUL byte
directory separator if needed. Return a pointer to the null byte
at the end of the concatenated string. */
char *
splice_dir_file (char *buf, char const *dir, char const *file)

View file

@ -296,7 +296,7 @@ typedef struct
/* Write the name of the lock file for FNAME into LOCKNAME. Length
will be that of FNAME plus two more for the leading ".#", plus one
for the NUL. */
for the null. */
#define MAKE_LOCK_NAME(lockname, fname) \
(lockname = SAFE_ALLOCA (SBYTES (fname) + 2 + 1), \
fill_in_lock_file_name (lockname, fname))

View file

@ -406,7 +406,7 @@ string_version_cmp (Lisp_Object string1, Lisp_Object string2)
while ((cmp = filevercmp (p1, p2)) == 0)
{
/* If the strings are identical through their first NUL bytes,
/* If the strings are identical through their first null bytes,
skip past identical prefixes and try again. */
ptrdiff_t size = strlen (p1) + 1;
eassert (size == strlen (p2) + 1);

View file

@ -188,6 +188,9 @@ font_make_object (int size, Lisp_Object entity, int pixelsize)
FONT_OBJECT_MAX, PVEC_FONT);
int i;
/* Poison the max_width, so we can detect when it hasn't been set. */
eassert (font->max_width = 1024 * 1024 * 1024);
/* GC can happen before the driver is set up,
so avoid dangling pointer here (Bug#17771). */
font->driver = NULL;
@ -1011,7 +1014,7 @@ font_expand_wildcards (Lisp_Object *field, int n)
}
/* Parse NAME (NUL terminated) as XLFD and store information in FONT
/* Parse NAME (null terminated) as XLFD and store information in FONT
(font-spec or font-entity). Size property of FONT is set as
follows:
specified XLFD fields FONT property
@ -1355,7 +1358,7 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
return len < nbytes ? len : -1;
}
/* Parse NAME (NUL terminated) and store information in FONT
/* Parse NAME (null terminated) and store information in FONT
(font-spec or font-entity). NAME is supplied in either the
Fontconfig or GTK font name format. If NAME is successfully
parsed, return 0. Otherwise return -1.
@ -1727,7 +1730,7 @@ font_unparse_fcname (Lisp_Object font, int pixel_size, char *name, int nbytes)
#endif
/* Parse NAME (NUL terminated) and store information in FONT
/* Parse NAME (null terminated) and store information in FONT
(font-spec or font-entity). If NAME is successfully parsed, return
0. Otherwise return -1. */
@ -5171,6 +5174,9 @@ If the named font cannot be opened and loaded, return nil. */)
return Qnil;
font = XFONT_OBJECT (font_object);
/* Sanity check to make sure we have initialized max_width. */
eassert (XFONT_OBJECT (font_object)->max_width < 1024 * 1024 * 1024);
info = CALLN (Fvector,
AREF (font_object, FONT_NAME_INDEX),
AREF (font_object, FONT_FULLNAME_INDEX),

View file

@ -931,18 +931,18 @@ make_frame (bool mini_p)
wset_frame (rw, frame);
/* 10 is arbitrary,
/* 80/25 is arbitrary,
just so that there is "something there."
Correct size will be set up later with adjust_frame_size. */
SET_FRAME_COLS (f, 10);
SET_FRAME_LINES (f, 10);
SET_FRAME_COLS (f, 80);
SET_FRAME_LINES (f, 25);
SET_FRAME_WIDTH (f, FRAME_COLS (f) * FRAME_COLUMN_WIDTH (f));
SET_FRAME_HEIGHT (f, FRAME_LINES (f) * FRAME_LINE_HEIGHT (f));
rw->total_cols = 10;
rw->total_cols = FRAME_COLS (f);
rw->pixel_width = rw->total_cols * FRAME_COLUMN_WIDTH (f);
rw->total_lines = mini_p ? 9 : 10;
rw->total_lines = FRAME_LINES (f) - (mini_p ? 1 : 0);
rw->pixel_height = rw->total_lines * FRAME_LINE_HEIGHT (f);
if (mini_p)
@ -1101,7 +1101,7 @@ make_initial_frame (void)
terminal = init_initial_terminal ();
f = make_frame (1);
f = make_frame (true);
XSETFRAME (frame, f);
Vframe_list = Fcons (frame, Vframe_list);

View file

@ -187,7 +187,8 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
block_input ();
cairo_glyph_t stack_glyph;
font->min_width = font->average_width = font->space_width = 0;
font->min_width = font->max_width = 0;
font->average_width = font->space_width = 0;
for (char c = 32; c < 127; c++)
{
cairo_glyph_t *glyphs = &stack_glyph;
@ -211,6 +212,8 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
&& (! font->min_width
|| font->min_width > this_width))
font->min_width = this_width;
if (this_width > font->max_width)
font->max_width = this_width;
if (c == 32)
font->space_width = this_width;
font->average_width += this_width;
@ -266,6 +269,7 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
font->relative_compose = 0;
font->default_ascent = 0;
font->vertical_centering = false;
eassert (font->max_width < 512 * 1024 * 1024);
return font_object;
}

View file

@ -714,7 +714,7 @@ insert_char (int c)
insert ((char *) str, len);
}
/* Insert the NUL-terminated string S before point. */
/* Insert the null-terminated string S before point. */
void
insert_string (const char *s)

View file

@ -279,10 +279,10 @@ json_release_object (void *object)
}
/* Signal an error if OBJECT is not a string, or if OBJECT contains
embedded NUL characters. */
embedded null characters. */
static void
check_string_without_embedded_nuls (Lisp_Object object)
check_string_without_embedded_nulls (Lisp_Object object)
{
CHECK_STRING (object);
CHECK_TYPE (memchr (SDATA (object), '\0', SBYTES (object)) == NULL,
@ -368,11 +368,11 @@ lisp_to_json_toplevel_1 (Lisp_Object lisp,
CHECK_STRING (key);
Lisp_Object ekey = json_encode (key);
/* We can't specify the length, so the string must be
NUL-terminated. */
check_string_without_embedded_nuls (ekey);
null-terminated. */
check_string_without_embedded_nulls (ekey);
const char *key_str = SSDATA (ekey);
/* Reject duplicate keys. These are possible if the hash
table test is not `equal'. */
table test is not `equal'. */
if (json_object_get (json, key_str) != NULL)
wrong_type_argument (Qjson_value_p, lisp);
int status
@ -419,8 +419,8 @@ lisp_to_json_toplevel_1 (Lisp_Object lisp,
CHECK_SYMBOL (key_symbol);
Lisp_Object key = SYMBOL_NAME (key_symbol);
/* We can't specify the length, so the string must be
NUL-terminated. */
check_string_without_embedded_nuls (key);
null-terminated. */
check_string_without_embedded_nulls (key);
key_str = SSDATA (key);
/* In plists, ensure leading ":" in keys is stripped. It
will be reconstructed later in `json_to_lisp'.*/
@ -563,7 +563,7 @@ false values, t, numbers, strings, or other vectors hashtables, alists
or plists. t will be converted to the JSON true value. Vectors will
be converted to JSON arrays, whereas hashtables, alists and plists are
converted to JSON objects. Hashtable keys must be strings without
embedded NUL characters and must be unique within each object. Alist
embedded null characters and must be unique within each object. Alist
and plist keys must be symbols; if a key is duplicate, the first
instance is used.
@ -976,7 +976,7 @@ usage: (json-parse-string STRING &rest ARGS) */)
Lisp_Object string = args[0];
CHECK_STRING (string);
Lisp_Object encoded = json_encode (string);
check_string_without_embedded_nuls (encoded);
check_string_without_embedded_nulls (encoded);
struct json_configuration conf =
{json_object_hashtable, json_array_array, QCnull, QCfalse};
json_parse_args (nargs - 1, args + 1, &conf, true);

View file

@ -6234,7 +6234,7 @@ parse_modifiers_uncached (Lisp_Object symbol, ptrdiff_t *modifier_end)
static Lisp_Object
apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_byte)
{
/* Since BASE could contain NULs, we can't use intern here; we have
/* Since BASE could contain nulls, we can't use intern here; we have
to use Fintern, which expects a genuine Lisp_String, and keeps a
reference to it. */
char new_mods[sizeof "A-C-H-M-S-s-up-down-drag-double-triple-"];
@ -10566,8 +10566,6 @@ DEFUN ("this-single-command-keys", Fthis_single_command_keys,
doc: /* Return the key sequence that invoked this command.
More generally, it returns the last key sequence read, either by
the command loop or by `read-key-sequence'.
Unlike `this-command-keys', this function's value
does not include prefix arguments.
The value is always a vector. */)
(void)
{
@ -12106,7 +12104,8 @@ See also `pre-command-hook'. */);
DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items,
doc: /* List of menu bar items to move to the end of the menu bar.
The elements of the list are event types that may have menu bar bindings. */);
The elements of the list are event types that may have menu bar
bindings. The order of this list controls the order of the items. */);
Vmenu_bar_final_items = Qnil;
DEFVAR_LISP ("tab-bar-separator-image-expression", Vtab_bar_separator_image_expression,

View file

@ -1519,11 +1519,11 @@ STRING_MULTIBYTE (Lisp_Object str)
}
/* An upper bound on the number of bytes in a Lisp string, not
counting the terminating NUL. This a tight enough bound to
counting the terminating null. This a tight enough bound to
prevent integer overflow errors that would otherwise occur during
string size calculations. A string cannot contain more bytes than
a fixnum can represent, nor can it be so long that C pointer
arithmetic stops working on the string plus its terminating NUL.
arithmetic stops working on the string plus its terminating null.
Although the actual size limit (see STRING_BYTES_MAX in alloc.c)
may be a bit smaller than STRING_BYTES_BOUND, calculating it here
would expose alloc.c internal details that we'd rather keep
@ -3005,7 +3005,7 @@ CHECK_SUBR (Lisp_Object x)
/* Define a built-in function for calling from Lisp.
`lname' should be the name to give the function in Lisp,
as a NUL-terminated C string.
as a null-terminated C string.
`fnname' should be the name of the function in C.
By convention, it starts with F.
`sname' should be the name for the C constant structure
@ -4794,7 +4794,7 @@ extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC;
extern void dupstring (char **, char const *);
/* Make DEST a copy of STRING's data. Return a pointer to DEST's terminating
NUL byte. This is like stpcpy, except the source is a Lisp string. */
null byte. This is like stpcpy, except the source is a Lisp string. */
INLINE char *
lispstpcpy (char *dest, Lisp_Object string)
@ -5012,7 +5012,7 @@ enum
: list4 (a, b, c, d))
/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
Take its unibyte value from the NUL-terminated string STR,
Take its unibyte value from the null-terminated string STR,
an expression that should not have side effects.
STR's value is not necessarily copied. The resulting Lisp string
should not be modified or given text properties or made visible to
@ -5022,8 +5022,8 @@ enum
AUTO_STRING_WITH_LEN (name, str, strlen (str))
/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
Take its unibyte value from the NUL-terminated string STR with length LEN.
STR may have side effects and may contain NUL bytes.
Take its unibyte value from the null-terminated string STR with length LEN.
STR may have side effects and may contain null bytes.
STR's value is not necessarily copied. The resulting Lisp string
should not be modified or given text properties or made visible to
user code. */

View file

@ -80,13 +80,13 @@
EMACS_ATTRIBUTE_NONNULL(1);
/* Copy the content of the Lisp string VALUE to BUFFER as an utf8
NUL-terminated string.
null-terminated string.
SIZE must point to the total size of the buffer. If BUFFER is
NULL or if SIZE is not big enough, write the required buffer size
to SIZE and return true.
Note that SIZE must include the last NUL byte (e.g. "abc" needs
Note that SIZE must include the last null byte (e.g. "abc" needs
a buffer of size 4).
Return true if the string was successfully copied. */

View file

@ -3032,7 +3032,7 @@ so some key presses (TAB) are swallowed by the system. */
{
NSTRACE ("ns_clear_under_internal_border");
if (FRAME_INTERNAL_BORDER_WIDTH (f) > 0)
if (FRAME_LIVE_P (f) && FRAME_INTERNAL_BORDER_WIDTH (f) > 0)
{
int border_width = FRAME_INTERNAL_BORDER_WIDTH (f);
NSView *view = FRAME_NS_VIEW (f);

View file

@ -267,12 +267,12 @@ get_current_dir_name_or_unreachable (void)
char *pwd;
/* The maximum size of a directory name, including the terminating NUL.
/* The maximum size of a directory name, including the terminating null.
Leave room so that the caller can append a trailing slash. */
ptrdiff_t dirsize_max = min (PTRDIFF_MAX, SIZE_MAX) - 1;
/* The maximum size of a buffer for a file name, including the
terminating NUL. This is bounded by PATH_MAX, if available. */
terminating null. This is bounded by PATH_MAX, if available. */
ptrdiff_t bufsize_max = dirsize_max;
#ifdef PATH_MAX
bufsize_max = min (bufsize_max, PATH_MAX);
@ -3331,7 +3331,7 @@ system_process_attributes (Lisp_Object pid)
if (nread)
{
/* We don't want trailing NUL characters. */
/* We don't want trailing null characters. */
for (p = cmdline + nread; cmdline < p && !p[-1]; p--)
continue;

View file

@ -162,7 +162,7 @@ tgetst1 (char *ptr, char **area)
else
ret = *area;
/* Copy the string value, stopping at NUL or colon.
/* Copy the string value, stopping at null or colon.
Also process ^ and \ abbreviations. */
p = ptr;
r = ret;
@ -424,7 +424,7 @@ tgetent (char *bp, const char *name)
return -1;
buf.size = BUFSIZE;
/* Add 1 to size to ensure room for terminating NUL. */
/* Add 1 to size to ensure room for terminating null. */
buf.beg = xmalloc (buf.size + 1);
term = indirect ? indirect : (char *)name;
@ -480,7 +480,7 @@ tgetent (char *bp, const char *name)
*bp1 = '\0';
/* Does this entry refer to another terminal type's entry?
If something is found, copy it into heap and NUL-terminate it. */
If something is found, copy it into heap and null-terminate it. */
tc_search_point = find_capability (tc_search_point, "tc");
term = tgetst1 (tc_search_point, 0);
}
@ -618,7 +618,7 @@ gobble_line (int fd, register struct termcap_buffer *bufp, char *append_end)
{
ptrdiff_t ptr_offset = bufp->ptr - buf;
ptrdiff_t append_end_offset = append_end - buf;
/* Add 1 to size to ensure room for terminating NUL. */
/* Add 1 to size to ensure room for terminating null. */
ptrdiff_t size = bufp->size + 1;
bufp->beg = buf = xpalloc (buf, &size, 1, -1, 1);
bufp->size = size - 1;

View file

@ -1311,7 +1311,7 @@ or (if you need time as a string) `format-time-string'. */)
determine how many bytes would be written, use NULL for S and
((size_t) -1) for MAXSIZE.
This function behaves like nstrftime, except it allows NUL
This function behaves like nstrftime, except it allows null
bytes in FORMAT. */
static size_t
emacs_nmemftime (char *s, size_t maxsize, const char *format,
@ -1320,8 +1320,8 @@ emacs_nmemftime (char *s, size_t maxsize, const char *format,
int saved_errno = errno;
size_t total = 0;
/* Loop through all the NUL-terminated strings in the format
argument. Normally there's just one NUL-terminated string, but
/* Loop through all the null-terminated strings in the format
argument. Normally there's just one null-terminated string, but
there can be arbitrarily many, concatenated together, if the
format contains '\0' bytes. nstrftime stops at the first
'\0' byte so we must invoke it separately for each such string. */

View file

@ -447,7 +447,7 @@ unexec_regions_recorder (task_t task, void *rr, unsigned type,
while (num && num_unexec_regions < MAX_UNEXEC_REGIONS)
{
/* Subtract the size of trailing NUL bytes from filesize. It
/* Subtract the size of trailing null bytes from filesize. It
can be smaller than vmsize in segment commands. In such a
case, trailing bytes are initialized with zeros. */
for (p = ranges->address + ranges->size; p > ranges->address; p--)

View file

@ -220,7 +220,7 @@ set_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
/* need to know final size after '\r' chars are inserted (the
standard CF_OEMTEXT clipboard format uses CRLF line endings,
while Emacs uses just LF internally). */
truelen = Size + 1; /* +1 for the terminating NUL */
truelen = Size + 1; /* +1 for the terminating null */
if (!Raw)
{
@ -243,7 +243,7 @@ set_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
{
dosmemput (Data, Size, xbuf_addr);
/* Terminate with a NUL, otherwise Windows does strange things
/* Terminate with a null, otherwise Windows does strange things
when the text size is an integral multiple of 32 bytes. */
_farpokeb (_dos_ds, xbuf_addr + Size, '\0');
}
@ -255,7 +255,7 @@ set_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
while (Size--)
{
/* Don't allow them to put binary data into the clipboard, since
it will cause yanked data to be truncated at the first NUL. */
it will cause yanked data to be truncated at the first null. */
if (*dp == '\0')
return 2;
if (*dp == '\n')
@ -263,7 +263,7 @@ set_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
_farnspokeb (buf_offset++, *dp++);
}
/* Terminate with a NUL, otherwise Windows does strange things
/* Terminate with a null, otherwise Windows does strange things
when the text size is an integral multiple of 32 bytes. */
_farnspokeb (buf_offset, '\0');
}
@ -354,13 +354,13 @@ get_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
__dpmi_int (0x2f, &regs);
if (regs.x.ax != 0)
{
unsigned char nul_char = '\0';
unsigned char null_char = '\0';
unsigned long xbuf_beg = xbuf_addr;
/* If last_clipboard_text is NULL, we don't want to slow down
the next loop by an additional test. */
register unsigned char *lcdp =
last_clipboard_text == NULL ? &nul_char : last_clipboard_text;
last_clipboard_text == NULL ? &null_char : last_clipboard_text;
/* Copy data from low memory, remove CR
characters before LF if needed. */
@ -383,7 +383,7 @@ get_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
/* Windows reportedly rounds up the size of clipboard data
(passed in SIZE) to a multiple of 32, and removes trailing
spaces from each line without updating SIZE. We therefore
bail out when we see the first NUL character. */
bail out when we see the first null character. */
else if (c == '\0')
break;
}
@ -392,7 +392,7 @@ get_clipboard_data (unsigned Format, void *Data, unsigned Size, int Raw)
last time set_clipboard_data was called, pretend there's no
data in the clipboard. This is so we don't pass our own text
from the clipboard (which might be troublesome if the killed
text includes NUL characters). */
text includes null characters). */
if (last_clipboard_text &&
xbuf_addr - xbuf_beg == (long)(lcdp - last_clipboard_text))
dp = (unsigned char *)Data + 1;

View file

@ -6144,7 +6144,7 @@ is_symlink (const char *filename)
/* If NAME identifies a symbolic link, copy into BUF the file name of
the symlink's target. Copy at most BUF_SIZE bytes, and do NOT
NUL-terminate the target name, even if it fits. Return the number
null-terminate the target name, even if it fits. Return the number
of bytes copied, or -1 if NAME is not a symlink or any error was
encountered while resolving it. The file name copied into BUF is
encoded in the current ANSI codepage. */
@ -6248,10 +6248,10 @@ readlink (const char *name, char *buf, size_t buf_size)
size_t size_to_copy = buf_size;
/* According to MSDN, PrintNameLength does not include the
terminating NUL character. */
terminating null character. */
lwname = alloca ((lwname_len + 1) * sizeof(WCHAR));
memcpy (lwname, lwname_src, lwname_len);
lwname[lwname_len/sizeof(WCHAR)] = 0; /* NUL-terminate */
lwname[lwname_len/sizeof(WCHAR)] = 0; /* null-terminate */
filename_from_utf16 (lwname, resolved);
dostounix_filename (resolved);
lname_size = strlen (resolved) + 1;
@ -9884,7 +9884,7 @@ w32_read_registry (HKEY rootkey, Lisp_Object lkey, Lisp_Object lname)
/* Convert input strings to UTF-16. */
encoded_key = code_convert_string_norecord (lkey, Qutf_16le, 1);
memcpy (key_w, SSDATA (encoded_key), SBYTES (encoded_key));
/* wchar_t strings need to be terminated by 2 NUL bytes. */
/* wchar_t strings need to be terminated by 2 null bytes. */
key_w [SBYTES (encoded_key)/2] = L'\0';
encoded_vname = code_convert_string_norecord (lname, Qutf_16le, 1);
memcpy (value_w, SSDATA (encoded_vname), SBYTES (encoded_vname));
@ -9976,7 +9976,7 @@ w32_read_registry (HKEY rootkey, Lisp_Object lkey, Lisp_Object lname)
case REG_SZ:
if (use_unicode)
{
/* pvalue ends with 2 NUL bytes, but we need only one,
/* pvalue ends with 2 null bytes, but we need only one,
and AUTO_STRING_WITH_LEN will add it. */
if (pvalue[vsize - 1] == '\0')
vsize -= 2;
@ -9985,7 +9985,7 @@ w32_read_registry (HKEY rootkey, Lisp_Object lkey, Lisp_Object lname)
}
else
{
/* Don't waste a byte on the terminating NUL character,
/* Don't waste a byte on the terminating null character,
since make_unibyte_string will add one anyway. */
if (pvalue[vsize - 1] == '\0')
vsize--;

View file

@ -7960,7 +7960,7 @@ DEFUN ("system-move-file-to-trash", Fsystem_move_file_to_trash,
{
SHFILEOPSTRUCTW file_op_w;
/* We need one more element beyond MAX_PATH because this is
a list of file names, with the last element double-NUL
a list of file names, with the last element double-null
terminated. */
wchar_t tmp_path_w[MAX_PATH + 1];
@ -9732,7 +9732,7 @@ get_dll_version (const char *dll_name)
/* Return the number of bytes in UTF-8 encoded string STR that
corresponds to at most LIM characters. If STR ends before LIM
characters, return the number of bytes in STR including the
terminating NUL byte. */
terminating null byte. */
static int
utf8_mbslen_lim (const char *str, int lim)
{

View file

@ -2007,9 +2007,9 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
}
/* we have to do some conjuring here to put argv and envp into the
form CreateProcess wants... argv needs to be a space separated/NUL
terminated list of parameters, and envp is a NUL
separated/double-NUL terminated list of parameters.
form CreateProcess wants... argv needs to be a space separated/null
terminated list of parameters, and envp is a null
separated/double-null terminated list of parameters.
Additionally, zero-length args and args containing whitespace or
quote chars need to be wrapped in double quotes - for this to work,
@ -3398,10 +3398,10 @@ If LCID (a 16-bit number) is not a valid locale, the result is nil. */)
got_full = GetLocaleInfo (XFIXNUM (lcid),
XFIXNUM (longform),
full_name, sizeof (full_name));
/* GetLocaleInfo's return value includes the terminating NUL
/* GetLocaleInfo's return value includes the terminating null
character, when the returned information is a string, whereas
make_unibyte_string needs the string length without the
terminating NUL. */
terminating null. */
if (got_full)
return make_unibyte_string (full_name, got_full - 1);
}

View file

@ -803,7 +803,7 @@ DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data,
(void) ignored;
/* Don't pass our own text from the clipboard (which might be
troublesome if the killed text includes NUL characters). */
troublesome if the killed text includes null characters). */
if (!NILP (current_text))
return ret;

View file

@ -11043,7 +11043,7 @@ message_log_check_duplicate (ptrdiff_t prev_bol_byte, ptrdiff_t this_bol_byte)
/* Display an echo area message M with a specified length of NBYTES
bytes. The string may include NUL characters. If M is not a
bytes. The string may include null characters. If M is not a
string, clear out any existing message, and let the mini-buffer
text show through.
@ -11146,7 +11146,7 @@ message3_nolog (Lisp_Object m)
}
/* Display a NUL-terminated echo area message M. If M is 0, clear
/* Display a null-terminated echo area message M. If M is 0, clear
out any existing message, and let the mini-buffer text show through.
The buffer M must continue to exist until after the echo area gets
@ -15464,7 +15464,8 @@ redisplay_internal (void)
/* No redisplay if running in batch mode or frame is not yet fully
initialized, or redisplay is explicitly turned off by setting
Vinhibit_redisplay. */
if (FRAME_INITIAL_P (SELECTED_FRAME ())
if ((FRAME_INITIAL_P (SELECTED_FRAME ())
&& redisplay_skip_initial_frame)
|| !NILP (Vinhibit_redisplay))
return;
@ -26152,7 +26153,7 @@ are the selected window and the WINDOW's buffer). */)
return unbind_to (count, str);
}
/* Write a NUL-terminated, right justified decimal representation of
/* Write a null-terminated, right justified decimal representation of
the positive integer D to BUF using a minimal field width WIDTH. */
static void
@ -26182,7 +26183,7 @@ pint2str (register char *buf, register int width, register ptrdiff_t d)
}
}
/* Write a NUL-terminated, right justified decimal and "human
/* Write a null-terminated, right justified decimal and "human
readable" representation of the nonnegative integer D to BUF using
a minimal field width WIDTH. D should be smaller than 999.5e24. */
@ -26405,7 +26406,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
produce strings from numerical values, so limit preposterously
large values of FIELD_WIDTH to avoid overrunning the buffer's
end. The size of the buffer is enough for FRAME_MESSAGE_BUF_SIZE
bytes plus the terminating NUL. */
bytes plus the terminating null. */
int width = min (field_width, FRAME_MESSAGE_BUF_SIZE (f));
struct buffer *b = current_buffer;
@ -35452,6 +35453,12 @@ When nil, mouse-movement events will not be generated as long as the
mouse stays within the extent of a single glyph (except for images). */);
mouse_fine_grained_tracking = false;
DEFVAR_BOOL ("redisplay-skip-initial-frame", redisplay_skip_initial_frame,
doc: /* Non-nil to skip redisplay in initial frame.
The initial frame is not displayed anywhere, so skipping it is
best except in special circumstances such as running redisplay tests
in batch mode. */);
redisplay_skip_initial_frame = true;
}
@ -35462,6 +35469,8 @@ init_xdisp (void)
{
CHARPOS (this_line_start_pos) = 0;
echo_area_window = minibuf_window;
if (!noninteractive)
{
struct window *m = XWINDOW (minibuf_window);
@ -35471,8 +35480,6 @@ init_xdisp (void)
struct window *r = XWINDOW (root);
int i;
echo_area_window = minibuf_window;
r->top_line = FRAME_TOP_MARGIN (f);
r->pixel_top = r->top_line * FRAME_LINE_HEIGHT (f);
r->total_cols = FRAME_COLS (f);

View file

@ -133,7 +133,7 @@ compare_font_names (const void *name1, const void *name2)
/* Decode XLFD as iso-8859-1 into OUTPUT, and return the byte length
of the decoding result. LEN is the byte length of XLFD, or -1 if
XLFD is NUL terminated. The caller must assure that OUTPUT is at
XLFD is NULL terminated. The caller must assure that OUTPUT is at
least twice (plus 1) as large as XLFD. */
static ptrdiff_t

View file

@ -574,6 +574,68 @@ An existing calc stack is reused, otherwise a new one is created."
86400))))
(should (equal (math-format-date d-1991-01-09-0600) "663400800")))))
;; Reference implementations of binary shift functions:
(defun calc-tests--clip (x w)
"Clip X to W bits, signed if W is negative, otherwise unsigned."
(if (>= w 0)
(logand x (- (ash 1 w) 1))
(let ((y (calc-tests--clip x (- w)))
(msb (ash 1 (- (- w) 1))))
(- y (ash (logand y msb) 1)))))
(defun calc-tests--lsh (x n w)
"Logical shift left X by N steps, word size W."
(if (< n 0)
(calc-tests--rsh x (- n) w)
(calc-tests--clip (ash x n) w)))
(defun calc-tests--rsh (x n w)
"Logical shift right X by N steps, word size W."
(if (< n 0)
(calc-tests--lsh x (- n) w)
(ash (calc-tests--clip x w) (- n))))
(defun calc-tests--ash (x n w)
"Arithmetic shift left X by N steps, word size W."
(if (< n 0)
(calc-tests--rash x (- n) w)
(calc-tests--clip (ash x n) w)))
(defun calc-tests--rash (x n w)
"Arithmetic shift right X by N steps, word size W."
(if (< n 0)
(calc-tests--ash x (- n) w)
;; First sign-extend, then shift.
(let ((x-sext (calc-tests--clip x (- (abs w)))))
(calc-tests--clip (ash x-sext (- n)) w))))
(defun calc-tests--rot (x n w)
"Rotate X left by N steps, word size W."
(let* ((aw (abs w))
(y (calc-tests--clip x aw))
(steps (mod n aw)))
(calc-tests--clip (logior (ash y steps) (ash y (- steps aw)))
w)))
(ert-deftest calc-shift-binary ()
(dolist (w '(16 32))
(dolist (x '(0 1 #x1234 #x8000 #xabcd #xffff
#x12345678 #xabcdef12 #x80000000 #xffffffff
#x1234567890ab #x1234967890ab
-1 -14))
(dolist (n '(0 1 4 16 32 -1 -4 -16 -32))
(should (equal (calcFunc-lsh x n w)
(calc-tests--lsh x n w)))
(should (equal (calcFunc-rsh x n w)
(calc-tests--rsh x n w)))
(should (equal (calcFunc-ash x n w)
(calc-tests--ash x n w)))
(should (equal (calcFunc-rash x n w)
(calc-tests--rash x n w)))
(should (equal (calcFunc-rot x n w)
(calc-tests--rot x n w)))))))
(provide 'calc-tests)
;;; calc-tests.el ends here

View file

@ -39,6 +39,7 @@
"Passphrase for key root@GNU.ORG: " ; plink
"[sudo] password for user:" ; Ubuntu sudo
"[sudo] user 的密码:" ; localized
"doas (user@host) password:" ; OpenBSD doas
"PIN for user:" ; Bug#35523
"Password (again):"
"Enter password:"

View file

@ -539,6 +539,9 @@
(ert-deftest rx-compat ()
"Test old symbol retained for compatibility (bug#37517)."
(should (equal (rx-submatch-n '(group-n 3 (+ nonl) eol)) "\\(?3:.+$\\)")))
(should (equal
(with-suppressed-warnings ((obsolete rx-submatch-n))
(rx-submatch-n '(group-n 3 (+ nonl) eol)))
"\\(?3:.+$\\)")))
(provide 'rx-tests)

View file

@ -75,8 +75,9 @@
(eval
`(ert-deftest ,testname ()
,testdoc
(should (equal (apply 'truncate-string-to-width ',(car testdata))
,(cdr testdata)))))))
(let ((truncate-string-ellipsis "..."))
(should (equal (apply 'truncate-string-to-width ',(car testdata))
,(cdr testdata))))))))
(dotimes (i (length mule-util-test-truncate-data))
(mule-util-test-truncate-create i))

View file

@ -131,7 +131,7 @@
(should-error
(dbus-check-arguments :session dbus--test-service :object-path)
:type 'wrong-type-argument)
;; Raises an error on stdin.
;; Raises an error on stderr.
(should-error
(dbus-check-arguments :session dbus--test-service :object-path "string")
:type 'dbus-error)
@ -144,7 +144,7 @@
(should-error
(dbus-check-arguments :session dbus--test-service :signature)
:type 'wrong-type-argument)
;; Raises an error on stdin.
;; Raises an error on stderr.
(should-error
(dbus-check-arguments :session dbus--test-service :signature "string")
:type 'dbus-error)
@ -348,8 +348,12 @@
(should
(dbus-check-arguments
:session dbus--test-service '(:array :string "string1" "string2")))
(should
(dbus-check-arguments
:session dbus--test-service '(:array :signature "s" :signature "ao")))
;; Empty array (of strings).
(should (dbus-check-arguments :session dbus--test-service '(:array)))
;; Empty array (of object paths).
(should
(dbus-check-arguments :session dbus--test-service '(:array :signature "o")))
;; Different element types.
@ -358,6 +362,13 @@
:session dbus--test-service
'(:array :string "string" :object-path "/object/path"))
:type 'wrong-type-argument)
;; Different variant types in array don't matter.
(should
(dbus-check-arguments
:session dbus--test-service
'(:array
(:variant :string "string1")
(:variant (:struct :string "string2" :object-path "/object/path")))))
;; `:variant'. It contains exactly one element.
(should
@ -383,7 +394,7 @@
(dbus-check-arguments
:session dbus--test-service
'(:array (:dict-entry :string "string" :boolean nil))))
;; This is an alternative syntax. FIXME: Shall this be supported?
;; This is an alternative syntax.
(should
(dbus-check-arguments
:session dbus--test-service
@ -414,14 +425,14 @@
(dbus-check-arguments
:session dbus--test-service '(:dict-entry :string "string" :boolean t))
:type 'wrong-type-argument)
;; Different dict entry types are not ched. FIXME: Add check.
;; (should-error
;; (dbus-check-arguments
;; :session dbus--test-service
;; '(:array
;; (:dict-entry :string "string1" :boolean t)
;; (:dict-entry :string "string2" :object-path "/object/path")))
;; :type 'wrong-type-argument)
;; Different dict entry types in array.
(should-error
(dbus-check-arguments
:session dbus--test-service
'(:array
(:dict-entry :string "string1" :boolean t)
(:dict-entry :string "string2" :object-path "/object/path")))
:type 'wrong-type-argument)
;; `:struct'. There is no restriction what could be an element of a struct.
(should
@ -434,6 +445,14 @@
;; Empty struct.
(should-error
(dbus-check-arguments :session dbus--test-service '(:struct))
:type 'wrong-type-argument)
;; Different struct types in array.
(should-error
(dbus-check-arguments
:session dbus--test-service
'(:array
(:struct :string "string1" :boolean t)
(:struct :object-path "/object/path")))
:type 'wrong-type-argument))
(defun dbus--test-register-service (bus)
@ -697,7 +716,7 @@ is in progress."
"Received signal value in `dbus--test-signal-handler'.")
(defun dbus--test-signal-handler (&rest args)
"Signal handler for `dbus-test*-signal'."
"Signal handler for `dbus-test*-signal' and `dbus-test08-register-monitor'."
(setq dbus--test-signal-received args))
(defun dbus--test-timeout-handler (&rest _ignore)
@ -1833,6 +1852,46 @@ The argument EXPECTED-ARGS is a list of expected arguments for the method."
;; Cleanup.
(dbus-unregister-service :session dbus--test-service)))
(ert-deftest dbus-test08-register-monitor ()
"Check monitor registration."
:tags '(:expensive-test)
(skip-unless dbus--test-enabled-session-bus)
(unwind-protect
(let (registered)
(should
(equal
(setq registered
(dbus-register-monitor :session #'dbus--test-signal-handler))
'((:monitor :session-private)
(nil nil dbus--test-signal-handler))))
;; Send a signal, shall be traced.
(setq dbus--test-signal-received nil)
(dbus-send-signal
:session dbus--test-service dbus--test-path
dbus--test-interface "Foo" "foo")
(with-timeout (1 (dbus--test-timeout-handler))
(while (null dbus--test-signal-received)
(read-event nil nil 0.1)))
;; Unregister monitor.
(should (dbus-unregister-object registered))
(should-not (dbus-unregister-object registered))
;; Send a signal, shall not be traced.
(setq dbus--test-signal-received nil)
(dbus-send-signal
:session dbus--test-service dbus--test-path
dbus--test-interface "Foo" "foo")
(with-timeout (1 (ignore))
(while (null dbus--test-signal-received)
(read-event nil nil 0.1)))
(should-not dbus--test-signal-received))
;; Cleanup.
(dbus-unregister-service :session dbus--test-service)))
(defun dbus-test-all (&optional interactive)
"Run all tests for \\[dbus]."
(interactive "p")

View file

@ -36,8 +36,8 @@
Happy Birthday,
Foo
Happy Birthday,
Foo
You are my sunshine,

View file

@ -26,7 +26,7 @@
}
continue
{
last; # no endless loop, though
last;
}
}
# -------- while loop: expected output --------
@ -34,7 +34,7 @@
while (1) {
say "boring loop";
} continue {
last; # no endless loop, though
last;
}
}
# -------- while loop: end --------

View file

@ -148,6 +148,7 @@ under timeout control."
These exercise some standard blocks and also the special
treatment for Perl expressions where a closing paren isn't the
end of the statement."
(skip-unless (eq cperl-test-mode #'cperl-mode))
(let ((file (expand-file-name "cperl-indent-exp.pl"
cperl-mode-tests-data-directory)))
(with-temp-buffer
@ -166,6 +167,7 @@ end of the statement."
got)
(with-temp-buffer
(insert code)
(cperl-mode)
(goto-char (point-min))
(cperl-indent-exp) ; here we go!
(setq expected (concat "test case " name ":\n" expected))

Some files were not shown because too many files have changed in this diff Show more