[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Summary Buffer Format

Gnus will use the value of the gnus-extract-address-components variable as a function for getting the name and address parts of a From header. Two pre-defined functions exist: gnus-extract-address-components, which is the default, quite fast, and too simplistic solution; and mail-extract-address-components, which works very nicely, but is slower. The default function will return the wrong answer in 5% of the cases. If this is unacceptable to you, use the other function instead:

(setq gnus-extract-address-components

gnus-summary-same-subject is a string indicating that the current article has the same subject as the previous. This string will be used with those specs that require it. The default is "".

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.1 Summary Buffer Lines

You can change the format of the lines in the summary buffer by changing the gnus-summary-line-format variable. It works along the same lines as a normal format string, with some extensions (see section Formatting Variables).

There should always be a colon or a point position marker on the line; the cursor always moves to the point position marker or the colon after performing an operation. (Of course, Gnus wouldn’t be Gnus if it wasn’t possible to change this. Just write a new function gnus-goto-colon which does whatever you like with the cursor.) See section Positioning Point.

The default string is ‘%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n’.

The following format specification characters and extended format specification(s) are understood:


Article number.


Subject string. List identifiers stripped, gnus-list-identifiers. See section Article Hiding.


Subject if the article is the root of the thread or the previous article had a different subject, gnus-summary-same-subject otherwise. (gnus-summary-same-subject defaults to "".)


Full From header.


The name (from the From header).


The name, To header or the Newsgroups header (see section To From Newsgroups).


The name (from the From header). This differs from the n spec in that it uses the function designated by the gnus-extract-address-components variable, which is slower, but may be more thorough.


The address (from the From header). This works the same way as the a spec.


Number of lines in the article.


Number of characters in the article. This specifier is not supported in some methods (like nnfolder).


Pretty-printed version of the number of characters in the article; for example, ‘1.2k’ or ‘0.4M’.


Indentation based on thread level (see section Customizing Threading).


A complex trn-style thread tree, showing response-connecting trace lines. A thread could be drawn like this:

| +->
| | \->
| |   \->
| \->

You can customize the appearance with the following options. Note that it is possible to make the thread display look really neat by replacing the default ASCII characters with graphic line-drawing glyphs.


Used for the root of a thread. If nil, use subject instead. The default is ‘> ’.


Used for the false root of a thread (see section Loose Threads). If nil, use subject instead. The default is ‘> ’.


Used for a thread with just one message. If nil, use subject instead. The default is ‘’.


Used for drawing a vertical line. The default is ‘| ’.


Used for indenting. The default is ‘ ’.


Used for a leaf with brothers. The default is ‘+-> ’.


Used for a leaf without brothers. The default is ‘\->


Nothing if the article is a root and lots of spaces if it isn’t (it pushes everything after it off the screen).


Opening bracket, which is normally ‘[’, but can also be ‘<’ for adopted articles (see section Customizing Threading).


Closing bracket, which is normally ‘]’, but can also be ‘>’ for adopted articles.


One space for each thread level.


Twenty minus thread level spaces.


Unread. See section Read Articles.


This misleadingly named specifier is the secondary mark. This mark will say whether the article has been replied to, has been cached, or has been saved. See section Other Marks.


Score as a number (see section Scoring).


Zcore, ‘+’ if above the default level and ‘-’ if below the default level. If the difference between gnus-summary-default-score and the score is less than gnus-summary-zcore-fuzz, this spec will not be used.


Total thread score.






The Date in DD-MMM format.


The Date in YYYYMMDDTHHMMSS format.






Number of articles in the current sub-thread. Using this spec will slow down summary buffer generation somewhat.


An ‘=’ (gnus-not-empty-thread-mark) will be displayed if the article has any children.


The line number.


Download mark.


Desired cursor position (instead of after first colon).


Age sensitive date format. Various date format is defined in gnus-user-date-format-alist.


User defined specifier. The next character in the format string should be a letter. Gnus will call the function gnus-user-format-function-x, where x is the letter following ‘%u’. The function will be passed the current header as argument. The function should return a string, which will be inserted into the summary just like information from any other summary specifier.

Text between ‘%(’ and ‘%)’ will be highlighted with gnus-mouse-face when the mouse point is placed inside the area. There can only be one such area.

The ‘%U’ (status), ‘%R’ (replied) and ‘%z’ (zcore) specs have to be handled with care. For reasons of efficiency, Gnus will compute what column these characters will end up in, and “hard-code” that. This means that it is invalid to have these specs after a variable-length spec. Well, you might not be arrested, but your summary buffer will look strange, which is bad enough.

The smart choice is to have these specs as far to the left as possible. (Isn’t that the case with everything, though? But I digress.)

This restriction may disappear in later versions of Gnus.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.2 To From Newsgroups

In some groups (particularly in archive groups), the From header isn’t very interesting, since all the articles there are written by you. To display the information in the To or Newsgroups headers instead, you need to decide three things: What information to gather; where to display it; and when to display it.

  1. The reading of extra header information is controlled by the gnus-extra-headers. This is a list of header symbols. For instance:
    (setq gnus-extra-headers
          '(To Newsgroups X-Newsreader))

    This will result in Gnus trying to obtain these three headers, and storing it in header structures for later easy retrieval.

  2. The value of these extra headers can be accessed via the gnus-extra-header function. Here’s a format line spec that will access the X-Newsreader header:
    "%~(form (gnus-extra-header 'X-Newsreader))@"
  3. The gnus-ignored-from-addresses variable says when the ‘%f’ summary line spec returns the To, Newsreader or From header. If this regexp matches the contents of the From header, the value of the To or Newsreader headers are used instead.

    To distinguish regular articles from those where the From field has been swapped, a string is prefixed to the To or Newsgroups header in the summary line. By default the string is ‘-> ’ for To and ‘=> ’ for Newsgroups, you can customize these strings with gnus-summary-to-prefix and gnus-summary-newsgroup-prefix.

A related variable is nnmail-extra-headers, which controls when to include extra headers when generating overview (NOV) files. If you have old overview files, you should regenerate them after changing this variable, by entering the server buffer using ^, and then g on the appropriate mail server (e.g., nnml) to cause regeneration.

You also have to instruct Gnus to display the data by changing the %n spec to the %f spec in the gnus-summary-line-format variable.

In summary, you’d typically put something like the following in ‘~/.gnus.el’:

(setq gnus-extra-headers
      '(To Newsgroups))
(setq nnmail-extra-headers gnus-extra-headers)
(setq gnus-summary-line-format
      "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
(setq gnus-ignored-from-addresses
      "Your Name Here")

(The values listed above are the default values in Gnus. Alter them to fit your needs.)

A note for news server administrators, or for users who wish to try to convince their news server administrator to provide some additional support:

The above is mostly useful for mail groups, where you have control over the NOV files that are created. However, if you can persuade your nntp admin to add (in the usual implementation, notably INN):


to the end of her ‘overview.fmt’ file, then you can use that just as you would the extra headers from the mail groups.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.3 Summary Buffer Mode Line

You can also change the format of the summary mode bar (see section Mode Line Formatting). Set gnus-summary-mode-line-format to whatever you like. The default is ‘Gnus: %%b [%A] %Z’.

Here are the elements you can play with:


Group name.


Unprefixed group name.


Current article number.


Current article score.


Gnus version.


Number of unread articles in this group.


Number of unread articles in this group that aren’t displayed in the summary buffer.


A string with the number of unread and unselected articles represented either as ‘<%U(+%e) more>’ if there are both unread and unselected articles, and just as ‘<%U more>’ if there are just unread articles and no unselected ones.


Shortish group name. For instance, ‘rec.arts.anime’ will be shortened to ‘r.a.anime’.


Subject of the current article.


User-defined spec (see section User-Defined Specs).


Name of the current score file (see section Scoring).


Number of dormant articles (see section Unread Articles).


Number of ticked articles (see section Unread Articles).


Number of articles that have been marked as read in this session.


Number of articles expunged by the score files.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1.4 Summary Highlighting


This hook is run after selecting an article. It is meant to be used for highlighting the article in some way. It is not run if gnus-visual is nil.


This hook is called when a summary line is changed. It is not run if gnus-visual is nil.


This is the face (or font as some people call it) used to highlight the current article in the summary buffer.


Summary lines are highlighted according to this variable, which is a list where the elements are of the format (form . face). If you would, for instance, like ticked articles to be italic and high-scored articles to be bold, you could set this variable to something like

(((eq mark gnus-ticked-mark) . italic)
 ((> score default) . bold))

As you may have guessed, if form returns a non-nil value, face will be applied to the line.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated on January 25, 2015 using texi2html 1.82.