0

我想在创建标题时插入一个 PROPERTIES 抽屉。到目前为止我有这个

(defadvice org-insert-heading (after add-id-stuff activate)
  (template-myid))

(defun template-myid ()
  (insert "\n:PROPERTIES:\n:TIME: "
      (format "%s" (format-time-string "%Y-%m-%dT%H:%M:%S"))
      "\n:VERTEX: "
      (format "%s" (shell-command "uuidgen" t))
      "\n:EDGES:  \n:END:"))

这是有效的——有点。我的问题是 uuid 被扔了。输出看起来像这样

* Heading
:PROPERTIES:
:TIME: 2020-03-10T23:34:17
:VERTEX: 12836
:EDGES:  
:END:32bf9499-f9e2-49d9-b8e7-9edb40272411

不知道如何使这种行为。简单地调用 org-tempo 并插入我现成的模板会很好,但我还没有弄清楚如何做到这一点......

4

1 回答 1

0

这有效

(defadvice org-insert-heading (after add-id-stuff activate)
  (template-myid))

(defun template-myid ()
  (insert "\n:PROPERTIES:\n:TIME: "
      (format-time-string "%Y-%m-%dT%H:%M:%S")
      "\n:VERTEX: "
      (org-id-uuid)
      "\n:EDGES:  \n:END:"))

产生了

* heading
:PROPERTIES:
:TIME: 2020-03-11T08:11:36
:VERTEX: 35e40480-7708-4003-9c84-f950b7ce87ce
:EDGES:  
:END:

从 NickD 的上述建议中得到帮助,Diego Zamboni 在 org-mode 邮件列表 (emacs-orgmode@gnu.org) 上获得了帮助,Chris Wellons的一篇文章,以及常见的官方 ref 转储嫌疑人。不过,我不确定为什么(shell-command "uuidgen" t)会产生两个输出。这就是他们的样子*scratch*

(shell-command "uuidgen" t)
2827
b5da7e0a-84c0-4db8-91f3-871b681f3022

(org-id-uuid)
"0bb7a4e1-9fc2-4428-b8de-a2d9ef5c56ab"

尽管uuidgen在 bash 命令行中直接生成 UUID。首先产生2827上述内容发生了什么?我无法理解*Help*shell-command

(org-id-uuid)函数位于 org-id.el 中,并且在随机性方面看起来非常彻底。

另外,有谁知道我如何通过advise在 org-mode tempo 模板中添加一个函数来做到这一点?我永远无法弄清楚实际处理<...-TAB.

于 2020-03-11T14:12:46.347 回答