更改 GNUS 组的显示名称

9
有没有办法在GNUS中更改组的显示名称而不实际重命名该组?我从IMAP服务器上读取电子邮件,而且组名相当丑陋(例如nnimap+uwindsor:INBOX)。我尝试使用gnus-group-rename-group命令,但它试图更改服务器上的名称。有没有办法将实际名称映射到某个本地显示名称,以使我的组缓冲区更易读一些?

我预计参数不会影响这个特定的问题,但是(banner . REGEXP)组参数将从文章中剥离任何匹配到REGEXP的内容... - abiessu
嗯,那似乎行不通。我不需要更改文章中的文本,而是需要更改组名。 - bstamour
此外,此页面上找到的(变量形式)列出了去除标签等的方法... - abiessu
3
你已经调整了gnus-group-line-format变量了吗?请注意这个页面,特别是讨论“用户格式函数”的NAMESPACE部分。 - abiessu
哦,哇,谢谢。这真的很有帮助。我稍后会编写一些elisp代码,将真实名称映射到“更漂亮”的名称,使用那里描述的%uG技术。 - bstamour
1个回答

9

以下是我如何解决这个问题的方法。首先,非常感谢abiessu通过他的评论使我找到了正确的方向。

(setq gnus-group-line-format "%M%S%5y/%-5t: %uG %D\n")
(defun gnus-user-format-function-G (arg)
  (let ((mapped-name (assoc gnus-tmp-group group-name-map)))
    (if (null mapped-name)
        gnus-tmp-group
      (cdr mapped-name))))

这个小函数简单地在我定义的映射中查找当前组名,如果有“翻译”,它会显示翻译后的名称而不是实际名称。在我的配置中使用了一些示例:

(setq group-name-map '(("nnimap+uwindsor:INBOX" . "School-Inbox")
                       ("nnimap+uwindsor:[Gmail]/Starred" . "School-Starred")
                       ("nnimap+uwindsor:[Gmail]/Sent Mail" . "School-Sent")))

仅使用alist非常好,因为我可以按照自己的意愿创建映射,无需诉诸于正则表达式、模式等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接