branch: elpa/llama
commit eac219367e29090437775699df84900a030969a4
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
Move definitions of advices related to fontification
---
llama.el | 122 +++++++++++++++++++++++++++++++--------------------------------
1 file changed, 60 insertions(+), 62 deletions(-)
diff --git a/llama.el b/llama.el
index ba5bcf071b..d612a46597 100644
--- a/llama.el
+++ b/llama.el
@@ -243,7 +243,7 @@ explicitly specified `_%3'."
(if vectorp (vconcat ret) ret)))
(expr)))
-;;; Advices
+;;; Completion
(define-advice elisp--expect-function-p (:around (fn pos) llama)
"Support function completion directly following `##'."
@@ -254,42 +254,6 @@ explicitly specified `_%3'."
(eq (char-before (- pos 2)) ?#))
(funcall fn pos)))
-(define-advice elisp-mode-syntax-propertize (:override (start end) llama)
- ;; Synced with Emacs up to 6b9510d94f814cacf43793dce76250b5f7e6f64a.
- "Like `elisp-mode-syntax-propertize' but don't change syntax of `##'."
- (goto-char start)
- (let ((case-fold-search nil))
- (funcall
- (syntax-propertize-rules
- ;; Empty symbol.
- ;; {{ Comment out to prevent the `##' from becoming part of
- ;; the following symbol when there is no space in between.
- ;; ("##" (0 (unless (nth 8 (syntax-ppss))
- ;; (string-to-syntax "_"))))
- ;; }}
- ;; {{ As for other symbols, use `font-lock-constant-face' in
- ;; docstrings and comments.
- ("##" (0 (when (nth 8 (syntax-ppss))
- (string-to-syntax "_"))))
- ;; }}
- ;; {{ Preserve this part, even though it is absent from
- ;; this function in 29.1; backporting it by association.
- ;; Prevent the @ from becoming part of a following symbol.
- (",@" (0 (unless (nth 8 (syntax-ppss))
- (string-to-syntax "'"))))
- ;; }}
- ;; Unicode character names. (The longest name is 88 characters
- ;; long.)
- ("\\?\\\\N{[-A-Za-z0-9 ]\\{,100\\}}"
- (0 (unless (nth 8 (syntax-ppss))
- (string-to-syntax "_"))))
- ((rx "#" (or (seq (group-n 1 "&" (+ digit)) ?\") ; Bool-vector.
- (seq (group-n 1 "s") "(") ; Record.
- (seq (group-n 1 (+ "^")) "["))) ; Char-table.
- (1 (unless (save-excursion (nth 8 (syntax-ppss (match-beginning 0))))
- (string-to-syntax "'")))))
- start end)))
-
(define-advice all-completions (:around (fn str table &rest rest) llama)
"Remove empty symbol from completion results if originating from `llama'.
@@ -310,31 +274,6 @@ that is used as TABLE."
(delete "" result)
result)))
-(defvar llama-fontify-mode)
-
-(define-advice lisp--el-match-keyword (:override (limit) llama -80)
- (catch 'found
- (while (re-search-forward
- (concat (if llama-fontify-mode
- "(\\(?:## ?\\)?\\("
- "(\\(")
- (static-if (get 'lisp-mode-symbol 'rx-definition) ;>= 29.1
- (rx lisp-mode-symbol)
- lisp-mode-symbol-regexp)
- "\\)\\_>")
- limit t)
- (let ((sym (intern-soft (match-string 1))))
- (when (and (or (special-form-p sym)
- (macrop sym)
- ;; Same as in advice of `morlock' package.
- (get sym 'morlock-font-lock-keyword))
- (not (get sym 'no-font-lock-keyword))
- (static-if (fboundp 'lisp--el-funcall-position-p) ;>= 28.1
- (lisp--el-funcall-position-p (match-beginning 0))
- (not (lisp--el-non-funcall-position-p
- (match-beginning 0)))))
- (throw 'found t))))))
-
;;; Fontification
(defgroup llama ()
@@ -490,6 +429,65 @@ expansion, and the looks of this face should hint at
that.")
(define-globalized-minor-mode global-llama-fontify-mode
llama-fontify-mode llama--turn-on-fontify-mode)
+(define-advice lisp--el-match-keyword (:override (limit) llama -80)
+ (catch 'found
+ (while (re-search-forward
+ (concat (if llama-fontify-mode
+ "(\\(?:## ?\\)?\\("
+ "(\\(")
+ (static-if (get 'lisp-mode-symbol 'rx-definition) ;>= 29.1
+ (rx lisp-mode-symbol)
+ lisp-mode-symbol-regexp)
+ "\\)\\_>")
+ limit t)
+ (let ((sym (intern-soft (match-string 1))))
+ (when (and (or (special-form-p sym)
+ (macrop sym)
+ ;; Same as in advice of `morlock' package.
+ (get sym 'morlock-font-lock-keyword))
+ (not (get sym 'no-font-lock-keyword))
+ (static-if (fboundp 'lisp--el-funcall-position-p) ;>= 28.1
+ (lisp--el-funcall-position-p (match-beginning 0))
+ (not (lisp--el-non-funcall-position-p
+ (match-beginning 0)))))
+ (throw 'found t))))))
+
+(define-advice elisp-mode-syntax-propertize (:override (start end) llama)
+ ;; Synced with Emacs up to 6b9510d94f814cacf43793dce76250b5f7e6f64a.
+ "Like `elisp-mode-syntax-propertize' but don't change syntax of `##'."
+ (goto-char start)
+ (let ((case-fold-search nil))
+ (funcall
+ (syntax-propertize-rules
+ ;; Empty symbol.
+ ;; {{ Comment out to prevent the `##' from becoming part of
+ ;; the following symbol when there is no space in between.
+ ;; ("##" (0 (unless (nth 8 (syntax-ppss))
+ ;; (string-to-syntax "_"))))
+ ;; }}
+ ;; {{ As for other symbols, use `font-lock-constant-face' in
+ ;; docstrings and comments.
+ ("##" (0 (when (nth 8 (syntax-ppss))
+ (string-to-syntax "_"))))
+ ;; }}
+ ;; {{ Preserve this part, even though it is absent from
+ ;; this function in 29.1; backporting it by association.
+ ;; Prevent the @ from becoming part of a following symbol.
+ (",@" (0 (unless (nth 8 (syntax-ppss))
+ (string-to-syntax "'"))))
+ ;; }}
+ ;; Unicode character names. (The longest name is 88 characters
+ ;; long.)
+ ("\\?\\\\N{[-A-Za-z0-9 ]\\{,100\\}}"
+ (0 (unless (nth 8 (syntax-ppss))
+ (string-to-syntax "_"))))
+ ((rx "#" (or (seq (group-n 1 "&" (+ digit)) ?\") ; Bool-vector.
+ (seq (group-n 1 "s") "(") ; Record.
+ (seq (group-n 1 (+ "^")) "["))) ; Char-table.
+ (1 (unless (save-excursion (nth 8 (syntax-ppss (match-beginning 0))))
+ (string-to-syntax "'")))))
+ start end)))
+
;;; Partial applications
(defun llama--left-apply-partially (fn &rest args)