diff options
Diffstat (limited to '.emacs.d/rul-lisp/packages/rul-write.el')
-rw-r--r-- | .emacs.d/rul-lisp/packages/rul-write.el | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/.emacs.d/rul-lisp/packages/rul-write.el b/.emacs.d/rul-lisp/packages/rul-write.el new file mode 100644 index 0000000..933473d --- /dev/null +++ b/.emacs.d/rul-lisp/packages/rul-write.el @@ -0,0 +1,38 @@ +(use-package denote + :ensure t + :config + (setq denote-infer-keywords t) + (setq denote-sort-keywords t) + (setq denote-file-type 'text) + (setq denote-excluded-directories-regexp nil) + (setq denote-allow-multi-word-keywords nil) + (setq denote-link-fontify-backlinks t) + + (add-hook 'find-file-hook #'denote-link-buttonize-buffer) + (add-hook 'dired-mode-hook #'denote-dired-mode-in-directories) + + (let ((map global-map)) + (define-key map (kbd "C-c n j") #'rul/denote-journal) + (define-key map (kbd "C-c n n") #'denote)) +) + +(defun rul/denote-journal () + "Create an entry tagged 'journal' with the date as its title. +If a journal for the current day exists, visit it. If multiple +entries exist, prompt with completion for a choice between them. +Else create a new file." + (interactive) + (let* ((today (format-time-string "%A %e %B %Y")) + (string (denote-sluggify today)) + (files (denote-directory-files-matching-regexp string))) + (cond + ((> (length files) 1) + (find-file (completing-read "Select file: " files nil :require-match))) + (files + (find-file (car files))) + (t + (denote + today + '("journal")))))) + +(provide 'rul-write) |