[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master c31adb4 01/21: Initial commit
From: |
Stefan Monnier |
Subject: |
[elpa] master c31adb4 01/21: Initial commit |
Date: |
Tue, 18 Aug 2015 14:59:00 +0000 |
branch: master
commit c31adb4420a428c34971a9e9a2555244af912f93
Author: Ben Gamari <address@hidden>
Commit: Ben Gamari <address@hidden>
Initial commit
---
dts-mode.el | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 72 insertions(+), 0 deletions(-)
diff --git a/dts-mode.el b/dts-mode.el
new file mode 100644
index 0000000..e46c84b
--- /dev/null
+++ b/dts-mode.el
@@ -0,0 +1,72 @@
+;;; dts-mode.el --- A major emacs mode for editing Devicetree source code
+
+;; Version: 0.1.0
+;; Author: Ben Gamari <address@hidden>
+;; Url: http://github.com/bgamari/dts-mode
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License version 2 as
+;; published by the Free Software Foundation.
+
+(defconst dts-re-ident "[[:word:]_][[:word:][:multibyte:]_,[:digit:]-]*")
+(defun dts-re-word (inner) (concat "\\<" inner "\\>"))
+(defun dts-re-grab (inner) (concat "\\(" inner "\\)"))
+
+(defvar dts-mode-font-lock-keywords
+ `(
+ ;; names like `name: hi {`
+ (,(concat (dts-re-grab dts-re-ident) ":") 1 font-lock-variable-name-face)
+ ;; nodes
+ (,(concat (dts-re-grab dts-re-ident) "\\(@[[:digit:]]+\\)?[[:space:]]*{")
1 font-lock-type-face)
+ ;; assignments
+ (,(concat (dts-re-grab dts-re-ident) "[[:space:]]*=") 1
font-lock-variable-name-face)
+ (,(concat (dts-re-grab dts-re-ident) "[[:space:]]*;") 1
font-lock-variable-name-face)
+ ;; references
+ (,(concat "\\&" (dts-re-grab dts-re-ident)) 1 font-lock-variable-name-face)
+ )
+ )
+
+(defvar dts-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ (modify-syntax-entry ?< "(" table)
+ (modify-syntax-entry ?> ")" table)
+
+ (modify-syntax-entry ?& "." table)
+ (modify-syntax-entry ?| "." table)
+ (modify-syntax-entry ?& "." table)
+ (modify-syntax-entry ?~ "." table)
+
+ ;; _ and , are both word characters
+ (modify-syntax-entry ?, "_" table)
+ (modify-syntax-entry ?_ "w" table)
+
+ ;; Strings
+ (modify-syntax-entry ?\" "\"" table)
+ (modify-syntax-entry ?\\ "\\" table)
+
+ ;; Comments
+ (modify-syntax-entry ?/ ". 124b" table)
+ (modify-syntax-entry ?* ". 23" table)
+ (modify-syntax-entry ?\n "> b" table)
+ (modify-syntax-entry ?\^m "> b" table)
+
+ table))
+
+(define-derived-mode dts-mode prog-mode "Devicetree"
+ "Major mode for editing Devicetrees"
+ :group 'dts-mode
+ :syntax-table dts-mode-syntax-table
+
+ ;; Fonts
+ (setq-local font-lock-defaults '(dts-mode-font-lock-keywords nil nil nil
nil))
+
+ (setq-local comment-start "/* ")
+ (setq-local comment-end " */")
+ (setq-local indent-tabs-mode nil)
+ (setq-local comment-multi-line t)
+)
+
+(provide 'dts-mode)
+
+(add-to-list 'auto-mode-alist '("\\.dts\\'" . dts-mode))
+(add-to-list 'auto-mode-alist '("\\.dtsi\\'" . dts-mode))
- [elpa] master updated (8acc296 -> 72e1086), Stefan Monnier, 2015/08/18
- [elpa] master ab852b2 02/21: Add README, Stefan Monnier, 2015/08/18
- [elpa] master c31adb4 01/21: Initial commit,
Stefan Monnier <=
- [elpa] master 4f50e89 04/21: Proper em-dash, Stefan Monnier, 2015/08/18
- [elpa] master 872d58f 05/21: Addresses are hex digits, not decimal, Stefan Monnier, 2015/08/18
- [elpa] master a303f72 07/21: Update README.mkd, Stefan Monnier, 2015/08/18
- [elpa] master 28154cf 08/21: Update README.mkd, Stefan Monnier, 2015/08/18
- [elpa] master 20043ee 09/21: Add ends here, Stefan Monnier, 2015/08/18
- [elpa] master 41ed3b6 14/21: add indentation support, Stefan Monnier, 2015/08/18
- [elpa] master c3624e9 06/21: Update README.mkd, Stefan Monnier, 2015/08/18
- [elpa] master 90c6ac3 03/21: More readme, Stefan Monnier, 2015/08/18
- [elpa] master 72e1086 21/21: packages/dts-mode: New major mode, Stefan Monnier, 2015/08/18
- [elpa] master 42ed276 18/21: Spell Device Tree with a space, Stefan Monnier, 2015/08/18