[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/devicetree-ts-mode bf3a235f5d 02/11: Add imenu support.
From: |
ELPA Syncer |
Subject: |
[elpa] externals/devicetree-ts-mode bf3a235f5d 02/11: Add imenu support. |
Date: |
Tue, 16 Jan 2024 03:58:27 -0500 (EST) |
branch: externals/devicetree-ts-mode
commit bf3a235f5ddb04ef7de1e97a0e46e2e5f02e5e5a
Author: Aleksandr Vityazev <avityazew@gmail.com>
Commit: Aleksandr Vityazev <avityazew@gmail.com>
Add imenu support.
---
devicetree-ts-mode.el | 32 +++++++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/devicetree-ts-mode.el b/devicetree-ts-mode.el
index 3b6444c61c..db053323ba 100644
--- a/devicetree-ts-mode.el
+++ b/devicetree-ts-mode.el
@@ -118,6 +118,26 @@
'((ERROR) @font-lock-warning-face))
"Tree-sitter font-lock settings.")
+(defun devicetree-ts-mode--node-address (node)
+ "Return unit addresses for NODE concanated with @."
+ (mapconcat (lambda (children)
+ (if (string-equal (treesit-node-field-name children)
+ "address")
+ (treesit-node-text children t)
+ ""))
+ (treesit-node-children node)
+ ""))
+
+(defun devicetree-ts--mode--name-function (node)
+ "Return name of NODE to use for in imenu."
+ (let ((name (treesit-node-child-by-field-name node "name"))
+ (address (treesit-node-child-by-field-name node "address")))
+ (if address
+ (concat (treesit-node-text name t)
+ (devicetree-ts-mode--node-address node))
+ (treesit-node-text name t))))
+
+
;;;###autoload
(define-derived-mode devicetree-ts-mode prog-mode "DTS"
"Major mode for editing devicetree, powered by tree-sitter."
@@ -132,18 +152,24 @@
(setq-local comment-end " */")
;; Imenu.
- ;; (setq-local imenu-create-index-function
- ;; #'devicetree-ts-mode--imenu)
+ (setq-local treesit-simple-imenu-settings
+ `((nil "\\`node\\'"
+ nil devicetree-ts--mode--name-function)))
(setq-local which-func-functions nil)
;; Indent.
;; (setq-local treesit-simple-indent-rules
;; devicetree-ts-mode--indent-rules)
+ ;; (setq-local indent-tabs-mode t)
+
+ ;; Electric
+ (setq-local electric-indent-chars
+ (append "{}<>[]" electric-indent-chars))
;; Navigation
(setq-local treesit-thing-settings
`((devicetree
- (sexp (not ,(rx (or "{" "}" "<" ">" "(" ")" "," ";")))))))
+ (sexp (not ,(rx (or "{" "}" "<" ">" "[" "]" "," ";")))))))
;; Font-lock.
(setq-local treesit-font-lock-settings
- [elpa] branch externals/devicetree-ts-mode created (now bc07c11245), ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode bf3a235f5d 02/11: Add imenu support.,
ELPA Syncer <=
- [elpa] externals/devicetree-ts-mode 2bbac87f33 04/11: Add README, update guix.scm., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 8d6bd50276 07/11: Remove duplication in devicetree-ts-mode--indent-rules., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 8a4e9b11fc 10/11: Enhance README, update headers for ELPA., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 36305b7dcf 06/11: Change indentation for integer_cells., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode fecea965dc 03/11: Add indent rules., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 228527f661 08/11: Enhance devicetree-ts--mode--name-function., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 4fec42c9ae 09/11: Update font-lock settings., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode b22c92ed8e 05/11: Require c-ts-common., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode 5343ac48ec 01/11: Initial commit., ELPA Syncer, 2024/01/16
- [elpa] externals/devicetree-ts-mode bc07c11245 11/11: Version 0.3, ELPA Syncer, 2024/01/16