]> git.eshelyaron.com Git - emacs.git/log
emacs.git
23 months agoShow tree-sitter query source when signaling query error
Yuan Fu [Sat, 31 Dec 2022 00:57:45 +0000 (16:57 -0800)]
Show tree-sitter query source when signaling query error

* src/treesit.c (treesit_compose_query_signal_data): Add QUERY_SOURCE
parameter.
(treesit_ensure_query_compiled)
(Ftreesit_query_capture): Add query source.

23 months ago; * lisp/treesit.el (treesit--install-language-grammar-1): Minor fix.
Yuan Fu [Sat, 31 Dec 2022 00:23:39 +0000 (16:23 -0800)]
; * lisp/treesit.el (treesit--install-language-grammar-1): Minor fix.

23 months agoAdd version tags and mention the new options in NEWS
Dmitry Gutov [Fri, 30 Dec 2022 22:12:51 +0000 (00:12 +0200)]
Add version tags and mention the new options in NEWS

* etc/NEWS: Mention the new options (bug#60186).

* lisp/progmodes/ruby-mode.el (ruby-block-indent)
(ruby-after-operator-indent, ruby-method-call-indent)
(ruby-parenless-call-arguments-indent): Add version tags.

23 months agoAdd new options for Ruby code indentation
Dmitry Gutov [Fri, 30 Dec 2022 21:58:26 +0000 (23:58 +0200)]
Add new options for Ruby code indentation

* lisp/progmodes/ruby-mode.el (ruby-block-indent)
(ruby-after-operator-indent, ruby-method-call-indent)
(ruby-parenless-call-arguments-indent): New options (bug#60186).
(ruby-smie-grammar): Specify associativity for "?".
(ruby-smie--indent-to-stmt): Add optional argument.

* test/lisp/progmodes/ruby-mode-resources/ruby.rb: New cases.

* test/lisp/progmodes/ruby-mode-resources/ruby-method-call-indent.rb:
* test/lisp/progmodes/ruby-mode-resources/ruby-block-indent.rb:
* test/lisp/progmodes/ruby-mode-resources/ruby-after-operator-indent.rb:
* test/lisp/progmodes/ruby-mode-resources/
ruby-parenless-call-arguments-indent.rb: New files.

* test/lisp/progmodes/ruby-mode-tests.el: Add indentation tests for new files.

23 months ago; Fix doc strings of 'treesit-install-language-grammar'
Eli Zaretskii [Fri, 30 Dec 2022 15:10:22 +0000 (17:10 +0200)]
; Fix doc strings of 'treesit-install-language-grammar'

* lisp/treesit.el (treesit-install-language-grammar)
(treesit--install-language-grammar-1): Doc fixes.

23 months ago; Fix recently modified docs of 'set-face-attribute' (bug#52493)
Eli Zaretskii [Fri, 30 Dec 2022 14:43:38 +0000 (16:43 +0200)]
; Fix recently modified docs of 'set-face-attribute' (bug#52493)

* doc/lispref/display.texi (Attribute Functions): Clarify wording
and restore removed information about resetting attributes to
'unspecified' for future frames.

* lisp/faces.el (set-face-attribute): Minor copyedit of doc
string.

23 months agoAdd treesit-install-language-grammar
Yuan Fu [Fri, 30 Dec 2022 10:56:26 +0000 (02:56 -0800)]
Add treesit-install-language-grammar

Per discussion on emacs-devel, I added function to install and compile
language grammars.

* lisp/treesit.el (treesit-language-source-alist): New variable.
(treesit-install-language-grammar)
(treesit--call-process-signal)
(treesit--install-language-grammar-1): New functions.

23 months agoAdd treesit-language-abi-version
Yuan Fu [Fri, 30 Dec 2022 10:54:13 +0000 (02:54 -0800)]
Add treesit-language-abi-version

Also rename treesit-language-version to treesit-library-abi-version,
because the old name is somewhat misleading.

* doc/lispref/parsing.texi (Language Grammar): Update.
* src/treesit.c (Ftreesit_library_abi_version): Rename.
(Ftreesit_language_abi_version): New function.

23 months agoChange "language definition" to "language grammar" in manual.
Yuan Fu [Fri, 30 Dec 2022 08:47:22 +0000 (00:47 -0800)]
Change "language definition" to "language grammar" in manual.

"Language grammar" is apparently the more widely used term among
people talking about tree-sitter.  To avoid confusion, I think it's
good to use that rather than "language definition", which is a term
that I made up :-)

Feel free to revert this if it is too much change.

* doc/lispref/elisp.texi:
* doc/lispref/modes.texi:
* doc/lispref/parsing.texi:
* lisp/treesit.el: Change "language definition" to "language grammar".

23 months ago; * lisp/progmodes/c-ts-mode.el (c-ts-mode--fill-paragraph): Fix.
Yuan Fu [Fri, 30 Dec 2022 08:34:42 +0000 (00:34 -0800)]
; * lisp/progmodes/c-ts-mode.el (c-ts-mode--fill-paragraph): Fix.

23 months ago; * doc/lispref/parsing.texi (Accessing Node Information): Fix typo.
Yuan Fu [Fri, 30 Dec 2022 04:54:42 +0000 (20:54 -0800)]
; * doc/lispref/parsing.texi (Accessing Node Information): Fix typo.

23 months ago* test/lisp/net/tramp-tests.el (tramp-test32-shell-command): Fix test.
Michael Albinus [Fri, 30 Dec 2022 08:26:56 +0000 (09:26 +0100)]
* test/lisp/net/tramp-tests.el (tramp-test32-shell-command): Fix test.

23 months ago* lisp/eshell/em-tramp.el (tramp): Require also at runtime. (Bug#60402)
Michael Albinus [Fri, 30 Dec 2022 08:26:41 +0000 (09:26 +0100)]
* lisp/eshell/em-tramp.el (tramp): Require also at runtime.  (Bug#60402)

23 months agolisp/textmodes/bibtex.el: fix bibtex-beginning-of-entry (bug#56636)
Roland Winkler [Fri, 30 Dec 2022 05:31:08 +0000 (23:31 -0600)]
lisp/textmodes/bibtex.el: fix bibtex-beginning-of-entry (bug#56636)

lisp/textmodes/bibtex.el (bibtex-beginning-of-entry):
use bibtex-any-entry-maybe-empty-head (bug#56636)

23 months agolisp/textmodes/bibtex.el: Treat $ as punctuation in BibTeX fields (bug#50202)
Roland Winkler [Fri, 30 Dec 2022 05:22:48 +0000 (23:22 -0600)]
lisp/textmodes/bibtex.el: Treat $ as punctuation in BibTeX fields (bug#50202)

23 months agoClarify the documentation of 'set-face-attribute'
Gregory Heytings [Thu, 29 Dec 2022 22:41:58 +0000 (22:41 +0000)]
Clarify the documentation of 'set-face-attribute'

* lisp/faces.el (set-face-attribute): Mention the evaluation order
of attribute-value pairs in the docstring.

* doc/lispref/display.texi (Attribute Functions): Likewise, and
explain with an example that a different argument order might give
different results.  Also align the documentation in the manual
with that of the docstring, whose changes were discussed in
bug#57499 but not included in the manual.

23 months agoHandle non-string values in pcomplete
Gregory Heytings [Mon, 19 Dec 2022 22:18:22 +0000 (22:18 +0000)]
Handle non-string values in pcomplete

* lisp/pcomplete.el (pcomplete-arg): When
pcomplete-parse-arguments-function returns a non-string value,
return the string the user typed in, and attach the value as a
text property to that string.  Fixes bug#59956 and bug#60021.

23 months agoFix completion when completion-auto-select is set
Gregory Heytings [Thu, 29 Dec 2022 21:50:26 +0000 (21:50 +0000)]
Fix completion when completion-auto-select is set

* lisp/minibuffer.el (completion--do-completion): Do not display
"Complete, but not unique" messages when completion-auto-select is
set.  Fixes bug#60359.

23 months ago; * etc/DEBUG: Update MS-Windows specifics for GDB 13 and later.
Eli Zaretskii [Thu, 29 Dec 2022 20:04:44 +0000 (22:04 +0200)]
; * etc/DEBUG: Update MS-Windows specifics for GDB 13 and later.

23 months agoAdd color fontification in css-ts-mode (bug#60405)
Yuan Fu [Thu, 29 Dec 2022 19:52:06 +0000 (11:52 -0800)]
Add color fontification in css-ts-mode (bug#60405)

* lisp/textmodes/css-mode.el (css-ts-mode): Add color fontification
and syntax-propertize-function.

23 months ago; * lisp/textmodes/css-mode.el (css-ts-mode): Fix imenu setup.
Yuan Fu [Thu, 29 Dec 2022 19:41:26 +0000 (11:41 -0800)]
; * lisp/textmodes/css-mode.el (css-ts-mode): Fix imenu setup.

23 months ago; * lisp/progmodes/js.el: Fix byte-compile warning.
Yuan Fu [Thu, 29 Dec 2022 19:34:28 +0000 (11:34 -0800)]
; * lisp/progmodes/js.el: Fix byte-compile warning.

23 months ago* lisp/hi-lock.el (hi-lock--regexps-at-point): Fix bug (bug#60241).
Juri Linkov [Thu, 29 Dec 2022 17:45:12 +0000 (19:45 +0200)]
* lisp/hi-lock.el (hi-lock--regexps-at-point): Fix bug (bug#60241).

Handle two cases: when a pattern is a regexp or a function.

23 months ago* src/keyboard.c (echo_add_key): Use recently rebound C-h key C-q (bug#60249)
Juri Linkov [Thu, 29 Dec 2022 17:41:41 +0000 (19:41 +0200)]
* src/keyboard.c (echo_add_key): Use recently rebound C-h key C-q (bug#60249)

23 months agoAvoid assertion violations in treesit.c with --enable-checking
Eli Zaretskii [Thu, 29 Dec 2022 11:52:09 +0000 (13:52 +0200)]
Avoid assertion violations in treesit.c with --enable-checking

* src/treesit.c (Ftreesit_node_first_child_for_pos)
(Ftreesit_node_descendant_for_range): Check validity of buffer
positions before converting them to byte-positions, to avoid
assertion violations in buf_charpos_to_bytepos.

23 months agoClean up treesit-default-defun-skipper and add comments
Yuan Fu [Thu, 29 Dec 2022 09:28:25 +0000 (01:28 -0800)]
Clean up treesit-default-defun-skipper and add comments

* lisp/treesit.el (treesit-default-defun-skipper): Clean up, fix some
small issue, add comment.

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

23 months ago; whitespace.el: Use the new 'ert-with-buffer-selected' in tests
Richard Hansen [Sun, 18 Dec 2022 05:24:16 +0000 (00:24 -0500)]
; whitespace.el: Use the new 'ert-with-buffer-selected' in tests

Commit 286c48137f69fa96b80d197da90c69a42df604a3 added a new
`ert-with-test-buffer-selected' macro.  Use that macro in
'whitespace-mode' tests to avoid code duplication.  (Bug#60332)
* test/lisp/whitespace-tests.el (whitespace--with-buffer-selected):
Macro deleted.
(whitespace-tests--indirect-clone-breaks-base-markers)
(whitespace-tests--indirect-clone-markers)
(whitespace-tests--regular-clone-markers): Use
'ert-with-buffer-selected'.

23 months agoFix c-ts-mode bracket indentation (bug#60398)
Yuan Fu [Thu, 29 Dec 2022 08:58:50 +0000 (00:58 -0800)]
Fix c-ts-mode bracket indentation (bug#60398)

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Use new
anchor.
(c-ts-mode--bracket-children-anchor): New anchor function.

23 months ago; Minor cleanup for tree-sitter font-lock rules in js-ts-mode
Yuan Fu [Thu, 29 Dec 2022 00:57:21 +0000 (16:57 -0800)]
; Minor cleanup for tree-sitter font-lock rules in js-ts-mode

* lisp/progmodes/js.el (js--treesit-font-lock-settings): Minor cleanup.

23 months agoClean up font-lock rules in js-ts-mode
Yuan Fu [Thu, 29 Dec 2022 00:52:47 +0000 (16:52 -0800)]
Clean up font-lock rules in js-ts-mode

Changes for each feature:

- string: Take out string-interpolation bits.
- string-interpolation: New.
- declaration: Rename to definition.
- identifier: Remove.
- property: Use a pred to filter out methods.
- expression: Rename to assignment.
- function: New.
- pattern: Merge into assignment.

* lisp/progmodes/js.el (js--treesit-font-lock-settings): See above.
(js--treesit-property-not-function-p)
(js--treesit-lhs-identifier-query): New variable.
(js--treesit-fontify-assignment-lhs): New functions.
(js-ts-mode): Update feature list.

23 months ago; * doc/lispref/parsing.texi (Using Parser): Minor improvement.
Yuan Fu [Wed, 28 Dec 2022 23:54:51 +0000 (15:54 -0800)]
; * doc/lispref/parsing.texi (Using Parser): Minor improvement.

23 months ago; * lisp/progmodes/c-ts-mode.el (c-ts-mode--fill-paragraph): Fix.
Yuan Fu [Wed, 28 Dec 2022 23:47:14 +0000 (15:47 -0800)]
; * lisp/progmodes/c-ts-mode.el (c-ts-mode--fill-paragraph): Fix.

23 months agoFix syntax for < and > in c++-ts-mode (bug#60351)
Yuan Fu [Wed, 28 Dec 2022 23:44:26 +0000 (15:44 -0800)]
Fix syntax for < and > in c++-ts-mode (bug#60351)

< and > are usually punctuation, e.g., in ->.  But when used for
templates, they should be considered pairs.  Right now we always
consider them as pairs which is incorrect.

* lisp/progmodes/c-ts-mode.el (c++-ts-mode--syntax-table): Remove
variable.
(c-ts-mode--syntax-propertize): New function.
(c++-ts-mode): Remove syntax table.  Setup syntax-propertize-function.

23 months agoCall tree-sitter parser notifier on the first parse
Yuan Fu [Wed, 28 Dec 2022 23:30:10 +0000 (15:30 -0800)]
Call tree-sitter parser notifier on the first parse

* src/treesit.c (treesit_call_after_change_functions): Handle NULL
old_tree.
(treesit_ensure_parsed): Remove check for NULL tree.

23 months agoFix tree-sitter parser notifier recursion
Yuan Fu [Wed, 28 Dec 2022 23:19:34 +0000 (15:19 -0800)]
Fix tree-sitter parser notifier recursion

See the comment for detail.

* src/treesit.c (treesit_ensure_parsed): Move the need_reparse short
circuit to the very beginning.  Move the call to
treesit_call_after_change_functions to the very end.

23 months ago* lisp/help.el: Use 'C-h C-q' to toggle 'help-quick' window (bug#60249).
Juri Linkov [Wed, 28 Dec 2022 18:48:40 +0000 (20:48 +0200)]
* lisp/help.el: Use 'C-h C-q' to toggle 'help-quick' window (bug#60249).

(help-map): Bind "C-q" to 'help-quick-toggle'.  Rebind "q" to 'help-quit'.
(help-quick): Replace help-quit-or-quick with help-quick-toggle.
(help-quick-toggle): New command.
(help-quit-or-quick): Remove command.
(help-for-help): Replace help-quick-or-quit with help-quick-toggle.

23 months ago; Improve markup of long key sequences
Eli Zaretskii [Wed, 28 Dec 2022 18:33:58 +0000 (20:33 +0200)]
; Improve markup of long key sequences

* doc/emacs/display.texi (Text Scale): Avoid breaking key
sequences between lines by using @w{..}.

23 months ago; * etc/NEWS: Fix wording of a recently edited entry.
Eli Zaretskii [Wed, 28 Dec 2022 18:30:56 +0000 (20:30 +0200)]
; * etc/NEWS: Fix wording of a recently edited entry.

23 months ago* lisp/isearch.el: Small fixes.
Juri Linkov [Wed, 28 Dec 2022 18:27:07 +0000 (20:27 +0200)]
* lisp/isearch.el: Small fixes.

(isearch-wrap-pause): Mention the new feature of `no' and `no-ding'
in the docstring.
(isearch-lax-whitespace, isearch-forward-thing-at-point): Add the
group 'isearch' since another defgroup changed the default group.
(isearch-delete-char): Use 'isearch-invisible' instead of 'search-invisible'
since the users might change the current value with 'M-s i'.

23 months ago* lisp/vc/diff-mode.el (diff-minor-mode-prefix): Replace "ESC" with "\e".
Juri Linkov [Wed, 28 Dec 2022 18:14:43 +0000 (20:14 +0200)]
* lisp/vc/diff-mode.el (diff-minor-mode-prefix): Replace "ESC" with "\e".

"ESC" looks like an attempt to use kbd syntax in customization.
But actually now 'key-description' is used in 'diff-minor-mode-map'
to convert "\e" to "ESC".

23 months ago; * etc/NEWS: Move the paragraph with 'C-u RET' closer to the related section.
Juri Linkov [Wed, 28 Dec 2022 18:09:46 +0000 (20:09 +0200)]
; * etc/NEWS: Move the paragraph with 'C-u RET' closer to the related section.

23 months ago* doc/emacs/display.texi (Text Scale): Improve section about repeating keys.
Juri Linkov [Wed, 28 Dec 2022 18:06:18 +0000 (20:06 +0200)]
* doc/emacs/display.texi (Text Scale): Improve section about repeating keys.

Mention that it's possible to use repeating keys without the modifiers
and copy an example from etc/NEWS.

23 months ago* lisp/repeat.el (repeat-echo-function): Suggest 'add-function' in docstring.
Juri Linkov [Wed, 28 Dec 2022 17:58:44 +0000 (19:58 +0200)]
* lisp/repeat.el (repeat-echo-function): Suggest 'add-function' in docstring.

(bug#60353)

23 months ago* lisp/tab-line.el (tab-line-cache-key-default): More cache keys (bug#60340).
Juri Linkov [Wed, 28 Dec 2022 17:47:52 +0000 (19:47 +0200)]
* lisp/tab-line.el (tab-line-cache-key-default): More cache keys (bug#60340).

Move more cache keys here from 'tab-line-format' to give users more freedom.

23 months ago* etc/package-keyring.gpg: Update with new key
Stefan Monnier [Wed, 28 Dec 2022 17:19:02 +0000 (12:19 -0500)]
* etc/package-keyring.gpg: Update with new key

23 months ago; Yet another declare-function to avoid treesit-related warning
Eli Zaretskii [Wed, 28 Dec 2022 17:08:19 +0000 (19:08 +0200)]
; Yet another declare-function to avoid treesit-related warning

23 months ago; * lisp/treesit.el (treesit--simple-imenu-1): Doc fix; wording.
Stefan Kangas [Wed, 28 Dec 2022 16:37:46 +0000 (17:37 +0100)]
; * lisp/treesit.el (treesit--simple-imenu-1): Doc fix; wording.

23 months agoWarn of absent networks module in ERC
F. Jason Park [Mon, 26 Dec 2022 05:36:53 +0000 (21:36 -0800)]
Warn of absent networks module in ERC

* doc/misc/erc.texi: Add linkable note in Modules chapter about some
modules being required.  Also tweak markup in auth-source section.
* etc/ERC-NEWS: Mention the special role of `networks'.
* lisp/erc/erc-backend.el (erc--server-post-connect-hook): Add
internal hook for core modules to perform post-network-process,
pre-protocol config validation even when they haven't been loaded.
(erc--register-connection): Run `erc--server-post-connect-hook'.
* lisp/erc/erc-networks.el (erc-networks--bouncer-targets,
erc-networks-on-MOTD-end): Fix comments and doc strings.  Also change
former from constant to internal variable in case adjustment needed
between releases.
(erc-networks--warn-on-connect): New function to warn about the
`networks' module being absent from `erc-modules'.  This could
probably run at any time up to and including when the logical IRC
connection is established, but doing so at the process/protocol
boundary seems ideal.
* lisp/erc/erc-sasl.el (erc--register-connection): Defer to base
method instead of calling `erc-login' explicitly.
* lisp/erc/erc.el (erc-generate-new-buffer-name): Don't reconcile
buffer names when networks module not in play.
(erc-format-target-and/or-network): Don't assume networks module
loaded.
* test/lisp/erc/erc-scenarios-base-unstable.el:
(erc-scenarios-networks-no-module): New test.
* test/lisp/erc/resources/networks/no-module/basic.eld: New test data
file.  (Bug#60331.)

23 months agoAvoid "already compiled" warning in erc-compat
F. Jason Park [Wed, 28 Dec 2022 14:18:01 +0000 (06:18 -0800)]
Avoid "already compiled" warning in erc-compat

* lisp/erc/erc-compat.el (erc-compat--29-auth-source-pass-search):
Don't `byte-compile' sub-29 secrets wrapper.  This was especially
noisy in tests.  Ditch closed-over vars via HOF instead of suppressing
because compiling emits "unused lexical" warning on Emacs 27.

23 months ago; Fix one more treesit byte-compilation warning.
Eli Zaretskii [Wed, 28 Dec 2022 14:48:22 +0000 (16:48 +0200)]
; Fix one more treesit byte-compilation warning.

23 months ago; Avoid treesit-related byte-compiler warnings
Eli Zaretskii [Wed, 28 Dec 2022 14:41:58 +0000 (16:41 +0200)]
; Avoid treesit-related byte-compiler warnings

* lisp/progmodes/json-ts-mode.el (treesit-node-child-by-field-name):
* lisp/textmodes/toml-ts-mode.el (treesit-node-child-by-field-name):
* lisp/progmodes/java-ts-mode.el (treesit-node-child-by-field-name):
* lisp/progmodes/csharp-mode.el
(treesit-node-child-by-field-name): Avoid byte-compilation
warnings about treesit-node-type.

23 months ago(python--treesit-settings): Remove duplicate matcher
Dmitry Gutov [Wed, 28 Dec 2022 13:12:44 +0000 (15:12 +0200)]
(python--treesit-settings): Remove duplicate matcher

* lisp/progmodes/python.el (python--treesit-settings): Remove
duplicate matcher (which found itself under 'function' in addition
to 'definition').

23 months agoMake last change of w32 GUI dialogs conditional and reversible
Eli Zaretskii [Wed, 28 Dec 2022 13:10:39 +0000 (15:10 +0200)]
Make last change of w32 GUI dialogs conditional and reversible

* src/w32term.c (syms_of_w32term) <w32-yes-no-dialog-show-cancel>:
New boolean variable.
(w32_initialize): Fix query for visible system caret: 'bool' is a
single-byte data type, whereas SystemParametersInfo wants a BOOL,
which is a 32-bit int.
* src/w32menu.c (simple_dialog_show): Show "Cancel" button only if
'w32-yes-no-dialog-show-cancel' is non-nil.

* etc/NEWS: Announce the change.

2 years agoFix tree-sitter typos
Yuan Fu [Wed, 28 Dec 2022 08:32:37 +0000 (00:32 -0800)]
Fix tree-sitter typos

* doc/lispref/parsing.texi (Tree-sitter major modes):
* lisp/progmodes/java-ts-mode.el:
* test/src/treesit-tests.el (treesit-defun-navigation-nested-4): Fix
typo.

2 years agoUpdate tree-sitter major modes to use the new Imenu facility
Yuan Fu [Wed, 28 Dec 2022 04:57:12 +0000 (20:57 -0800)]
Update tree-sitter major modes to use the new Imenu facility

See previous commit for more explanation.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--defun-name): Handle more
types.
(c-ts-mode--imenu-1)
(c-ts-mode--imenu): Remove functions.
(c-ts-base-mode): Setup Imenu.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--imenu-1)
(csharp-ts-mode--imenu): Remove functions.
(csharp-ts-mode): Setup Imenu.
* lisp/progmodes/java-ts-mode.el (java-ts-mode--imenu-1)
(java-ts-mode--imenu): Remove functions.
(java-ts-mode): Setup Imenu.
* lisp/progmodes/js.el (js--treesit-imenu-1)
(js--treesit-imenu): Remove functions.
(js--treesit-valid-imenu-entry): New function.
(js-ts-mode): Setup Imenu.
* lisp/progmodes/json-ts-mode.el (json-ts-mode--defun-name): Trim the
quotes.
(json-ts-mode--imenu-1)
(json-ts-mode--imenu): Remove functions.
(json-ts-mode): Setup Imenu.
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--imenu)
(rust-ts-mode--imenu-1): Remove functions.
(rust-ts-mode): Setup Imenu.
* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-base-mode): Remove treesit-defun-prefer-top-level, it's
not used anymore.  Setup Imenu.  Setup treesit-defun-name-function.
* lisp/textmodes/css-mode.el (css--treesit-imenu-1)
(css--treesit-imenu): Remove functions.
(css-ts-mode): Setup Imenu.
* lisp/textmodes/toml-ts-mode.el (toml-ts-mode--defun-name): Fix it
and add a fallback.
(toml-ts-mode--imenu-1)
(toml-ts-mode--imenu): Remove functions.
(toml-ts-mode): Setup Imenu.

2 years agoAdd tree-sitter helper functions for Imenu
Yuan Fu [Wed, 28 Dec 2022 04:37:29 +0000 (20:37 -0800)]
Add tree-sitter helper functions for Imenu

We didn't add an integration for Imenu because we aren't sure what
should it look like.  Now we have a pretty good idea.  All the major
modes copy-paste the two Imenu functions and tweaks them in a standard
way.  With the addition of treesit-defun-type-regexp and
treesit-defun-name-function, now is a good time to standardize Imenu
integration.

In the next commit we update all the major modes to use this
integration.

* doc/lispref/modes.texi (Imenu): Add manual.
* doc/lispref/parsing.texi (Tree-sitter major modes): Update manual.
* lisp/treesit.el (treesit-simple-imenu-settings): New varaible.
(treesit--simple-imenu-1)
(treesit-simple-imenu): New functions.
(treesit-major-mode-setup): Setup Imenu.

2 years agoFix treesit--things-around (bug#60355)
Yuan Fu [Wed, 28 Dec 2022 01:02:03 +0000 (17:02 -0800)]
Fix treesit--things-around (bug#60355)

Current implementation of treesit--things-around only searches forward
for REGEXP and go up the tree until it finds a valid thing, if nothing
matches it gives up.  This makes it sometimes miss defuns.  The new
implementation tries multiple times (of search forward + go up) until
it exhausts all possible defun nodes.

* lisp/treesit.el (treesit--things-around): New implementation.
(treesit--navigate-defun): Refactor to use treesit-node-top-level to
simplify code, and add some guards in the predicate function.
* test/src/treesit-tests.el:
(treesit--ert-defun-navigation-elixir-program): New variable.
(treesit-defun-navigation-nested-4): New test.

2 years ago; * lisp/treesit.el (treesit-traverse-parent): Remove alias.
Yuan Fu [Tue, 27 Dec 2022 23:08:07 +0000 (15:08 -0800)]
; * lisp/treesit.el (treesit-traverse-parent): Remove alias.

It was added with treesit-traverse-xxx functions, since now they are
gone, this alias doesn't make sense by itself anymore.

2 years agoImprove treesit-node-top-level and treesit-parent-until
Yuan Fu [Tue, 27 Dec 2022 23:07:03 +0000 (15:07 -0800)]
Improve treesit-node-top-level and treesit-parent-until

* lisp/treesit.el (treesit-node-top-level): Now it can accept a
predicate function.  Add an optional argument INCLUDE-NODE.
(treesit-parent-until): Add an optional argument INCLUDE-NODE.

2 years ago; Add "src" to the heuristic sub-directory heuristic
Philip Kaludercic [Tue, 27 Dec 2022 19:28:05 +0000 (20:28 +0100)]
; Add "src" to the heuristic sub-directory heuristic

* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Check for "src"
directories, next to "lisp".

2 years ago; * lisp/epa-ks.el (epa-ks-do-key-to-fetch): Fix 'when' usage
Philip Kaludercic [Tue, 27 Dec 2022 12:46:40 +0000 (13:46 +0100)]
; * lisp/epa-ks.el (epa-ks-do-key-to-fetch): Fix 'when' usage

2 years ago* src/w32menu.c (simple_dialog_show): Use MB_YESNOCANCEL style.
Eli Zaretskii [Tue, 27 Dec 2022 18:55:12 +0000 (20:55 +0200)]
* src/w32menu.c (simple_dialog_show): Use MB_YESNOCANCEL style.

2 years ago; Improve documentation of TAB/SPC indentation
Eli Zaretskii [Tue, 27 Dec 2022 18:23:16 +0000 (20:23 +0200)]
; Improve documentation of TAB/SPC indentation

* lisp/indent.el (tab-to-tab-stop):
* src/indent.c (Findent_to): Mention 'indent-tabs-mode' in doc
strings.

2 years ago; Improve doc strings of some new faces
Eli Zaretskii [Tue, 27 Dec 2022 16:59:59 +0000 (18:59 +0200)]
; Improve doc strings of some new faces

* lisp/font-lock.el (font-lock-punctuation-face)
(font-lock-delimiter-face): Doc fix.

2 years ago; * lisp/elide-head.el (elide-head): Doc fix to silence checkdoc.
Stefan Kangas [Tue, 27 Dec 2022 16:28:08 +0000 (17:28 +0100)]
; * lisp/elide-head.el (elide-head): Doc fix to silence checkdoc.

2 years ago; * lisp/htmlfontify.el (hfy-text-p): Fix whitespace.
Eli Zaretskii [Tue, 27 Dec 2022 14:10:42 +0000 (16:10 +0200)]
; * lisp/htmlfontify.el (hfy-text-p): Fix whitespace.

2 years agoFix htmlfontify.el command injection vulnerability.
Xi Lu [Sat, 24 Dec 2022 08:28:54 +0000 (16:28 +0800)]
Fix htmlfontify.el command injection vulnerability.

* lisp/htmlfontify.el (hfy-text-p): Fix command injection
vulnerability.  (Bug#60295)

2 years agoImprove support for Scheme R6RS and R7RS libraries (bug#54704)
Rudolf Adamkovič [Sat, 24 Dec 2022 00:00:32 +0000 (01:00 +0100)]
Improve support for Scheme R6RS and R7RS libraries (bug#54704)

* etc/NEWS (Scheme mode): Document improved file-type auto-detection
and Imenu support for R6RS and R7RS Scheme libraries.
* lisp/files.el (auto-mode-alist): Associate the '.sls' (R6RS Scheme
Library Source) and '.sld' (R7RS Scheme Library Definition) file name
extensions with the Scheme mode.
* lisp/progmodes/scheme.el (scheme-imenu-generic-expression): Make
Imenu recognize the members nested (and so indented) inside of
'library' (R6RS) or 'define-library' (R7RS) forms.

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.