So you've just written a new macro for your Clojure DSL, and now you have something like:
(defwidget my-widget ...)
And you'd love to add syntax highlighting to Emacs so that it gets highlighted the way defn and defmacro do. Here are the magic words:
;;; Adds new defn-esque keyword highlighting. (add-hook 'clojure-mode-hook '(lambda () (font-lock-add-keywords nil '(("(\\(defwidget\\)\\s-+\\(\\w+\\)" (1 font-lock-keyword-face) (2 font-lock-function-name-face))))))
What's going on here? Well, let's break it down:
;;; Add a function that runs for any Clojure buffer. (add-hook 'clojure-mode-hook ;; An anonymous function that takes no arguments. '(lambda () ;; Set some new syntax-highlighting rules. (font-lock-add-keywords nil ;; So many escape codes! But we're really just saying: ;; Match the '(' character. ;; Match and group the string 'defwidget'. ;; Match some whitespace. \\s-+ ;; Match and group some word characters. \\w+ '(("(\\(defwidget\\)\\s-+\\(\\w+\\)" ;; The first regexp group is a keyword. (1 font-lock-keyword-face) ;; The second regexp group is a name. (2 font-lock-function-name-face) ))))) ; Close up the patient.