1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-19 20:30:29 -08:00
Commit graph

299 commits

Author SHA1 Message Date
Stefan Kangas
419ca81809 Merge from origin/emacs-29
6c00d126e7 Remove remaining mentions of 'eval-current-buffer'
1073e96170 ; * doc/lispref/text.texi (Database): Fix a typo.  (Bug#6...
b1e68a33d8 Update to Org 9.6-61-g63e073f
dad73e4de1 ; Review and fix NEWS and related documentation
72786ae237 ; Restore ARGS argument in c-ts-mode--fontify-declarator
940ab2423c ; Always consider :lisp-dir when locating main file of VC...
9ab98cd42a Add heuristic to locate lisp code in source packages
dda011c78d ; * doc/lispref/parsing.texi (Tree-sitter major modes): F...
d62b634d8f ; * src/process.c (Fprocess_running_child_p): Doc fix.
f6c5b3d635 ; * doc/lispref/parsing.texi: Add a reminder.
e6c49c0454 ; Fix byte-copmiler warning in c-ts-mode--fontify-declarator
4234033a47 ; * lisp/treesit.el: Add some comments.
79584a206b Further generalize treesit-defun functions
a819ca5a93 Generalize treesit-defun functions to "things"
e8b34109ee Reorder optional arguments to 'package-vc-install'
b38e56d8a9 Handle missing dependencies for source packages
7bc7b6b4dd ; Partial revert of f3e7820b
2cec78254e ; * nt/INSTALL.W64: Fix wording.
ecee3bd420 ; Fix recent changes in treesit documentation

# Conflicts:
#	etc/NEWS
2022-12-26 06:30:21 +01:00
Yuan Fu
4234033a47
; * lisp/treesit.el: Add some comments. 2022-12-25 01:11:47 -08:00
Yuan Fu
79584a206b
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.
2022-12-25 01:11:47 -08:00
Yuan Fu
a819ca5a93
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.
2022-12-25 01:11:47 -08:00
Eli Zaretskii
ecee3bd420 ; 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.
2022-12-25 09:29:47 +02:00
Stefan Kangas
48db8b68a8 Merge from origin/emacs-29
c36fe3df17 Fix c-ts-mode imenu defun name (bug#60296)
a24e350170 Fix treesit--children-covering-range-recurse (bug#60301)
fbb4eb919b Support treesit-defun-name in tree-sitter major modes
6253184afc ; * lisp/treesit.el (treesit-defun-at-point): Guard again...
f8e219ebfa Add treesit-defun-name and friends
35c2ca2ca6 Make treesit-node-at/on guess language at point
7f7def2ae6 ; Add treesit-no-parser error
b6a2e1ddf6 * nt/INSTALL.W64: update instructions for setting up W64 ...
265b91d891 Revert "; Bump minimum supported Windows version for MinG...
75155e4586 ; Bump minimum supported Windows version for MinGW64 to W...
677f6c79eb ; Update minimum requirements of MinGW-w64
7723af5e4a ; * lisp/progmodes/c-ts-mode.el: quote literal string in ...
38866510c7 ; * src/xdisp.c (redisplay_internal): Reinstate the FRAME...
a825aa0b13 Fix definition of CNS 11643-15 charset
a42b20dd95 ; * lisp/progmodes/c-ts-mode.el: Add outline section head...
e4e3634539 Improve c-ts-mode block comment indent (bug#60270)
e30621caa2 ; Add treesit_recursion_limit
6a43af5880 Fix block comment indent and filling for c-ts-mode (bug#5...
e492c21e81 Fix treesit_cursor_helper (bug#60267)
4437dbedf7 Fix restart-emacs alarms (Bug#60220)
121a9ff9f6 Fix alternate stack test in configure
84888080ee Add more functions to "string" shortdoc
c90f97d4e5 Make the Contour terminal an alias of xterm-256color
c3fac9465f ; Fix punctuation in last change.
756bb422a4 Correct wrong info in (info)Go to node
a8c3424d28 Fix typo in TUTORIAL.fr (bug#60261)
24cd2f0daf Add some diff-fixup-modifs tests
d32091199a Fix quoted argument in emacsclient-mail.desktop Exec key
286c48137f ert-x: Move window selection logic to its own macro
823c49cea8 ; ert-x: Simplify `ert-with-test-buffer-selected'
38c6abe4d0 ; ert-x: Add test for buffer read-only state
0e39ad6fa5 Fix crash after X error
2022-12-25 06:30:21 +01:00
Yuan Fu
a24e350170
Fix treesit--children-covering-range-recurse (bug#60301)
* lisp/treesit.el (treesit--children-covering-range-recurse): Always
return a list of node.
2022-12-24 18:46:04 -08:00
Yuan Fu
6253184afc
; * lisp/treesit.el (treesit-defun-at-point): Guard against nil. 2022-12-24 18:43:03 -08:00
Yuan Fu
f8e219ebfa
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.
2022-12-24 18:43:03 -08:00
Yuan Fu
35c2ca2ca6
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.
2022-12-24 18:43:03 -08:00
Yuan Fu
7f7def2ae6
; Add treesit-no-parser error
* lisp/treesit.el (treesit-no-parser): New error.
(treesit-buffer-root-node): Use the new error.
2022-12-24 18:43:03 -08:00
Yuan Fu
6a43af5880
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.
2022-12-24 00:33:17 -08:00
Stefan Kangas
99feed933a Merge from origin/emacs-29
0754173c92 ; Fix docstring
014232d384 Eglot: eglot--servers-by-xrefed-file doesn't need to be v...
bbe35c280c Prevent stale servers when using eglot-extend-to-xref
9bf13a3fb9 ; * src/alloc.c (Fmemory_info): Doc fix.
baa33a5c05 * etc/tutorials/TUTORIAL.cn: Fix typos.  (Bug#60221)
98d7f76b45 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
a488a6870a Add alias for removed font-lock function
02e046566e Set beginning/end-of-defun-function in treesit-major-mode...
7dea58b88d Add treesit-defun-at-point and fix c-ts-mode-indent-defun
69123d4aa4 ; Fix treesit--defuns-around
05d8310fb5 Use the new keyword ':repeat' in repeatable keymaps.
2022-12-23 06:30:12 +01:00
Yuan Fu
02e046566e
Set beginning/end-of-defun-function in treesit-major-mode-setup
* lisp/treesit.el (treesit-major-mode-setup): Set them.
2022-12-22 00:42:49 -08:00
Yuan Fu
7dea58b88d
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.
2022-12-22 00:42:49 -08:00
Yuan Fu
69123d4aa4
; Fix treesit--defuns-around
Now it doesn't move point.

* lisp/treesit.el (treesit--defuns-around): Wrap some code with
save-excursion.
2022-12-22 00:42:49 -08:00
Stefan Kangas
05740f05b7 Merge from origin/emacs-29
12b2b8864c Fix empty pairs in js tree-sitter imenu alist (bug#59945)
6d9f367ead ; * lisp/treesit.el (treesit-simple-indent-presets): Fix ...
2022-12-21 06:30:10 +01:00
Yuan Fu
6d9f367ead
; * lisp/treesit.el (treesit-simple-indent-presets): Fix typo. 2022-12-20 20:50:49 -08:00
Stefan Kangas
6c540e38f4 Merge from origin/emacs-29
12e26cc0c1 ; * admin/git-bisect-start: Add mistakenly ommitted commi...
9a751e0a38 ruby-mode: Support endless singleton method definitions too
ce7b7e5af3 Remove comment-start-skip preset in tree-sitter indentati...
c1e015ae32 Fix recent change in tramp-smb.el
cf1b771864 ; * etc/NEWS: Fix typos.
50d18bb6ea Make tramp-archive autoloads robust for older Emacs versions
3941cc29df ; Improve documentation of 'setopt'
6f88de109c ruby-mode: Support endless methods (bug#54702)
91dd893e34 ; * lisp/progmodes/sql.el (sql-product-interactive): Doc ...
138d9dc4cb * lisp/cus-edit.el (setopt--set): Warn instead of rasing ...
d1e0542f33 Allow customising windmove user options with an empty prefix
c2375e7791 Improve and extend admin/git-bisect-start
7cc2313eb0 Make 'rmail-summary-by-thread' faster
88e59b16cb ; Improve documentation of installing tree-sitter and gra...
897f33bf31 Fix the MS-DOS build
660e941235 Avoid crashes in PGTK build due to signal in 'note_mouse_...
0fc5fb2d05 Fix MS-Windows build broken by recent treesit.c changes
5b2e6d04ce Fix wrong capture in typescript-ts-mode (bug#60167)
cb8ccdd267 Add rust-ts-mode (Bug#60136)
9fcf764dd7 Indentation fixes for jsx/tsx (bug#60169)
69f2c71135 Fix treesit-query-validate problem with view-mode
1fc7535546 Use cursor API in treesit-node-parent
5f0286c0af Switch to use cursor API in treesit.c
a275e436df Add treesit_assume_true and treesit_cursor_helper
a54c7a8df0 Remove file-exists-in-trash-p
3e02029642 Update to Org 9.6-49-g47d129
4a8ff671b0 Don’t assume make-directory handler returns nil
44c83b239d Fix copy-directory bug when dest dir exists
bef1edc9ca make-directory now returns t if dir already exists
8a9579ca29 Use make-directory handlers uniformly
627e7e0243 Improve documentation of 'file-exists-p'
c9015ef55f Fix resizing of mini-windows by 'set-minibuffer-message'
5a245bc786 Prevent Abort dialogs from async-compiling jobs on Windows
4d1e4a4893 Fix 'window-max-chars-per-line' when there are no fringes
d65beb820c ; Revert "; * lisp/subr.el (internal--with-narrowing): Si...
1c0b90e5f7 ruby-mode: Recognize instance or global var as first arg ...
3356c0cb16 Fix end-of-defun in ruby-mode

# Conflicts:
#	etc/NEWS
2022-12-19 04:42:19 +01:00
Stefan Kangas
690724f0f1 Merge from origin/emacs-29
67bc96c9d9 Remove treesit-defun-prefer-top-level and friends
4f9bccef55 Add yaml-ts-mode (Bug#60105)
f9cb144d45 Fix indentation in json-ts-mode (bug#60123)
3d348c46e7 ; Handle nil ARG in treesit-beginning/end-of-defun
1a66435dda New input method 'cyrillic-chuvash'
b9227c502d ; Improve wording of 'format' doc string
2022-12-19 04:42:18 +01:00
Yuan Fu
ce7b7e5af3
Remove comment-start-skip preset in tree-sitter indentation engine
Comment indentation should use a adaptive-fill-based indent, rather
than comment-start-skip.

Also remove manual description of removed variables in treesit.el and
add documentation for n-p-gp upon request.

* doc/lispref/modes.texi (Parser-based Indentation)
* lisp/treesit.el (treesit-simple-indent-presets): Add n-p-gp, remove
treesit-comment-start/end, remove comment-start-skip.

* doc/lispref/parsing.texi (Tree-sitter major modes): Remove
treesit-comment-start/end.
2022-12-18 14:48:38 -08:00
Theodor Thornhill
69f2c71135
Fix treesit-query-validate problem with view-mode
* lisp/treesit.el (treesit-query-validate): Move the (view-mode) into
the correct scope.
2022-12-17 15:33:55 -08:00
Yuan Fu
67bc96c9d9
Remove treesit-defun-prefer-top-level and friends
Because they are not used anymore, after the new defun navigation is
installed.

* lisp/treesit.el (treesit-defun-prefer-top-level)
(treesit--defun-maybe-top-level): Remove.
2022-12-16 15:04:32 -08:00
Yuan Fu
3d348c46e7
; Handle nil ARG in treesit-beginning/end-of-defun
* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Handle nil ARG.
2022-12-16 14:53:45 -08:00
Stefan Kangas
03892d4f7c Merge from origin/emacs-29
033071692c ; Fix typos
f4a513344d Add lambda_expression-rule to java-ts-mode (bug#60091)
546aed3543 eglot: Add support for new language server csharp-ls
cb761eb7ac Use the new tree-sitter commands
037407ad95 Add "function" feature to python-ts-mode (bug#59977)
fee2efe1b0 Add go-ts-mode and go-mod-ts-mode (Bug#60025)
e8f7ab67ad Add basic support for hideshow in python-ts-mode (bug#60044)
cac070b23e Add "this" keyword to java-ts-mode (bug#60086)
c8d75046a2 When completing relative project file names, use relative...
3b618d0e3e Avoid segfaults due to invalid selected-window's buffer

# Conflicts:
#	lisp/progmodes/sh-script.el
2022-12-16 08:45:06 +01:00
Stefan Kangas
033071692c ; Fix typos 2022-12-16 08:29:28 +01:00
Yuan Fu
cb761eb7ac
Use the new tree-sitter commands
* lisp/progmodes/c-ts-mode.el (c-ts-mode--defun-valid-p)
(c-ts-mode--defun-skipper): New functions.
(c-ts-base-mode): Setup defun navigation.
* lisp/progmodes/sh-script.el (bash-ts-mode): Setup defun navigation.
* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Change to new implementation, which is
intended to be used as commands.
(treesit-major-mode-setup): Setup remap for beginning/end-of-defun
commands.
2022-12-15 17:44:07 -08:00
Stefan Kangas
fa70076974 Merge from origin/emacs-29
fafcf02c85 Fix syntax tables of tree-sitter modes (bug#59807)
91b8d9b7db ; * admin/notes/tree-sitter/build-module/build.sh: Minor ...
1b0e282a7f ; Comment and stylistic change in treesit.el
489b02d03c * doc/misc/Makefile.in (need_emacsver): Add use-package.
2022-12-15 21:13:13 +01:00
Yuan Fu
1b0e282a7f
; Comment and stylistic change in treesit.el
* lisp/treesit.el (treesit-defun-skipper): Docstring change.
(treesit--navigate-defun): Comment and stylistic change.
2022-12-13 18:04:32 -08:00
Stefan Kangas
8036739c1b Merge from origin/emacs-29
cd5856e403 Fix bug when calling `rgrep` non-interactively
ba4bdd6a25 Adapt Tramp specific tests in eglot-tests.el
1d5c35c8e4 * lisp/textmodes/texinfo.el (texinfo-flymake): Improve do...
a99d0e7e6c Support a function in the BUFFER-LIST arg of list-buffers...
def51dd645 ; Fix typos
4980ed7a6d Don't allow lazy highlight from recursive minibuffers
4ef8b9f544 Improve resetting face attributes when looking for suitab...
c4b8bc90a8 ; Fix typos in doc strings
c45eb13845 ; * lisp/bs.el (bs-attributes-list): Doc fix
d6adaf487d Add lexical-binding to example package header
03ad1a92a2 Add improved tree-sitter navigation
a5272e2a7c ; * test/src/treesit-tests.el: Add outline headers.
489bcacc7c Add cross-reference to flush-lines
0f9e6532b1 Use font-lock-number-face for numeric values in csharp-mode
4bccb7b211 Make treesit-query-validate create a read-only buffer
c0fe6c72ce Improve dockerfile-ts-mode imenu generation (Bug#59979)
631908f701 Add "->" to python--treesit-operators (bug#59968)
5d4274d9b6 ; * admin/notes/tree-sitter/build-module/build.sh: Add -f...
d264b75669 Align C++ access specifiers to their enclosing class/stru...
ca67d988d8 Add cmake-ts-mode
8ec923775d Tweak various ts-mode's indent and fontification (bug#59931)
647b6a8099 Add expression for generic_name in csharp-ts-mode (bug#59...
5b178efd85 ; Adjust eglot test to recent autopep8/pycodestyle
58b8ed8b55 ; Avoid compilation warning on MS-Windows
40c23c11e8 * lisp/outline.el: Fix the value 'insert' of outline-mino...
527eb11de2 * lisp/minibuffer.el (completions-group-separator): Rever...
42d740fb2c ; Skip two eglot tests when typescript is missing
19ef86f775 ; Remove outdated text describing overlays
081bf58300 Skip Eglot rust-analyzer tests if 'cargo' isn't available

# Conflicts:
#	lisp/progmodes/typescript-ts-mode.el
#	lisp/treesit.el
2022-12-14 00:06:29 +01:00
Stefan Kangas
def51dd645 ; Fix typos 2022-12-13 18:44:41 +01:00
Eli Zaretskii
c4b8bc90a8 ; Fix typos in doc strings
* lisp/treesit.el (treesit-defun-tactic)
(treesit-default-defun-skipper): Fix typos in doc strings.
2022-12-13 16:01:13 +02:00
Yuan Fu
03ad1a92a2
Add improved tree-sitter navigation
This new set of functions (and tests) should eliminate
defun-navigation bugs and limitations we currently have.  This commit
doesn't change any existing bahavior: treesit-beginning/end-of-defun
and friends are unchanged.  The plan is to later switch gear and
replace the current functions with the new ones introduced in this
change.

This is a relatively big change, but I've setup a comprehensive test,
and it should fix current bugs, so I think it's ok to put it on the
release branch.

The gist of the new navigation is to use treesit--defuns-around to
find the previous sibling defun, next sibling defun, and the parent
defun, then use this information to move to previous/next
beginning/end of defun in treesit--navigate-defun.

I also added comprehensive testing that tests all four possible
operations (prev-beg, next-beg, prev-end, next-end) starting at all
possible positions (between two sibling defuns, inside a sibling
defun, etc).

* lisp/treesit.el (treesit-defun-type-regexp): Expand definition to
allow (REGEXP . FILTER).  Old functions don't support this, but it
should be fine since we are soon replacing them.

(treesit-defun-tactic)
(treesit-defun-skipper): New variables.

(treesit-default-defun-skipper)
(treesit--defuns-around)
(treesit--top-level-defun)
(treesit--navigate-defun): New functions.

* test/src/treesit-tests.el (treesit--ert-insert-and-parse-marker)
(treesit--ert-collect-positions)
(treesit--ert-test-defun-navigation): New helper functions.

(treesit--ert-defun-navigation-python-program)
(treesit--ert-defun-navigation-js-program)
(treesit--ert-defun-navigation-bash-program)
(treesit--ert-defun-navigation-nested-master): New variables.

(treesit-defun-navigation-nested-1)
(treesit-defun-navigation-nested-2)
(treesit-defun-navigation-nested-3)
(treesit-defun-navigation-top-level): New tests.
2022-12-12 21:17:40 -08:00
Jostein Kjønigsen
4bccb7b211
Make treesit-query-validate create a read-only buffer
* lisp/treesit.el: use view-mode for generated validation buffer.
2022-12-12 15:08:55 -08:00
Stefan Kangas
fcd0b377e0 Merge from origin/emacs-29
06ef030f93 use-package.texi: New section "Manual installation"
f4ce6fa7d3 Revert "Revert "Improve last change to xfaces.c" (05ece1e...
b8d2ec920f Revert "Improve last change to xfaces.c" (05ece1eb8b)
24c8c28ae6 Do not pare arguments unnecessarily.
9c0d7bb73b Add automated tests for Eglot
d3669cfe15 Eglot: allow skipping compile-time warnings about LSP int...
04b7e01885 ; project.el: Bump version.
f2876014ad Add customizale faces for tree-sitter explorer
3e349ee119 Fix error message when installing non-existent package
733cdeabfb Don't use diff-mode buffer as a patch when it's visiting ...
87475f4af2 Fix pcase rx patterns using rx-let bindings (bug#59814)
4893a15631 Fix use-package-defaults defcustom type (bug#59941)
074b7e6f4d ; * lisp/use-package/bind-key.el: Remove ineffective back...
864ed9dfa1 ; * lisp/progmodes/dockerfile-ts-mode.el: use \' instead ...
9f7e5584a4 * lisp/language/indian.el: Improve Brahmi composition rul...
78ad33bb05 ; Minor cleanup of last change in xfaces.c.
2024ade271 ; Improve docs of relaxing face-font attribute match (bug...
2022-12-12 09:05:53 +01:00
Yuan Fu
f2876014ad
Add customizale faces for tree-sitter explorer
* lisp/treesit.el (treesit-explorer-anonymous-node)
(treesit-explorer-field-name): New face.
(treesit--explorer-draw-node): Use the new faces.
(treesit-explore-mode): Change playground to explorer.
2022-12-11 14:51:33 -08:00
Theodor Thornhill
b889eced44 Add prog-fill-reindent-defun (bug#59664)
Introduce a new command that aims to reindent code in a defun, or fill
a paragraph of text.  The command uses treesit.el when available,
otherwise falls back to using syntax-ppss and regexps.  Treesit.el
needs a new variable that is intended to be set by the major modes so
that this and other future functions can know what kind of node we are
looking at.

* doc/emacs/programs.texi: Mention the new command.
* etc/NEWS: Mention the new command.
* lisp/progmodes/c-ts-mode.el (c++-ts-mode): Add regexp for the new
variable.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode): Add regexp for the
new variable.
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Add regexp for the
new variable.
* lisp/progmodes/js.el (js-ts-mode): Add regexp for the new variable.
* list/progmodes/prog-mode.el (prog-mode-map): Bind the new command by
default.
(prog-fill-reindent-defun): New command.
* lisp/progmodes/sh-script.el (bash-ts-mode): Add regexp for the new
variable.
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-base-mode): Add
regexp for the new variable.
* lisp/treesit.el (treesit-text-type-regexp): New variable.
2022-12-11 22:31:31 +02:00
Eli Zaretskii
d3494f1bde Resurrect changes omitted by a recent merge from emacs-29 (bug#59921)
This includes the changes for the following commits:

  670daa8b
  b429e524
  c83c95634e
  6479691cf0
  b710ca62c0
  d31a253983
  a669d5fae5
  f7262b8f81
  fef1755736
  bf81df86e5
  bfc00f1c12
  d2411615e8
  dcf69a1d
2022-12-10 13:22:48 +02:00
Yuan Fu
670daa8b62
Add recursion limit to treesit--children-covering-range-recurse
* lisp/treesit.el (treesit--children-covering-range-recurse): Add
limit.
2022-12-07 16:36:07 -08:00
Yuan Fu
b429e52428
Improve tree-sitter fontification in edge-cases (bug#59738)
* lisp/treesit.el (treesit-font-lock-fontify-region): Use
treesit--children-covering-range-recurse.
2022-12-07 16:04:17 -08:00
Yuan Fu
c26fe45cb8
Fix treesit-query-capture
Before this change Ftreesit_query_capture doesn't convert character
position to byte position for BEG and END parameters.  I observed
fontification issue in css files but couldn't figure out why, now I
know :-)

I decide to keep treesit--font-lock-query-expand-range, since it might
provide a escape hatch for problems we discover in the future, and it
should be very cheap so no downside of keeping it.

* lisp/textmodes/css-mode.el (css-ts-mode): Stop setting
treesit--font-lock-query-expand-range.
* lisp/treesit.el (treesit--font-lock-query-expand-range): Update
docstring.
* src/treesit.c (Ftreesit_query_capture): Convert BEG and END to byte
position.  Also added parentheses wround "beg_byte - visible_beg" in
the call to ts_query_cursor_set_byte_range (i.e., style change).
2022-12-05 19:56:47 -08:00
Yuan Fu
ec00d292ec
Improve treesit-fontify-with-override
This also fixes fontification problem with c-ts-mode--fontify-defun.

Now treesit-fontify-with-override clips the fontification region for
the user, so no need for (max start node-start) shenanigans anymore.
More importantly it doesn't fontify unless the region between
node-start and node-end intersects with the region between start and
end, which fixes the problem with c-ts-mode--fontify-defun.

* lisp/treesit.el (treesit-fontify-with-override): Add optional
parameter BOUND-START and BOUND-END.  Wrap the function body in a
when-form.
* lisp/progmodes/c-ts-mode.el (c-ts-mode--fontify-declarator)
(c-ts-mode--fontify-variable)
(c-ts-mode--fontify-defun)
(c-ts-fontify-error)
* lisp/progmodes/js.el (js--fontify-template-string)
* lisp/progmodes/python.el (python--treesit-fontify-string): Use the
new signature.
2022-12-04 20:03:28 -08:00
Yuan Fu
520a4e12f8
; * lisp/treesit.el (treesit-end-of-defun): Guard against nil value. 2022-12-03 14:49:37 -08:00
Eli Zaretskii
a86ccb5f9d ; Fix recently added treesit documentation
* lisp/treesit.el (treesit-defun-prefer-top-level):
* doc/lispref/positions.texi (List Motion): Fix wording.
2022-12-01 17:25:28 +02:00
Yuan Fu
01e7d4b2a1
Make treesit-defun-prefer-top-level more flexible
* doc/lispref/positions.texi (List Motion): Update manual.
* lisp/treesit.el (treesit-defun-prefer-top-level): Update docstring.
(treesit--defun-maybe-top-level): Change to accept new format.
2022-11-30 16:57:08 -08:00
Yuan Fu
d5dc1dbf7c
Remove treesit-comment-start/end and use comment-start/end-skip
treesit-comment-start/end is unnecessary because of
comment-start/end-skip, so they should be removed.

Cleanup and set comment-start/end-skip for tree-sitter C-like major
modes.

I replaced the [ \t]* part in comment-start-skip with (syntax
whitespace), which is what comment-end-skip uses.  I also added
grouping in comment-start-skip to match that of comment-end-skip.

* lisp/progmodes/c-ts-mode.el (c-ts-mode)
(c++-ts-mode)
* lisp/progmodes/csharp-mode.el (csharp-ts-mode)
* lisp/progmodes/java-ts-mode.el (java-ts-mode)
* lisp/progmodes/js.el (js-ts-mode)
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): Setup
comment-start/end-skip.

* lisp/treesit.el (treesit-comment-start)
(treesit-comment-end): Remove variables.
(treesit-simple-indent-presets): Use comment-start/end-skip instead.
2022-11-27 14:20:56 -08:00
Eli Zaretskii
80dcd78ff1 ; Fix recent documentation changes in treesit.el
* lisp/treesit.el (treesit-font-lock-level)
(treesit-font-lock-recompute-features): Doc fixes.
2022-11-27 10:06:02 +02:00
Yuan Fu
447b9d48d9
Add treesit-font-lock-level
This replaces font-lock-maximum-decoration and allows us to disable
the busiest fontification level by default.

* lisp/treesit.el (treesit-font-lock-level): New variable.
(treesit-font-lock-feature-list)
(treesit-font-lock-settings): Change docstring.
(treesit-font-lock-recompute-features): Use the new variable.
2022-11-26 15:40:24 -08:00
Yuan Fu
73c94d5a9f
; Fix comment-end in treesit-simple-indent-presets
* lisp/treesit.el (treesit-simple-indent-presets): Fix comment-end.
2022-11-25 19:00:22 -08:00
Stefan Kangas
4ee5618c6b ; Remove unused variable treesit-imenu-function
* lisp/treesit.el (treesit-imenu-function): Remove unused
variable.  (Bug#59475)
2022-11-25 08:58:57 +01:00