问题描述:
Denote 最近升级之后,不知为何用 M-x denote 等命令(具体见 issue:Issues · protesilaos/denote · GitHub 不会显示笔记列表。
因为我的笔记依赖编号,这样一来,为笔记命名变成了非常令人烦恼的问题,编号输入重复了不知道。
向插件开发者 Port 反映,他问我是否打开了 savehist-mode,但我打开这个 mode 之后,问题依旧。
忍受不了一点了,就自己动手写一个函数来解决问题。不得不说,Emacs 的随心所欲,让人爱之愈爱。
函数:
(defun my-denote-with-preview ()
(interactive)
(let* ((existing-notes (denote-directory-files))
(existing-titles (mapcar (lambda (file)
(or (denote-retrieve-title-value file 'org)
(file-name-base file)))
existing-notes))
(chosen-title (ivy-read "Choose or enter new note title: "
existing-titles
:caller 'my-denote-with-preview
:action (lambda (x)
(setq ivy-text x))
:require-match nil)))
(if (member chosen-title existing-titles)
(find-file (car (delq nil (mapcar (lambda (file)
(when (string= (or (denote-retrieve-title-value file 'org)
(file-name-base file))
chosen-title)
file))
existing-notes))))
(denote chosen-title))))