From 01c080b98c6c7b645ac5c502c896b0965b784cb1 Mon Sep 17 00:00:00 2001 From: JSDurand Date: Thu, 11 Feb 2021 09:51:43 +0800 Subject: Change some font-lock behaviours. * elisp.el (emacs-lisp-mode): (emacs-lisp-highlight-vars-and-faces): Change some highlighting. --- elisp.el | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/elisp.el b/elisp.el index 17ff506..8045f64 100644 --- a/elisp.el +++ b/elisp.el @@ -1,8 +1,16 @@ -;;; -*- lexical-binding: t; -*- +;;; elisp.el --- My configurations of Emacs Lisp mode -*- lexical-binding: t; -*- + + +;;; Commentary: + +;; Some personal configurations. + +;;; Code: ;;; Hide Eldoc in the mode line ;; The original value is eldoc-minor-mode-string + (durand-hide-minor-mode eldoc-mode) ;;; fontification of extra keywords in emacs lisp files @@ -11,18 +19,20 @@ (font-lock-add-keywords 'emacs-lisp-mode - `(("^;;;###\\(autoload\\)[ \n]" (1 font-lock-warning-face t)) + `(("^;;;###\\(autoload\\)[ \n]" (1 font-lock-preprocessor-face t)) (emacs-lisp-highlight-vars-and-faces . emacs-lisp-face) ("\\(\\(?:#'\\|['`]\\)\\)\\(?:[[:space:]]*\\(\\(?:\\sw\\|\\s_\\)+\\)\\)?" (1 font-lock-keyword-face) - (2 font-lock-constant-face nil t)))) + (2 font-lock-constant-face nil t))) + 'append) ;;;###autoload (defvar emacs-lisp-face nil - "The face used to highlight extra emacs lisp keywords.") + "The face used to highlight extra Emacs Lisp keywords.") ;;;###autoload (defun emacs-lisp-highlight-vars-and-faces (end) + "Find special things to highlight within the confine of END." (catch 'matcher (while (re-search-forward "\\(?:\\sw\\|\\s_\\)+" end t) (let ((ppss (save-excursion (syntax-ppss)))) @@ -41,8 +51,9 @@ (not (memq (char-before (1- (match-beginning 0))) (list ?\' ?\`)))) (let ((unaliased (indirect-function symbol))) - (cond ((or (macrop unaliased) - (special-form-p unaliased)) + (cond ((special-form-p unaliased) + (setq emacs-lisp-face 'font-lock-constant-face)) + ((macrop unaliased) (setq emacs-lisp-face 'font-lock-keyword-face)) (t (let (unadvised) @@ -51,7 +62,7 @@ unaliased) (setq emacs-lisp-face (if (subrp unaliased) - 'font-lock-constant-face + 'font-lock-builtin-face 'font-lock-function-name-face))))))) (throw 'matcher t))))))) nil)) @@ -79,9 +90,10 @@ ;;;###autoload (defun better-calculate-lisp-indent (&optional parse-start) - "Add better indentation for quoted and backquoted lists." - ;; This line because `calculate-lisp-indent-last-sexp` was defined with `defvar` - ;; with it's value ommited, marking it special and only defining it locally. So + "Add better indentation for quoted and backquoted lists. +PARSE-START is the starting position of the parse." + ;; This line because `calculate-lisp-indent-last-sexp` was defined with `defvar` + ;; with it's value ommited, marking it special and only defining it locally. So ;; if you don't have this, you'll get a void variable error. (defvar calculate-lisp-indent-last-sexp) (save-excursion @@ -252,3 +264,7 @@ (desired-indent) (t normal-indent)))))) + +(provide 'elisp) + +;;; elisp.el ends here -- cgit v1.2.3-18-g5258