TIL:解决 Denote 新建笔记时不显示笔记列表的问题

问题描述:

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))))

有个包 denote-fz

1 个赞

不是非常理解它自动编号的规则,不过谢谢你的分享,也许某一天有用