aboutsummaryrefslogtreecommitdiff
path: root/tw/home/files/emacs-packages/environmentd-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'tw/home/files/emacs-packages/environmentd-mode.el')
-rw-r--r--tw/home/files/emacs-packages/environmentd-mode.el46
1 files changed, 46 insertions, 0 deletions
diff --git a/tw/home/files/emacs-packages/environmentd-mode.el b/tw/home/files/emacs-packages/environmentd-mode.el
new file mode 100644
index 00000000..4bb8812e
--- /dev/null
+++ b/tw/home/files/emacs-packages/environmentd-mode.el
@@ -0,0 +1,46 @@
+;;; environmentd-mode.el --- Major mode for environment.d(5) files.
+
+;;; Commentary:
+
+;; This major mode font-locks files including /etc/environment and
+;; ~/.config/environment.d/*.conf. Their format is specified by the
+;; environment.d(5) man page.
+
+;;; Code:
+
+(defconst environmentd-mode/font-lock-defaults
+ '((("^[[:blank:]]+[^[:blank:]]+" . font-lock-warning-face) ; stray leading whitespace
+ ("^#+[[:blank:]]*" . font-lock-comment-delimiter-face)
+ ("^#+[[:blank:]]*\\(.*\\)$" 1 font-lock-comment-face)
+ ("\\\\[$\\]" . font-lock-string-face) ; escaped $ \
+ ("^\\([A-Za-z_][A-Za-z0-9_]*\\)\\(=\\)"
+ (1 font-lock-variable-name-face)
+ (2 font-lock-keyword-face))
+ ("\\(\\${\\)\\([A-Za-z_][A-Za-z0-9_]*\\)\\(:[+-]\\)[^}]*\\(}\\)"
+ (1 font-lock-keyword-face)
+ (2 font-lock-variable-name-face)
+ (3 font-lock-keyword-face)
+ (4 font-lock-keyword-face)) ; ${X:-default}-variable references
+ ("\\(\\${\\)\\([A-Za-z_][A-Za-z0-9_]*\\)\\(}\\)"
+ (1 font-lock-keyword-face)
+ (2 font-lock-variable-name-face)
+ (3 font-lock-keyword-face)) ; ${X}-variable references
+ ("\\(\\$\\)\\([A-Za-z_][A-Za-z0-9_]*\\)"
+ (1 font-lock-keyword-face)
+ (2 font-lock-variable-name-face))) ; $X-variable references
+ t nil ((?\' . "w") (?\" . "w")))
+ "Font lock settings for Environment.d mode. See `font-lock-defaults' for documentation.")
+
+(define-derived-mode environmentd-mode prog-mode "Environment.d"
+ "Environment.d mode is used for environment.d(5) files."
+ (setq-local comment-start "#"
+ comment-start-skip "#"
+ comment-end ""
+ font-lock-defaults environmentd-mode/font-lock-defaults))
+
+(add-to-list 'auto-mode-alist
+ '("/environment\\.d/[^/]+\\.conf\\'\\|\\`/etc/environment\\'"
+ . environmentd-mode))
+
+(provide 'environmentd-mode)
+;;; environmentd-mode.el ends here