branch: elpa/systemd commit 4c0ec1e599690ba8a3f65d0d916813af5342122f Author: Mark Oteiza <mvote...@udel.edu> Commit: Mark Oteiza <mvote...@udel.edu>
split font-lock-keywords into levels more importantly, bind systemd-font-lock-keywords to a _symbol_. this makes hacking font-lock-keywords on the fly a little easier, in addition to adding to customization/granularity (info "(elisp) Font Lock Basics") --- systemd.el | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/systemd.el b/systemd.el index 79d423f..42410b9 100644 --- a/systemd.el +++ b/systemd.el @@ -258,26 +258,32 @@ See `font-lock-keywords' and (info \"(elisp) Search-based Fontification\")." (`candidates (all-completions arg (systemd-completion-table nil))) (`post-completion (if (not (systemd-buffer-section-p)) (insert "="))))) -(defvar systemd-font-lock-keywords - (eval-when-compile - `(("^[[:space:]]*?\\([#;]\\)\\(.*\\)$" - (1 'font-lock-comment-delimiter-face) - (2 'font-lock-comment-face)) - ("\\\\$" 0 'font-lock-warning-face) ; line break - ;; sections - ("^\\(\\[\\([[:upper:]][[:alnum:]]+\\|X-.*?\\)\\]\\)" - 1 'font-lock-type-face) - ;; keys - ("^\\([[:upper:]][[:alnum:]]+\\)=" 1 'font-lock-keyword-face) - ;; boolean arguments - (,(rx "=" (group (or "yes" "true" "on" "0" "no" "false" "off")) eol) - 1 'font-lock-constant-face) - ;; specifiers - ("%[nNpPiIfcrRtuUhsmbHv%]" 0 'font-lock-constant-face) - ;; exec prefixes - ("=" - (systemd-exec-prefix-anchored-matcher - nil nil (0 'font-lock-negation-char-face))))) +(defconst systemd-font-lock-keywords-1 + `(("^[[:space:]]*?\\([#;]\\)\\(.*\\)$" + (1 'font-lock-comment-delimiter-face) + (2 'font-lock-comment-face)) + ;; sections + ("^\\(\\[\\([[:upper:]][[:alnum:]]+\\|X-.*?\\)\\]\\)" + 1 'font-lock-type-face) + ;; keys + ("^\\([[:upper:]][[:alnum:]]+\\)=" 1 'font-lock-keyword-face)) + "Minimal expressions to highlight in `systemd-mode'.") + +(defconst systemd-font-lock-keywords-2 + `(,@systemd-font-lock-keywords-1 + ("\\\\$" 0 'font-lock-warning-face) ; line break + ;; boolean arguments + (,(rx "=" (group (or "yes" "true" "on" "0" "no" "false" "off")) eol) + 1 'font-lock-constant-face) + ;; specifiers + ("%[nNpPiIfcrRtuUhsmbHv%]" 0 'font-lock-constant-face) + ;; exec prefixes + ("=" + (systemd-exec-prefix-anchored-matcher + nil nil (0 'font-lock-negation-char-face)))) + "Extended expressions to highlight in `systemd-mode'.") + +(defvar systemd-font-lock-keywords 'systemd-font-lock-keywords-2 "Default expressions to highlight in `systemd-mode'. See systemd.unit(5) for details on unit file syntax.") @@ -322,7 +328,10 @@ Key bindings: (conf-mode-initialize systemd-comment-start) (add-hook 'company-backends #'systemd-company-backend) (add-hook 'completion-at-point-functions #'systemd-complete-at-point nil t) - (setq font-lock-defaults '(systemd-font-lock-keywords t))) + (setq font-lock-defaults + '((systemd-font-lock-keywords + systemd-font-lock-keywords-1 systemd-font-lock-keywords-2) + t))) (provide 'systemd)