emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/systemd 2e6309d 002/131: add systemd-mode.el


From: ELPA Syncer
Subject: [nongnu] elpa/systemd 2e6309d 002/131: add systemd-mode.el
Date: Sun, 29 Aug 2021 11:35:04 -0400 (EDT)

branch: elpa/systemd
commit 2e6309d2e2cb02852bec640ceac1610e4d054b7a
Author: Mark Oteiza <mvoteiza@udel.edu>
Commit: Mark Oteiza <mvoteiza@udel.edu>

    add systemd-mode.el
---
 systemd-mode.el | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)

diff --git a/systemd-mode.el b/systemd-mode.el
new file mode 100644
index 0000000..38a82ca
--- /dev/null
+++ b/systemd-mode.el
@@ -0,0 +1,88 @@
+;;; systemd-mode.el --- Major mode for editing systemd units
+
+;; Copyright (C) 2014  Mark Oteiza <mvoteiza@udel.edu>
+
+;; Author: Mark Oteiza <mvoteiza@udel.edu>
+;; Keywords: tools, unix
+
+;; This file is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 3
+;; of the License, or (at your option) any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this file. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(defgroup systemd ()
+  "Major mode for editing systemd units."
+  :group 'tools)
+
+(defcustom systemd-comment-start "#"
+  "String to insert to start a new comment."
+  :group 'systemd
+  :type '(choice (string :tag "Comment sign" "#")
+                 (string :tag "Semicolon" ";")))
+
+(defvar systemd-font-lock-keywords
+  `(
+    ("^\\([#;]\\(.*\\)\\)$"
+     (1 'font-lock-comment-delimiter-face)
+     (2 'font-lock-comment-face))
+    ("\\\\$" 0 'font-lock-warning-face) ; line break
+    ;; sections
+    ("^\\(\\[[[:upper:]][[:alnum:]]+\\]\\)"
+     1 'font-lock-type-face)
+    ;; keys
+    ("^\\([[:upper:]][[:alnum:]]+\\)="
+     1 'font-lock-keyword-face)
+    ;; boolean arguments
+    ("=\\(1\\|yes\\|true\\|on\\|0\\|no\\|false\\|off\\)$"
+     1 'font-lock-constant-face)
+    ;; specifiers
+    ("%[nNpPiIfcrRtuUhsmbHv%]" 0 'font-lock-constant-face)
+    )
+  "Default expressions to highlight in `systemd-mode'. See systemd.unit(5)
+for details on unit file syntax.")
+
+(defvar systemd-mode-syntax-table
+  (let ((table (make-syntax-table)))
+    (modify-syntax-entry ?\" ".   " table)
+    (modify-syntax-entry ?\n ">   " table)
+    (modify-syntax-entry ?\% "\\   " table)
+    table)
+  "Syntax table used in `systemd-mode' buffers.")
+
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.automount\\'" . 
systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.busname\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.mount\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.service\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.socket\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.target\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.timer\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.link\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.netdev\\'" . systemd-mode))
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.network\\'" . systemd-mode))
+
+;;;###autoload
+(define-derived-mode systemd-mode fundamental-mode "Systemd"
+  "Major mode for editing systemd unit files. See
+http://www.freedesktop.org/wiki/Software/systemd/ for more
+information about systemd.  The hook `systemd-mode-hook' is run
+at mode initialization."
+  (set-syntax-table systemd-mode-syntax-table)
+  (setq-local comment-start systemd-comment-start)
+  (setq-local font-lock-defaults '(systemd-font-lock-keywords))
+  (run-mode-hooks 'systemd-mode-hook))
+
+(provide 'systemd-mode)
+
+;;; systemd-mode.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]