emacsemacs24emacs-facesgnus

How to customize face for gnus-group-topic emacs24?


I'm trying to set the color for the topic name in gnus-group-mode. I've tried to look up the face name so I can set the color property, but I get default or ascii character as the face name depending on what letter of the topic i'm looking up.

Looking up the source code of gnus I came up with this function. However I'm unsure how to assign a face to a function (if this is the right way to do things) after reading the face section of the docs.

(defun gnus-group-topic-name ()
 "The name of the topic on the current line."
 (let ((topic (get-text-property (point-at-bol) 'gnus-topic)))
    (and topic (symbol-name topic))))

Solution

  • There seems to be no face defined for topics out of the box. This little snippet from http://www.emacswiki.org/emacs/GnusFormatting tries to work around that, and also introduces separate faces for empty and non-empty topics:

    (setq gnus-topic-line-format "%i[ %u&topic-line; ] %v\n")
    
    ;; this corresponds to a topic line format of "%n %A"
    (defun gnus-user-format-function-topic-line (dummy)
      (let ((topic-face (if (zerop total-number-of-articles)
                            'my-gnus-topic-empty-face
                          'my-gnus-topic-face)))
        (propertize
         (format "%s %d" name total-number-of-articles)
         'face topic-face)))
    

    That page also notes that you have to replace my-gnus-topic-empty-face and my-gnus-topic-face with some appropriate faces or create your own.