Commit graph

9043 commits

Author SHA1 Message Date
Stefan Kangas
142f5683c1 Merge from origin/emacs-29
7678b7e46f Eglot: check server capability before sending didSave (bu...
a3a1ef7bd5 Fix rust-ts-mode type and module highlighting (Bug#61302)
477aa047ee rust-ts-mode: Highlight variable reassignments
5206a551c1 Improve backward compatibility of save-restriction
accd88d554 Don't indent template_string contents (bug#61503)
d97a383996 csharp-ts-mode: fontify compiler directives (bug#61512)
420d2cae84 Update to Transient v0.3.7-209-gdab1dfa
a3751b5d0c ; Raise an error if a VC package checkout is empty
6a32ba8b69 ; Fix the installation of dependencies for VC packages
4eac80fcc3 ; Prepare to update ERC version to 5.5
4f099a7217 ; Remove failing erc-reuse-buffers test
4bb27a5ca9 ; Minor docs copyedits
13bcff3da5 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
3d572ae0d5 Rename with/without-narrowing to with/without-restriction
d806b0e33c * lisp/repeat.el: Rename internal function and variable (...
dd8b720ee7 ; * etc/NEWS: Fix typos.
909bd04cf5 ; * lisp/calendar/lunar.el: Add comments. (bug#61460)
10f2aedea9 ; * lisp/progmodes/c-ts-mode.el (c-ts-base-mode): delete ...
865758130a ; * admin/git-bisect-start: Update failing commits
b948d0d7ef Merge branch 'scratch/fix-locked-narrowing'
dcb2379a46 Minor improvements to labeled narrowing
cc30422825 Fix spurious display of eclipses in Calendar
f2114e8d89 Fix indentation for closing bracket in c-ts-mode (bug#61398)
f49caaa892 ; * src/pdumper.c (dump_buffer): Update hash.
fe2ea5ddd8 Update to Org 9.6.1-31-gaf1bb1
8280d721d7 * src/.gdbinit (nextcons): Amend $.u.cdr to $.u.s.u.cdr (...
eb2b0931cf Add lambda_expression to c-ts-common-indent-type-regexp-a...
2da05876ed ; Use the right name when specifying VC packages
d4fc701297 Tolerate missing elpa-packages.eld files
8bc1b7d0b2 Avoid warning about 'load-path' in non-interactive sessions
3d17aee13d ; Fix installation of dependencies for VC packages
86ca7df6a3 ; Mention Hunspell private-dictionary misfeature in doc s...
7287b7b53a Support webkit2gtk-4.1
048a2dabfc ; Fix typo
8f3091defb ; Fix typo in buffer.h
4da398d8b5 ; Fix typos
074008ee2d ; Fix doc strings in lisp/image/ directory
2d1e43436d ; Improve documentation of hash functions.
900f7e0727 ; Remove extraneous local variables from image-dired-*.el...
4297039bd1 Save and restore the absence of narrowing locks
4f053afe8e bug-reference: prevent match-data clobbering (bug#61395)
10af9fbcad ; * admin/notes/tree-sitter/starter-guide: Typos.
9ac242ce93 ; Fix recent changes in treesit docs
f5789aefc2 Rename LIMIT to DEPTH in tree-sitter functions (bug#61231)
b39821fdce ; Fix incorrect function name in treesit manual
5190173696 Add 'live' property to treesit-node-check (bug#61235)
56960a6558 Update to Transient v0.3.7-205-gb8ad0da
68a6b364d1 Fix 'rmail-summary-output'
67c6ec2559 lisp-mode: add docstring recognition for more common lisp...
417a8ed8b0 ; Improve discoverability of empty file names handling
e47cf6ca15 Update to Transient v0.3.7-204-gecff8c2
b04cce02ff Fix Scala entry in Eglot's DB of LSP servers
973c1d24c6 ruby-ts-mode: Also don't reindent 'identifier' when insid...
a5651c0c40 ruby-ts-mode: Fix indentation inside empty if/unless/case...
2956e54b1d Add an extensive test for labeled (locked) narrowing
79ce185ad1 Update the documentation about labeled (locked) narrowing
a6cd4553d4 Rename two long line optimizations variables
0d73e4aa26 Add specific symbols for narrowings
d8438e2bb4 Add 'without-narrowing' macro
97314447e6 Make 'narrowing-lock' and 'narrowing-unlock' internal
a4aa32bdff Fix 'save-restriction' for narrowing locks

# Conflicts:
#	etc/NEWS
2023-02-15 14:41:04 +01:00
Mattias Engdegård
16ba96ad3d Add some pure and side-effect-free declarations
* lisp/subr.el (string-to-list, string-to-vector, string-or-null-p)
(booleanp, special-form-p, plistp, macrop, compiled-function-p)
(flatten-tree):
* lisp/emacs-lisp/subr-x.el (string-join, string-truncate-left)
(string-blank-p, string-remove-prefix, string-remove-suffix)
(string-pad, string-chop-newline):
Declare functions pure, side-effect-free, and/or error-free.
2023-02-15 12:04:13 +01:00
Gregory Heytings
5206a551c1 Improve backward compatibility of save-restriction
* src/editfns.c (save_restriction_save_1): Renamed from
'save_restrictions_save'.  Make it static.
(save_restriction_restore_1): Renamed from
'save_restriction_restore'.  Make it static.
(save_restriction_restore): New function, combining
'save_restriction_save_1' and 'narrowing_locks_save'.
(save_restriction_save): New function, combining
'save_restriction_restore_1' and 'narrowing_locks_restore'.
(Fsave_restriction): Restore the previous code.
(narrowing_locks_save, narrowing_locks_restore): Make them static.

* src/lisp.h: Remove two functions that are not externally visible
anymore.

* src/comp.c (helper_save_restriction): Restore the previous code.

* src/bytecode.c (exec_byte_code): Restore the previous code.

* lisp/emacs-lisp/bytecomp.el (byte-compile-save-restriction):
Decrement unbinding count.
2023-02-14 21:41:35 +01:00
Philip Kaludercic
a3751b5d0c ; Raise an error if a VC package checkout is empty
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Check if PKG-DIR
is empty before proceeding with the installation.
2023-02-14 19:50:01 +01:00
Philip Kaludercic
6a32ba8b69 ; Fix the installation of dependencies for VC packages
* lisp/emacs-lisp/package-vc.el (package-vc-install-dependencies):
Work with package-desc objects instead of (PACKAGE-NAME VERSION)
pairs.
2023-02-14 19:50:01 +01:00
Mattias Engdegård
864bf5dda4 Fix recent LAP optimiser error
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Fix a flaw in the

  dup (varset|varbind|stack-set) discard -> (varset|varbind|stack-set)

rule: don't match stack-set(1) which is dealt with elsewhere, and
generalise to discard(N).
2023-02-14 17:14:07 +01:00
Mattias Engdegård
8aef401b4f LAP optimiser: more stack reduction hoisting
Hoisting stack reduction ops allows them to coalesce and/or cancel out
pushing ops, and for useful operations to sink and combine, such as
not + goto-if-[not-]nil.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Add the rule

  UNARY discardN-preserve-tos --> discardN-preserve-tos UNARY

where UNARY pops and pushes one value.

Generalise the rule

  const discardN-preserve-tos --> discardN const

to any 0-ary op, not just const: varref, point, etc.
2023-02-13 16:57:49 +01:00
Gregory Heytings
b948d0d7ef Merge branch 'scratch/fix-locked-narrowing' 2023-02-13 11:44:37 +01:00
Stefan Kangas
bf60b3bfe7 Merge from origin/emacs-29
eb2b0931cf Add lambda_expression to c-ts-common-indent-type-regexp-a...
2da05876ed ; Use the right name when specifying VC packages
d4fc701297 Tolerate missing elpa-packages.eld files
8bc1b7d0b2 Avoid warning about 'load-path' in non-interactive sessions
3d17aee13d ; Fix installation of dependencies for VC packages
86ca7df6a3 ; Mention Hunspell private-dictionary misfeature in doc s...
7287b7b53a Support webkit2gtk-4.1
048a2dabfc ; Fix typo
2023-02-13 06:30:12 +01:00
Philip Kaludercic
2da05876ed ; Use the right name when specifying VC packages
* lisp/emacs-lisp/package-vc.el
(package-vc-install-selected-packages): Generate dummy package
descriptors in here, if necessary.
(package-vc--unpack): Remove dummy-descriptor generation.
2023-02-12 14:30:14 +01:00
Philip Kaludercic
d4fc701297 Tolerate missing elpa-packages.eld files
* lisp/emacs-lisp/package-vc.el
(package-vc--download-and-read-archives): Replace
'condition-case-unless-debug' with a regular 'condition-case'.

It appears a few people using third-party archives that don't serve
package specifications have been having issues with package-vc, when
toggle-on-error is enabled.  In their case, package-vc would raise an
error in its first invocation, but it would go on working normally
afterwards.  As this behaviour is confusing and the user can't do much
about a missing elpa-packages.eld to begin with, we satisfy ourselves
with printing out a message and continuing on.
2023-02-12 13:26:52 +01:00
Philip Kaludercic
3d17aee13d ; Fix installation of dependencies for VC packages
* lisp/emacs-lisp/package-vc.el (package-vc-install-dependencies):
Maintain a list of package-desc objects instead of package names to
install.
2023-02-12 13:11:03 +01:00
Stefan Kangas
08bd066149 Merge from origin/emacs-29
4da398d8b5 ; Fix typos
074008ee2d ; Fix doc strings in lisp/image/ directory
2d1e43436d ; Improve documentation of hash functions.
900f7e0727 ; Remove extraneous local variables from image-dired-*.el...
4f053afe8e bug-reference: prevent match-data clobbering (bug#61395)
10af9fbcad ; * admin/notes/tree-sitter/starter-guide: Typos.
9ac242ce93 ; Fix recent changes in treesit docs
f5789aefc2 Rename LIMIT to DEPTH in tree-sitter functions (bug#61231)
b39821fdce ; Fix incorrect function name in treesit manual
5190173696 Add 'live' property to treesit-node-check (bug#61235)
56960a6558 Update to Transient v0.3.7-205-gb8ad0da
68a6b364d1 Fix 'rmail-summary-output'
67c6ec2559 lisp-mode: add docstring recognition for more common lisp...
417a8ed8b0 ; Improve discoverability of empty file names handling
e47cf6ca15 Update to Transient v0.3.7-204-gecff8c2
b04cce02ff Fix Scala entry in Eglot's DB of LSP servers

# Conflicts:
#	lisp/transient.el
2023-02-12 03:27:46 +01:00
Mattias Engdegård
85a2eb2c78 LAP peephole optimiser improvementsa
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Make the improvements:

- Add the rule

    stack-ref(X) discardN-preserve-tos(Y)
    --> discard(Y) stack-ref(X-Y),                X≥Y
        discard(X) discardN-preserve-tos(Y-X-1),  X<Y

  with the usual equivalences:

    stack-set(1) = discardN-preserve-tos(1)
    stack-ref(0) = dup
    discard(0) = discardN-preserve-tos(0) = no-op

  This rule hoists stack reduction to where it is more likely to be
  exploited further, may reduce the op size through smaller
  immediates, and sometimes removes either or both operations
  outright.

  The rule is inhibited by an immediately following `return` op
  because other rules will produce better code in that case.

- Add the rule

    (discardN-preserve-tos|dup) OP return --> OP return

  where OP is a unary operation such as `not` or `car`.

- Generalise a previous rule to

    NOEFFECT PRODUCER return  -->  PRODUCER return

  where PRODUCER is now any op that pushes a value without looking at
  the stack: const, varref, point etc.
2023-02-11 12:52:18 +01:00
Alan Mackenzie
dc3604cadf Make edebug see unused variables when lexical-binding is non-nil
This fixes bug #59213.

* lisp/emacs-lisp/cconv.el (cconv-dont-trim-unused-variables): New variable.
(cconv-fv, cconv-make-interpreted-closure): Add/amend doc strings.
(cconv-make-interpreted-closure): Test cconv-dont-trim-unused-variables, and
if non-nil, don't "optimize" the lexical environment.

* lisp/emacs-lisp/edebug.el (edebug-make-enter-wrapper): Compile a binding of
cconv-dont-trim-unused-variables to t around the call of edebug-enter.

* lisp/emacs-lisp/testconver.el (testcover-analyze-coverage): Add a new arm to
the pcase form to handle the new form of edebug-enter.
2023-02-11 10:45:31 +00:00
Nicolas Martyanoff
67c6ec2559 lisp-mode: add docstring recognition for more common lisp symbols
* lisp/emacs-lisp/lisp-mode.el (define-compiler-macro)
(define-setf-expander, deftype): Add the 'doc-string-elt'
property for proper docstring highlighting in Common Lisp.
2023-02-09 16:09:28 +02:00
Gregory Heytings
a4aa32bdff Fix 'save-restriction' for narrowing locks
* src/editfns.c (narrowing_locks_save):
(narrowing_locks_restore): Make them non-static.

* src/lisp.h: Make them externally visible.

* src/bytecode.c (exec_byte_code): Save and restore narrowing
locks.

* lisp/emacs-lisp/bytecomp.el (byte-compile-save-restriction):
Increment unbinding count.

* src/comp.c (helper_save_restriction): Save and restore narrowing
locks.
2023-02-09 02:44:32 +01:00
Mattias Engdegård
680bc20553 Flatten nested concat calls
* lisp/emacs-lisp/byte-opt.el (byte-optimize-concat):
Flatten nested forms; concat is associative.  This reduces the number
of calls and may coalesce adjacent constant strings.
2023-02-08 13:45:57 +01:00
Mattias Engdegård
f3fce3a71c Simplify and speed up parts of elisp optimiser
* lisp/emacs-lisp/byte-opt.el (byte-optimize-constant-args): Simplify.
(byte-optimize--constant-symbol-p): Speed up.
(byteopt--eval-const): New.
(byte-optimize-member, byte-optimize-concat, byte-optimize-append):
Use byteopt--eval-const instead of eval which is much slower.
2023-02-08 13:18:32 +01:00
Stefan Monnier
88d5327fe2 (cconv-convert): Fix regression
* lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyze-form):
Since we can't always remove the wrapper, make sure the wrapper
accepts the expected calling convention (i.e. called with no args).
2023-02-07 18:03:22 -05:00
Mattias Engdegård
0f4c7060e4 Fix misleading LAP optimiser debug log message
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Correct message in a conditional jump threading rule.
2023-02-05 16:27:35 +01:00
Mattias Engdegård
17784bbf3f Allow unbind to commute with discardN and discardN-preserve-tos
* lisp/emacs-lisp/byte-opt.el (byte-after-unbind-ops):
Add discardN and discardN-preserve-tos, both of which
commute with unbind.  This enables subsequent optimisations.
2023-02-05 16:27:35 +01:00
Mattias Engdegård
a50d5b219f Remove compatibility hacks in LAP optimiser
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Remove code forcing forward motion after applying certain
transformations; these were only there to keep output identical across
refactorings.
2023-02-05 16:26:45 +01:00
Mattias Engdegård
9926b44f9e LAP optimiser: bind local variables instead of mutating them
This is a refactoring step: there is no change in how the optimiser
works.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Instead of re-using local variables through mutation, bind them at
point of use.  This ensures that there is no value leakage by mistake
and actually reduces the static size of the bytecode of this function
somewhat.
The lousy variable names (tmp, tmp2 etc) are retained but
can at least now be changed into something more descriptive.
2023-02-05 16:25:23 +01:00
Mattias Engdegård
929099cbb4 Get rid of delq in LAP optimiser
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Instead of using the O(n) `delq' to remove single instructions, use
the O(1) `setcdr'. To do this, anchor the instruction list in a cons
cell and use the predecessor cell in iteration.
2023-02-05 16:24:51 +01:00
Stefan Monnier
45525cafcb * lisp/emacs-lisp/cconv.el (cconv-convert): Fix thinko 2023-02-05 09:04:51 -05:00
Stefan Monnier
c39c26e33f nadvice: Fix bug#61179
Advising interactive forms relies on the ability to distinguish
interactive forms that do nothing else than return a function.
So, be careful to preserve this info.
Furthermore, interactive forms are expected to be evaluated in
the lexical context captured by the closure to which they belong,
so be careful to preserve that context when manipulating those forms.

* lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyze-form) <lambda>:
Preserve the info that an interactive form does nothing else than
return a function.

* lisp/emacs-lisp/nadvice.el (advice--interactive-form-1): New function.
(advice--interactive-form): Use it.
(advice--make-interactive-form): Refine to also accept function values
quoted with `quote`.  Remove obsolete TODO.

* test/lisp/emacs-lisp/nadvice-tests.el: Don't disallow byte-compilation.
(advice-test-bug61179): New test.

* lisp/emacs-lisp/oclosure.el (cconv--interactive-helper): Allow
the `if` arg to be a form.
* lisp/simple.el (oclosure-interactive-form): Adjust accordingly.
2023-02-04 11:23:31 -05:00
Stefan Kangas
ac7ec87a7a Merge from origin/emacs-29
96ea27278b ; Fix c-ts-mode indent test
d963a8f135 Make c-ts-mode indent tests side-effect-free
8a6bdf88b4 Call treesit_record_change in insert_from_gap_1
a2b77c79dc Use c-ts-common-statement-offset for closing brackets too
74e715cb72 ; Go back to original point when filling comments in c-ts...
b8009bbf2d ; Fix error where we pass t to treesit-node-type in c-ts-...
88ccf78b20 ; * src/treesit.c (treesit_predicate_match): Simplify las...
20454128b8 Minor improvements in sqlite.c
3b3c47d977 (treesit_predicate_match): Match node text against regexp...
e8334781c9 Improve documentation of gdb-mi's dedicated windows
c498884059 Avoid spurious pause in kill-ring-save (Bug#60841)
382ab516ce Change the default of 'treesit-defun-tactic' for 'c-ts-mode'
4d3428e95a Fix docstring fontification of CL's 'defstruct'
1c125baa3f Teach 'hs-minor-mode' about tree-sitter based modes
2de0ab5cbd ; Doc fixes in keymap.el
c6660a6d6d Improve documentation of 'repeat-mode' and related variables
be304bb328 ; * etc/NEWS: Mention the 'utf-8-auto' bugfix (bug#60750).

# Conflicts:
#	etc/NEWS
2023-02-03 06:30:24 +01:00
Eli Zaretskii
4d3428e95a Fix docstring fontification of CL's 'defstruct'
* lisp/emacs-lisp/lisp-mode.el (defstruct): Set 'doc-string'
property.  Patch by Nicolas Martyanoff <nicolas@n16f.net>.

Copyright-paperwork-exempt: yes
2023-02-02 20:12:02 +02:00
Mattias Engdegård
bfd338aad9 LAP peephole optimisation improvements
- Since discardN-preserve-tos(1) and stack-set(1) have the same
  effect, treat them as equivalent in all transformations.

- Move the rule

        discardN-preserve-tos(X) discardN-preserve-tos(Y)
    --> discardN-preserve-tos(X+Y)

  from the final pass to the main iteration since it may enable
  further optimisations.

- Don't apply the rule

    goto(X) ... X: DISCARD --> DISCARD goto(Y) ... X: DISCARD Y:

  when DISCARD could be merged or deleted instead, which is even better.

- Add the rule

    OP const return -> <deleted> const return

  where OP is effect-free.

- Generalise the push-pop annihilation rule to

    PUSH(K) discard(N) -> discard(N-K), N>K
    PUSH(K) discard(N) -> <deleted>,    N=K

  to any N, not just N=1.

- Add the rule

    OP goto(X) Y: OP X: -> <deleted> Y: OP X:

  for any operation OP.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Make the changes described above.
2023-02-02 14:46:53 +01:00
Mattias Engdegård
f6955482c2 Clean up LAP peephole logging
Make `byte-compile-log-lap` more robust and produce nicer output.
This is of interest for Elisp compiler maintainers only.

* lisp/emacs-lisp/byte-opt.el (bytecomp--log-lap-arg): New.
(byte-compile-log-lap-1): Extract argument conversion and rewrite
in a more modern way, fixing bugs.  In particular, tags are now
displayed as "X:" where X is the tag number, and that tag number
is shown as argument to goto-like ops.
(byte-optimize-lapcode): Clean up and simplify logging, producing
useful information when `byte-optimize-log` is `byte` as intended.
2023-02-02 14:43:10 +01:00
Stefan Kangas
207a0d9408 Merge from origin/emacs-29
8360e12f0e Update to Org 9.6.1-23-gc45a05
9058601308 ; * doc/emacs/misc.texi (Document View): Remove @footnote...
197f994384 Document tree-sitter features in the user manual
b73539832d ; Remove treesit--font-lock-fast-mode-grace-count
64fee21d5f Fix dockerfile-ts-mode line continuation indentation (bug...
1970726e26 Use treesit-subtree-stat to determine treesit--font-lock-...
382e018856 Add treesit-subtree-stat
a3003492ac Move c-ts-mode--statement-offset to c-ts-common.el
4b1714571c ; Fix byte-compile warnings in c-ts-mode.el
f50cb7d7c4 ; Improve docstring of c-ts-mode--indent-style-setter
1c3ca3bb64 Fix <> syntax in rust-ts-mode
56e8607dc9 Fix spurious errors on Windows when deleting temporary *....
2bd0b94753 Fix java class member without access modifier (bug#61115)
1de6ebf287 Make treesit-font-lock-level a defcustom
6e50ee8bbb Add c-ts-mode-set-style and :set for c-ts-mode-indent-style
450db0587a Minor documentation improvements for outline-minor-mode (...
578e892671 ; * doc/lispref/variables.texi (File Local Variables): Im...
bc5ee2b7bf ; * src/comp.c: Remove Local Variables section to avoid w...
362678d90e python.el: Use correct regexp when enabling python-ts-mode
76bb46db9d ; * doc/emacs/frames.texi (Mouse References): Improve ind...

# Conflicts:
#	doc/emacs/programs.texi
#	etc/NEWS
#	lisp/progmodes/c-ts-mode.el
2023-01-30 07:19:43 +01:00
Mattias Engdegård
254c75fc29 Better commutative binary numerical op codegen
* lisp/emacs-lisp/bytecomp.el (byte-compile-variadic-numeric):
Put a constant argument last for better LAP code opportunities.
This applies to commutative binary operations (+ and *).
`min` and `max` are not included being not quite commutative.
2023-01-29 13:48:23 +01:00
Mattias Engdegård
e55855c5a1 Better compilation of n-ary comparisons
Transform n-ary comparisons to a chain of binary comparisons in the
Lisp optimiser instead of in codegen, to allow for subsequent
optimisations.  This generalises the transform, so that

   (< 1 X 10)  ->  (let ((x X)) (and (< 1 x) (< x 10)))

where (< 1 x) is then flipped to (> x 1) in codegen since it's
slightly more efficient to have the constant argument last.  Arguments
that are neither constants nor variables are given temporary bindings.

This results in about 2× speedup for 3-ary comparisons of fixnums with
nontrivial arguments, and also improves the code slightly for binary
comparisons with a constant first argument.

* lisp/emacs-lisp/byte-opt.el (byte-opt--nary-comparison): New,
set as the `byte-optimizer` property for =, <, <=, >, and >=.
* lisp/emacs-lisp/bytecomp.el (byte-compile-and-folded):
Rename to...
(byte-compile-cmp): ...and rewrite.
2023-01-29 12:02:57 +01:00
Eli Zaretskii
56e8607dc9 Fix spurious errors on Windows when deleting temporary *.eln files
* lisp/emacs-lisp/comp.el (comp--native-compile): On MS-Windows,
ignore errors when deleting a temporary .eln file.  (Bug#60996)
2023-01-29 09:44:53 +02:00
Michael Heerdegen
835d2b6acb ; * lisp/emacs-lisp/range.el: Fix some typos
In some places, range elements are still called "article" (as in the
original Gnus code).
Replace these occurrences with the word "number" as used in the rest
of the file.
2023-01-28 17:30:42 +01:00
Mattias Engdegård
627ac228b2 Don't inhibit LAP-level DCE when switch ops are present
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Allow removal of unreachable basic blocks in the LAP peephole
optimiser even when switch ops are present.  The origins of
this apparently unnecessary condition are unclear.
2023-01-27 17:27:15 +01:00
Andrea Corallo
854a2901f7 * lisp/emacs-lisp/comp.el (comp-trampoline-compile): Improve readability 2023-01-27 10:37:49 +01:00
Philip Kaludercic
161706ec33 ; Actually use dummy package descriptor
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Set pkg-desc if
nil.

This revises the changes from 70947da708.
2023-01-21 19:27:38 +01:00
Philip Kaludercic
cb07f1bcd0 ; Actually use dummy package descriptor
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Set pkg-desc if
nil.

This revises the changes from 70947da708.
2023-01-21 18:56:47 +01:00
Michael Heerdegen
4fb7b0b0b8 Fix an oversight in advice.el
This fixes an oversight from 77c3c464a1: "* lisp/emacs-lisp/advice.el
(ad-advised-functions): Make it a plain list" that caused an issue as
reported in Bug#60893.
* lisp/emacs-lisp/advice.el (ad-read-advised-function): Adjust to
handle the new type of elements of `ad-advised-functions'.
2023-01-19 22:13:25 +02:00
Michael Heerdegen
03a8d132b0 Fix an oversight in advice.el
This fixes an oversight from 77c3c464a1: "* lisp/emacs-lisp/advice.el
(ad-advised-functions): Make it a plain list" that caused an issue as
reported in Bug#60893.

* lisp/emacs-lisp/advice.el (ad-read-advised-function): Adjust to
handle the new type of elements of `ad-advised-functions'.
2023-01-19 16:31:50 +01:00
Stefan Kangas
9161a302c9 Merge from origin/emacs-29
db72787380 ruby-ts-mode: Use font-lock-constant-face for true/false/nil
819719330a (ruby-ts--indent-rules): Add a rule for continuation of a...
94b9cbf96f (ruby-ts--parent-call-or-bol): Handle more cases with nes...
ba33b83ce4 (ruby-ts--statement-container-regexp): Remove "parenthesi...
f2bedf695c ruby-ts-mode: Handle indent in parenless calls much close...
758ac5eabb Fix split-window-below for the case when split-window-kee...
8e9783b4ce Rebind in read-regexp-map ‘M-c’ to ‘M-s c’ compatible wit...
78f93d92b2 * lisp/vc/vc-dir.el: Make keys ‘% m’ and ‘* %’ compatible...
dc3f85fd4b Use proper types for Eshell warnings
6a8338a8bc ; Avoid byte-compiler warning in cc-fonts.el.
9186be20ae ; Clarify doc strings of some functions in files.el
bd5ef3ef95 Improve the documentation of 'auto-mode-alist' search
1798ff5a66 ; Fix minor mistakes in documentation
faee7e1f1b ; * lisp/treesit.el (treesit-font-lock-fontify-region): M...
24f0dfd373 Revert "Revert "Add c-or-c++-ts-mode (bug#59613)""
ac3bc775b6 Make it harder to misactivate tree-sitter font-lock fast ...
bdd82fa797 ; * src/treesit.c: Remove unused boilerplate.
343b9b3dfe ruby-ts-mode: Obey the option ruby-method-call-indent
045404d1aa ruby-ts-mode: Obey the option ruby-after-operator-indent
300ca6ac37 ruby-ts-mode: Fix indent after operator or conditional
ac5516bd7d ruby-ts-mode: Fix/change indentation of a continuation me...
5e2e68a0c2 ruby-ts-mode: Fix indent inside parenthesized_expr and el...
9ed9ff4690 ruby-ts-mode: Fix the rules for hanging arrays and hashes
c4f0b6ccea Add more detail about how to invoke Eshell commands
dbac923b9d CC Mode: On removal of "typedef", remove pertinent types ...
56d69c2fc4 ; Relax timeouts for failing ERC test
183e749270 Don't preserve non-module minor modes in erc-open
7b8322f628 Use correct buffer for local-module vars in erc-open
7b13422298 ; Avoid plist-get as generalized var in erc-compat
09e9d7c749 Fix display of warnings on w32 console
bd094207c7 Fix buffer-list-update-hook for indirect buffers
9e7a5d58ee ; Fix tree-sitter indent anchor preset
7c61a30410 Fix treesit-node-first-child-for-pos (bug#60127)
b36cc7e7bb ; * src/treesit.c (Ftreesit_induce_sparse_tree): Minor ch...

# Conflicts:
#	etc/NEWS
2023-01-19 06:30:25 +01:00
Mattias Engdegård
efb9ec11bb Improved docstring single quote warning
* lisp/emacs-lisp/bytecomp.el (byte-compile-docstring-style-warn):
More robust regexp.  More explicit warning message.
2023-01-18 18:50:23 +01:00
Mattias Engdegård
1b52eaa190 Better lambda quote warning
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all):
Avoid `...` shown backslash-escaped as a symbol, and render an empty
argument list as `()` instead of `nil`.
2023-01-18 18:50:03 +01:00
Ikumi Keita
1798ff5a66 ; Fix minor mistakes in documentation
* lisp/emacs-lisp/cl-macs.el (cl-letf): Correct Info reference.

* doc/lispref/strings.texi (String Conversion): Fix typo.

(Bug#60926)
2023-01-18 14:28:59 +02:00
Eli Zaretskii
09e9d7c749 Fix display of warnings on w32 console
* lisp/emacs-lisp/warnings.el (warnings-suppress): Use alternative
symbol for TTY frames on MS-Windows.
2023-01-17 15:44:51 +02:00
Mattias Engdegård
bcaa63ac50 * lisp/emacs-lisp/bytecomp.el (format-message): Warn on bad arity. 2023-01-16 19:42:31 +01:00
Mattias Engdegård
2a85d7a07c Optimise apply with cons in tail argument
* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply): Transform

  (apply F ... (cons X Y)) -> (apply F ... X Y)

This pattern is seen both in hand-written code and in backquote
expansions.
2023-01-16 19:42:31 +01:00
Stefan Monnier
4f0459aaf7 Merge from origin/emacs-29
861556c133 Fix minibuffer-completion tests
c0578edc8f ; * doc/misc/eglot.texi (Troubleshooting Eglot): Fix typo...
c6bbf9cc27 Add c-ts-mode tests
a760364f5f Fix c-ts-mode--fill-paragraph
2a2b1d09ac Fix minor issues with 'pp' and related commands
dfb38fb2ee ; Improve documentation of tree-sitter node comparison
e8a89a18b6 ; Fix non-tree-sitter builds
f27a330b99 ; Fix typo in ert-with-temp-file
956889d8ff Equal now recognizes tree-sitter nodes (bug#60659)
8f446c2d39 Fix c-ts-mode comment indentation (bug#60270)
083badc9c1 * lisp/subr.el (while-let): Use if-let, not if-let* (bug#...
9ecebcdded * lisp/simple.el (next-completion): Handle first completi...
cfd2b3504a Fix encoding with 'utf-8-auto'
53b47df822 Report cursor correctly on PGTK when there is a margin

# Conflicts:
#	etc/NEWS
2023-01-14 09:10:45 -05:00