如何将一个函数的输出保存到 org 文件里?

我在用 sdcv 这个辞典包,配置好后查词很方便,现在想实现一个功能,查词后把查的词作为标题,解析作为内容导出到一个 org 文件里。

我绑定的是 sdcv-search-pointer+ 这个方法。

(defun sdcv-search-pointer+ ()
  "Translate word at point.
Show information using tooltip.  This command uses
`sdcv-dictionary-simple-list'."
  (interactive)
  ;; Display simple translate result.
  (sdcv-search-simple))
(defun sdcv-search-simple (&optional word)
  "Search WORD simple translate result."
  (when (ignore-errors (require 'posframe))
    (let ((result (sdcv-search-with-dictionary word sdcv-dictionary-simple-list)))
      ;; Show tooltip at point if word fetch from user cursor.
      (posframe-show
       sdcv-tooltip-name
       :string result
       :position (if (derived-mode-p 'eaf-mode) (mouse-absolute-pixel-position) (point))
       :timeout sdcv-tooltip-timeout
       :background-color (face-attribute 'sdcv-tooltip-face :background)
       :foreground-color (face-attribute 'sdcv-tooltip-face :foreground)
       :internal-border-width sdcv-tooltip-border-width
       :tab-line-height 0
       :header-line-height 0)
      (unwind-protect
          (push (read-event " ") unread-command-events)
        (posframe-delete sdcv-tooltip-name)))))

如何把 sdcv-search-simple 的值输出到按照格式输出到一个指定的 org 文件里呢?

可以看下 with-temp-file 这个宏,

(with-temp-file FILE &rest BODY)

创建一个新缓冲区,在里面执行 BODY ,然后将缓冲区写入 FILE。

你要做的就是在 FILE 这个位置放置你要保存的文件名,在 BODY 这里放置一些向 buffer 里插入数据的表达式。

举个例子,将 “你好” 保存进 /tmp 目录下名为 hello.org 的文件中:

(with-temp-file "/tmp/hello.org"
  (insert "你好"))
1 个赞

这题我会,因为我写的英语学习插件也需要将内容输出到org文件中。

功能是如果org文件中已经有这个headline了,例如 * TODO word ,那么就更新这个headline下的内容,如果不存在则在文末追加一条记录。

2 个赞