Merge remote-tracking branch 'savannah/master' into HEAD
This commit is contained in:
commit
f7e7ff4fb1
107 changed files with 1076 additions and 639 deletions
|
@ -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.
|
||||
|
|
236
ChangeLog.3
236
ChangeLog.3
|
@ -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 it’s 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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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*}:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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}')}}
|
||||
|
|
|
@ -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}.
|
||||
|
||||
|
||||
|
|
24
etc/NEWS
24
etc/NEWS
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
4
etc/TODO
4
etc/TODO
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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).
|
||||
" +.*\\)"
|
||||
|
|
289
lisp/cus-edit.el
289
lisp/cus-edit.el
|
@ -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)))))
|
||||
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 "/")))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))))))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'"])
|
||||
)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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: "
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
13
lisp/subr.el
13
lisp/subr.el
|
@ -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")
|
||||
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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))))
|
||||
|
|
24
lisp/tmm.el
24
lisp/tmm.el
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
60
src/coding.c
60
src/coding.c
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
12
src/font.c
12
src/font.c
|
@ -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),
|
||||
|
|
12
src/frame.c
12
src/frame.c
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
18
src/json.c
18
src/json.c
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
14
src/lisp.h
14
src/lisp.h
|
@ -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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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--)
|
||||
|
|
|
@ -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, ®s);
|
||||
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;
|
||||
|
|
12
src/w32.c
12
src/w32.c
|
@ -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--;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
23
src/xdisp.c
23
src/xdisp.c
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
|
||||
|
||||
|
||||
Happy Birthday,
|
||||
Foo
|
||||
Happy Birthday,
|
||||
Foo
|
||||
|
||||
|
||||
You are my sunshine,
|
||||
|
|
|
@ -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 --------
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue