1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-14 23:40:39 -08:00
Commit graph

1099 commits

Author SHA1 Message Date
Stefan Kangas
0805972e4c Merge from origin/emacs-29
b3de81a6ee MH-E: handle removal of mhparam libdir from nmh 1.8
d63e1a8951 Use point-min to anchor top-level constructs (bug#60602)
3479333778 * lisp/org/ob-ruby.el: Fix outdated comments.
472f142598 ; ruby-ts-mode: Add a Version tag
0cf053648a ; ruby-ts-mode: Update font-lock features list in Commentary
67ee627c38 (project-try-vc): Add string-start and string-end anchors...
06953fc8e1 Make `keymap-set-after' work for menus
dcd59457b4 Use `key-parse' in `keymap-lookup'
8904a26a9d Improve `keymap-set-after' documentation
c7e02eaa3d Handle after arg correctly in `keymap-set-after'
628b624176 Don't load erc-goodies atop erc.el
40cf494b7c ; * etc/NEWS: Fix typos.
6b2f85caa6 Make tree-sitter based modes optional
b56cf28b32 ; (ruby-ts--predefined-variables): Make it a little shorter
d94dc606a0 ruby-ts-mode: Claw back half of the performance drop from...
d0d3451409 (ruby-ts-mode): Rename 'builtin-functions' to 'builtin-fu...
d66ac5285f ruby-ts-mode: Highlight builtin methods
370b1ac99e ; ruby-ts-mode.el: Add customize-group mention to commentary
7b7b2b9513 Fix c-ts-mode indent (bug#60873)
7ca71d66dc Fix various problems in treesit-explore-mode (bug#60800)
b7d6bb47ee ; * lisp/treesit.el (treesit-font-lock-fontify-region): M...
0c6bfeddb2 ; Update tree-sitter major mode manual
c289786886 ; Add commentary and dostring in c-ts-mode

# Conflicts:
#	etc/NEWS
#	lisp/progmodes/c-ts-mode.el
#	lisp/progmodes/go-ts-mode.el
2023-01-23 01:34:39 +01:00
Robert Pluim
06953fc8e1 Make `keymap-set-after' work for menus
It still doesn't work for an AFTER that's a key, though, since
`key-parse' produces vectors, and keymaps contain integers.

* lisp/keymap.el (keymap-set-after): Only parse AFTER as a key if it's
a string.  For consistency, use `key-parse' on the definition if it's
a string, just like `keymap-set'.
* test/src/keymap-tests.el (keymap-tests--command-3): New dummy command.
(keymap-set-after-menus): New test.  Check that we can insert a menu
item after a specific entry.
2023-01-20 15:14:45 +01:00
Robert Pluim
dcd59457b4 Use key-parse' in keymap-lookup'
It's stricter than `kbd', and doesn't try to do anything with key
sequences that look like macros.

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

# Conflicts:
#	etc/NEWS
2023-01-19 06:30:25 +01:00
Basil L. Contovounesios
bd094207c7 Fix buffer-list-update-hook for indirect buffers
Fmake_indirect_buffer can be told whether to run buffer hooks since
bug#49160, but until now it ran buffer-list-update-hook irrespective
of this.

* src/buffer.c (Fmake_indirect_buffer): Don't run
buffer-list-update-hook when called with a non-nil
INHIBIT-BUFFER-HOOKS argument.
(run_buffer_list_update_hook): Don't special-case NULL argument, as
no such callers remain.

* test/src/buffer-tests.el
(buffer-tests-inhibit-buffer-hooks-indirect): Test whether indirect
buffer hooks are run regardless of whether base buffer hooks are
inhibited.  Check that all three buffer hooks, not just
kill-buffer-query-functions, are inhibited.
2023-01-17 10:38:22 +00:00
Stefan Monnier
4f0459aaf7 Merge from origin/emacs-29
861556c133 Fix minibuffer-completion tests
c0578edc8f ; * doc/misc/eglot.texi (Troubleshooting Eglot): Fix typo...
c6bbf9cc27 Add c-ts-mode tests
a760364f5f Fix c-ts-mode--fill-paragraph
2a2b1d09ac Fix minor issues with 'pp' and related commands
dfb38fb2ee ; Improve documentation of tree-sitter node comparison
e8a89a18b6 ; Fix non-tree-sitter builds
f27a330b99 ; Fix typo in ert-with-temp-file
956889d8ff Equal now recognizes tree-sitter nodes (bug#60659)
8f446c2d39 Fix c-ts-mode comment indentation (bug#60270)
083badc9c1 * lisp/subr.el (while-let): Use if-let, not if-let* (bug#...
9ecebcdded * lisp/simple.el (next-completion): Handle first completi...
cfd2b3504a Fix encoding with 'utf-8-auto'
53b47df822 Report cursor correctly on PGTK when there is a margin

# Conflicts:
#	etc/NEWS
2023-01-14 09:10:45 -05:00
Gregory Heytings
b2fda50178 undo-tests.el: Tests for bug#60467
* test/src/undo-tests.el (undo-test-combine-change-calls-1)
(undo-test-combine-change-calls-2, undo-test-combine-change-calls-3):
New tests.
2023-01-13 17:43:31 -05:00
Eli Zaretskii
cfd2b3504a Fix encoding with 'utf-8-auto'
* src/coding.c (encode_coding_utf_8): Fix encoding with
'utf-8-auto': it should produce BOM, per the documentation of
the :bom attribute.  (Bug#60750)

* lisp/international/mule.el (define-coding-system): Doc fix.

* test/src/coding-tests.el (coding-tests): Use
'with-coding-priority' instead of 'prefer-coding-system', as the
latter has global persistent effect and affects further tests.
2023-01-12 16:36:35 +02:00
Eli Zaretskii
3c55fbd4ad Merge from origin/emacs-29
cae528457c ; Add 2023 to copyright years.
b394359261 Improve documentation of 'isearch-open-overlay-temporary'
ab3210e709 Document 'use-package' in the 2 main manuals

# Conflicts:
#	etc/refcards/ru-refcard.tex
#	lib/explicit_bzero.c
#	m4/explicit_bzero.m4
2023-01-01 05:47:47 -05:00
Eli Zaretskii
cae528457c ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
Mattias Engdegård
c34230f12a ; remove incorrect quoting of condition names 2022-12-30 11:24:31 +01:00
Yuan Fu
eedc9d79ae
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.
2022-12-28 00:32:37 -08:00
Yuan Fu
ba1ddea9da
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.
2022-12-27 17:41:43 -08:00
Mattias Engdegård
2347f37f67 ; * test/src/treesit-tests.el: remove dead store (bytecomp warning) 2022-12-27 11:18:02 +01:00
Yuan Fu
a6d961ae2f
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.
2022-12-26 17:50:14 -08:00
Yuan Fu
835a80dcc4
; Fix tree-sitter defun tests
* test/src/treesit-tests.el (treesit--ert-test-defun-navigation):
Change treesit--navigate-defun to treesit--navigate-thing.
2022-12-26 17:50:14 -08:00
Yuan Fu
5f0286c0af
Switch to use cursor API in treesit.c
ts_node_parent has bugs (bug#60054), using cursor API avoids that.
Tree-sitter's author might remove ts_node_parent in the future, so
might as well switch to use cursors now.  We are basically
reimplementing some of the logic of ts_node_prev_sibling and
ts_node_parent in the sibling helper and cursor helper functions.

See also https://github.com/tree-sitter/tree-sitter/issues/1992

* src/treesit.c (treesit_traverse_sibling_helper)
(treesit_traverse_child_helper)
(treesit_traverse_match_predicate): Reimplemented to use the cursor API.
(treesit_search_dfs)
(treesit_search_forward): Use the new cursor helper functions.
(Ftreesit_search_subtree)
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Use cursors.

* test/src/treesit-tests.el (treesit-search-subtree): New test.
(treesit--ert-search-setup): New macro.
(treesit-search-forward)
(treesit-search-forward-named-only)
(treesit-search-backward)
(treesit-search-backward-named-only)
(treesit-cursor-helper-with-missing-node): New tests.
2022-12-17 15:33:54 -08:00
Stefan Kangas
def51dd645 ; Fix typos 2022-12-13 18:44:41 +01: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
Yuan Fu
a5272e2a7c
; * test/src/treesit-tests.el: Add outline headers. 2022-12-12 21:12:21 -08:00
Yuan Fu
ebef8905b0
Make indirect buffers use tree-sitter parsers of their base buffer
Fix the problem described in bug#59693.

* src/treesit.c (treesit_record_change): Always use the base buffer.
(Ftreesit_parser_create): Always use the base buffer.  Also change the
for loop into FOR_EACH_TAIL (stylistic change).
(Ftreesit_parser_list): Always use the base buffer.

* doc/lispref/parsing.texi (Using Parser): Update manual.
* test/src/treesit-tests.el (treesit-indirect-buffer): New test.
2022-12-09 17:24:08 -08:00
Yuan Fu
d31a253983
Improve parameter checking in tree-sitter functions
* src/treesit.c (treesit_check_position): Extract out new function.
(Ftreesit_node_first_child_for_pos)
(Ftreesit_node_descendant_for_range): Replace code with the new
function.
(Ftreesit_query_capture): Add missing check for node and parser.  Add
check for range for BEG and END.  Move treesit_initialize to the
beginning of the function.

* test/src/treesit-tests.el (treesit-node-api)
(treesit-query-api): Add tests for out-of-range error.
2022-12-07 12:01:37 -08:00
Mattias Engdegård
d2411615e8 * test/src/sqlite-tests.el (sqlite-version): Declare. 2022-12-07 09:21:23 +01:00
Mattias Engdegård
f35dc7058b Add sqlite library version string retrieval function (bug#58766)
* src/sqlite.c (sqlite3_libversion, load_dll_functions):
Make sqlite3_libversion available.
(Fsqlite_version): New.
(syms_of_sqlite): Define sqlite-version.
* doc/lispref/text.texi (Database): Document.
* test/src/sqlite-tests.el (sqlite-returning): `RETURNING` was added
in sqlite 3.35; skip the test for older versions.
2022-11-25 11:03:10 +01:00
Mattias Engdegård
eb02528b70 ; Fix warnings in builds without tree-sitter 2022-11-22 11:06:41 +01:00
Yuan Fu
3f37f6b435
; * test/src/treesit-tests.el (treesit-misc): Remove test.
This test is for treesit--setting-for-mode, which is removed when we
switched from using treesit-settings to using separate major modes.
2022-11-21 13:34:38 -08:00
Yuan Fu
aaeaa310f0
Merge remote-tracking branch 'savannah/master' into feature/tree-sitter 2022-11-21 12:54:35 -08:00
Mattias Engdegård
2450973165 ; * test/src/treesit-tests.el (treesit-misc): Don't fail without ts 2022-11-21 16:53:15 +01:00
Stefan Kangas
16318bfb51 ; Fix typos 2022-11-20 12:59:39 +01:00
Stefan Kangas
ba485eb949 ; Fix typos 2022-11-18 16:02:19 +01:00
Yuan Fu
639821d49a
Allow checking for outdated nodes in tree-sitter
Now you can run (treesit-node-check node 'outdated).

* doc/lispref/parsing.texi (Accessing Node Information): Update
manual.
* src/treesit.c (Ftreesit_node_check): Add new property 'outdated'.
* test/src/treesit-tests.el (treesit-node-check): Add tests.
2022-11-16 14:40:41 -08:00
Eli Zaretskii
0a26b26217 Reduce buffer-tests noisiness even more
* test/src/buffer-tests.el (test-kill-buffer-auto-save-default)
(test-kill-buffer-auto-save-delete-yes)
(test-kill-buffer-auto-save-delete-no)
(test-buffer-modifications, test-restore-buffer-modified-p): Shut
up auto-save messages.  (Bug#59028)
2022-11-16 16:37:23 +02:00
Matt Armstrong
aee4d67b09 Reduce buffer-tests noisiness when run in batch mode.
* test/src/buffer-tests.el (overlay-modification-hooks): Remove noisy
`message' calls and use `ert-info' to log context of test
failures.  (bug#59028)
(overlay-tests-start-recording-modification-hooks): ditto.
2022-11-16 16:34:31 +02:00
Yuan Fu
0d195584f2
; Remove some tree-sitter tests
* test/src/treesit-tests.el (treesit-parser-supplemental): Remove
treesit-set-ranges, and treesit-get-ranges, as these functions are
removed.
2022-11-14 01:23:45 -08:00
Yuan Fu
7e9c2e2952
; * test/src/treesit-tests.el (treesit-node-check): New test. 2022-11-14 00:54:54 -08:00
Yuan Fu
5cd3db73be
Improve treesit-node-at
* doc/lispref/parsing.texi (Retrieving Node): Update manual.
* lisp/treesit.el (treesit-node-at): Change semantic.  It tries to
return the node that a user would expect in various circumstances.
* test/src/treesit-tests.el (treesit-node-at): New test.
2022-11-11 20:04:38 -08:00
Stefan Kangas
6f48b46b03 ; Fix typos 2022-11-11 15:52:37 +01:00
Matt Armstrong
b4db61f580 Rewrite the `kill-buffer-delete-auto-save' tests (bug#59028)
These tests had been annoying to me when run in interactive mode.
They failed to bind `kill-buffer-delete-auto-save' as needed, so they
depended on the user's settings, and they failed to mock out the
"Buffer modified, save?" prompt.

* test/src/buffer-tests.el (test-kill-buffer-auto-save): New helper
function that mocks the two different kinds of prompts that occur when
killing modified buffers that visit a file.  Tests fail if expected
prompts are not issued.
(test-kill-buffer-auto-save-default): Use it, and explicitly bind
`kill-buffer-delete-auto-save' to nil.
(test-kill-buffer-auto-save-delete): Delete it.
(test-kill-buffer-auto-save-delete-yes): New test for the "yes" half
of the old `test-kill-buffer-auto-save-delete'.
(test-kill-buffer-auto-save-delete-yes): Ditto for the "no" half.
2022-11-10 11:53:46 +02:00
Matt Armstrong
23dd27a979 itree.c and buffer-tests.el: Incorporate code review feedback
* src/itree.c: Improve wording in `itree_insert_gap` comment.
* test/src/buffer-tests.el (test-overlay-insert-before-markers-at-start):
Don't rely on (point-min) being 1.
(test-overlay-insert-before-markers-at-end): ditto.
(test-overlay-insert-before-markers-empty): ditto.
2022-11-06 00:05:55 -04:00
Stefan Monnier
6e5ec08551 buffer.c: evaporate overlays in all indirect buffers
This fixes bug#58928.  The patch works by moving the
`evaporate_overlays` check closer to `itree_delete_gap`.

* src/buffer.c (adjust_overlays_for_delete_in_buffer): New function,
integrating the functionality of `evaporate_overlays`.
(adjust_overlays_for_delete): Use it.
(evaporate_overlays): Delete function.

* src/buffer.h (evaporate_overlays): Delete declaration.

* src/insdel.c (adjust_markers_for_replace): Minor optimization.
(adjust_after_replace, replace_range, replace_range_2, del_range_2):
Don't call `evaporate_overlays`.

* test/src/buffer-tests.el (buffer-tests--overlays-indirect-evaporate):
Remove the `:expected-result :failed` attribute.
2022-11-05 17:22:37 -04:00
Matt Armstrong
5c9895fffe Add a test for overlay evaporation across indirect buffers
* test/src/buffer-tests.el (buffer-tests--overlays-indirect-evaporate):
Test evaporation of overlays triggered by deleting text in base
and in indirect buffers.  Test doesn't pass at the moment.
2022-11-05 16:48:55 -04:00
Matt Armstrong
2fc6e715a2 Tweak the overlay related `insert-before-markers' tests
* test/src/buffer-tests.el (test-overlay-insert-before-markers-empty):
Move code down to the other tests related to insertion.  Test all
front/rear insert combinations.  To make the test more clear, at least
to me, hard code all character positions.
(test-overlay-insert-before-markers-at-start): For both front-advance
modes verify that `insert-before-markers' at and overlay's start
advances it.
(test-overlay-insert-before-markers-at-end): For both rear-advance
modes test that `insert-before-markers' at an overlay's end advances
it.
(test-overlay-insert-before-markers-non-empty): Delete, replaced by
the two tests above.
2022-11-05 16:44:06 -04:00
Yuan Fu
d9d66764e2
Revise tree-sitter facility for multi-language buffers
* doc/lispref/parsing.texi (Multiple Languages): Extend and update
manual.
* lisp/treesit.el (treesit-range-functions): Remove variable.
(treesit-range-settings): New variable.
(treesit-range-rules): New function.
(treesit--merge-ranges): New function.
(treesit-update-ranges): Use treesit-range-settings instead of
treesit-range-functions.
(treesit-font-lock-rules): Fix docstring.
(treesit-indent)
(treesit-indent-region): Only update ranges in a region.
* test/src/treesit-tests.el (treesit-range): New test.
2022-11-04 09:39:57 -07:00
Stefan Monnier
ff679e16f8 itree: Reproduce markers's behavior more faithfully (bug#58928)
The most obvious problem was the lack of support for
`insert-before-markers`, but the behavior was also different in a few
other cases.

* src/itree.h (itree_insert_gap):
* src/itree.c (itree_insert_gap): Add `before_markers` arg.
* src/lisp.h (adjust_overlays_for_insert):
* src/buffer.c (adjust_overlays_for_insert): Add `before_markers` arg.

* src/insdel.c (adjust_markers_for_replace, adjust_markers_for_insert)
(adjust_markers_for_delete): Adjust overlays directly from here.
(insert_1_both, insert_from_string_1, insert_from_gap)
(insert_from_buffer_1, adjust_after_replace, replace_range)
(replace_range_2, del_range_2): Don't adjust overlays explicitly here
any more.

* test/src/buffer-tests.el (test-overlay-insert-before-markers-empty)
(test-overlay-insert-before-markers-non-empty): New tests.
2022-11-03 22:44:55 -04:00
Stefan Monnier
8a5678906f src/buffer.c: Fix interaction between overlays & indirect buffers (bug#58928)
* src/buffer.c (adjust_overlays_for_insert)
(adjust_overlays_for_delete): Repeat for all buffers sharing the same text.

* src/itree.c (itree_insert_gap, itree_delete_gap): Allow an empty tree.

* test/src/buffer-tests.el (buffer-tests--overlays-indirect-bug58928):
New test.
2022-11-01 21:39:12 -04:00
Yuan Fu
4552b01d8c
Remove test of treesit-language-at
Because now it just calls a user-supplied function rather than doing
any work by itself.

* test/src/treesit-tests.el (treesit-parser-supplemental): Remove the
test.
2022-10-28 20:17:43 -07:00
Stefan Monnier
71589b101c Merge remote-tracking branch 'origin/feature/noverlay' 2022-10-28 17:44:44 -04:00
Stefan Kangas
092776c7eb ; Update copyright years
* doc/lispref/parsing.texi:
* src/treesit.h:
* test/src/treesit-tests.el: Update copyright years.
2022-10-27 12:15:32 +02:00
Stefan Kangas
db2ed9f333 ; Fix several symbol name typos 2022-10-26 23:04:23 +02:00
Yuan Fu
7c5d434833
New tree-sitter toggle scheme
This version: central variable, everything controlled by
treesit-settings.  Major mode sets up tree-sitter/non-tree-sitter
in a conditional branch, based on the setting.

* lisp/treesit.el (treesit-settings): New option.
(treesit-defun-type-regexp): Change docstring.
(treesit-mode-supported)
(treesit-required-languages)
(treesit--local-variable-backup): Remove variables.
(treesit--backup-local-variable)
(treesit-mode)
(global-treesit-mode--turn-on)
(global-treesit-mode): Remove functions.
(treesit--setting-for-mode): New function.
(treesit-ready-p): New argument MODE, changed REPORT to QUIET, and
LANGUAGEs to LANGUAGE (now it can be a single symbol or a list of
them).
(treesit-major-mode-setup): New function.  Mostly comes from
treesit-mode.

* test/src/treesit-tests.el (treesit-misc): New test.

* lisp/progmodes/python.el (python-mode): Move some setup code into
the conditional branch at the end.

* lisp/progmodes/js.el (js-json-mode)
(js-mode): Move some setup code into the conditional branch at the
end.

* lisp/progmodes/ts-mode.el: Move tree-sitter setup into the
conditional branch.
2022-10-25 14:07:47 -07:00