>From 4c18961277904cbe2c9359b5b88d9bd17fa63aa8 Mon Sep 17 00:00:00 2001 From: TEC Date: Thu, 24 Dec 2020 03:08:19 +0800 Subject: [PATCH 1/2] authinfo-mode: add syntax highlighting Add syntax highlighting for general "param value..." pattern, as well as specific common parameters: "machine", "login", "port", and "password". Also format lines starting with "#" as comments, and change the face of passwords from "warning" to "font-lock-doc-face". --- lisp/auth-source.el | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lisp/auth-source.el b/lisp/auth-source.el index 50795ce..275a02c 100644 --- a/lisp/auth-source.el +++ b/lisp/auth-source.el @@ -2408,7 +2408,7 @@ MODE can be \"login\" or \"password\"." (list user password auth-info))) ;;; Tiny mode for editing .netrc/.authinfo modes (that basically just -;;; hides passwords). +;;; hides passwords and adds basic syntax highlighting). (defcustom authinfo-hidden "password" "Regexp matching elements in .authinfo/.netrc files that should be hidden." @@ -2419,13 +2419,34 @@ MODE can be \"login\" or \"password\"." (define-derived-mode authinfo-mode fundamental-mode "Authinfo" "Mode for editing .authinfo/.netrc files. -This is just like `fundamental-mode', but hides passwords. The -passwords are revealed when point moved into the password. +This is just like `fundamental-mode', but has basic syntax highlighting and +hides passwords. The passwords are revealed when point moved into the password. \\{authinfo-mode-map}" + (font-lock-add-keywords nil authinfo--keywords) + (setq-local comment-start "#") + (setq-local comment-end "") (authinfo--hide-passwords (point-min) (point-max)) (reveal-mode)) +(defvar authinfo--keywords + '(("^#.*" . font-lock-comment-face) + ("^\\(machine\\)[ \t]+\\([^ \t\n]+\\)" + (1 font-lock-variable-name-face) + (2 font-lock-builtin-face)) + ("\\(login\\)[ \t]+\\([^ \t\n]+\\)" + (1 font-lock-comment-delimiter-face) + (2 font-lock-keyword-face)) + ("\\(password\\)[ \t]+\\([^ \t\n]+\\)" + (1 font-lock-comment-delimiter-face) + (2 font-lock-doc-face)) + ("\\(port\\)[ \t]+\\([^ \t\n]+\\)" + (1 font-lock-comment-delimiter-face) + (2 font-lock-type-face)) + ("\\([^ \t\n]+\\)[, \t]+\\([^ \t\n]+\\)" + (1 font-lock-constant-face) + (2 nil)))) + (defun authinfo--hide-passwords (start end) (save-excursion (save-restriction @@ -2437,13 +2458,13 @@ passwords are revealed when point moved into the password. (when (auth-source-netrc-looking-at-token) (let ((overlay (make-overlay (match-beginning 0) (match-end 0)))) (overlay-put overlay 'display (propertize "****" - 'face 'warning)) + 'face 'font-lock-doc-face)) (overlay-put overlay 'reveal-toggle-invisible #'authinfo--toggle-display))))))) (defun authinfo--toggle-display (overlay hide) (if hide - (overlay-put overlay 'display (propertize "****" 'face 'warning)) + (overlay-put overlay 'display (propertize "****" 'face 'font-lock-doc-face)) (overlay-put overlay 'display nil))) (provide 'auth-source) -- 2.29.2