branch: elpa/hyperdrive
commit cb91f4adace6c78951de6a0e2072b505d8f6493c
Author: Joseph Turner <jos...@ushin.org>
Commit: Joseph Turner <jos...@ushin.org>

    Add: (-history-fill-version-ranges) Interactively fill versions
    
    Also, hyperdrive-history-find-file and hyperdrive-history-view-file
    now fill version ranges when used on an unknown entry.
---
 hyperdrive-history.el | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/hyperdrive-history.el b/hyperdrive-history.el
index c1a62f4e54..475146eb0d 100644
--- a/hyperdrive-history.el
+++ b/hyperdrive-history.el
@@ -216,6 +216,20 @@ Universal prefix argument \\[universal-argument] forces
       (set-buffer-modified-p nil)
       (goto-char (point-min)))))
 
+;; TODO: Add pcase-defmacro for destructuring range-entry
+(defun hyperdrive-history-fill-version-ranges (range-entry)
+  "Fill version ranges starting from RANGE-ENTRY at point."
+  (interactive (list (hyperdrive-history-range-entry-at-point)))
+  (pcase-let* ((`(,range . ,entry) range-entry)
+               (`(,_range-start . ,(map (:range-end range-end))) range)
+               (range-end-entry (hyperdrive-copy-tree entry)))
+    (setf (hyperdrive-entry-version range-end-entry) range-end)
+    (hyperdrive-fill-version-ranges range-end-entry
+      :finally (lambda ()
+                 ;; TODO: Should we open the history buffer for entry
+                 ;; or range-end-entry or...?
+                 (hyperdrive-history entry)))))
+
 (declare-function hyperdrive-diff-file-entries "hyperdrive-diff")
 (defun hyperdrive-history-diff (old-entry new-entry)
   "Show diff between OLD-ENTRY and NEW-ENTRY.
@@ -251,9 +265,8 @@ buffer."
      ;; Known to not exist: warn user.
      (hyperdrive-user-error "File does not exist!"))
     ('unknown
-     ;; Not known to exist: prompt user
-     ;; TODO: Design options
-     (hyperdrive-message "File not known to exist. What do you want to do?"))))
+     ;; Not known to exist: fill version ranges:
+     (hyperdrive-history-fill-version-ranges range-entry))))
 
 (declare-function hyperdrive-view-file "hyperdrive")
 (defun hyperdrive-history-view-file (range-entry)
@@ -273,9 +286,8 @@ buffer."
      ;; Known to not exist: warn user.
      (hyperdrive-user-error "File does not exist!"))
     ('unknown
-     ;; Not known to exist: prompt user
-     ;; TODO: Design options
-     (hyperdrive-message "File not known to exist. What do you want to do?"))))
+     ;; Not known to exist: fill version ranges:
+     (hyperdrive-history-fill-version-ranges range-entry))))
 
 (declare-function hyperdrive-copy-url "hyperdrive")
 

Reply via email to