]> git.eshelyaron.com Git - dict.git/commitdiff
ADDED: sweep-faces-style user option for controlling highlighting
authorEshel Yaron <me@eshelyaron.com>
Fri, 23 Sep 2022 20:08:10 +0000 (23:08 +0300)
committerEshel Yaron <me@eshelyaron.com>
Sat, 24 Sep 2022 14:20:17 +0000 (17:20 +0300)
sweep.el

index 0aa636edb888a2c394d252b4638c963b5874ee36..8882aca423d312f17c4372b3a8fc0f2602ae68ca 100644 (file)
--- a/sweep.el
+++ b/sweep.el
@@ -525,345 +525,612 @@ module name, F is a functor name and N is its arity."
   "Faces used to highlight Prolog code."
   :group 'sweep)
 
+(defcustom sweep-faces-style nil
+  "Style of faces to use for highlighting Prolog code."
+  :type '(choice (const :tag "Default" nil)
+                 (const :tag "Light"   light)
+                 (const :tag "Dark"    dark))
+  :package-version '((sweep . "0.3.2"))
+  :group 'sweep-faces)
+
 (eval-when-compile
-  (defmacro sweep-defface (name def doc)
+  (defmacro sweep-defface (name def light dark doc)
     "Define sweep face FACE with doc DOC."
     (declare
      (indent defun)
-     (doc-string 3))
-    (let ((face (intern (concat "sweep-" (symbol-name name) "-face"))))
+     (doc-string 4))
+    (let ((func (intern (concat "sweep-" (symbol-name name) "-face")))
+          (facd (intern (concat "sweep-" (symbol-name name) "-dark-face")))
+          (facl (intern (concat "sweep-" (symbol-name name) "-light-face")))
+          (face (intern (concat "sweep-" (symbol-name name) "-default-face"))))
       `(progn
+         (defface ,facl
+           '((default              . ,light))
+           ,(concat "Light face used to highlight " (downcase doc))
+           :group 'sweep-faces)
+         (defface ,facd
+           '((default              . ,dark))
+           ,(concat "Dark face used to highlight " (downcase doc))
+           :group 'sweep-faces)
          (defface ,face
-           '((default :inherit ,def))
+           '((default              . ,def))
            ,(concat "Face used to highlight " (downcase doc))
            :group 'sweep-faces)
-         (defvar ,face ',face
-           ,(concat "Name of the face used to highlight " (downcase doc)))))))
-
-(sweep-defface functor font-lock-function-name-face
+         (defun ,func ()
+           (pcase sweep-faces-style
+             ('light ',facl)
+             ('dark  ',facd)
+             (_      ',face)))))))
+
+(sweep-defface
+  functor
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "darkcyan")
   "Functors.")
 
-(sweep-defface arity font-lock-function-name-face
+(sweep-defface
+  arity
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "darkcyan")
   "Arities.")
 
-(sweep-defface predicate-indicator font-lock-function-name-face
+(sweep-defface
+  predicate-indicator
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "darkcyan")
   "Predicate indicators.")
 
-(sweep-defface built-in font-lock-keyword-face
+(sweep-defface
+  built-in
+  (:inherit font-lock-keyword-face)
+  (:foreground "blue")
+  (:foreground "cyan")
   "Built in predicate calls.")
 
-(sweep-defface neck font-lock-preprocessor-face
+(sweep-defface
+  neck
+  (:inherit font-lock-preprocessor-face)
+  (:weight bold)
+  (:weight bold)
   "Necks.")
 
-(sweep-defface goal font-lock-function-name-face
+(sweep-defface goal
+  (:inherit font-lock-function-name-face)
+  (:inherit font-lock-function-name-face)
+  (:inherit font-lock-function-name-face)
   "Unspecified predicate goals.")
 
-(sweep-defface string font-lock-string-face
+(sweep-defface
+  string
+  (:inherit font-lock-string-face)
+  (:foreground "navyblue")
+  (:foreground "palegreen")
   "Strings.")
 
-(sweep-defface comment font-lock-comment-face
+(sweep-defface
+  comment
+  (:inherit font-lock-comment-face)
+  (:foreground "darkgreen")
+  (:foreground "green")
   "Comments.")
 
-(defface sweep-head-built-in-face
-  '((default . (:foreground "black" :background "orange" :weight bold)))
-  "Face used to highlight built-in predicate definitons."
-  :group 'sweep-faces)
-
-(defface sweep-method-face
-  '((default . (:weight bold)))
-  "Face used to highlight PCE methods."
-  :group 'sweep-faces)
-
-(defface sweep-class-face
-  '((default . (:underline t)))
-  "Face used to highlight PCE classes."
-  :group 'sweep-faces)
-
-(defface sweep-no-file-face
-  '((default . (:foreground "red")))
-  "Face used to highlight non-existsing file specifications."
-  :group 'sweep-faces)
-
-(sweep-defface head-local font-lock-builtin-face
+(sweep-defface
+  head-built-in
+  (:background "orange" :weight bold)
+  (:background "orange" :weight bold)
+  (:background "orange" :weight bold)
+  "Built-in predicate definitons.")
+
+(sweep-defface
+ method
+  (:weight bold)
+  (:weight bold)
+  (:weight bold)
+  "PCE classes.")
+
+(sweep-defface
+  class
+  (:underline t)
+  (:underline t)
+  (:underline t)
+  "PCE classes.")
+
+(sweep-defface
+  no-file
+  (:foreground "red")
+  (:foreground "red")
+  (:foreground "red")
+  "Non-existsing file specifications.")
+
+(sweep-defface
+  head-local
+  (:inherit font-lock-builtin-face)
+  (:weight bold)
+  (:weight bold)
   "Local predicate definitions.")
 
-(sweep-defface head-meta font-lock-preprocessor-face
+(sweep-defface
+  head-meta
+  (:inherit font-lock-preprocessor-face)
+  (:inherit default)
+  (:inherit default)
   "Meta predicate definitions.")
 
-(sweep-defface head-multifile font-lock-type-face
+(sweep-defface
+  head-multifile
+  (:inherit font-lock-type-face)
+  (:foreground "navyblue" :weight bold)
+  (:foreground "palegreen" :weight bold)
   "Multifile predicate definitions.")
 
-(sweep-defface head-extern font-lock-type-face
+(sweep-defface
+  head-extern
+  (:inherit font-lock-type-face)
+  (:foreground "blue" :weight bold)
+  (:foreground "cyan" :weight bold)
   "External predicate definitions.")
 
-(sweep-defface head-unreferenced font-lock-warning-face
+(sweep-defface
+  head-unreferenced
+  (:inherit font-lock-warning-face)
+  (:foreground "red" :weight bold)
+  (:foreground "red" :weight bold)
   "Unreferenced predicate definitions.")
 
-(sweep-defface head-exported font-lock-builtin-face
+(sweep-defface
+  head-exported
+  (:inherit font-lock-builtin-face)
+  (:foreground "blue" :weight bold)
+  (:foreground "cyan" :weight bold)
   "Exported predicate definitions.")
 
-(sweep-defface head-hook font-lock-type-face
+(sweep-defface
+  head-hook
+  (:inherit font-lock-type-face)
+  (:foreground "blue" :underline t)
+  (:foreground "cyan" :underline t)
   "Hook definitions.")
 
-(sweep-defface head-iso font-lock-keyword-face
+(sweep-defface
+  head-iso
+  (:inherit font-lock-keyword-face)
+  (:background "orange" :weight bold)
+  (:background "orange" :weight bold)
   "Hook definitions.")
 
-(sweep-defface head-undefined font-lock-warning-face
+(sweep-defface
+  head-undefined
+  (:inherit font-lock-warning-face)
+  (:weight bold)
+  (:weight bold)
   "Undefind head terms.")
 
-(sweep-defface head-public font-lock-builtin-face
+(sweep-defface
+  head-public
+  (:inherit font-lock-builtin-face)
+  (:foreground "#016300" :weight bold)
+  (:foreground "#016300" :weight bold)
   "Public definitions.")
 
-(sweep-defface meta-spec font-lock-preprocessor-face
+(sweep-defface
+  meta-spec
+  (:inherit font-lock-preprocessor-face)
+  (:inherit font-lock-preprocessor-face)
+  (:inherit font-lock-preprocessor-face)
   "Meta argument specifiers.")
 
-(sweep-defface recursion font-lock-builtin-face
+(sweep-defface
+  recursion
+  (:inherit font-lock-builtin-face)
+  (:underline t)
+  (:underline t)
   "Recursive calls.")
 
-(sweep-defface local font-lock-function-name-face
+(sweep-defface
+  local
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "darkcyan")
   "Local predicate calls.")
 
-(sweep-defface autoload font-lock-function-name-face
+(sweep-defface
+  autoload
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "darkcyan")
   "Autoloaded predicate calls.")
 
-(sweep-defface imported font-lock-function-name-face
+(sweep-defface
+  imported
+  (:inherit font-lock-function-name-face)
+  (:foreground "blue")
+  (:foreground "cyan")
   "Imported predicate calls.")
 
-(sweep-defface extern font-lock-function-name-face
+(sweep-defface
+  extern
+  (:inherit font-lock-function-name-face)
+  (:foreground "blue" :underline t)
+  (:foreground "cyan" :underline t)
   "External predicate calls.")
 
-(sweep-defface foreign font-lock-keyword-face
+(sweep-defface
+  foreign
+  (:inherit font-lock-keyword-face)
+  (:foreground "darkturquoise")
+  (:foreground "darkturquoise")
   "Foreign predicate calls.")
 
-(sweep-defface meta font-lock-type-face
+(sweep-defface
+  meta
+  (:inherit font-lock-type-face)
+  (:foreground "red4")
+  (:foreground "red4")
   "Meta predicate calls.")
 
-(sweep-defface undefined font-lock-warning-face
+(sweep-defface
+  undefined
+  (:inherit font-lock-warning-face)
+  (:foreground "red")
+  (:foreground "orange")
   "Undefined predicate calls.")
 
-(sweep-defface thread-local font-lock-constant-face
+(sweep-defface
+  thread-local
+  (:inherit font-lock-constant-face)
+  (:foreground "magenta" :underline t)
+  (:foreground "magenta" :underline t)
   "Thread local predicate calls.")
 
-(sweep-defface global font-lock-keyword-face
+(sweep-defface
+  global
+  (:inherit font-lock-keyword-face)
+  (:foreground "magenta")
+  (:foreground "darkcyan")
   "Global predicate calls.")
 
-(sweep-defface multifile font-lock-function-name-face
+(sweep-defface
+  multifile
+  (:inherit font-lock-function-name-face)
+  (:foreground "navyblue")
+  (:foreground "palegreen")
   "Multifile predicate calls.")
 
-(sweep-defface dynamic font-lock-constant-face
+(sweep-defface
+  dynamic
+  (:inherit font-lock-constant-face)
+  (:foreground "magenta")
+  (:foreground "magenta")
   "Dynamic predicate calls.")
 
-(sweep-defface undefined-import font-lock-warning-face
+(sweep-defface
+  undefined-import
+  (:inherit font-lock-warning-face)
+  (:foreground "red")
+  (:foreground "red")
   "Undefined imports.")
 
-(sweep-defface html-attribute font-lock-function-name-face
+(sweep-defface
+  html-attribute
+  (:inherit font-lock-function-name-face)
+  (:foreground "magenta4")
+  (:foreground "magenta4")
   "HTML attributes.")
 
-(sweep-defface html-call font-lock-keyword-face
+(sweep-defface
+  html-call
+  (:inherit font-lock-keyword-face)
+  (:foreground "magenta4" :weight bold)
+  (:foreground "magenta4" :weight bold)
   "Multifile predicate calls.")
 
-(sweep-defface option-name font-lock-constant-face
+(sweep-defface
+  option-name
+  (:inherit font-lock-constant-face)
+  (:foreground "#3434ba")
+  (:foreground "#3434ba")
   "Option names.")
 
-(sweep-defface no-option-name font-lock-warning-face
+(sweep-defface
+  no-option-name
+  (:inherit font-lock-warning-face)
+  (:foreground "red")
+  (:foreground "orange")
   "Non-existent option names.")
 
-(sweep-defface flag-name font-lock-constant-face
+(sweep-defface
+  flag-name
+  (:inherit font-lock-constant-face)
+  (:foreground "blue")
+  (:foreground "cyan")
   "Flag names.")
 
-(sweep-defface no-flag-name font-lock-warning-face
+(sweep-defface
+  no-flag-name
+  (:inherit font-lock-warning-face)
+  (:foreground "red")
+  (:foreground "red")
   "Non-existent flag names.")
 
-(sweep-defface qq-type font-lock-type-face
+(sweep-defface
+  qq-type
+  (:inherit font-lock-type-face)
+  (:weight bold)
+  (:weight bold)
   "Quasi-quotation types.")
 
-(sweep-defface qq-sep font-lock-type-face
+(sweep-defface
+  qq-sep
+  (:inherit font-lock-type-face)
+  (:weight bold)
+  (:weight bold)
   "Quasi-quotation separators.")
 
-(sweep-defface qq-open font-lock-type-face
+(sweep-defface
+  qq-open
+  (:inherit font-lock-type-face)
+  (:weight bold)
+  (:weight bold)
   "Quasi-quotation open sequences.")
 
-(sweep-defface qq-close font-lock-type-face
+(sweep-defface
+  qq-close
+  (:inherit font-lock-type-face)
+  (:weight bold)
+  (:weight bold)
   "Quasi-quotation close sequences.")
 
-(sweep-defface op-type font-lock-type-face
+(sweep-defface
+  op-type
+  (:inherit font-lock-type-face)
+  (:foreground "blue")
+  (:foreground "cyan")
   "Operator types.")
 
-(sweep-defface dict-tag font-lock-constant-face
+(sweep-defface
+  dict-tag
+  (:inherit font-lock-constant-face)
+  (:weight bold)
+  (:weight bold)
   "Dict tags.")
 
-(sweep-defface dict-key font-lock-keyword-face
+(sweep-defface
+  dict-key
+  (:inherit font-lock-keyword-face)
+  (:weight bold)
+  (:weight bold)
   "Dict keys.")
 
-(sweep-defface dict-sep font-lock-keyword-face
+(sweep-defface
+  dict-sep
+  (:inherit font-lock-keyword-face)
+  (:weight bold)
+  (:weight bold)
   "Dict separators.")
 
-(sweep-defface type-error font-lock-warning-face
+(sweep-defface
+  type-error
+  (:inherit font-lock-warning-face)
+  (:foreground "orange")
+  (:foreground "orange")
   "Type errors.")
 
-(sweep-defface instantiation-error font-lock-warning-face
+(sweep-defface
+  instantiation-error
+  (:inherit font-lock-warning-face)
+  (:foreground "orange")
+  (:foreground "orange")
   "Instantiation errors.")
 
-(sweep-defface file button
+(sweep-defface
+  file
+  (:inherit button)
+  (:foreground "blue" :underline t)
+  (:foreground "cyan" :underline t)
   "File specifiers.")
 
-(sweep-defface file-no-depend font-lock-warning-face
+(sweep-defface
+  file-no-depend
+  (:inherit font-lock-warning-face)
+  (:foreground "blue" :underline t :background "pink")
+  (:foreground "cyan" :underline t :background "pink")
   "Unused file specifiers.")
 
-(sweep-defface unused-import font-lock-warning-face
+(sweep-defface
+  unused-import
+  (:inherit font-lock-warning-face)
+  (:foreground "blue" :background "pink")
+  (:foreground "cyan" :background "pink")
   "Unused imports.")
 
-(sweep-defface identifier font-lock-type-face
+(sweep-defface
+  identifier
+  (:inherit font-lock-type-face)
+  (:weight bold)
+  (:weight bold)
   "Identifiers.")
 
-(sweep-defface hook font-lock-preprocessor-face
+(sweep-defface
+  hook
+  (:inherit font-lock-preprocessor-face)
+  (:foreground "blue" :underline t)
+  (:foreground "cyan" :underline t)
   "Hooks.")
 
-(sweep-defface module font-lock-type-face
+(sweep-defface
+  module
+  (:inherit font-lock-type-face)
+  (:foreground "darkslateblue")
+  (:foreground "lightslateblue")
   "Module names.")
 
-(sweep-defface singleton font-lock-warning-face
+(sweep-defface
+  singleton
+  (:inherit font-lock-warning-face)
+  (:foreground "red4" :weight bold)
+  (:foreground "orangered1" :weight bold)
   "Singletons.")
 
-(sweep-defface fullstop font-lock-negation-char-face
+(sweep-defface
+  fullstop
+  (:inherit font-lock-negation-char-face)
+  (:inherit font-lock-negation-char-face)
+  (:inherit font-lock-negation-char-face)
   "Fullstops.")
 
-(sweep-defface nil font-lock-keyword-face
+(sweep-defface
+  nil
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
   "The empty list.")
 
-(sweep-defface variable font-lock-variable-name-face
+(sweep-defface
+  variable
+  (:inherit font-lock-variable-name-face)
+  (:foreground "red4")
+  (:foreground "orangered1")
   "Variables.")
 
-(sweep-defface ext-quant font-lock-keyword-face
+(sweep-defface
+  ext-quant
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
   "Existential quantifiers.")
 
-(sweep-defface control font-lock-keyword-face
+(sweep-defface
+  control
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
+  (:inherit font-lock-keyword-face)
   "Control constructs.")
 
-(sweep-defface atom font-lock-constant-face
+(sweep-defface
+  atom
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
   "Atoms.")
 
-(sweep-defface int font-lock-constant-face
+(sweep-defface
+  int
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
   "Integers.")
 
-(sweep-defface float font-lock-constant-face
+(sweep-defface
+  float
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
   "Floats.")
 
-(sweep-defface codes font-lock-constant-face
+(sweep-defface
+  codes
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
+  (:inherit font-lock-constant-face)
   "Codes.")
 
-(sweep-defface error font-lock-warning-face
+(sweep-defface
+  error
+  (:inherit font-lock-warning-face)
+  (:foreground "orange")
+  (:foreground "orange")
   "Unspecified errors.")
 
-(sweep-defface syntax-error error
+(sweep-defface
+  syntax-error
+  (:inherit error)
+  (:foreground "orange")
+  (:foreground "orange")
   "Syntax errors.")
 
-(sweep-defface structured-comment font-lock-doc-face
+(sweep-defface
+  structured-comment
+  (:inherit font-lock-doc-face)
+  (:inherit font-lock-doc-face :foreground "darkgreen")
+  (:inherit font-lock-doc-face :foreground "green")
   "Structured comments.")
 
+(defun sweep--colour-term-to-face (arg)
+  (pcase arg
+    (`("comment" . "structured")   (sweep-structured-comment-face))
+    (`("comment" . ,_)             (sweep-comment-face))
+    (`("head" "unreferenced" . ,_) (sweep-head-unreferenced-face))
+    (`("head" "meta" . ,_) (sweep-head-meta-face))
+    (`("head" "exported" . ,_) (sweep-head-exported-face))
+    (`("head" "hook" . ,_) (sweep-head-hook-face))
+    (`("head" "built_in" . ,_) (sweep-head-built-in-face))
+    (`("head" ,(rx "extern(") . ,_) (sweep-head-extern-face))
+    (`("head" ,(rx "public(") . ,_) (sweep-head-public-face))
+    (`("head" ,(rx "local(") . ,_) (sweep-head-local-face))
+    (`("goal" "recursion" . ,_) (sweep-recursion-face))
+    (`("goal" "meta"      . ,_) (sweep-meta-face))
+    (`("goal" "built_in"  . ,_) (sweep-built-in-face))
+    (`("goal" "undefined" . ,_) (sweep-undefined-face))
+    (`("goal" "global" . ,_) (sweep-global-face))
+    (`("goal",(rx "dynamic ") . ,_) (sweep-dynamic-face))
+    (`("goal",(rx "multifile ") . ,_) (sweep-multifile-face))
+    (`("goal",(rx "thread_local ") . ,_) (sweep-thread-local-face))
+    (`("goal",(rx "extern(") . ,_) (sweep-extern-face))
+    (`("goal",(rx "autoload(") . ,_) (sweep-autoload-face))
+    (`("goal",(rx "imported(") . ,_) (sweep-imported-face))
+    (`("goal",(rx "global(") . ,_) (sweep-global-face))
+    (`("goal",(rx "local(") . ,_) (sweep-local-face))
+    (`("syntax_error" ,_message ,_eb ,_ee) (sweep-syntax-error-face))
+    ("unused_import"       (sweep-unused-import-face))
+    ("undefined_import"    (sweep-undefined-import-face))
+    ("html_attribute"      (sweep-html-attribute-face))
+    ("html_call"           (sweep-html-call-face))
+    ("dict_tag"            (sweep-dict-tag-face))
+    ("dict_key"            (sweep-dict-key-face))
+    ("dict_sep"            (sweep-dict-sep-face))
+    ("meta"                (sweep-meta-spec-face))
+    ("flag_name"           (sweep-flag-name-face))
+    ("no_flag_name"        (sweep-flag-name-face))
+    ("ext_quant"           (sweep-ext-quant-face))
+    ("atom"                (sweep-atom-face))
+    ("float"               (sweep-float-face))
+    ("int"                 (sweep-int-face))
+    ("singleton"           (sweep-singleton-face))
+    ("option_name"         (sweep-option-name-face))
+    ("no_option_name"      (sweep-no-option-name-face))
+    ("control"             (sweep-control-face))
+    ("var"                 (sweep-variable-face))
+    ("fullstop"            (sweep-fullstop-face))
+    ("functor"             (sweep-functor-face))
+    ("arity"               (sweep-arity-face))
+    ("predicate_indicator" (sweep-predicate-indicator-face))
+    ("string"              (sweep-string-face))
+    ("module"              (sweep-module-face))
+    ("neck"                (sweep-neck-face))
+    ("hook"                (sweep-hook-face))
+    ("qq_type"             (sweep-qq-type-face))
+    ("qq_sep"              (sweep-qq-sep-face))
+    ("qq_open"             (sweep-qq-open-face))
+    ("qq_close"            (sweep-qq-close-face))
+    ("identifier"          (sweep-identifier-face))
+    ("file"                (sweep-file-face))
+    ("file_no_depend"      (sweep-file-no-depend-face))
+    ("nofile"              (sweep-no-file-face))
+    ("op_type"             (sweep-op-type-face))
+    ("method"              (sweep-method-face))
+    ("class"               (sweep-class-face))))
+
 (defun sweep--colourise (args)
   "ARGS is a list of the form (BEG LEN . SEM)."
-  (let* ((beg (max (point-min) (car  args)))
-         (end (min (point-max) (+ beg (cadr args))))
-         (arg (cddr args)))
+  (when-let ((beg (max (point-min) (car  args)))
+             (end (min (point-max) (+ beg (cadr args))))
+             (arg (cddr args))
+             (flf (sweep--colour-term-to-face arg)))
     (with-silent-modifications
-      (pcase arg
-        (`("comment" . ,k)
-         (put-text-property beg end 'font-lock-face
-                            (pcase k
-                              ("structured" sweep-structured-comment-face)
-                              (_ sweep-comment-face))))
-        (`("head" . ,h)
-         (put-text-property beg end 'font-lock-face
-                            (pcase h
-                              (`("unreferenced" . ,_) sweep-head-unreferenced-face)
-                              (`("meta" . ,_) sweep-head-meta-face)
-                              (`("exported" . ,_) sweep-head-exported-face)
-                              (`("hook" . ,_) sweep-head-hook-face)
-                              (`("built_in" . ,_) 'sweep-head-built-in-face)
-                              (`(,(rx "extern(") . ,_) sweep-head-extern-face)
-                              (`(,(rx "public ") . ,_) sweep-head-public-face)
-                              (`(,(rx "local(")  . ,_) sweep-head-local-face)
-                              (other (message "unknown head color term %S" other) sweep-head-local-face))))
-        (`("goal" . ,g)
-         (put-text-property beg end 'font-lock-face
-                            (pcase g
-                              (`("recursion" . ,_) sweep-recursion-face)
-                              (`("meta"      . ,_) sweep-meta-face)
-                              (`("built_in"  . ,_) sweep-built-in-face)
-                              (`("undefined" . ,_) sweep-undefined-face)
-                              (`("global" . ,_) sweep-global-face)
-                              (`(,(rx "dynamic ") . ,_) sweep-dynamic-face)
-                              (`(,(rx "multifile ") . ,_) sweep-multifile-face)
-                              (`(,(rx "thread_local ") . ,_) sweep-thread-local-face)
-                              (`(,(rx "extern(") . ,_) sweep-extern-face)
-                              (`(,(rx "autoload(") . ,_) sweep-autoload-face)
-                              (`(,(rx "imported(") . ,_) sweep-imported-face)
-                              (`(,(rx "global(") . ,_) sweep-global-face)
-                              (`(,(rx "local(") . ,_) sweep-local-face)
-                              (other (message "unknown goal color term %S" other) sweep-goal-face))))
-        (`("syntax_error" ,_message ,_eb ,_ee)
-         (put-text-property beg end 'font-lock-face sweep-syntax-error-face))
-        ("unused_import"       (put-text-property beg end 'font-lock-face sweep-unused-import-face))
-        ("undefined_import"    (put-text-property beg end 'font-lock-face sweep-undefined-import-face))
-        ("html_attribute"      (put-text-property beg end 'font-lock-face sweep-html-attribute-face))
-        ("html_call"           (put-text-property beg end 'font-lock-face sweep-html-call-face))
-        ("dict_tag"            (put-text-property beg end 'font-lock-face sweep-dict-tag-face))
-        ("dict_key"            (put-text-property beg end 'font-lock-face sweep-dict-key-face))
-        ("dict_sep"            (put-text-property beg end 'font-lock-face sweep-dict-sep-face))
-        ("meta"                (put-text-property beg end 'font-lock-face sweep-meta-spec-face))
-        ("flag_name"           (put-text-property beg end 'font-lock-face sweep-flag-name-face))
-        ("no_flag_name"        (put-text-property beg end 'font-lock-face sweep-flag-name-face))
-        ("ext_quant"           (put-text-property beg end 'font-lock-face sweep-ext-quant-face))
-        ("atom"                (put-text-property beg end 'font-lock-face sweep-atom-face))
-        ("float"               (put-text-property beg end 'font-lock-face sweep-float-face))
-        ("int"                 (put-text-property beg end 'font-lock-face sweep-int-face))
-        ("singleton"           (put-text-property beg end 'font-lock-face sweep-singleton-face))
-        ("option_name"         (put-text-property beg end 'font-lock-face sweep-option-name-face))
-        ("no_option_name"      (put-text-property beg end 'font-lock-face sweep-no-option-name-face))
-        ("control"             (put-text-property beg end 'font-lock-face sweep-control-face))
-        ("var"                 (put-text-property beg end 'font-lock-face sweep-variable-face))
-        ("fullstop"            (put-text-property beg end 'font-lock-face sweep-fullstop-face))
-        ("functor"             (put-text-property beg end 'font-lock-face sweep-functor-face))
-        ("arity"               (put-text-property beg end 'font-lock-face sweep-arity-face))
-        ("predicate_indicator" (put-text-property beg end 'font-lock-face sweep-predicate-indicator-face))
-        ("string"              (put-text-property beg end 'font-lock-face sweep-string-face))
-        ("module"              (put-text-property beg end 'font-lock-face sweep-module-face))
-        ("neck"                (put-text-property beg end 'font-lock-face sweep-neck-face))
-        ("hook"                (put-text-property beg end 'font-lock-face sweep-hook-face))
-        ("qq_type"             (put-text-property beg end 'font-lock-face sweep-qq-type-face))
-        ("qq_sep"              (put-text-property beg end 'font-lock-face sweep-qq-sep-face))
-        ("qq_open"             (put-text-property beg end 'font-lock-face sweep-qq-open-face))
-        ("qq_close"            (put-text-property beg end 'font-lock-face sweep-qq-close-face))
-        ("identifier"          (put-text-property beg end 'font-lock-face sweep-identifier-face))
-        ("file"                (put-text-property beg end 'font-lock-face sweep-file-face))
-        ("file_no_depend"      (put-text-property beg end 'font-lock-face sweep-file-no-depend-face))
-        ("nofile"              (put-text-property beg end 'font-lock-face 'sweep-no-file-face))
-        ("op_type"             (put-text-property beg end 'font-lock-face sweep-op-type-face))
-        ("method"              (put-text-property beg end 'font-lock-face 'sweep-method-face))
-        ("class"               (put-text-property beg end 'font-lock-face 'sweep-class-face))
-        (`("goal_term" . ,_)   nil)
-        (`("head_term" . ,_)   nil)
-        ("clause"              nil)
-        ("directive"           nil)
-        ("body"                nil)
-        ("html"                nil)
-        ("parentheses"         nil)
-        ("pce"                 nil)
-        ("term"                nil)
-        ("expanded"            nil)
-        ("list"                nil)
-        ("grammar_rule"        nil)
-        ("dict"                nil)
-        ("dict_content"        nil)
-        ("brace_term"          nil)
-        ("rule_condition"      nil)
-        ("exported_operator"   nil)
-        ("empty_list"          nil)
-        ("dcg"                 nil)
-        ("qq_content"          nil)
-        ("qq"                  nil)
-        (other (message "Unknown color term %S" other))))))
+      (put-text-property beg end 'font-lock-face flf))))
 
 (defun sweep-colourise-buffer (&optional buffer)
   (interactive)