branch: elpa/hyperdrive commit c12e88da4a91c4478705ebbd920f2932b0e7f768 Author: Adam Porter <a...@alphapapa.net> Commit: Joseph Turner <jos...@ushin.org>
Add/Change: (hyperdrive-history-find-file-other-window) --- hyperdrive-history.el | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/hyperdrive-history.el b/hyperdrive-history.el index 262f0df5bf..6819bddb5e 100644 --- a/hyperdrive-history.el +++ b/hyperdrive-history.el @@ -124,6 +124,7 @@ and ENTRY's version are nil." :parent hyperdrive-ewoc-mode-map :doc "Local keymap for `hyperdrive-history-mode' buffers." "RET" #'hyperdrive-history-find-file + "o" #'hyperdrive-history-find-file-other-window "v" #'hyperdrive-history-view-file "=" #'hyperdrive-history-diff "+" #'hyperdrive-history-fill-version-ranges @@ -257,11 +258,13 @@ Interactively, diff range entry at point with previous entry." :then (lambda () (pop-to-buffer (current-buffer))))) -(defun hyperdrive-history-find-file (range-entry) +(cl-defun hyperdrive-history-find-file + (range-entry &key (then (lambda () + (pop-to-buffer (current-buffer) '(display-buffer-same-window))))) "Visit hyperdrive entry in RANGE-ENTRY at point. -When entry does not exist, does nothing and returns nil. -When entry is not known to exist, attempts to load entry at -RANGE-ENTRY's RANGE-END. +Then call THEN. When entry does not exist, does nothing and +returns nil. When entry is not known to exist, attempts to load +entry at RANGE-ENTRY's RANGE-END. Interactively, visit entry at point in `hyperdrive-history' buffer." @@ -270,7 +273,7 @@ buffer." (pcase-exhaustive (hyperdrive-range-entry-exists-p range-entry) ('t ;; Known to exist: open it. - (hyperdrive-open (cdr range-entry))) + (hyperdrive-open (cdr range-entry) :then then)) ('nil ;; Known to not exist: warn user. (hyperdrive-user-error "File does not exist!")) @@ -278,6 +281,20 @@ buffer." ;; Not known to exist: fill version ranges: (hyperdrive-history-fill-version-ranges range-entry)))) +(defun hyperdrive-history-find-file-other-window (range-entry) + "Visit hyperdrive entry in RANGE-ENTRY at point in other window. +Then call THEN. When entry does not exist, does nothing and +returns nil. When entry is not known to exist, attempts to load +entry at RANGE-ENTRY's RANGE-END. + +Interactively, visit entry at point in `hyperdrive-history' +buffer." + (declare (modes hyperdrive-history-mode)) + (interactive (list (hyperdrive-history-range-entry-at-point))) + (hyperdrive-history-find-file + range-entry :then (lambda () + (pop-to-buffer (current-buffer) '(display-buffer-other-window))))) + (declare-function hyperdrive-view-file "hyperdrive") (defun hyperdrive-history-view-file (range-entry) "Open hyperdrive entry in RANGE-ENTRY at point in `view-mode'.