Remove treesit-disabled-modes and change treesit-should-enable-p
Per emacs-devel discussion, remove treesit-disabled-modes and let major modes to provide tree-sitter switches. I also decided to add treesit-max-buffer-size to elisp manual despite it being a user option. Though we should still add it to the user manual. * doc/lispref/parsing.texi (Parsing Program Source): Update manual to remove entries for treesit-diabled-modes and add treesit-max-buffer-size. Also update treesit-should-enable-p. * lisp/treesit.el (treesit-disabled-modes): Remove user option. (treesit-maximum-size): Change to treesit-max-buffer-size. (treesit-should-enable-p): Change to treesit-can-enable-p and remove checks of treesit-disabled-modes.
This commit is contained in:
parent
31ad906bd0
commit
a23aec59b3
2 changed files with 22 additions and 29 deletions
|
@ -26,8 +26,21 @@ This function returns non-nil if tree-sitter features are available
|
||||||
for this Emacs instance.
|
for this Emacs instance.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
For using tree-sitter features in font-lock and indentation,
|
@defvar treesit-max-buffer-size
|
||||||
@pxref{Parser-based Font Lock}, @pxref{Parser-based Indentation}.
|
This variable contains the maximum size of buffers in which
|
||||||
|
tree-sitter can be activated. Major modes should check this value
|
||||||
|
when deciding whether to enable tree-sitter features.
|
||||||
|
@end defvar
|
||||||
|
|
||||||
|
@defun treesit-can-enable-p
|
||||||
|
This function checks whether the current buffer is suitable for
|
||||||
|
activating tree-sitter features. It basically checks
|
||||||
|
@code{treesit-available-p} and @var{treesit-max-buffer-size}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
For tree-sitter integration with existing Emacs features,
|
||||||
|
@pxref{Parser-based Font Lock}, @ref{Parser-based Indentation}, and
|
||||||
|
@ref{List Motion}.
|
||||||
|
|
||||||
To access the syntax tree of the text in a buffer, we need to first
|
To access the syntax tree of the text in a buffer, we need to first
|
||||||
load a language definition and create a parser with it. Next, we can
|
load a language definition and create a parser with it. Next, we can
|
||||||
|
@ -321,13 +334,6 @@ parser. In Emacs, each tree-sitter parser is associated with a
|
||||||
buffer. As we edit the buffer, the associated parser is automatically
|
buffer. As we edit the buffer, the associated parser is automatically
|
||||||
kept up-to-date.
|
kept up-to-date.
|
||||||
|
|
||||||
@defvar treesit-disabled-modes
|
|
||||||
Before creating a parser, it is perhaps good to check whether we
|
|
||||||
should use tree-sitter at all. Sometimes a user don't want to use
|
|
||||||
tree-sitter features for a major mode. To turn-off tree-sitter for a
|
|
||||||
mode, they add that mode to this variable.
|
|
||||||
@end defvar
|
|
||||||
|
|
||||||
@defvar treesit-maximum-size
|
@defvar treesit-maximum-size
|
||||||
If users want to turn off tree-sitter for buffers larger than a
|
If users want to turn off tree-sitter for buffers larger than a
|
||||||
particular size (because tree-sitter consumes memory ~10 times the
|
particular size (because tree-sitter consumes memory ~10 times the
|
||||||
|
|
|
@ -35,11 +35,7 @@
|
||||||
"Tree-sitter is an incremental parser."
|
"Tree-sitter is an incremental parser."
|
||||||
:group 'tools)
|
:group 'tools)
|
||||||
|
|
||||||
(defcustom treesit-disabled-modes nil
|
(defcustom treesit-max-buffer-size (* 4 1024 1024)
|
||||||
"A list of major-modes for which tree-sitter support is disabled."
|
|
||||||
:type '(list symbol))
|
|
||||||
|
|
||||||
(defcustom treesit-maximum-size (* 4 1024 1024)
|
|
||||||
"Maximum buffer size for enabling tree-sitter parsing."
|
"Maximum buffer size for enabling tree-sitter parsing."
|
||||||
:type 'integer)
|
:type 'integer)
|
||||||
|
|
||||||
|
@ -47,21 +43,12 @@
|
||||||
"Return non-nil if tree-sitter features are available."
|
"Return non-nil if tree-sitter features are available."
|
||||||
(fboundp 'treesit-parser-create))
|
(fboundp 'treesit-parser-create))
|
||||||
|
|
||||||
(defun treesit-should-enable-p (&optional mode)
|
(defun treesit-can-enable-p ()
|
||||||
"Return non-nil if MODE should activate tree-sitter support.
|
"Return non-nil if current buffer can activate tree-sitter.
|
||||||
MODE defaults to the value of `major-mode'. The result depends
|
Currently this function checks whether tree-sitter is available
|
||||||
on the value of `treesit-disabled-modes',
|
and the buffer size."
|
||||||
`treesit-maximum-size', and of course, whether tree-sitter is
|
(and (treesit-available-p)
|
||||||
available on the system at all."
|
(< (buffer-size) treesit-maximum-size)))
|
||||||
(let* ((mode (or mode major-mode))
|
|
||||||
(disabled (cl-loop
|
|
||||||
for disabled-mode in treesit-disabled-modes
|
|
||||||
if (provided-mode-derived-p mode disabled-mode)
|
|
||||||
return t
|
|
||||||
finally return nil)))
|
|
||||||
(and (treesit-available-p)
|
|
||||||
(not disabled)
|
|
||||||
(< (buffer-size) treesit-maximum-size))))
|
|
||||||
|
|
||||||
;;; Parser API supplement
|
;;; Parser API supplement
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue