]> git.eshelyaron.com Git - emacs.git/log
emacs.git
2 years ago; * test/src/treesit-tests.el: remove dead store (bytecomp warning)
Mattias Engdegård [Tue, 27 Dec 2022 10:18:02 +0000 (11:18 +0100)]
; * test/src/treesit-tests.el: remove dead store (bytecomp warning)

2 years agoAdd a new tree-sitter query predicate 'pred'
Yuan Fu [Tue, 27 Dec 2022 01:16:59 +0000 (17:16 -0800)]
Add a new tree-sitter query predicate 'pred'

I realized that using an arbitrary function as the predicate in
queries is very helpful for some queries I'm writing for python and
javascript, and presumably most other languages[1].

Granted, we can already filter out unwanted nodes by using a function
instead of a face for the capture name, and (1) determine whether the
captured node is valid and (2) fontify that node if it's valid.

However, such approach is a bit more cumbersome and more importantly
gets in the way of another potential use of the fontification queries:
context extraction.

For example, I could use the query for the 'variable' feature to get
all the variables in a certain region.  In this use-case, we want the
filtering happen before returning the captured nodes.

Besides, the change is relatively small and straightforward: most code
are already there, I just need to add some boilerplate.

[1] For a code like aa.bb(cc), we want bb to be in function face,
because obviously its a function.  But for aa.bb, we want bb to be in
property face, because it's a property.  In the AST, bb is always a
property, the difference between the two cases is the enclosing node:
in the first case, aa.bb is in a "call_expression" node, indicating
that bb is used as a function (a method).  So we want a predicate
function that checks whether bb is used as a function or a property,
and determine whether it should be in function or property face.

* doc/lispref/parsing.texi (Pattern Matching): Update manual.
* src/treesit.c (Ftreesit_pattern_expand): Handle :pred.
(treesit_predicate_capture_name_to_node): A new function extracted
from treesit_predicate_capture_name_to_text.
(treesit_predicate_capture_name_to_text): Use the newly extracted
function.
(treesit_predicate_pred): New predicate function.
(treesit_eval_predicates): Add new predicate.  Also fix a bug: we want
to AND the results of each predicate.
* test/src/treesit-tests.el (treesit--ert-pred-last-sibling): New
helper function.
(treesit-query-api): Test #pred predicate.

2 years ago; Fix tree-sitter defun tests
Yuan Fu [Tue, 27 Dec 2022 01:15:37 +0000 (17:15 -0800)]
; Fix tree-sitter defun tests

* test/src/treesit-tests.el (treesit--ert-test-defun-navigation):
Change treesit--navigate-defun to treesit--navigate-thing.

2 years agoImprove gnutls-min-prime-bits docstring
Stefan Kangas [Mon, 26 Dec 2022 20:22:42 +0000 (21:22 +0100)]
Improve gnutls-min-prime-bits docstring

* lisp/net/gnutls.el (gnutls-min-prime-bits): Doc fix: delete
out-of-date and now misleading sentence, added back when Emacs'
default minimum prime bits for a Diffie-Hellman handshake was only 256
bits.  These days, the default is nil, which means to let GnuTLS
decide the value.  (See also `nsm-protocol-check--dhe-prime-kx`.)

2 years agoImprove handling of tab-bar height.
Gregory Heytings [Mon, 26 Dec 2022 00:20:59 +0000 (00:20 +0000)]
Improve handling of tab-bar height.

* src/xdisp.c (redisplay_tab_bar): When 'auto-resize-tab-bar' is
not 'grow-only', also consider the case when the tab-bar height
needs to shrink.  Fixes bug#60210.

2 years ago; * nt/INSTALL.W64: More fixes and updates.
Eli Zaretskii [Mon, 26 Dec 2022 14:26:28 +0000 (16:26 +0200)]
; * nt/INSTALL.W64: More fixes and updates.

2 years agoSimplify last change (bug#60311)
Eli Zaretskii [Mon, 26 Dec 2022 13:26:48 +0000 (15:26 +0200)]
Simplify last change (bug#60311)

* src/json.c (json_available_p): Use original code.  Always return
true for !WINDOWSNT.
(ensure_json_available): Now defined only on WINDOWSNT.
(Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): Call ensure_json_available only on
WINDOWSNT.

* lisp/subr.el (json-available-p): Simplify.

2 years agoFix 'json-available-p' on MS-Windows
Mattias Engdegård [Sun, 25 Dec 2022 14:32:06 +0000 (15:32 +0100)]
Fix 'json-available-p' on MS-Windows

* src/json.c (json_available_p, ensure_json_available)
(Fjson__available_p): New functions.
(Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): Use ensure_json_available.
(syms_of_json): Defsubr json--available-p.

* lisp/subr.el (json-available-p): Rewrite.

2 years agoloaddefs-gen: Group results by absolute file name
Kyle Meyer [Sun, 25 Dec 2022 20:31:33 +0000 (15:31 -0500)]
loaddefs-gen: Group results by absolute file name

loaddefs-generate produced an incomplete output file if 1) it
was called with a relative file name and 2) that same file was
specified via a generated-autoload-file cookie in a subset of
the input files.  In that case, autoload entries were lost
because loaddefs-generate writes the same output file twice:
once for the relative name specified by the caller and once
for the absolute name that loaddefs-generate--parse-file
returns for the generated-autoload-file value.
This has been fixed.  (Bug#60318)

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Expand file
names when grouping loaddef files.

2 years ago; Fix vindexes in parsing.texi
Yuan Fu [Mon, 26 Dec 2022 09:39:02 +0000 (01:39 -0800)]
; Fix vindexes in parsing.texi

* doc/lispref/parsing.texi (Tree-sitter major modes): Replace vindex
with cross-reference to modes.texi.  Add manual entry for
treesit-defun-type-regexp.
* lisp/treesit.el (treesit-defun-type-regexp): Use pred in docstring
since we use pred everywhere else.

2 years agoFix imenu for c-ts-mode (bug#60296)
Yuan Fu [Mon, 26 Dec 2022 09:01:41 +0000 (01:01 -0800)]
Fix imenu for c-ts-mode (bug#60296)

* lisp/progmodes/c-ts-mode.el (c-ts-mode--imenu-1): Use
c-ts-mode--defun-valid-p to filter out nested matches.
(c-ts-mode--defun-valid-p): Handle more types of nodes.

2 years agoClean up python-ts-mode font-lock features
Yuan Fu [Mon, 26 Dec 2022 08:43:42 +0000 (00:43 -0800)]
Clean up python-ts-mode font-lock features

* lisp/progmodes/python.el (python--treesit-settings): Remove
unnecessary override flags, add function and variable feature, fix
assignment feature.
(python--treesit-variable-p)
(python--treesit-fontify-variable): New functions.
(python-ts-mode): Add function and variable feature.

2 years agoAdd comment indent and filling to other tree-sitter major modes
Yuan Fu [Sun, 25 Dec 2022 19:21:50 +0000 (11:21 -0800)]
Add comment indent and filling to other tree-sitter major modes

Extract the setup into a function, and use it in other major modes.

* lisp/progmodes/c-ts-mode.el (c-ts-mode-comment-setup): New function.
(c-ts-base-mode): Extract out.
(c-ts-mode)
(c++-ts-mode): Remove old setup.

* lisp/progmodes/csharp-mode.el (csharp-ts-mode--indent-rules): New
indent rules.
(csharp-ts-mode): Use new setup function.
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): New
indent rules.
(java-ts-mode): Use new setup function.
* lisp/progmodes/js.el (js--treesit-indent-rules): New indent rules.
(js-ts-mode): Use new setup function.
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--indent-rules): New
indent rules.
(rust-ts-mode): Use new setup function.
* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-mode--indent-rules): New indent rules.
(typescript-ts-base-mode): Use new setup function.

