aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp/my/my-org.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.emacs.d/lisp/my/my-org.el')
-rw-r--r--emacs/.emacs.d/lisp/my/my-org.el47
1 files changed, 44 insertions, 3 deletions
diff --git a/emacs/.emacs.d/lisp/my/my-org.el b/emacs/.emacs.d/lisp/my/my-org.el
index 8a6991e..01082d8 100644
--- a/emacs/.emacs.d/lisp/my/my-org.el
+++ b/emacs/.emacs.d/lisp/my/my-org.el
@@ -156,9 +156,50 @@ Otherwise deactivate mark and move point to after the block."
(save-excursion (my-org-beginning-of-line-or-indent) (point))
(point)))))
-(defun my-org-open-default-notes-file ()
- (interactive)
- (find-file org-default-notes-file))
+(defvar my-shell-buffer-list nil
+ "List of default org notes file buffers.")
+
+(defun my-org-open-or-cycle-notes (arg)
+ "Open default notes file.
+
+Switch to the first buffer with the notes file that's not in a
+live window, or find the notes file.
+
+If repeated, cycle through indirect buffers of the default notes.
+
+With a prefix ARG, creates a new indirect buffer of the default
+notes file."
+ (interactive "P")
+ (if arg
+ (with-current-buffer (find-file-noselect org-default-notes-file)
+ (clone-indirect-buffer nil t)
+ (setq my-notes-buffer-list
+ (setq-filter 'my-buffer-with-same-base-p
+ (buffer-list))))
+ (if (eq last-command 'my-org-open-or-cycle-notes)
+ (progn
+ (setq my-notes-buffer-list
+ (my-list-cycle my-notes-buffer-list))
+ (switch-to-buffer (car my-notes-buffer-list)))
+ (let ((buffer
+ (find-file-noselect org-default-notes-file)))
+ (with-current-buffer buffer
+ (setq my-notes-buffer-list
+ (seq-filter 'my-buffer-with-same-base-p (buffer-list))))
+ ;; Find first buffer that is not in a live window. If no such
+ ;; buffer exists, fall back to `find-file-noselect'.
+ (setq buffer
+ (or
+ (seq-find
+ (lambda (buffer)
+ (not (my-buffer-live-window-p buffer)))
+ my-notes-buffer-list)
+ (find-file-noselect org-default-notes-file)))
+ (while (not (eq buffer (car my-notes-buffer-list)))
+ (setq my-notes-buffer-list
+ (my-list-cycle my-notes-buffer-list))))
+ (switch-to-buffer (car my-notes-buffer-list))
+ )))
;; links
(defun my-org-substitute-gnus-link-after-archiving ()