如何使用带有org-set-tags的org-tags-sort-function自定义标签

时间:2013-08-13 05:29:07

标签: emacs org-mode

我想使用Cc Cq在组织捕获模板缓冲区中设置标记,并且:event:标记(如果使用它)总是首先出现(即,在任何其他标签的左侧)。我为插入:event:的初始标记的事件设置了组织捕获模板。但是,org-set-tags默认为prepend个新标记到列表的开头,而不是append它们到标记列表的末尾。

我在org-set-tags的源代码中看到了一个使用自定义org-tags-sort-function的选项,但我无法找到要复制/修改的任何示例。有没有人有org-tags-sort-functionorg-set-tags一起使用的示例,以便标记:event:之类的内容可以先自动排序(即在所有其他标记的左侧)?

1 个答案:

答案 0 :(得分:1)

sort函数只是一次比较两个元素的函数。 org.el defcustom中的org-tags-sort-function预先定义了两个函数:

(const :tag "Alphabetical" string<)
(const :tag "Reverse alphabetical" string>)

要构建自定义排序功能,您可以执行以下操作:

(defun event-first (x y)
  (if (string= "event" x)
      t
    (if (string= "event" y)
      nil
      (string< x y))))

我随意选择按字母顺序对非“事件”标签进行排序,但您可以更改它。