Jaehwang Jung
4fd852b8cb
perf(treesitter): cache fold query ( #24222 )
...
perf(treesitter): cache vim.treesitter.query.get
Problem:
vim.treesitter.query.get searches and reads query files every time it's
called, if user hasn't overridden the query. So this can incur slowdown
when called frequently.
This can happen when using treesitter foldexpr. For example, when using
`:h :range!` in markdown file to format fenced codeblock, on_changedtree
in _fold.lua is triggered many times despite that the tree doesn't have
syntactic changes (might be a bug in LanguageTree). (Incidentally, the
resulting fold is incorrect due to a bug in `:h range!`.) on_changedtree
calls vim.treesitter.query.get for each tree changes. In addition, it
may request folds queries for injected languages without fold queries,
such as markdown_inline.
Solution:
* Cache the result of vim.treesitter.query.get.
* If query file was not found, fail quickly at later calls.
2023-07-02 16:44:21 +01:00
Christian Clason
11844dde81
feat(treesitter): bundle markdown parser and queries ( #22481 )
...
* bundle split Markdown parser from https://github.com/MDeiml/tree-sitter-markdown
* add queries from https://github.com/nvim-treesitter/nvim-treesitter/tree/main
* upstream `#trim!` and `#inject-language!` directives
Co-authored-by: dundargoc <gocdundar@gmail.com >
2023-07-01 11:08:06 +02:00
Jaehwang Jung
e85e7fc7bc
fix(treesitter): handle empty region when logging ( #24173 )
2023-06-27 19:05:44 +01:00
Jaehwang Jung
c7e7f1d4b4
fix(treesitter): make foldexpr work without highlighting ( #24167 )
...
Problem: Treesitter fold is not updated if treesitter hightlight is not
active. More precisely, updating folds requires `LanguageTree:parse()`.
Solution: Call `parse()` before computing folds and compute folds when
lines are added/removed.
This doesn't guarantee correctness of the folds, because some changes
that don't add/remove line won't update the folds even if they should
(e.g. adding pair of braces). But it is good enough for most cases,
while not introducing big overhead.
Also, if highlighting is active, it is likely that
`TSHighlighter._on_buf` already ran `parse()` (or vice versa).
2023-06-27 19:05:09 +01:00
Santos Gallegos
8c9dab3e0d
fix(treesitter): use vim.highlight.priorities instead of hardcoded 100 ( #24052 )
...
Problem: Treesitter highlighting base priority cannot be customized.
Solution: Use `vim.highlight.priorities.treesitter` instead of hard-coded value.
2023-06-18 16:42:17 +02:00
Stephan Seitz
ceb37ff1d8
refactor(treesitter): use npcall in _query_linter.lua #23985
2023-06-11 14:46:22 -07:00
Justin M. Keyes
c48b1421af
refactor!: rename "playground" => "dev" #23919
...
Problem:
"playground" is new jargon that overlaps with existing concepts:
"dev" (`:help dev`) and "view" (also "scratch" `:help scratch-buffer`) .
Solution:
We should consistently use "dev" as the namespace for where "developer
tools" live. For purposes of a "throwaway sandbox object", we can use
the name "view".
- Rename `TSPlayground` => `TSView`
- Rename `playground.lua` => `dev.lua`
2023-06-06 08:23:20 -07:00
Lewis Russell
2db719f6c2
feat(lua): rename vim.loop -> vim.uv ( #22846 )
2023-06-03 12:06:00 +02:00
Matthieu Coudron
44d4ae448d
fix: function was renamed ( #23772 )
2023-05-26 21:51:18 +02:00
Lewis Russell
ef64e225f6
fix(treesitter): allow foldexpr without highlights ( #23672 )
...
Ref nvim-treesitter/nvim-treesitter#4748
2023-05-18 10:52:01 +01:00
Lewis Russell
189fb62032
feat(treesitter): improved logging ( #23638 )
...
- Add bindings to Treesitter ts_parser_set_logger and ts_parser_logger
- Add logfile with path STDPATH('log')/treesitter.c
- Rework existing LanguageTree loggin to use logfile
- Begin implementing log levels for vim.g.__ts_debug
2023-05-17 11:42:18 +01:00
Lewis Russell
6b19170d44
fix(treesitter): correctly calculate bytes for text sources ( #23655 )
...
Fixes #20419
2023-05-16 16:41:47 +01:00
Christian Clason
9ff59517cb
fix(treesitter): update c queries
2023-05-15 14:13:42 +02:00
dundargoc
08991b0782
docs: small fixes
...
Co-authored-by: Christian Clason <c.clason@uni-graz.at >
Co-authored-by: Gregory Anders <greg@gpanders.com >
Co-authored-by: HiPhish <hiphish@posteo.de >
Co-authored-by: Julio B <julio.bacel@gmail.com >
Co-authored-by: T727 <74924917+T-727@users.noreply.github.com >
Co-authored-by: camoz <camoz@users.noreply.github.com >
Co-authored-by: champignoom <66909116+champignoom@users.noreply.github.com >
2023-05-13 21:33:22 +02:00
Christian Clason
32dc484ec9
fix(treesitter): support subfiletypes in get_lang ( #23605 )
2023-05-13 13:29:11 +02:00
Lewis Russell
af040c3a07
feat(treesitter): add support for setting query depths
2023-05-11 11:13:32 +01:00
Lewis Russell
3ba930844c
perf(treesitter): insert/remove items efficiently ( #23443 )
2023-05-02 22:27:14 +01:00
Lewis Russell
fba18a3b62
fix(treesitter): do not calc folds on unloaded buffers
...
Fixes #23423
2023-05-02 10:07:18 +01:00
Lewis Russell
26cc946226
fix(treesitter): foldexpr tweaks
...
Some small general fixes found working on developing async parsing.
2023-05-01 10:32:29 +01:00
Lewis Russell
19a793545f
fix(treesitter): redraw added/removed injections properly ( #23287 )
...
When injections are added or removed make sure to:
- invoke 'changedtree' callbacks for when new trees are added.
- invoke 'changedtree' callbacks for when trees are invalidated
- redraw regions when languagetree children are removed
2023-04-30 17:11:38 +02:00
Christian Clason
668f16bac7
feat(treesitter): upstream query omnifunc from playground ( #23394 )
...
and set by default in `ftplugin/query.lua`
2023-04-30 11:01:54 +02:00
Stephan Seitz
c194acbfc4
feat(treesitter): add query_linter from nvim-treesitter/playground ( #22784 )
...
Co-authored-by: clason <clason@users.noreply.github.com >
Co-authored-by: lewis6991 <lewis6991@users.noreply.github.com >
2023-04-29 18:22:26 +02:00
William
ab2811746e
fix(treesitter playground): fix the wrong range of a node displayed i… ( #23209 )
...
fix(treesitter playground): wrong range of a node displayed in playground
The call parameters order of the function `get_range_str` is flipped for the last two arguments compared to the declaration.
2023-04-20 07:42:49 -06:00
dundargoc
c08b030761
refactor: deprecate checkhealth functions
...
The following functions are deprecated and will be removed in
Nvim v0.11:
- health#report_start()
- health#report_info()
- health#report_ok()
- health#report_warn()
- health#report_error()
- vim.health.report_start()
- vim.health.report_info()
- vim.health.report_ok()
- vim.health.report_warn()
- vim.health.report_error()
Users should instead use these:
- vim.health.start()
- vim.health.info()
- vim.health.ok()
- vim.health.warn()
- vim.health.error()
2023-04-15 23:40:48 +02:00
Scott Ming
ccc0980f86
fix(treesitter): Use the correct replacement args for #gsub! directive ( #23015 )
...
fix(treesitter): use the correct replacement args for #gsub! directive
2023-04-11 10:26:03 +02:00
Lewis Russell
e29bc03c04
fix(treesitter): do not track ranges of the root tree ( #22912 )
...
Fixes #22911
2023-04-06 15:16:44 +01:00
Lewis Russell
34ac75b329
refactor: rename local API alias from a to api
...
Problem:
Codebase inconsistently binds vim.api onto a or api.
Solution:
Use api everywhere. a as an identifier is too short to have at the
module level.
2023-04-05 17:19:53 +01:00
dundargoc
e826d09c18
fix(windows): consistent normalization in fs.find
...
vim.fs.find(".luacheckrc")
```
c:\\projects\\neovim/.luacheckrc # before
c:/projects/neovim/.luacheckrc # after
```
Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com >
2023-04-04 23:37:46 +02:00
Lewis Russell
b1de4820b7
refactor(treesitter): move inspect_tree impl
2023-04-04 20:47:15 +01:00
dundargoc
a5c572bd44
docs: fix typos
...
Co-authored-by: Gregory Anders <greg@gpanders.com >
Co-authored-by: Raphael <glephunter@gmail.com >
Co-authored-by: C.D. MacEachern <craig.daniel.maceachern@gmail.com >
Co-authored-by: himanoa <matsunoappy@gmail.com >
2023-04-04 19:07:33 +02:00
Lewis Russell
090ade4af6
refactor(treesitter): delegate region calculation to treesitter ( #22576 )
2023-04-04 13:58:16 +02:00
danilax999
469e6bfc56
fix(treesitter): use capture metadata range if exists
...
use `treesitter.get_range` instead of inline expression
2023-04-04 12:26:21 +01:00
Sizhe Zhao
6a4ebf894f
fix(health): stop using deprecated ts.language.inspect_language() ( #22850 )
2023-04-01 15:47:20 +02:00
Christian Clason
d7f7450017
refactor(treesitter)!: rename help parser to vimdoc
2023-04-01 15:07:16 +02:00
Lewis Russell
61e54f2636
feat: add vim.treesitter.language.get_filetypes()
( #22643 )
2023-03-30 10:26:28 +01:00
Lewis Russell
ac7397f4a0
fix(treesitter): add missing deprecate
2023-03-24 16:31:30 +00:00
Lewis Russell
cbbf8bd666
feat(treesitter)!: deprecate top level indexes to modules ( #22761 )
...
The following top level Treesitter functions have been moved:
- vim.treesitter.inspect_language() -> vim.treesitter.language.inspect()
- vim.treesitter.get_query_files() -> vim.treesitter.query.get_files()
- vim.treesitter.set_query() -> vim.treesitter.query.set()
- vim.treesitter.query.set_query() -> vim.treesitter.query.set()
- vim.treesitter.get_query() -> vim.treesitter.query.get()
- vim.treesitter.query.get_query() -> vim.treesitter.query.get()
- vim.treesitter.parse_query() -> vim.treesitter.query.parse()
- vim.treesitter.query.parse_query() -> vim.treesitter.query.parse()
- vim.treesitter.add_predicate() -> vim.treesitter.query.add_predicate()
- vim.treesitter.add_directive() -> vim.treesitter.query.add_directive()
- vim.treesitter.list_predicates() -> vim.treesitter.query.list_predicates()
- vim.treesitter.list_directives() -> vim.treesitter.query.list_directives()
- vim.treesitter.query.get_range() -> vim.treesitter.get_range()
- vim.treesitter.query.get_node_text() -> vim.treesitter.get_node_text()
2023-03-24 14:43:14 +00:00
Lewis Russell
4e4203f71b
fix(treesitter): annotations
...
- Begin using `@package` in place of `@private` for functions
that are accessed internally but outside their defined class.
- Rename Node -> TSP.Node
2023-03-23 11:23:51 +00:00
Lewis Russell
35799a6629
fix(treesitter): foldexpr ( #22652 )
...
The ranges passed to foldinfo.remove_range were in the wrong order.
2023-03-13 10:44:43 +00:00
Lewis Russell
b55b8ddf81
Merge pull request #22613 from lewis6991/feat/tsqueryutil
2023-03-11 17:13:20 +00:00
Lewis Russell
58bbc2ea0b
refactor(treesitter): add Range type aliase for Range4|Range6
2023-03-11 16:38:18 +00:00
Lewis Russell
9d70fe062c
feat(treesitter)!: consolidate query util functions
...
- And address more type errors.
- Removed the `concat` option from `get_node_text` since it was applied
inconsistently and made typing awkward.
2023-03-10 16:35:06 +00:00
Lewis Russell
762a06c6bc
feat!(treesitter): do not return changes from LanguageTree:parse()
...
Never return the changes an only notify them using the `on_changedtree`
callback.
It is not guaranteed for a plugin that it'll be the first one to call
`tree:parse()` and thus get the changes.
Closes #19915
2023-03-10 16:16:49 +00:00
Lewis Russell
46b73bf22c
perf(treesitter): more efficient foldexpr
2023-03-10 11:51:33 +00:00
Lewis Russell
adfa9de8eb
fix(treesitter): do not error on empty filetype
...
Ignore instead
2023-03-10 10:41:19 +00:00
Lewis Russell
ae263aff95
refactor(treesitter): use byte ranges from treesitter ( #22589 )
2023-03-09 16:09:39 +00:00
Lewis Russell
b9f19d3e28
Revert "refactor(treesitter): delegate region calculation to treesitter" ( #22575 )
...
Revert "refactor(treesitter): delegate region calculation to treesitter (#22553 )"
This reverts commit 276b647fdb
.
2023-03-08 17:59:45 +00:00
Lewis Russell
276b647fdb
refactor(treesitter): delegate region calculation to treesitter ( #22553 )
2023-03-08 17:22:28 +00:00
Lewis Russell
ddd257f753
feat(treesitter): use upstream format for injection queries
2023-03-08 11:03:11 +00:00
Lewis Russell
f9a46391ab
refactor(treesitter): simplify some range functions
2023-03-06 10:57:14 +00:00