Add org-roam-timestamped-files option

This commit is contained in:
Jethro Kuan
2020-02-12 22:18:03 +08:00
parent ceb88e1e82
commit 5c1d22352e

View File

@ -43,6 +43,14 @@ Valid values are
(const title)) (const title))
:group 'org-roam) :group 'org-roam)
(defcustom org-roam-timestamped-files nil
"Whether to use timestamps to generate unique filenames."
:type 'boolean
:group 'org-roam)
(defcustom org-roam-timestamp-format "%Y-%m-%d%H%M%S"
"The timestamp format to use filenames.")
(defcustom org-roam-link-id-format "§%s" (defcustom org-roam-link-id-format "§%s"
"The format string used when inserting org-roam links that use id." "The format string used when inserting org-roam links that use id."
:type 'string :type 'string
@ -224,10 +232,14 @@ If not provided, derive the title from the file name."
(org-roam--make-file file-path)) (org-roam--make-file file-path))
(find-file file-path))) (find-file file-path)))
(defun org-roam--get-new-id ()
"Return a new ID, generated from the current time."
(format-time-string org-roam-timestamp-format (current-time)))
(defun org-roam-new-file () (defun org-roam-new-file ()
"Quickly create a new file, using the current timestamp." "Quickly create a new file, using the current timestamp."
(interactive) (interactive)
(org-roam--new-file-named (format-time-string "%Y-%m-%d-%H%M%S" (current-time)))) (org-roam--new-file-named (org-roam--get-new-id)))
;;; Inserting org-roam links ;;; Inserting org-roam links
(defun org-roam-insert () (defun org-roam-insert ()
@ -244,8 +256,11 @@ If not provided, derive the title from the file name."
(org-roam--get-id file))) (org-roam--get-id file)))
(org-roam--find-all-files))) (org-roam--find-all-files)))
(title (completing-read "File: " completions)) (title (completing-read "File: " completions))
(id (or (cadr (assoc title completions)) (id (cadr (assoc title completions))))
(read-string "Enter new file id: " (org-roam--title-to-id title))))) (when (not id)
(if org-roam-timestamped-files
(setq id (org-roam--get-new-id)))
(read-string "Enter new file id: " (org-roam--title-to-id title)))
(let ((file-path (org-roam--get-file-path id))) (let ((file-path (org-roam--get-file-path id)))
(unless (file-exists-p file-path) (unless (file-exists-p file-path)
(org-roam--make-file file-path title)) (org-roam--make-file file-path title))
@ -273,8 +288,10 @@ If not provided, derive the title from the file name."
(title-or-id (completing-read "File: " completions)) (title-or-id (completing-read "File: " completions))
(file-path (cadr (assoc title-or-id completions)))) (file-path (cadr (assoc title-or-id completions))))
(unless file-path (unless file-path
(let ((id (read-string "Enter new file id: " (let ((id (if org-roam-timestamped-files
(org-roam--title-to-id title-or-id)))) (org-roam--get-new-id)
(read-string "Enter new file id: "
(org-roam--title-to-id title-or-id)))))
(setq file-path (org-roam--get-file-path id t)))) (setq file-path (org-roam--get-file-path id t))))
(unless (file-exists-p file-path) (unless (file-exists-p file-path)
(org-roam--make-file file-path title-or-id)) (org-roam--make-file file-path title-or-id))