[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/expand-region 541d971f7c: Tree-sitter support for Emacs
From: |
ELPA Syncer |
Subject: |
[elpa] externals/expand-region 541d971f7c: Tree-sitter support for Emacs 29+ |
Date: |
Thu, 19 Sep 2024 12:58:25 -0400 (EDT) |
branch: externals/expand-region
commit 541d971f7c77ca5c0f66c88bcbfeb0d165883023
Author: Alexander Adolf <c-alpha@users.noreply.github.com>
Commit: Magnar Sveen <magnars@gmail.com>
Tree-sitter support for Emacs 29+
er-basic-expansions.el (er/mark-ts-node): New function for expanding
the region using Tree-sitter parse tree nodes when Tree-sitter is
available and can parse the buffer around point. The new function is
safe to add to the global base value of `er/try-expand-list` since it
leaves the region unchanged when Tree-sitter information is not
available.
---
er-basic-expansions.el | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/er-basic-expansions.el b/er-basic-expansions.el
index 2e771a5a55..08cdc562d1 100644
--- a/er-basic-expansions.el
+++ b/er-basic-expansions.el
@@ -242,5 +242,26 @@ period and marks next symbol."
er/mark-defun)
er/try-expand-list))
+(when (and (>= emacs-major-version 29)
+ (treesit-available-p))
+ (defun er/mark-ts-node ()
+ "Mark tree sitter node around or after point."
+ (interactive)
+ (when (treesit-language-at (point))
+ (let* ((node (if (use-region-p)
+ (treesit-node-on (region-beginning) (region-end))
+ (treesit-node-at (point))))
+ (node-start (treesit-node-start node))
+ (node-end (treesit-node-end node)))
+ ;; when the node fits the region exactly, try its parent node instead
+ (when (and (= (region-beginning) node-start)
+ (= (region-end) node-end))
+ (when-let ((node (treesit-node-parent node)))
+ (setq node-start (treesit-node-start node)
+ node-end (treesit-node-end node))))
+ (goto-char node-start)
+ (set-mark node-end))))
+ (setq er/try-expand-list (append er/try-expand-list '(er/mark-ts-node))))
+
(provide 'er-basic-expansions)
;;; er-basic-expansions.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/expand-region 541d971f7c: Tree-sitter support for Emacs 29+,
ELPA Syncer <=