Stefan Monnier [Wed, 24 Jan 2024 07:35:22 +0000 (23:35 -0800)]
Remove too-tricky make_lisp_symbol optimization
Simplify optimization for make_lisp_symbol, so that
it’s less tricky and works well enough for gcc -Og or -O2.
* src/lisp.h (lisp_h_builtin_lisp_symbol): Remove.
(builtin_lisp_symbol) [DEFINE_KEY_OPS_AS_MACROS]: Remove.
(make_lisp_symbol_nodebug): New internal static function,
which is like the old make_lisp_symbol but without the eassert.
(make_lisp_symbol, builtin_lisp_symbol): Use it, so that
make_lisp_symbol has the eassert but builtin_lisp_symbol doesn’t.
Co-authored-by: Paul Eggert <eggert@cs.ucla.edu>
Stefan Monnier [Wed, 24 Jan 2024 03:30:13 +0000 (22:30 -0500)]
(struct charset): Remove dependency on hash-table internals
`struct charset` kept an index into the internal `key_and_value` array
of hash tables, which only worked because of details of how
hash-tables are handled. Replace it with a reference to the
value stored at that location in the hash-table, which saves us an
indirection while at it.
* src/charset.h (struct charset): Replace `hash_index` field with
`attributes` field.
(CHARSET_ATTRIBUTES): Simplify accordingly.
(CHARSET_HASH_INDEX): Delete unused macro.
* src/charset.c (Fdefine_charset_internal):
* src/pdumper.c (dump_charset): Adjust accordingly.
(dump_charset_table): Set the referrer since that's needed while
dumping Lisp_Object fields.
Michael Albinus [Tue, 23 Jan 2024 18:24:29 +0000 (19:24 +0100)]
Fix cus-test-deps
* admin/cus-test.el (cus-test-deps): Add the "quail/" subdirectory
to default-directory, temporarily.
Basil L. Contovounesios [Fri, 19 Jan 2024 12:50:29 +0000 (13:50 +0100)]
Further shrink eglot--{}
Up to and including Emacs 29, :size 0 was an alias for :size 1.
Emacs 30 gained support for :size 0 hash tables (bug#68244).
* lisp/progmodes/eglot.el (eglot--{}): Define as truly zero-sized.
Gerd Möllmann [Tue, 23 Jan 2024 05:47:40 +0000 (06:47 +0100)]
; Fix DOHASH
Po Lu [Tue, 23 Jan 2024 02:30:51 +0000 (10:30 +0800)]
Correct crash when executing IP within twilight zone
* src/sfnt.c (sfnt_address_zp2, sfnt_address_zp1)
(sfnt_address_zp0): Don't save into X or Y if the zone is set to
the twilight zone and they are NULL.
Po Lu [Tue, 23 Jan 2024 01:41:41 +0000 (09:41 +0800)]
* src/sfnt.c (sfnt_mul_f26dot6_fixed): Correct typo in last change.
Stefan Monnier [Mon, 22 Jan 2024 20:06:24 +0000 (15:06 -0500)]
* src/regex-emacs.c (forall_firstchar_1): Improve corner case
Fixes a "FORALL_FIRSTCHAR: Broken assumption2!!" warning with:
"^\\(# *\\)\\([^ ]+?\\) *: *\\(.*?\\(?:\n\\1[ \t]+.*?\\)*\\)[[:space:]]*$"
Stefan Monnier [Mon, 22 Jan 2024 14:48:48 +0000 (09:48 -0500)]
* src/pdumper.c (dump_object_needs_dumping_p): Simplify
(hash_table_contents): Use DOHASH.
Andrea Corallo [Mon, 22 Jan 2024 07:49:17 +0000 (08:49 +0100)]
Revert "* Update a comp test (bug#68523)"
* test/src/comp-tests.el (comp-tests-ret-type-spec-71): Reverts commit
c5031a52c5c6ad74fab27d3754700e7457717516 to compensate for
50201e03b9c.
Michael Albinus [Mon, 22 Jan 2024 08:20:46 +0000 (09:20 +0100)]
* lisp/leim/quail/indian.el (tamil-input): Use `quail' as parent group.
Po Lu [Mon, 22 Jan 2024 08:01:13 +0000 (16:01 +0800)]
Do not overwrite flags of succeeding points during generic move
* src/sfnt.c (sfnt_move): Save FLAGS and restore it after X
axis movement loop.
Po Lu [Mon, 22 Jan 2024 07:29:18 +0000 (15:29 +0800)]
Correct values of INSTCTRL flags tested
* src/sfnt.c (sfnt_mul_f26dot6_round): New function.
(sfnt_mul_f26dot6_fixed): Replace by call to
sfnt_mul_fixed_round.
(MUL): Round result, as the Apple and MS scalers do.
(sfnt_interpret_control_value_program): The instruction control
flag which reverts CVT modifications is 2, not 4.
Paul Eggert [Mon, 22 Jan 2024 04:34:03 +0000 (20:34 -0800)]
Add an eassert back to XSYMBOL
Problem reported by Alan Mackenzie in:
https://lists.gnu.org/r/emacs-devel/2024-01/msg00755.html
* src/lisp.h (XSYMBOL): If the arg is not a bare symbol, then
eassert (symbols_with_pos_enabled). This shouldn’t affect code
generated for regular builds, and could catch caller errors in
debug builds. For debug builds although this slows things down
XSYMBOL should still be faster than it was the day before
yesterday, as there’s still no need to eassert (SYMBOLP (a)).
Paul Eggert [Mon, 22 Jan 2024 01:18:23 +0000 (17:18 -0800)]
Speed up builtin_lisp_symbol when not optimizing
This should help when building with --enable-checking and
compiling with gcc -O0. Problem reorted by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2024-01/msg00770.html
* src/lisp.h (lisp_h_builtin_lisp_symbol): New macro,
with a body equivalent in effect to the old ‘builtin_lisp_symbol’
but faster when not optimizing.
(builtin_lisp_symbol): Use it.
If DEFINE_KEY_OPS_AS_MACROS, also define as macro.
Po Lu [Mon, 22 Jan 2024 00:48:19 +0000 (08:48 +0800)]
* configure.ac: Cease suppressing detection of utmp.h.
Po Lu [Mon, 22 Jan 2024 00:47:34 +0000 (08:47 +0800)]
Update from Gnulib
Stefan Kangas [Sun, 21 Jan 2024 14:28:06 +0000 (15:28 +0100)]
; Fix typos in symbol names
Stefan Kangas [Sun, 21 Jan 2024 13:09:21 +0000 (14:09 +0100)]
doc: Delete extraneous quotes around keys
* lisp/allout.el (allout-outlinify-sticky):
* lisp/auth-source.el (auth-sources):
* lisp/buff-menu.el (Buffer-menu-delete)
(Buffer-menu-delete-backwards, Buffer-menu-save)
(Buffer-menu-execute, Buffer-menu-select):
* lisp/calendar/todo-mode.el (todo-show)
(todo-show-categories-table, todo-top-priorities-overrides):
* lisp/desktop.el (desktop-save-mode):
* lisp/dired-aux.el (dired-do-kill-lines, dired-do-copy):
* lisp/edmacro.el (edit-kbd-macro):
* lisp/emulation/viper-cmd.el (viper-ask-level):
* lisp/emulation/viper-init.el (viper-expert-level):
* lisp/filesets.el (filesets-add-buffer):
* lisp/follow.el (follow-mode):
* lisp/gnus/gnus-group.el (gnus-group-mode):
* lisp/gnus/gnus-sum.el (gnus-summary-mode):
* lisp/ibuffer.el (ibuffer-mode):
* lisp/international/ogonek.el (ogonek-informacja)
(ogonek-information):
* lisp/isearch.el (search-default-mode):
* lisp/macros.el (apply-macro-to-region-lines):
* lisp/mail/supercite.el (sc-mail-field-query)
(sc-insert-reference, sc-insert-citation):
* lisp/play/decipher.el (decipher-make-checkpoint):
(decipher-restore-checkpoint):
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave-store-inquired-class):
* lisp/progmodes/prolog.el (prolog-mode, prolog-inferior-mode):
* lisp/progmodes/sh-script.el (sh-set-shell):
* lisp/progmodes/vhdl-mode.el (vhdl-compiler-alist)
(vhdl-modify-date-prefix-string)
(vhdl-modify-date-on-saving, vhdl-mode):
* lisp/server.el (server-start):
* lisp/subr.el (locate-library):
* lisp/tempo.el (tempo-marks, tempo-use-tag-list):
* lisp/time.el (world-clock):
* lisp/vc/vc-hooks.el (vc-mode):
* lisp/whitespace.el (whitespace-report-region):
* lisp/windmove.el (windmove-delete-in-direction): Doc fix: Delete
extraneous quotes around keys.
Mattias Engdegård [Fri, 19 Jan 2024 17:31:06 +0000 (18:31 +0100)]
Change HASH_UNUSED_ENTRY_KEY from Qunbound to NULL float
This removes hacks from code that had to be careful not to use
Qunbound as a hash table key, at the cost of a minor hack in
the GC marker.
* src/lisp.h (INVALID_LISP_VALUE, HASH_UNUSED_ENTRY_KEY):
Define as a null-pointer float.
* src/alloc.c (process_mark_stack): Add hack to ignore that value.
* src/pdumper.c (dump_object_needs_dumping_p)
(pdumper_init_symbol_unbound, pdumper_load):
* src/print.c (PRINT_CIRCLE_CANDIDATE_P): Remove hacks for Qunbound.
Mattias Engdegård [Fri, 19 Jan 2024 15:45:51 +0000 (16:45 +0100)]
Make better use of fixnum range in sxhash etc
Recent hash table changes reduced the range of sxhash, sxhash-eq etc
to [0,2**32) on platforms with 62-bit fixnums. This change makes them
use the full fixnum range again. Hash table hashing is unaffected.
* src/fns.c (sxhash_eq, sxhash_eql): New.
(hash_hash_to_fixnum): Replace with...
(reduce_emacs_uint_to_fixnum): ...this.
(hashfn_eq, hashfn_eql, Fsxhash_eq, Fsxhash_eql, Fsxhash_equal)
(Fsxhash_equal_including_properties): Use the new functions.
Mattias Engdegård [Fri, 19 Jan 2024 14:52:13 +0000 (15:52 +0100)]
Clarify permitted mutation in `maphash` documentation
* doc/lispref/hash.texi (Hash Access):
* src/fns.c (Fmaphash):
Make it clear what the function passed as argument can do. Until now
these rules were unwritten, and are still unenforced.
Mattias Engdegård [Fri, 19 Jan 2024 14:17:52 +0000 (15:17 +0100)]
Add C macro for hash table iteration
This removes some boilerplate code and further reduces dependencies on
hash table implementation internals.
* src/lisp.h (DOHASH): New.
* src/comp.c (compile_function, Fcomp__compile_ctxt_to_file):
* src/composite.c (composition_gstring_cache_clear_font):
* src/emacs-module.c (module_global_reference_p):
* src/fns.c (Fmaphash):
* src/json.c (lisp_to_json_nonscalar_1):
* src/minibuf.c (Ftest_completion):
* src/print.c (print):
Use it instead of a hand-written loop.
Dmitry Gutov [Sun, 21 Jan 2024 05:08:11 +0000 (07:08 +0200)]
project-recompile: New command
* lisp/progmodes/project.el (project-recompile):
New command (bug#68570).
Po Lu [Sun, 21 Jan 2024 04:49:41 +0000 (12:49 +0800)]
; * etc/NEWS: Improve mwheel entry.
Po Lu [Sun, 21 Jan 2024 04:47:24 +0000 (12:47 +0800)]
Don't invert wheel event directions
* lisp/mwheel.el (mwheel--is-dir-p): In Emacs, up means down and
down means up...
Stefan Monnier [Sun, 21 Jan 2024 04:12:36 +0000 (23:12 -0500)]
* lisp/mwheel.el (mouse-wheel-obey-old-style-wheel-buttons): Simplify
Stefan Monnier [Sun, 21 Jan 2024 04:00:54 +0000 (23:00 -0500)]
(define-derived-mode): Fix bug#68600
* lisp/emacs-lisp/derived.el (define-derived-mode): Use a reference
to the mode symbol instead of the mode's "pretty" name in
the hook variable's docstring.
Po Lu [Sun, 21 Jan 2024 02:33:30 +0000 (10:33 +0800)]
; * msdos/sedleim.inp: Adapt to Emacs 30.
Po Lu [Sun, 21 Jan 2024 02:04:02 +0000 (10:04 +0800)]
* make-dist (possibly_non_vc_files): Append exec standard files.
Po Lu [Sun, 21 Jan 2024 01:58:17 +0000 (09:58 +0800)]
; * exec/Makefile.in: Correct typo.
Po Lu [Sun, 21 Jan 2024 01:53:55 +0000 (09:53 +0800)]
Suppress detection of utmpx.h on Android
* configure.ac (ac_cv_header_utmpx_h): Predefine to no when
Android is older than 34.
Po Lu [Sun, 21 Jan 2024 01:15:55 +0000 (09:15 +0800)]
; * exec/Makefile.in (extraclean): Remove standard files.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Omit -DHAVE_CONFIG_H
* configure.ac (CFLAGS): Do not add -DHAVE_CONFIG_H. It is no
longer needed now that the Android printf hack has been removed.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Speed up make_lisp_symbol when debugging
* src/lisp.h (make_lisp_symbol): In eassert use XBARE_SYMBOL
rather than XSYMBOL. This is safe because the symbol must be
bare. The change speeds up make_lisp_symbol when debugging.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Simplify and tune XSYMBOL
* src/lisp.h (XSYMBOL): Simplify and tune. There is no need to
examine symbols_with_pos_enabled here, since the arg must be a symbol
so if it's not a bare symbol then it must be a symbol_with_pos;
and checking whether a symbol is bare is cheap.
With Ubuntu 23.10 on a Xeon W-1350, this shrank Emacs’s executable
text size by 0.1% and sped up a default build of all *.elc files by
0.4%.
Remove unnecessary eassert, since XBARE_SYMBOL and XSYMBOL_WITH_POS
have easserts that suffice.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Be more systematic about parens in C source code
Be more systematic about putting space before paren in calls,
and in avoiding unnecessary parentheses in macros.
This was partly inspired by my wading through gcc -E output
while debugging something else, and seeing too many parens.
This patch does not change the generated .o files on my platform.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Omit some parens
* src/lisp.h (XBARE_SYMBOL, XSYMBOL): Omit parentheses that are no
longer needed now that we have symbols with positions and these
symbols are never macros.
Paul Eggert [Sun, 21 Jan 2024 00:52:31 +0000 (16:52 -0800)]
Pacify gcc -Wsuggest-attribute=malloc
* src/lisp.h (hash_table_alloc_bytes):
Declare with ATTRIBUTE_MALLOC_SIZE ((1)).
Paul Eggert [Sun, 21 Jan 2024 00:26:45 +0000 (16:26 -0800)]
Fix autogen.sh’s spurious ‘git diff’ output
Problem reported by Gerd Möllmann (Bug#68464).
* .gitignore: Ignore files in exec that are now copied from build-aux.
* admin/merge-gnulib (avoided_flags): Instead of clearing
autom4te.cache here ...
* autogen.sh (do_git): ... clear it here.
Use config.guess, config.sub and install-sh from
the Emacs repository, as they are more likely to be up to date.
This avoids unnecessary differences among different builders,
and avoids unnecessary ‘git diff’ output after autogen.sh.
Also, copy these files from build-aux to exec since there
should be no difference between the two copies.
* exec/config.guess, exec/config.sub, exec/install-sh:
Remove from repository, as autogen.sh now copies them from build-aux.
Stefan Monnier [Sat, 20 Jan 2024 20:04:12 +0000 (15:04 -0500)]
Merge branch 'mwheel-no-alts'
Stefan Monnier [Sat, 13 Jan 2024 00:05:24 +0000 (19:05 -0500)]
mwheel.el: Code clean to reduce duplication
* lisp/mwheel.el (mouse-wheel-obey-old-style-wheel-buttons): New var,
extracted from `mouse-wheel-*-event` definitions.
(mouse-wheel-down-event, mouse-wheel-up-event)
(mouse-wheel-left-event, mouse-wheel-right-event): Use it.
Stefan Monnier [Fri, 12 Jan 2024 23:52:37 +0000 (18:52 -0500)]
mwheel.el: Remove `mouse-wheel-*-alternate-event` vars
Now that `wheel-DIR` events are hardcoded, we never need more than
one variable (which we actually never needed anyway, we could have
let `mouse-wheel-*-event` vars hold lists of events instead), so
remove the `mouse-wheel-*-alternate-event` vars by merging their
default value into that of the corresponding `mouse-wheel-*-event`.
* lisp/mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event)
(mouse-wheel-left-event, mouse-wheel-right-event): Don't bother holding
`wheel-DIR` events since these are already handled anyway.
Hold the event that would have been held in
`mouse-wheel-DIR-alternate-event` instead.
(mouse-wheel-down-alternate-event, mouse-wheel-up-alternate-event)
(mouse-wheel-left-alternate-event, mouse-wheel-right-alternate-event):
Delete vars.
(mwheel--is-dir-p, mouse-wheel--setup-bindings):
* lisp/edmacro.el (edmacro-fix-menu-commands):
* lisp/completion-preview.el (completion-preview--mouse-map):
Don't use `mouse-wheel-up/down-alternate-event` any more.
* lisp/progmodes/flymake.el (flymake--mode-line-counter-map):
Do nothing, because it already ignored those vars.
Stefan Monnier [Fri, 12 Jan 2024 23:28:12 +0000 (18:28 -0500)]
mwheel.el: Unconditionally use the `wheel-up/down/...` events
The `mouse-wheel-DIR-event` vars were introduced because under X11
we get different `mouse-N` events depending on the users' mouse and
those same events can be used for other things for other rodents, so we
can't unconditionally treat those events as mouse-wheel events.
But this does not apply to the `wheel-up/down/...` events.
So hard code them.
* lisp/mwheel.el (mwheel--is-dir-p): Always consider the `wheel-DIR` events.
(mouse-wheel--setup-bindings): Always bind the `wheel-DIR` events.
* lisp/completion-preview.el (completion-preview--mouse-map):
Unconditionally bind the `wheel-DIR` events.
* lisp/edmacro.el (edmacro-fix-menu-commands): Hard code the
`wheel-DIR` events as mouse events regardless of `mouse-wheel-*-event`s.
* lisp/progmodes/flymake.el (flymake--mode-line-counter-map):
Do nothing, because it's already been done in commit
e5be6c7ae309.
* doc/lispref/commands.texi (Misc Events): Document the need to use
`wheel-up/down/left/right` unconditionally.
Stefan Monnier [Fri, 12 Jan 2024 23:08:31 +0000 (18:08 -0500)]
* lisp/completion-preview.el: Fix use in non-GUI session
Fix loading in non-GUI sessions where `mwheel` is not preloaded.
Not requiring `mwheel` would be a lot more complex, since it would
require delaying the construction of `completion-preview--mouse-map`.
* lisp/completion-preview.el (<toplevel>): Require `mwheel`.
Remove correspondingly redundant `defvar`s.
(completion-preview--mouse-map): Use `key-description` rather than mimicking
it with `format`.
Stefan Monnier [Fri, 12 Jan 2024 23:05:14 +0000 (18:05 -0500)]
* lisp/keymap.el (define-keymap): Demote "duplicate def" to a warning
* test/src/keymap-tests.el (keymap-test-duplicate-definitions):
Adjust accordingly.
Paul Eggert [Sat, 20 Jan 2024 19:45:04 +0000 (11:45 -0800)]
Update from Gnulib by running admin/merge-gnulib
Paul Eggert [Sat, 20 Jan 2024 19:26:09 +0000 (11:26 -0800)]
Avoid Gnulib ‘access’ module
* admin/merge-gnulib (AVOIDED_MODULES): Add ‘access’,
since I don’t think Emacs cares about the Mac OS X 10.5
bug where faccessat ignores a trailing slash on a symlink
to a directory. This will matter the next time we run
admin/merge-gnulib.
Eshel Yaron [Sat, 20 Jan 2024 11:43:27 +0000 (05:43 -0600)]
Eldoc: play nice with mode-line-format-right-align (bug#68547)
* lisp/emacs-lisp/eldoc.el (eldoc-minibuffer-message): Avoid nesting
'mode-line-format', since that breaks 'mode-line-format-right-align'.
Eli Zaretskii [Sat, 20 Jan 2024 11:40:54 +0000 (06:40 -0500)]
; Merge NEWS.29.
Eli Zaretskii [Sat, 20 Jan 2024 11:37:09 +0000 (06:37 -0500)]
; Fix merge snafus
* lisp/jsonrpc.el:
* lisp/progmodes/eglot.el: Fix merge snafus.
Eli Zaretskii [Sat, 20 Jan 2024 11:25:59 +0000 (06:25 -0500)]
Merge from origin/emacs-29
5bb5590dec9 Fix blunder in labeled_narrow_to_region
78ddb32fadb Fix documentation of icon-elements
725a3f32f8b ; Fix typos in symbol names
6653ee66ca5 Improve two docstrings in ox-latex
7d869a04029 Doc fix in auth-source-read-char-choice
f149de223bf Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
1f97a878795 Fix info-xref-tests
51f391998b1 Add @kindex in manuals for existing keybindings on 'C-x x...
Eshel Yaron [Fri, 5 Jan 2024 15:40:44 +0000 (16:40 +0100)]
; Use HTML entities for reserved characters in 'dom-print'
* lisp/dom.el (dom-print): Encode HTML reserved characters in strings.
* test/lisp/dom-tests.el (dom-tests-print): New test. (Bug#68508)
Po Lu [Sat, 20 Jan 2024 01:30:04 +0000 (09:30 +0800)]
Round projs computed executing IP/ISECT instructions and improve IUP
* src/sfnt.c (sfnt_multiply_divide_rounded): New function.
(sfnt_multiply_divide_signed): Always round values, as fonts
which rely on IP to move points in concert with prior motion and
subsequently round such points with MDAP are sensitive to minor
deviations in the behavior of the former instruction.
(load_unscaled): New macro.
(IUP_SINGLE_PAIR, sfnt_interpret_iup_1): Compute ratio w/
unscaled points if possible.
Stefan Monnier [Fri, 19 Jan 2024 20:04:50 +0000 (15:04 -0500)]
trace.el: Mention the last change in NEWS
Stefan Monnier [Fri, 19 Jan 2024 20:02:50 +0000 (15:02 -0500)]
trace.el: Make it usable in batch mode as well
While at it, this fixes a bug where a traced function was not
able to set `deactivate-mark`.
* lisp/emacs-lisp/trace.el (trace--insert): New function, extracted
from `trace-make-advice`. Output to stdout in batch mode.
(trace--entry-message): Rename from `trace-entry-message`.
Change calling convention. Do the insertion directly from here.
(trace--exit-message): Rename from `trace-exit-message`.
Change calling convention. Do the insertion directly from here.
(trace-make-advice, trace-values): Simplify accordingly.
Po Lu [Fri, 19 Jan 2024 12:51:24 +0000 (20:51 +0800)]
Fix another cause of superfluous inotify signals on Android
* src/android.c (android_select): If the event queue isn't
empty upon the initial check, clear all fdsets.
F. Jason Park [Sun, 14 Jan 2024 21:02:27 +0000 (13:02 -0800)]
Redo doc strings for ERC's entry point commands
* lisp/erc/erc.el: Bump Compat version in Package-Requires header to
29.1.4.4.
(erc-select-read-args): Revise doc string, and update name of internal
`--interactive-env--' entry-point parameter.
(erc, erc-tls): Don't use `&interactive-env' as a variable name, in
case it confuses persons or programs. Overhaul doc string in response
to user complaints. For `erc' specifically, include literal
`:keyword' symbols to help non-Emacs users understand the required
syntax, which isn't obvious without an example, like `erc-tls' has,
and with only "&key" and upcased metasynctatic variables to go by.
(erc--current-buffer-joined-p): Remove assertion.
* test/lisp/erc/erc-scenarios-keep-place-indicator.el
(erc-scenarios-keep-place-indicator--follow): Try waiting for
intermittently failing condition.
* test/lisp/erc/erc-tests.el (erc-select-read-args): Update name of
internal keyword variable.
F. Jason Park [Mon, 15 Jan 2024 13:53:24 +0000 (05:53 -0800)]
Add test for erc-extract-command-from-line
* lisp/erc/erc.el (erc-extract-command-from-line): Redo doc string.
* test/lisp/erc/erc-tests.el (erc--parse-isupport-value): Add case for
commonly seen escaped character ?=.
(erc-extract-command-from-line): New test.
; * test/lisp/erc/resources/erc-d/resources/basic.eld: Update.
; Don't send unnegotiated multi-prefixed userhost names.
; * test/lisp/erc/resources/erc-d/resources/dynamic-barnet.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/dynamic.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/eof.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/fuzzy.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/incremental.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/linger.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/no-block.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/no-match.eld: Update.
; * test/lisp/erc/resources/erc-d/resources/unexpected.eld: Update.
Stefan Monnier [Thu, 18 Jan 2024 23:28:54 +0000 (18:28 -0500)]
* lisp/international/quail.el (quail-input-method): Fix bug#68338
Stefan Monnier [Thu, 18 Jan 2024 19:05:16 +0000 (14:05 -0500)]
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Fix bug#68514
Redo the commit
0db2126d7176 to try and avoid selecting more than
a mere symbol.
Stefan Monnier [Thu, 18 Jan 2024 19:00:15 +0000 (14:00 -0500)]
* test/lisp/emacs-lisp/comp-cstr-tests.el: Use macros in a simpler way
(comp-cstr-test-ts): Move out of `cl-eval-when`.
(comp-cstr-typespec-test): Delete.
(comp-cstr-synthesize-tests): Make it take the tests as an argument.
(comp-cstr-typespec-tests-alist): Delete var, pass its value to the
macro instead.
Mattias Engdegård [Thu, 18 Jan 2024 17:48:12 +0000 (18:48 +0100)]
Don't use Qunbound as hash table key when printing (bug#68244)
This flaw could cause an assertion failure.
* src/print.c (PRINT_CIRCLE_CANDIDATE_P): Don't consider Qunbound a
print-circle candidate; it should never be seen by Lisp anyway.
Mattias Engdegård [Thu, 18 Jan 2024 17:45:16 +0000 (18:45 +0100)]
Only use a hash index size of 1 for tables with size 0 (bug#68244)
This invariant was intended but insufficiently enforced which could
lead to an assertion failure.
* src/fns.c (hash_index_size): Assume size>0, and return a value >1.
(make_hash_table): Only use hash_index_size for size>0.
Eric Abrahamsen [Thu, 18 Jan 2024 15:24:39 +0000 (07:24 -0800)]
Avoid font-lock reset in `gnus-message-citation-mode'
* lisp/gnus/gnus-cite.el (gnus-message-citation-mode): Use
`font-lock-add-keywords' and `font-lock-remove-keywords' instead of
modifying font-lock defaults. Make no font-lock changes until
`font-lock-mode' is active.
Thanks to Morgan Willcock
Po Lu [Thu, 18 Jan 2024 02:32:50 +0000 (10:32 +0800)]
; * src/androidterm.c (handle_one_android_event): Fix typo.
Jim Porter [Wed, 17 Jan 2024 17:32:18 +0000 (09:32 -0800)]
; Fix test failures from the fix for bug#67661
* test/lisp/eshell/em-cmpl-tests.el
(em-cmpl-test/file-completion/non-unique): Make test more robust.
Andrea Corallo [Wed, 17 Jan 2024 14:28:43 +0000 (15:28 +0100)]
* Update a comp test (bug#68523)
* test/src/comp-tests.el (comp-tests-ret-type-spec-71): Update a test
due to new 'sxhash-equal' behaviour.
Po Lu [Wed, 17 Jan 2024 01:30:47 +0000 (09:30 +0800)]
Increase accuracy of IP instruction
* src/sfnt.c (sfnt_interpret_ip): Avoid precision loss by
retrieving original positions from the unscaled outline,
whenever possible.
Mattias Engdegård [Mon, 15 Jan 2024 13:58:43 +0000 (14:58 +0100)]
Update pdumper hashes for buffer and Lisp_Hash_Table
* src/pdumper.c (dump_hash_table): Update for changes in recent
hash-table patch suites (bug#68244).
(dump_buffer): Update for case-fold-search changes (bug#66117).
Mattias Engdegård [Mon, 15 Jan 2024 09:58:59 +0000 (10:58 +0100)]
More efficient hash table thawing
* src/fns.c (hash_table_thaw): Don't allocate anything for empty
tables. Don't initialise the next vector twice.
(maybe_resize_hash_table): Factor out min_size constant.
Eli Zaretskii [Tue, 16 Jan 2024 17:14:09 +0000 (19:14 +0200)]
; * etc/NEWS: Fix wording of recently-added entry.
Juri Linkov [Tue, 16 Jan 2024 16:54:04 +0000 (18:54 +0200)]
New display action alist entry 'post-command-select-window' (bug#67993)
* doc/lispref/windows.texi (Buffer Display Action Alists):
Add 'post-command-select-window'.
* lisp/window.el (display-buffer): Add 'post-command-select-window'
to the docstring and handle at the end of function.
Po Lu [Tue, 16 Jan 2024 02:59:34 +0000 (10:59 +0800)]
Enable the system's Arabic and Khmer fonts under Android
* lisp/international/fontset.el (setup-default-fontset): If
`android', search for Arabic or Khmer fonts with script tags,
not OTF features.
Mike Kupfer [Mon, 15 Jan 2024 19:47:43 +0000 (11:47 -0800)]
Fix folder creation error (Bug#67361)
* lisp/mh-e/mh-funcs.el (mh-kill-folder), lisp/mh-e/mh-search.el
(mh-index-new-folder), lisp/mh-e/mh-utils.el (mh-prompt-for-folder):
Check for existence of speedbar-buffer rather than
mh-speed-folder-map. The latter can exist if mh-speed has only been
loaded but not displayed.
Stefan Monnier [Tue, 16 Jan 2024 00:00:50 +0000 (19:00 -0500)]
* lisp/help-fns.el (help-fns--parent-mode): Mention the extra parents
As suggested by Stefan Kangas in bug#68246.
Michael Albinus [Mon, 15 Jan 2024 15:55:27 +0000 (16:55 +0100)]
* lisp/info-xref.el (info-xref-subfile-p): Avoid false positives. (Bug#68428)
João Távora [Mon, 15 Jan 2024 12:32:51 +0000 (06:32 -0600)]
Jsonrpc: fix bug in jsonrpc--remove
* lisp/jsonrpc.el (jsonrpc--remove): Check timer before cancelling it.
(Version): Bump to 1.2.24
See https://github.com/joaotavora/eglot/issues/1342
Po Lu [Mon, 15 Jan 2024 06:32:26 +0000 (14:32 +0800)]
; * src/xterm.c (x_focus_frame): Insert missing unblock_input.
Stefan Monnier [Mon, 15 Jan 2024 03:17:13 +0000 (22:17 -0500)]
(js-json-mode): Don't derive from `js-mode` (bug#67463)
* lisp/progmodes/js.el (js--mode-setup): New function, extracted from
`js-mode`.
(js-mode): Use it.
(js-json-mode): Use it instead of inheriting from `js-mode`.
Gregory Heytings [Mon, 15 Jan 2024 00:53:36 +0000 (00:53 +0000)]
; * admin/git-bisect-start: Update failing commits
Gregory Heytings [Thu, 11 Jan 2024 23:38:22 +0000 (23:38 +0000)]
Fix blunder in labeled_narrow_to_region
* src/editfns.c (labeled_narrow_to_region): Record point before,
instead of after, calling narrow-to-region; otherwise point may
already have been changed. Fixes bug#66764.
Daniel Martín [Sun, 14 Jan 2024 14:36:16 +0000 (15:36 +0100)]
Fix documentation of icon-elements
* lisp/emacs-lisp/icons.el (icon-elements): The plist key it returns
is `image', not `display'. (Bug#68451)
Stefan Kangas [Sun, 14 Jan 2024 13:56:06 +0000 (14:56 +0100)]
; Fix typos in symbol names
Stefan Kangas [Sun, 14 Jan 2024 13:52:17 +0000 (14:52 +0100)]
Improve two docstrings in ox-latex
* lisp/org/ox-latex.el (org-latex-src-block-backend)
(org-latex-engraved-theme): Improve docstring; mention that
engrave-faces is a GNU ELPA package.
Stefan Kangas [Sun, 14 Jan 2024 13:47:39 +0000 (14:47 +0100)]
Doc fix in auth-source-read-char-choice
* lisp/auth-source.el (auth-source-read-char-choice): Don't
document 'dropdown-list', which was removed in 2011.
Mattias Engdegård [Sun, 14 Jan 2024 13:10:17 +0000 (14:10 +0100)]
Fix recent ses-tests mistakes (bug#5852)
* test/lisp/ses-tests.el
(ses-set-formula-write-cells-with-changed-references):
Quote constant list. Remove unused variable.
Mattias Engdegård [Sun, 14 Jan 2024 12:37:44 +0000 (13:37 +0100)]
Use forward-line instead of next-line in noninteractive test
* test/lisp/textmodes/page-tests.el (page-tests-what-page):
Silence byte-compiler warning; forward-line works nicely here.
Mattias Engdegård [Sun, 14 Jan 2024 11:50:36 +0000 (12:50 +0100)]
Make object-intervals linear instead of quadratic
* src/fns.c (collect_interval, Fobject_intervals):
Build the returned list in reverse instead of appending single
elements.
Mattias Engdegård [Sun, 14 Jan 2024 11:33:12 +0000 (12:33 +0100)]
Speed up sxhash-equal-including-properties
This function now no longer conses at all. Previously, it constructed
a list structure of all string intervals for the sole purpose of
hashing.
* src/fns.c (hash_interval): New.
(Fsxhash_equal_including_properties):
Use it instead of collect_interval.
Mattias Engdegård [Sun, 14 Jan 2024 10:58:33 +0000 (11:58 +0100)]
Retype traverse_interval arg type from Lisp_Object to void *
This is a refactoring. It eliminates a few unnecessary conses and
allows for further improvements.
* src/intervals.c (traverse_intervals):
Change argument type. All callers adapted.
* src/fns.c (collect_interval, Fsxhash_equal_including_properties)
(Fobject_intervals):
* src/print.c (print_check_string_charset_prop)
(print_prune_string_charset, print_object, print_interval):
Pass a pointer to a Lisp_Object instead of a Lisp_Object.
Po Lu [Sun, 14 Jan 2024 13:06:10 +0000 (21:06 +0800)]
Correct implementations of FLIPRGON and FLIPRGOFF
* src/sfnt.c (sfnt_interpret_fliprgoff)
(sfnt_interpret_fliprgon): Reorder arguments to match
the order in which arguments are popped by macro wrappers.
Fix sundry typos.
Po Lu [Sun, 14 Jan 2024 00:26:27 +0000 (08:26 +0800)]
Fix bug#65116
* src/xterm.c (xi_focus_handle_for_device): Correct typo.
(x_focus_frame): Don't focus frames Emacs believes to be
focused if they are frames with independent minibuffer
frames. (bug#65116)
Mattias Engdegård [Sat, 30 Dec 2023 15:00:28 +0000 (16:00 +0100)]
Hash-table documentation updates (bug#68244)
* doc/lispref/hash.texi (Creating Hash, Other Hash):
Manual updates for make-hash-table, hash-table-rehash-size and
hash-table-rehash-threshold.
* doc/lispref/objects.texi (Hash Table Type): Update example.
* src/fns.c (Fhash_table_rehash_size, Fhash_table_rehash_threshold):
Update doc strings.
* etc/NEWS: Announce changes.
Mattias Engdegård [Sat, 30 Dec 2023 14:54:32 +0000 (15:54 +0100)]
Don't pretend that hash-table-size is useful
* lisp/emacs-lisp/shortdoc.el (hash-table): Remove hash-table-size entry.
* doc/lispref/hash.texi (Other Hash):
* src/fns.c (Fhash_table_size): Make it clear that hash-table-size is
probably not worth using.
Mattias Engdegård [Wed, 22 Nov 2023 13:54:34 +0000 (14:54 +0100)]
Change hash_hash_t to uint32_t
This saves a lot of memory and is quite sufficient. Hash functions
are adapted to produce a hash_hash_t eventually, which eliminates some
useless and information-destroying intermediate hash reduction steps.
We still use EMACS_UINT for most of the actual hashing steps before
producing the final value; this may be slightly wasteful on 32-bit
platforms with 64-bit EMACS_UINT.
* src/lisp.h (hash_hash_t): Change to uint32_t.
* src/fns.c (reduce_emacs_uint_to_hash_hash): New.
(hashfn_eq, hashfn_equal, hashfn_user_defined): Reduce return values
to hash_hash_t.
(sxhash_string): Remove. Caller changed to hash_string.
(sxhash_float, sxhash_list, sxhash_vector, sxhash_bool_vector)
(sxhash_bignum): Remove wasteful calls to SXHASH_REDUCE.
(hash_hash_to_fixnum): New.
(Fsxhash_eq, Fsxhash_eql, Fsxhash_equal)
(Fsxhash_equal_including_properties): Convert return values to fixnum.
Mattias Engdegård [Tue, 21 Nov 2023 21:12:08 +0000 (22:12 +0100)]
Use key Qunbound instead of hash value hash_unused for free entries
Previously, free hash table entries were indicated by both hash value
hash_unused and key Qunbound; we now rely on the latter only.
This allows us to change the hash representation to one that does not
have an unused value.
* src/lisp.h (hash_unused): Remove.
All uses adapted to calling hash_unused_entry_key_p on the key instead.
The hash values for unused hash table entries are now undefined; all
initialisation and assignment to hash_unused has been removed.
Mattias Engdegård [Wed, 22 Nov 2023 12:47:56 +0000 (13:47 +0100)]
Don't dump Qunbound
The dumper uses a hash table to keep track of dumped objects but as
this clashes with the use of Qunbound for marking unused hash table
entries, don't dump that value at all. The symbol name is fixed up
after loading.
An alternative solution would be to use a different unique value for
unused entries.
* src/pdumper.c (dump_object_needs_dumping_p): Skip Qunbound.
(dump_vectorlike_generic): New function.
(pdumper_load): Call it.
Mattias Engdegård [Tue, 21 Nov 2023 18:26:23 +0000 (19:26 +0100)]
Change hash_idx_t to int32_t on all platforms
* src/lisp.h (hash_idx_t): Change to int32_t.
* src/fns.c (hash_index_size): Adapt to new index type.
Mattias Engdegård [Sat, 4 Nov 2023 17:21:06 +0000 (18:21 +0100)]
Faster hash table growth, starting at zero size
The algorithms no longer use the rehash_threshold and rehash_size
float constants, but vary depending on size. In particular, the table
now grows faster, especially from smaller sizes.
The default size is now 0, starting empty, which effectively postpones
allocation until the first insertion (unless make-hash-table was
called with a positive :size); this is a clear gain as long as the
table remains empty. The first inserted item will use an initial size
of 8 because most tables are small.
* src/fns.c (std_rehash_size, std_rehash_threshold): Remove.
(hash_index_size): Integer-only computation.
(maybe_resize_hash_table): Grow more aggressively.
(Fhash_table_rehash_size, Fhash_table_rehash_threshold):
Use the constants directly.
* src/lisp.h (DEFAULT_HASH_SIZE): New value.