Transient Directories in NotDeft
My NotDeft note manager has an optional notdeft-path
feature to better support transient directories of notes. Also in the standard configuration, the notdeft-directories
list may contain directories that do not have to always exist, as any non-existing directories are simply ignored; if and when they appear, they can be included in subsequent searches.
Note, however, that the notdeft-directories
variable is normally set only once, and if the initializer expression includes wildcards, the variable value may not contain directories that get mounted or copied over later. Thus, if your Emacs startup file says
(setq notdeft-directories `("~/notes" ,@(file-expand-wildcards "~/*/notes")))
and the directory
~/phone/notes
becomes available after Emacs has already started, your notdeft-directories
may not include that directory.
NotDeft includes a notdeft-refresh
command (bound to C-c C-g
) for notifying NotDeft of filesystem changes that have occurred outside NotDeft control, and it would be consistent with that semantics for the command to also detect any new NotDeft directories that may also have appeared.
That additional functionality can be achieved by also updating the notdeft-directories
value for each notdeft-refresh
, prior to scanning the contents of those directories. The notdeft-path
feature arranges for that to happen, if it is set up as follows:
(require 'notdeft-path)
(setq notdeft-path
(lambda ()
`("~/notes" ,@(file-expand-wildcards "~/*/notes"))))
(notdeft-refresh-directories)
(add-hook 'notdeft-pre-refresh-hook 'notdeft-refresh-directories)
where the notdeft-refresh-directories
function computes and assigns a value for notdeft-directories
. By installing that function into the notdeft-pre-refresh-hook
we also arrange for notdeft-directories
updates later, once NotDeft is already running.
The notdeft-refresh-directories
function also runs the notdeft-directories-changed-hook
after a new set of directories has been computed, in case other settings need updating to reflect the change in directories. For example, suppose we are using org-agenda
for calendaring, and we wish to also recompute our list of org-agenda-files
:
(defun my-refresh-org-agenda-files ()
(apply 'append (mapcar (lambda (dir)
(file-expand-wildcards
(concat (file-name-as-directory dir)
"*-Agenda.org")))
notdeft-directories)))
(my-refresh-org-agenda-files)
(add-hook 'notdeft-directories-changed-hook 'my-refresh-org-agenda-files)
This information is current as of NotDeft revision 5c75549.