for this Emacs instance.
@end defun
-For using tree-sitter features in font-lock and indentation,
-@pxref{Parser-based Font Lock}, @pxref{Parser-based Indentation}.
+@defvar treesit-max-buffer-size
+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
load a language definition and create a parser with it. Next, we can
buffer. As we edit the buffer, the associated parser is automatically
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
If users want to turn off tree-sitter for buffers larger than a
particular size (because tree-sitter consumes memory ~10 times the
"Tree-sitter is an incremental parser."
:group 'tools)
-(defcustom treesit-disabled-modes nil
- "A list of major-modes for which tree-sitter support is disabled."
- :type '(list symbol))
-
-(defcustom treesit-maximum-size (* 4 1024 1024)
+(defcustom treesit-max-buffer-size (* 4 1024 1024)
"Maximum buffer size for enabling tree-sitter parsing."
:type 'integer)
"Return non-nil if tree-sitter features are available."
(fboundp 'treesit-parser-create))
-(defun treesit-should-enable-p (&optional mode)
- "Return non-nil if MODE should activate tree-sitter support.
-MODE defaults to the value of `major-mode'. The result depends
-on the value of `treesit-disabled-modes',
-`treesit-maximum-size', and of course, whether tree-sitter is
-available on the system at all."
- (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))))
+(defun treesit-can-enable-p ()
+ "Return non-nil if current buffer can activate tree-sitter.
+Currently this function checks whether tree-sitter is available
+and the buffer size."
+ (and (treesit-available-p)
+ (< (buffer-size) treesit-maximum-size)))
;;; Parser API supplement