2 years ago; Remove unused function in c-ts-mode
Yuan Fu [Sun, 25 Dec 2022 19:11:00 +0000 (11:11 -0800)]
; Remove unused function in c-ts-mode

* lisp/progmodes/c-ts-mode.el (c-ts-mode--end-of-defun): Remove.
(c-ts-mode)
(c++-ts-mode): Remove setup.

2 years ago; * doc/lispref/modes.texi (Parser-based Font Lock): Minor fixes.
Yuan Fu [Sun, 25 Dec 2022 18:44:53 +0000 (10:44 -0800)]
; * doc/lispref/modes.texi (Parser-based Font Lock): Minor fixes.

2 years ago; * doc/lispref/parsing.texi (Retrieving Nodes): Add notice.
Yuan Fu [Sun, 25 Dec 2022 18:38:05 +0000 (10:38 -0800)]
; * doc/lispref/parsing.texi (Retrieving Nodes): Add notice.

2 years agoAdd maintainer stub for tree-sitter files
Yuan Fu [Sun, 25 Dec 2022 18:22:40 +0000 (10:22 -0800)]
Add maintainer stub for tree-sitter files

* lisp/treesit.el:
* src/treesit.c: Add maintainer.

2 years ago; * doc/lispref/parsing.texi (Using Parser): Remove deleted function.
Yuan Fu [Sun, 25 Dec 2022 18:05:06 +0000 (10:05 -0800)]
; * doc/lispref/parsing.texi (Using Parser): Remove deleted function.

2 years ago; Fix typos
Stefan Kangas [Fri, 23 Dec 2022 17:21:10 +0000 (18:21 +0100)]
; Fix typos

(cherry picked from commit a5d39e11443fa30c8e8bc58254a1a59550dcd99e)

2 years agoRemove remaining mentions of 'eval-current-buffer'
Gregory Heytings [Mon, 26 Dec 2022 01:21:16 +0000 (01:21 +0000)]
Remove remaining mentions of 'eval-current-buffer'

* lisp/emacs-lisp/edebug.el (edebug-all-defs):
* doc/lispref/eval.texi (Eval):
* doc/lispref/edebug.texi (Instrumenting, Edebug Options):
Remove remaining mentions of 'eval-current-buffer', obsoleted in
Emacs 22 and removed in Emacs 26.

2 years ago; * doc/lispref/text.texi (Database): Fix a typo. (Bug#60317)
Eli Zaretskii [Sun, 25 Dec 2022 17:43:49 +0000 (19:43 +0200)]
; * doc/lispref/text.texi (Database): Fix a typo.  (Bug#60317)

2 years agoUpdate to Org 9.6-61-g63e073f
Kyle Meyer [Sun, 25 Dec 2022 16:36:36 +0000 (11:36 -0500)]
Update to Org 9.6-61-g63e073f

2 years ago; Review and fix NEWS and related documentation
Eli Zaretskii [Sun, 25 Dec 2022 12:54:33 +0000 (14:54 +0200)]
; Review and fix NEWS and related documentation

* etc/NEWS: Fix wording, punctuation, and markup.

* lisp/emacs-lisp/subr-x.el (string-glyph-split): Doc fix.

* doc/lispref/display.texi (Displaying Messages): Document
'set-message-functions'.

2 years ago; Restore ARGS argument in c-ts-mode--fontify-declarator
Juanma Barranquero [Sun, 25 Dec 2022 11:59:06 +0000 (12:59 +0100)]
; Restore ARGS argument in c-ts-mode--fontify-declarator

* lisp/progmodes/c-ts-mode.el (c-ts-mode--fontify-declarator):
Restore argument name referenced in the docstring.

2 years ago; Always consider :lisp-dir when locating main file of VC packages
Philip Kaludercic [Sun, 25 Dec 2022 10:20:30 +0000 (11:20 +0100)]
; Always consider :lisp-dir when locating main file of VC packages

* lisp/emacs-lisp/package-vc.el (package-vc--main-file): Check the
:lisp-dir entry in the "extras" of a package description to find the
directory with a main file.

2 years agoAdd heuristic to locate lisp code in source packages
Philip Kaludercic [Sun, 25 Dec 2022 10:18:51 +0000 (11:18 +0100)]
Add heuristic to locate lisp code in source packages

* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Check if a
"lisp" directory exists and use that instead of PKG-DIR.

(Bug#60155)

2 years ago; * doc/lispref/parsing.texi (Tree-sitter major modes): Fix @cindex.
Eli Zaretskii [Sun, 25 Dec 2022 09:34:12 +0000 (11:34 +0200)]
; * doc/lispref/parsing.texi (Tree-sitter major modes): Fix @cindex.

2 years ago; * src/process.c (Fprocess_running_child_p): Doc fix.
Eli Zaretskii [Sun, 25 Dec 2022 09:23:07 +0000 (11:23 +0200)]
; * src/process.c (Fprocess_running_child_p): Doc fix.

2 years ago; * doc/lispref/parsing.texi: Add a reminder.
Yuan Fu [Sun, 25 Dec 2022 08:42:57 +0000 (00:42 -0800)]
; * doc/lispref/parsing.texi: Add a reminder.

2 years ago; Fix byte-copmiler warning in c-ts-mode--fontify-declarator
Yuan Fu [Sun, 25 Dec 2022 08:29:15 +0000 (00:29 -0800)]
; Fix byte-copmiler warning in c-ts-mode--fontify-declarator

* lisp/progmodes/c-ts-mode.el (c-ts-mode--fontify-declarator): Ignore
the rest args.

2 years ago; * lisp/treesit.el: Add some comments.
Yuan Fu [Sun, 25 Dec 2022 07:46:19 +0000 (23:46 -0800)]
; * lisp/treesit.el: Add some comments.

2 years agoFurther generalize treesit-defun functions
Yuan Fu [Sun, 25 Dec 2022 06:08:17 +0000 (22:08 -0800)]
Further generalize treesit-defun functions

Two new functions, treesit-beginning/end-of-thing.  And
treesit-thing-at-point's signature changes.

* lisp/treesit.el (treesit-block-type-regexp): New variable.
(treesit-beginning-of-thing)
(treesit-end-of-thing): Generalized from
treesit-beginning/end-of-defun.
(treesit-beginning-of-defun)
(treesit-end-of-defun): Use the new functions.
(treesit-thing-at-point): Accept PATTERN rather than REGEXP and PRED.
(treesit-defun-at-point): Adjust for the new signature of
treesit-thing-at-point.

2 years agoGeneralize treesit-defun functions to "things"
Yuan Fu [Sun, 25 Dec 2022 04:17:08 +0000 (20:17 -0800)]
Generalize treesit-defun functions to "things"

Change the "defun" in some functions (e.g. treesit--defuns-around) to
"thing".  Add a function treesit-thing-at-point.

* lisp/treesit.el (treesit--thing-unpack-pattern): New subroutine.
(treesit-beginning-of-defun)
(treesit-end-of-defun): Use new function treesit--navigate-thing.
(treesit--defuns-around): Generalize into treesit--thing-around.
(treesit--top-level-defun): Generalize into treesit--top-level-thing.
(treesit--navigate-defun): Generalize into treesit--navigate-thing.
(treesit-thing-at-point): Generalized from treesit-defun-at-point.
(treesit-defun-at-point): Use treesit-thing-at-point to do tht work.

2 years agoReorder optional arguments to 'package-vc-install'
Philip Kaludercic [Sun, 25 Dec 2022 08:53:07 +0000 (09:53 +0100)]
Reorder optional arguments to 'package-vc-install'

* lisp/emacs-lisp/package-vc.el (package-vc-install-selected-packages):
Update 'package-vc-install' invocation.
(package-vc-install): Reorder and update documentation.

2 years agoHandle missing dependencies for source packages
Philip Kaludercic [Sun, 25 Dec 2022 08:35:36 +0000 (09:35 +0100)]
Handle missing dependencies for source packages

* lisp/emacs-lisp/package-vc.el (package-vc-install-dependencies): Add
new function.
(package-vc--unpack-1): Call 'package-vc-install-dependencies' instead
of 'package-compute-transaction' and 'package-download-transaction'.

It is unreasonable to abort the installation, since we cannot expect
all dependencies to be available in the regular archives.  Instead we
note which packages couldn't be found, and warn the user that these
will be missing.

2 years ago; Partial revert of f3e7820b
Philip Kaludercic [Mon, 19 Dec 2022 16:00:36 +0000 (17:00 +0100)]
; Partial revert of f3e7820b

* lisp/emacs-lisp/package.el (package-install-from-archive): Check if
a package is a directory package, not a VC package

2 years ago; * nt/INSTALL.W64: Fix wording.
Eli Zaretskii [Sun, 25 Dec 2022 08:26:59 +0000 (10:26 +0200)]
; * nt/INSTALL.W64: Fix wording.

2 years ago; Fix recent changes in treesit documentation
Eli Zaretskii [Sun, 25 Dec 2022 07:29:47 +0000 (09:29 +0200)]
; Fix recent changes in treesit documentation

* lisp/treesit.el (treesit-defun-name-function, treesit-node-at)
(treesit-node-on): Doc fixes.

* doc/lispref/parsing.texi (Tree-sitter major modes): Fix wording,
punctuation, and indexing.
(Retrieving Nodes): Fix wording and add cross-references.

2 years agoFix c-ts-mode imenu defun name (bug#60296)
Yuan Fu [Sun, 25 Dec 2022 02:59:39 +0000 (18:59 -0800)]
Fix c-ts-mode imenu defun name (bug#60296)

Extract out c-ts-mode--declarator-identifier from
c-ts-mode--fontify-declarator.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--declarator-identifier): New
function.
(c-ts-mode--fontify-defun): Extract out.
(c-ts-mode--defun-name): Use the new function.

2 years agoFix treesit--children-covering-range-recurse (bug#60301)
Yuan Fu [Sun, 25 Dec 2022 02:45:36 +0000 (18:45 -0800)]
Fix treesit--children-covering-range-recurse (bug#60301)

* lisp/treesit.el (treesit--children-covering-range-recurse): Always
return a list of node.

2 years agoSupport treesit-defun-name in tree-sitter major modes
Yuan Fu [Sun, 25 Dec 2022 02:24:01 +0000 (18:24 -0800)]
Support treesit-defun-name in tree-sitter major modes

* lisp/progmodes/csharp-mode.el (csharp-ts-mode--defun-name): New
function.
(csharp-ts-mode--imenu-1): Extract into new function.
(csharp-ts-mode): Setup treesit-defun-name-function.
* lisp/progmodes/java-ts-mode.el (java-ts-mode--defun-name): New
function.
(java-ts-mode--imenu-1): Extract into new function.
(java-ts-mode): Setup treesit-defun-name-function.
* lisp/progmodes/js.el (js-treesit-current-defun): Remove function.
This function is not used (for a while already).
(js--treesit-defun-name): New function.
(js--treesit-imenu-1): Extract into new function.
(js-ts-mode): Setup treesit-defun-name-function.
* lisp/progmodes/json-ts-mode.el (json-ts-mode--defun-name): New
function.
(json-ts-mode--imenu-1): Extract into new function.
(json-ts-mode): Setup treesit-defun-name-function.
* lisp/progmodes/python.el (python--treesit-defun-name): New function.
(python--imenu-treesit-create-index-1): Extract into new function.
(python-ts-mode): Setup treesit-defun-name-function.
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--defun-name): New
function.
(rust-ts-mode--imenu-1): Extract into new function.
(rust-ts-mode): Setup treesit-defun-name-function.
* lisp/textmodes/css-mode.el (css--treesit-defun-name): New function.
(css--treesit-imenu-1): Extract into new function.
(css-ts-mode): Setup treesit-defun-name-function.
* lisp/textmodes/toml-ts-mode.el (toml-ts-mode--get-table-name):
Remove function.
(toml-ts-mode--defun-name): New function.
(toml-ts-mode--imenu-1): Extract into new function.
(toml-ts-mode): Setup treesit-defun-name-function.

2 years ago; * lisp/treesit.el (treesit-defun-at-point): Guard against nil.
Yuan Fu [Sun, 25 Dec 2022 00:40:00 +0000 (16:40 -0800)]
; * lisp/treesit.el (treesit-defun-at-point): Guard against nil.

2 years agoAdd treesit-defun-name and friends
Yuan Fu [Sun, 25 Dec 2022 00:33:35 +0000 (16:33 -0800)]
Add treesit-defun-name and friends

1. We now have treesit-defun-name, powered by
treesit-defun-name-function.
2. We now have treesit-add-log-current-defun, which powers
add-log-current-defun.
3. c-ts-mode updates its code to take advantage of these new features.
4. Manual updates.

* doc/lispref/parsing.texi (Tree-sitter major modes): Add manual for
new functions.
* lisp/progmodes/c-ts-mode.el (c-ts-mode--defun-name): New function.
(c-ts-mode--imenu-1): Extract out into c-ts-mode--defun-name.
(c-ts-base-mode): Setup treesit-defun-name-function.
* lisp/treesit.el (treesit-defun-name-function)
(treesit-add-log-defun-delimiter): New variables.
(treesit-defun-at-point)
(treesit-defun-name): New functions.
(treesit-major-mode-setup): Setup add-log-current-defun-function.

2 years agoMake treesit-node-at/on guess language at point
Yuan Fu [Sat, 24 Dec 2022 23:31:03 +0000 (15:31 -0800)]
Make treesit-node-at/on guess language at point

If PARSER-OR-LANG is nil, it makes more sense to guess the language at
point by treesit-language-at than to simply use the first parser in
the parser list.

* doc/lispref/parsing.texi (Retrieving Nodes): Update manual.
* lisp/treesit.el (treesit-node-at)
(treesit-node-on): Guess language at point.  Update docstring.
(treesit-buffer-root-node): Update docstring.

2 years ago; Add treesit-no-parser error
Yuan Fu [Sat, 24 Dec 2022 22:48:50 +0000 (14:48 -0800)]
; Add treesit-no-parser error

* lisp/treesit.el (treesit-no-parser): New error.
(treesit-buffer-root-node): Use the new error.

2 years ago* nt/INSTALL.W64: update instructions for setting up W64 environment
Óscar Fuentes [Sun, 25 Dec 2022 02:18:28 +0000 (03:18 +0100)]
* nt/INSTALL.W64: update instructions for setting up W64 environment

2 years agoRevert "; Bump minimum supported Windows version for MinGW64 to Windows 10."
Eli Zaretskii [Sat, 24 Dec 2022 19:39:26 +0000 (21:39 +0200)]
Revert "; Bump minimum supported Windows version for MinGW64 to Windows 10."

This reverts commit 75155e458601a3597d382660d0be863ab4d512c0.
Evidently, some MSYS2/MinGW64 folks still think Windows 8.1
is the minimum supported version, even though MinGW-w64 switched
to Windows 10 as the default target in January 2022.

2 years ago; Bump minimum supported Windows version for MinGW64 to Windows 10.
Eli Zaretskii [Sat, 24 Dec 2022 18:45:08 +0000 (20:45 +0200)]
; Bump minimum supported Windows version for MinGW64 to Windows 10.

2 years ago; Update minimum requirements of MinGW-w64
Eli Zaretskii [Sat, 24 Dec 2022 16:46:58 +0000 (18:46 +0200)]
; Update minimum requirements of MinGW-w64

* etc/PROBLEMS (Dumping):
* nt/INSTALL.W64: Update the minimum OS version supported by
MinGW-w64.

2 years ago; * lisp/progmodes/c-ts-mode.el: quote literal string in regexp
Mattias Engdegård [Sat, 24 Dec 2022 16:01:36 +0000 (17:01 +0100)]
; * lisp/progmodes/c-ts-mode.el: quote literal string in regexp

2 years ago; * src/xdisp.c (redisplay_internal): Reinstate the FRAME_LIVE_P test.
Eli Zaretskii [Sat, 24 Dec 2022 10:27:17 +0000 (12:27 +0200)]
; * src/xdisp.c (redisplay_internal): Reinstate the FRAME_LIVE_P test.

2 years agoFix definition of CNS 11643-15 charset
Eli Zaretskii [Sat, 24 Dec 2022 10:08:43 +0000 (12:08 +0200)]
Fix definition of CNS 11643-15 charset

* lisp/international/mule-conf.el (chinese-cns11643-15): Fix
:code-offset value.  (Bug#60275)
* lisp/international/characters.el: Add chinese-cns11643-15 to
charsets whose characters have categories c and C.

2 years ago; * lisp/progmodes/c-ts-mode.el: Add outline section headers.
Yuan Fu [Sat, 24 Dec 2022 08:16:45 +0000 (00:16 -0800)]
; * lisp/progmodes/c-ts-mode.el: Add outline section headers.

2 years agoImprove c-ts-mode block comment indent (bug#60270)
Yuan Fu [Sat, 24 Dec 2022 08:15:48 +0000 (00:15 -0800)]
Improve c-ts-mode block comment indent (bug#60270)

Now it handles stuff like

/**
 * @some_func:
 * @arg1:
 */

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Use new
matcher and anchor.
(c-ts-mode--looking-at-star): New matcher.
(c-ts-mode--comment-start-after-first-star): New anchor.

2 years ago; Add treesit_recursion_limit
Yuan Fu [Sat, 24 Dec 2022 01:17:25 +0000 (17:17 -0800)]
; Add treesit_recursion_limit

* src/treesit.c (treesit_recursion_limit): New constant.
(treesit_cursor_helper)
(Ftreesit_search_subtree)
(Ftreesit_induce_sparse_tree): Use the new constant.

2 years agoFix block comment indent and filling for c-ts-mode (bug#59763)
Yuan Fu [Sat, 24 Dec 2022 01:12:32 +0000 (17:12 -0800)]
Fix block comment indent and filling for c-ts-mode (bug#59763)

Now indent and filling works like in c-mode.  The only noticeable
missing piece is that the "*/" is not attached to the last sentence
when filling.  c-mode does it by replacing whitespaces between the
"*/" and the end of the last sentence with xxx, fill it, then change
the xxx back. I don't know if we should do that in c-ts-mode's filling.

* doc/lispref/modes.texi (Parser-based Indentation): Add new preset.
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add new
indent rule.
(c-ts-mode--fill-paragraph): New function.
(c-ts-base-mode): Setup paragraph-start, adaptive-fill, etc.
* lisp/treesit.el (treesit-simple-indent-presets): Add new preset.

2 years agoFix treesit_cursor_helper (bug#60267)
Yuan Fu [Fri, 23 Dec 2022 23:22:31 +0000 (15:22 -0800)]
Fix treesit_cursor_helper (bug#60267)

The cause of that bug is that in a particular parse tree, the node
treesit_cursor_helper tries to go to is a missing node, not only is it
a missing node, it is the first node of a subtree.  So when
treesit_cursor_helper follows the algorithm and goes down the tree, it
goes down the previous subtree (because that subtree's end = end_pos,
because the target node has zero width).

    o
    |
 o--+-o
 |    |
 +-+  +-+-+
 | |  | | |
 o x  t o o

(We ended up in x when the target is t, because t has zero width.)

One way to solve it is to go back up the tree if we are at a leaf node
and still haven't matched the target node.  That's too ugly and
finicky so I resorted to recursion.  Now one more functions will
return give up (treesit_node_parent) if we are in a werid parse tree
that is super deep.  But since we already kind of give up on this kind
of parse trees (bug#59426), it doesn't really hurt.

* src/treesit.c (treesit_cursor_helper_1): New function.
(treesit_cursor_helper): Use the new function.  Change return type to
bool, and accept a cursor pointer.

(Ftreesit_node_parent)
(Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Use the new signature.

2 years agoFix restart-emacs alarms (Bug#60220)
Paul Eggert [Sat, 24 Dec 2022 07:36:06 +0000 (23:36 -0800)]
Fix restart-emacs alarms (Bug#60220)

* src/emacs.c (Fkill_emacs): Turn timers off before execing,
so that the re-execed Emacs doesn’t get a timer alarm.

2 years agoFix alternate stack test in configure
Florian Weimer [Fri, 23 Dec 2022 17:51:08 +0000 (18:51 +0100)]
Fix alternate stack test in configure

* configure.ac (emacs_cv_alternate_stack): Include <stdlib.h>
for 'malloc's prototype.

2 years agoAdd more functions to "string" shortdoc
Xi Lu [Fri, 23 Dec 2022 15:50:39 +0000 (23:50 +0800)]
Add more functions to "string" shortdoc

* lisp/emacs-lisp/shortdoc.el: Add 'string-or-null-p',
'char-or-string-p', 'char-uppercase-p'.  (Bug#60279)

2 years agoMake the Contour terminal an alias of xterm-256color
Yaraslau Tamashevich [Fri, 23 Dec 2022 09:39:25 +0000 (11:39 +0200)]
Make the Contour terminal an alias of xterm-256color

* lisp/faces.el (term-file-aliases): Make the Contour terminal an
alias of xterm-256color.  (Bug#60278)

Copyright-paperwork-exempt: yes

2 years ago; Fix punctuation in last change.
Eli Zaretskii [Sat, 24 Dec 2022 07:40:56 +0000 (09:40 +0200)]
; Fix punctuation in last change.

2 years agoCorrect wrong info in (info)Go to node
glacials [Thu, 22 Dec 2022 20:09:08 +0000 (12:09 -0800)]
Correct wrong info in (info)Go to node

The node (info)Go to node in the Info manual states that 'g'
does not allow the use of abbreviations, however it does.
To test this, type 'gt' from this node and see that it takes
you to (info)Top, then type 'ggo<RET>' and see that it takes
you back to (info)Go to node.  Tested on emacs 28.2.
* doc/misc/info.texi (Go to node): Fix inaccurate information.
(Bug#60263)

Copyright-paperwork-exempt: yes

2 years agoFix typo in TUTORIAL.fr (bug#60261)
Eli Zaretskii [Sat, 24 Dec 2022 07:32:08 +0000 (09:32 +0200)]
Fix typo in TUTORIAL.fr (bug#60261)

* etc/tutorials/TUTORIAL.fr: Fix typo.  Reported by
Clément Escude--Cotinat <clement.escudecotinat@yahoo.fr>.

2 years agoAdd some diff-fixup-modifs tests
Daniel Martín [Thu, 22 Dec 2022 18:10:24 +0000 (19:10 +0100)]
Add some diff-fixup-modifs tests

* test/lisp/vc/diff-mode-tests.el (diff-mode-test-fixups-added-lines):
Test that diff-mode fixes patches with added lines correctly.
* test/lisp/vc/diff-mode-tests.el (diff-mode-test-fixups-empty-hunks):
Ditto for patches with empty hunks.  (Bug#60259)

2 years agoFix quoted argument in emacsclient-mail.desktop Exec key
Ulrich Müller [Mon, 19 Dec 2022 15:51:20 +0000 (16:51 +0100)]
Fix quoted argument in emacsclient-mail.desktop Exec key

Apparently the emacsclient-mail.desktop file doesn't conform to the
Desktop Entry Specification at
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables
which says about the Exec key:

| Field codes must not be used inside a quoted argument, the result of
| field code expansion inside a quoted argument is undefined.

However, the %u field code is used inside a quoted argument of the
Exec key in both the [Desktop Entry] and [Desktop Action new-window]
sections.
* etc/emacsclient-mail.desktop (Exec): The Desktop Entry
Specification does not allow field codes like %u inside a quoted
argument. Work around it by passing %u as first parameter ($1)
to the shell wrapper.
* etc/emacsclient.desktop (Exec): Use `sh` rather than `placeholder`
as the command name of the shell wrapper.  (Bug#60204)

2 years agoert-x: Move window selection logic to its own macro
Richard Hansen [Sat, 17 Dec 2022 23:51:33 +0000 (18:51 -0500)]
ert-x: Move window selection logic to its own macro

* lisp/emacs-lisp/ert-x.el (ert-with-buffer-selected): New macro to
temporarily display a buffer in a selected window and evaluate a body.
(ert-with-test-buffer-selected): Use the new macro.
* test/lisp/whitespace-tests.el
(ert-test-with-buffer-selected/current)
(ert-test-with-buffer-selected/selected)
(ert-test-with-buffer-selected/nil-buffer)
(ert-test-with-buffer-selected/modification-hooks)
(ert-test-with-buffer-selected/read-only)
(ert-test-with-buffer-selected/return-value): Add tests.
(Bug#60189)

2 years ago; ert-x: Simplify `ert-with-test-buffer-selected'
Richard Hansen [Sat, 17 Dec 2022 23:18:39 +0000 (18:18 -0500)]
; ert-x: Simplify `ert-with-test-buffer-selected'

* lisp/emacs-lisp/ert-x.el (ert-with-test-buffer-selected):
Simplify using 'ert-with-test-buffer'.  (Bug#60189)

2 years ago; ert-x: Add test for buffer read-only state
Richard Hansen [Sat, 17 Dec 2022 23:26:33 +0000 (18:26 -0500)]
; ert-x: Add test for buffer read-only state

This test should have been included with commit
29b7d740006fe2190a729bd1c30ccab9356cee36.
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-test-with-test-buffer-selected/read-only): New test.
(Bug#60189)

2 years agoFix crash after X error
Po Lu [Sat, 24 Dec 2022 06:14:51 +0000 (14:14 +0800)]
Fix crash after X error

* src/xdisp.c (redisplay_internal): Catch another crash if
gcscrollbars after an X error.

2 years agoFix ruby-mode.el local command injection vulnerability (bug#60268)
Xi Lu [Fri, 23 Dec 2022 04:52:48 +0000 (12:52 +0800)]
Fix ruby-mode.el local command injection vulnerability (bug#60268)

* lisp/progmodes/ruby-mode.el
(ruby-find-library-file): Fix local command injection vulnerability.

2 years ago; * etc/NEWS: Fix typos.
Michael Albinus [Fri, 23 Dec 2022 18:29:37 +0000 (19:29 +0100)]
; * etc/NEWS: Fix typos.

2 years agoMerge branch 'emacs-29' of git.sv.gnu.org:/srv/git/emacs into emacs-29
Michael Albinus [Fri, 23 Dec 2022 17:36:08 +0000 (18:36 +0100)]
Merge branch 'emacs-29' of git.sv.gnu.org:/srv/git/emacs into emacs-29

2 years agoFix "C-h k" in recursive minibuffers
Eli Zaretskii [Fri, 23 Dec 2022 14:41:08 +0000 (16:41 +0200)]
Fix "C-h k" in recursive minibuffers

* lisp/subr.el (event--posn-at-point): Leave POSN alone if it
doesn't have at least 6 members.  This follows more faithfully
what 'event-start' and 'event-end' did before they started using
this function, see commit c1cead89f5f.  Call posn-at-point with
the minibuffer-window when in the minibuffer.  (Bug#60252)

2 years ago; Improve documentation of "C-x @"
Eli Zaretskii [Fri, 23 Dec 2022 12:37:04 +0000 (14:37 +0200)]
; Improve documentation of "C-x @"

* doc/emacs/custom.texi (Modifier Keys): Document how to enter
Shift, Control, and Meta using "C-x @".

* lisp/simple.el (function-key-map): Add commentary to "C-x @"
bindings to make them easier to discover.

2 years ago; * etc/NEWS: Announce the new behavior of 'C-h f'. (Bug#60252)
Eli Zaretskii [Fri, 23 Dec 2022 11:32:18 +0000 (13:32 +0200)]
; * etc/NEWS: Announce the new behavior of 'C-h f'.  (Bug#60252)

2 years ago; * admin/notes/git-workflow: Adding "Backport:" is optional.
Sean Whitton [Thu, 22 Dec 2022 20:38:48 +0000 (13:38 -0700)]
; * admin/notes/git-workflow: Adding "Backport:" is optional.

2 years agovc-git-checkin: Don't try to apply an empty patch
Sean Whitton [Tue, 20 Dec 2022 22:53:19 +0000 (15:53 -0700)]
vc-git-checkin: Don't try to apply an empty patch

* lisp/vc/vc-git.el (vc-git-checkin): Don't try to apply an empty
patch to the index, because in that case 'git apply' fails.

(cherry picked from commit 1424342225ef5b18c630364dd88e004f4ebb1c7f)

2 years ago; Fix docstring
Ikumi Keita [Thu, 22 Dec 2022 17:23:34 +0000 (18:23 +0100)]
; Fix docstring

* lisp/textmodes/reftex-vars.el
(reftex-allow-detached-macro-args): Fix macro name in docstring.

2 years agoUpdate Tramp version (don't merge with master)
Michael Albinus [Thu, 22 Dec 2022 15:46:00 +0000 (16:46 +0100)]
Update Tramp version (don't merge with master)

* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.6.0.29.1".
(customize-package-emacs-version-alist):
Adapt Tramp version integrated in Emacs 29.1.

2 years agoEglot: eglot--servers-by-xrefed-file doesn't need to be value-weak
João Távora [Thu, 22 Dec 2022 15:44:11 +0000 (15:44 +0000)]
Eglot: eglot--servers-by-xrefed-file doesn't need to be value-weak

* lisp/progmodes/eglot.el (eglot--servers-by-xrefed-file): Doesn't
need to be weak.

2 years agoPrevent stale servers when using eglot-extend-to-xref
João Távora [Thu, 22 Dec 2022 11:29:49 +0000 (11:29 +0000)]
Prevent stale servers when using eglot-extend-to-xref

A weak-valued hash-table is not enough to guarantee that a reference
to a zombie server in eglot--servers-by-xrefed-file variable won't
survive long enough to confuse the next call to eglot--current-server
in some buffers.

So, before this fix it was common to get "Process EGLOT ... not
running" errors if some xref-extended buffers (like system libraries)
were open and M-x eglot-reconnect was issued.  This should be
prevented now.

Note however, that even after this the eglot-extend-to-xref logic is
still flawed.  For example, if a buffer for the xref-extended buffer
happens to be already visited by the time M-. is issued to navigate to
it, Eglot won't be activated.  A half-decent workaround is to kill the
buffer and re-visit it.

* lisp/progmodes/eglot.el (eglot--servers-by-xrefed-file): Move
up.
(eglot--on-shutdown): Make sure to cleanup
eglot--servers-by-xrefed-file.

2 years ago; * src/alloc.c (Fmemory_info): Doc fix.
Eli Zaretskii [Thu, 22 Dec 2022 11:02:45 +0000 (13:02 +0200)]
; * src/alloc.c (Fmemory_info): Doc fix.

2 years ago* etc/tutorials/TUTORIAL.cn: Fix typos. (Bug#60221)
Xi Lu [Tue, 20 Dec 2022 15:19:13 +0000 (23:19 +0800)]
* etc/tutorials/TUTORIAL.cn: Fix typos.  (Bug#60221)

2 years agoMerge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/emacs into emacs-29
Eli Zaretskii [Thu, 22 Dec 2022 09:00:41 +0000 (11:00 +0200)]
Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/emacs into emacs-29

2 years agoAdd alias for removed font-lock function
Benson Chu [Wed, 21 Dec 2022 23:41:32 +0000 (17:41 -0600)]
Add alias for removed font-lock function

As part of 18947103fabf8070738b3bd9c5a8d02f90988a3d,
`font-lock-fontify-syntactically-region' was renamed to
`font-lock-default-fontify-sytactically'.

* lisp/font-lock.el (font-lock-fontify-syntactically-region): Add
obsolete alias for the renamed function.

Copyright-paperwork-exempt: yes

2 years agoSet beginning/end-of-defun-function in treesit-major-mode-setup
Yuan Fu [Thu, 22 Dec 2022 08:41:58 +0000 (00:41 -0800)]
Set beginning/end-of-defun-function in treesit-major-mode-setup

* lisp/treesit.el (treesit-major-mode-setup): Set them.

2 years agoAdd treesit-defun-at-point and fix c-ts-mode-indent-defun
Yuan Fu [Wed, 21 Dec 2022 05:22:30 +0000 (21:22 -0800)]
Add treesit-defun-at-point and fix c-ts-mode-indent-defun

* lisp/treesit.el (treesit-defun-at-point): New function.
* lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-defun): Implement with
treesit-defun-at-point.

2 years ago; Fix treesit--defuns-around
Yuan Fu [Wed, 21 Dec 2022 05:21:48 +0000 (21:21 -0800)]
; Fix treesit--defuns-around

Now it doesn't move point.

* lisp/treesit.el (treesit--defuns-around): Wrap some code with
save-excursion.

2 years agoUse the new keyword ':repeat' in repeatable keymaps.
Juri Linkov [Thu, 22 Dec 2022 08:03:09 +0000 (10:03 +0200)]
Use the new keyword ':repeat' in repeatable keymaps.

* lisp/bindings.el (undo-repeat-map)
(buffer-navigation-repeat-map, next-error-repeat-map)
(page-navigation-repeat-map):
* lisp/comint.el (comint-repeat-map):
* lisp/dired.el (dired-jump-map):
* lisp/outline.el (outline-navigation-repeat-map)
(outline-editing-repeat-map):
* lisp/shell.el (shell-repeat-map):
* lisp/tab-bar.el (tab-bar-switch-repeat-map)
(tab-bar-move-repeat-map):
* lisp/window.el (other-window-repeat-map)
(resize-window-repeat-map):
* lisp/winner.el (winner-repeat-map):
* lisp/eshell/em-prompt.el (eshell-prompt-repeat-map):
* lisp/eshell/esh-mode.el (eshell-command-repeat-map):
Add the keyword ':repeat' to 'defvar-keymap' instead of
setting the symbol property 'repeat-map' explicitly.

* lisp/keymap.el (defvar-keymap): Check for 'props'
that is used in 'defvar-form'.

2 years agoWhen redirecting in Eshell, check for "/dev/null" specifically
Jim Porter [Wed, 21 Dec 2022 00:20:50 +0000 (16:20 -0800)]
When redirecting in Eshell, check for "/dev/null" specifically

This is so that users can type "cmd ... > /dev/null" in Eshell no
matter what their system's null device is called.  (Users can still
use their system's null device name when redirecting, too.  Eshell
doesn't need to do anything special to support that.)  This partially
reverts 67a8bdb90c9b5865b7f17290c7135b1a5458c36d.  See bug#59545.

Do not merge to master.

* lisp/eshell/esh-io.el (eshell-set-output-handle): Use "/dev/null"
literally.

2 years ago* Invoke spawed Emacs processes with '-Q' when native compiling (bug#60208)
Andrea Corallo [Wed, 21 Dec 2022 22:26:52 +0000 (23:26 +0100)]
* Invoke spawed Emacs processes with '-Q' when native compiling (bug#60208)

* lisp/emacs-lisp/comp.el (comp-final): Invoke spawned Emacs with '-Q'.
(comp-run-async-workers): Likewise.

2 years agoFix Eshell electric slash when used from the root directory of a remote host
montag451 [Wed, 21 Dec 2022 22:21:20 +0000 (14:21 -0800)]
Fix Eshell electric slash when used from the root directory of a remote host

* lisp/eshell/em-elecslash.el (eshell-electric-forward-slash): Insert
the remote prefix as determined by 'file-remote-p'.

Copyright-paperwork-exempt: Yes

2 years agoFix the --without-all build with tree-sitter
Eli Zaretskii [Wed, 21 Dec 2022 19:52:18 +0000 (21:52 +0200)]
Fix the --without-all build with tree-sitter

* configure.ac (HAVE_TREE_SITTER): Set NEED_DYNLIB=yes, since
tree-sitter support requires dynlib.o.  (Bug#60061)

2 years agoFix write-region to null device on MS-Windows
Eli Zaretskii [Wed, 21 Dec 2022 19:23:51 +0000 (21:23 +0200)]
Fix write-region to null device on MS-Windows

* src/fileio.c (write_region) [WINDOWSNT]: Ignore EBADF errors
from fsync -- this means fsync is not supported for this file.
Happens, for example, with the null device.  (Bug#59545)

2 years agomessage: Do not default to eudc-capf-complete yet
Alexander Adolf [Wed, 21 Dec 2022 17:32:36 +0000 (12:32 -0500)]
message: Do not default to eudc-capf-complete yet

* lisp/gnus/message.el (message-mode): No longer add
eudc-capf-complete to the buffer-local value of
completion-at-point-functions.  (Bug#59314)

2 years ago; * lisp/tab-bar.el: Remaining renaming of "fixed-width" to "auto-width".
Juri Linkov [Wed, 21 Dec 2022 17:30:24 +0000 (19:30 +0200)]
; * lisp/tab-bar.el: Remaining renaming of "fixed-width" to "auto-width".

2 years agowhitespace: Avoid mutating original buffer's markers in clones
Richard Hansen [Tue, 13 Dec 2022 06:33:43 +0000 (01:33 -0500)]
whitespace: Avoid mutating original buffer's markers in clones

* lisp/whitespace.el (whitespace--clone): New hook function that is
run after cloning a buffer that copies `whitespace-bob-marker' and
`whitespace-eob-marker' and changes the copies to point to the new
buffer (Bug#59618).
(whitespace-color-on): Register the hook function.
(whitespace-color-off): Unregister the hook function.

* test/lisp/whitespace-tests.el
(whitespace-tests--with-test-buffer): New macro.
(whitespace-tests--check-markers): New function.
(whitespace-tests--indirect-clone-breaks-base-markers)
(whitespace-tests--indirect-clone-markers)
(whitespace-tests--regular-clone-markers): New tests.

2 years agoFix empty pairs in js tree-sitter imenu alist (bug#59945)
Charl P. Botha [Sat, 10 Dec 2022 17:09:38 +0000 (19:09 +0200)]
Fix empty pairs in js tree-sitter imenu alist (bug#59945)

The current js--treesit-imenu, used by the JavaScript, TypeScript and
TSX tree-sitter modes, would return empty pairs in the imenu alist if
there were none of that type of symbol.

This would break both the built in imenu and also packages like
consult-imenu.

See https://github.com/minad/consult/issues/697 for the discussion
there.

* lisp/progmodes/js.el (js--treesit-imenu): Don't add nil indexes.

Copyright-paperwork-exempt: yes

2 years ago; * lisp/treesit.el (treesit-simple-indent-presets): Fix typo.
Yuan Fu [Tue, 20 Dec 2022 01:54:12 +0000 (17:54 -0800)]
; * lisp/treesit.el (treesit-simple-indent-presets): Fix typo.