branch: elpa/vc-fossil
commit 6eb44a204bcff59deea541c368a3e40929f8c9fc
Author: fifr <fifr>
Commit: fifr <fifr>
Refactor next-revision and previous-revision commands.
---
vc/el/vc-fossil.el | 36 ++++++++++++------------------------
1 file changed, 12 insertions(+), 24 deletions(-)
diff --git a/vc/el/vc-fossil.el b/vc/el/vc-fossil.el
index 86c1344..f5add58 100644
--- a/vc/el/vc-fossil.el
+++ b/vc/el/vc-fossil.el
@@ -338,18 +338,12 @@ If REV is specified, annotate that revision."
"Fossil specific version of the `vc-previous-revision'."
(if file
(with-temp-buffer
- (let ((found (not rev))
- (newver nil))
- (vc-fossil-command t 0 (file-truename file) "finfo" "-l" "-b")
- ;; (vc-fossil--call "fossil" "finfo" "-l" "-b" file)
- (goto-char (point-min))
- (while (not (eobp))
- (let* ((line (buffer-substring-no-properties (point)
(line-end-position)))
- (version (car (split-string line))))
- (setq newver (or newver (and found version)))
- (setq found (string= version rev)))
- (forward-line))
- newver))
+ (vc-fossil-command t 0 (file-truename file) "finfo" "-l" "-b")
+ (goto-char (point-min))
+ (and (re-search-forward (concat "^" (regexp-quote rev)))
+ (zerop (forward-line))
+ (looking-at "^\\([0-9a-zA-Z]+\\)")
+ (match-string 1)))
(let ((info (vc-fossil--run "info" rev)))
(and (string-match "parent: *\\([0-9a-fA-F]+\\)" info)
(match-string 1 info)))))
@@ -358,18 +352,12 @@ If REV is specified, annotate that revision."
"Fossil specific version of the `vc-previous-revision'."
(if file
(with-temp-buffer
- (let ((found (not rev))
- (oldver nil))
- (vc-fossil-command t 0 (file-truename file) "finfo" "-l" "-b")
- ;; (vc-fossil--call "fossil" "finfo" "-l" "-b" file)
- (goto-char (point-min))
- (while (not (eobp))
- (let* ((line (buffer-substring-no-properties (point)
(line-end-position)))
- (version (car (split-string line))))
- (setq found (string= version rev))
- (setq oldver (or oldver found version)))
- (forward-line))
- oldver))
+ (vc-fossil-command t 0 (file-truename file) "finfo" "-l" "-b")
+ (goto-char (point-min))
+ (and (re-search-forward (concat "^" (regexp-quote rev)))
+ (zerop (forward-line -1))
+ (looking-at "^\\([0-9a-zA-Z]+\\)")
+ (match-string 1)))
(let ((info (vc-fossil--run "info" rev)))
(and (string-match "child: *\\([0-9a-fA-F]+\\)" info)
(match-string 1 info)))))