Emacs 向组织议程批量自定义函数添加标签

Emacs 向组织议程批量自定义函数添加标签,emacs,org-mode,Emacs,Org Mode,添加的自定义函数没有标签,因此可能很难记住它们 查看源代码后,看起来唯一的选择是提供自己的org agenda bulk action实现 不过,我希望被证明是错误的。使用临时重新绑定功能和建议的组合,几乎可以破解elisp中的所有内容 在这种情况下,您可以添加一些关于org-agenda-bulk-action的建议,以在其主体中重新定义char-to-string,这org-agenda-bulk-action调用以格式化自定义绑定消息。此本地版本的char-to-string检查列表中是

添加的自定义函数没有标签,因此可能很难记住它们

查看源代码后,看起来唯一的选择是提供自己的
org agenda bulk action
实现


不过,我希望被证明是错误的。

使用临时重新绑定功能和建议的组合,几乎可以破解elisp中的所有内容

在这种情况下,您可以添加一些关于
org-agenda-bulk-action
的建议,以在其主体中重新定义
char-to-string
,这
org-agenda-bulk-action
调用以格式化自定义绑定消息。此本地版本的
char-to-string
检查列表中是否有其他消息(
“[D]”
用于您的
?D
绑定)

;;给自定义键一个额外的消息
(defvar my custom mappings'((“D.”))
;; 在“组织议程批量操作”主体中重新定义“char to string”
(定义通知组织议程批量操作(:around(orig fn&rest args)“custom msg”)
(cl letf(((符号函数“字符到字符串”)
(λ(字符)
(let((msg(assoc char my custom mappings)))
(如果消息(格式为“%c%s”(汽车消息)(cdr消息))
(格式“%c”字符(()()))
(应用原始fn参数)))

当然,就源代码的更改而言,这是相当脆弱的。

您可能希望将此作为增强请求发送到。谢谢,我将很快尝试此功能,如果它对我有效,我将接受它。我还将发送一个功能请求,因为这可能是这里需要的。
;; give custom keys an extra message
(defvar my-custom-mappings '((?D . "<+Day>")))

;; redefine `char-to-string' in the body of `org-agenda-bulk-action'
(define-advice org-agenda-bulk-action (:around (orig-fn &rest args) "custom-msg")
  (cl-letf (((symbol-function 'char-to-string)
             (lambda (char)
               (let ((msg (assoc char my-custom-mappings)))
                 (if msg (format "%c%s" (car msg) (cdr msg))
                   (format "%c" char))))))
    (apply orig-fn args)))