local and remote setup for denote

This commit is contained in:
Levi 2024-09-11 07:49:41 +02:00
parent 0259b4b5ab
commit 82f099db48
1 changed files with 61 additions and 4 deletions

View File

@ -285,7 +285,9 @@
(use-package denote :ensure t
:commands (my/search-denote-notes)
:bind (("C-x n f" . #'denote-open-or-create)
("C-x n n" . #'denote)
("C-x n n" . #'my/denote-create-note)
("C-x n d s" . #'my/denote-switch-directory)
("C-x n d d" . #'my/denote-echo-current-directory)
("C-x n c" . #'denote-region)
("C-x n !" . #'denote-date)
("C-x n z" . #'denote-signature)
@ -302,10 +304,58 @@
("C-x n r f" . #'denote-rename-file-using-front-matter))
:config
(defvar my/denote-local-notes-directory "~/notes/")
(defvar my/denote-remote-notes-directory "/ssh:lkn@alioth.uberspace.de:/home/lkn/notes/")
(setq denote-directory my/denote-local-notes-directory)
(defun my/denote-echo-current-directory ()
"Echo the current value of denote-directory."
(interactive)
(message "Current Denote directory: %s" denote-directory))
(defun my/denote-directory-segment ()
"Return the current Denote directory for the mode line."
(when (bound-and-true-p denote-directory)
(format " Denote:%s " (file-name-nondirectory (directory-file-name denote-directory)))))
(defun my/denote-switch-directory ()
"Switch current denote working directory."
(interactive)
(let ((new-dir (if (string= denote-directory my/denote-local-notes-directory)
my/denote-remote-notes-directory
my/denote-local-notes-directory)))
(setq denote-directory new-dir)
(message "Denote directory switched to %s" new-dir)))
(defun my/denote-use-both-directories (orig-fun &rest args)
"Temporarily use both directories for a given function."
(let ((original-dir denote-directory)
(result nil))
(setq denote-directory my/denote-local-notes-directory)
(setq result (apply orig-fun args))
(setq denote-directory my/denote-remote-notes-directory)
(setq result (append result (apply orig-fun args)))
(setq denote-directory original-dir)
result))
(defun my/denote-create-note ()
"Create a note in directory of choice."
(interactive)
(let* ((dirs (list my/denote-local-notes-directory my/denote-remote-notes-directory))
(chosen-dir (completing-read "Choose directory: " dirs)))
(let ((denote-directory chosen-dir))
(call-interactively #'denote))))
(advice-add 'denote-directory-files :around #'my/denote-use-both-directories)
(advice-add 'denote-directory-subdirectories :around #'my/denote-use-both-directories)
(defun my/search-denote-notes ()
"Use ripgrep to search denote notes."
(interactive)
(let ((default-directory "/ssh:lkn@alioth.uberspace.de:/home/lkn/notes/"))
(let ((default-directory denote-directory))
(consult-ripgrep)))
(let ((map dired-mode-map))
@ -314,9 +364,16 @@
(define-key map (kbd "C-x n k") #'denote-dired-rename-marked-files-with-keywords)
(define-key map (kbd "C-x n r r") #'denote-dired-rename-files)
(define-key map (kbd "C-x n r f") #'denote-dired-rename-marked-files-using-front-matter))
;; show current denote directory in modeline
(with-eval-after-load 'doom-modeline
(doom-modeline-def-segment denote-directory
(my-denote-directory-segment))
(setq doom-modeline-format-left
(append doom-modeline-format-left
'(denote-directory))))
(setq denote-directory (expand-file-name "/ssh:lkn@alioth.uberspace.de:/home/lkn/notes/")
denote-save-buffers nil
(setq denote-save-buffers nil
denote-known-keywords '("emacs" "golang" "dev")
denote-infer-keywords t
denote-sort-keywords t