branch: master commit 41c2d0a157e739725c478aeb77de51f4d83bf569 Author: Justin Burkett <jus...@burkett.cc> Commit: Justin Burkett <jus...@burkett.cc>
Handle error when no overlay at point * vdiff.el (vdiff--overlay-at-pos): Throw user-error when no overlay is found. --- vdiff.el | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/vdiff.el b/vdiff.el index 6d990f9..178d860 100644 --- a/vdiff.el +++ b/vdiff.el @@ -371,20 +371,28 @@ one buffer to another. Only applies in 3-way diffs." (goto-char (point-min)) (forward-line (1- n))) -(defun vdiff--overlay-at-pos (&optional pos) +(defun vdiff--overlay-at-pos (&optional pos noerror) "Return first vdiff overlay found at POS which defaults to -point." - (let ((pos (or pos (point)))) - (catch 'yes - (dolist (ovr (overlays-at pos)) - (when (overlay-get ovr 'vdiff-type) - (throw 'yes ovr)))))) +point. + +If NOERROR is non-nil, don't signal an error when no overlay is +found." + (let ((pos (or pos (point))) + ovr) + (setq ovr + (catch 'yes + (dolist (ovr (overlays-at pos)) + (when (overlay-get ovr 'vdiff-type) + (throw 'yes ovr))))) + (if (or ovr noerror) + ovr + (user-error "No vdiff overlay found here.")))) (defun vdiff--hunk-at-point-p () "Non-nil if point is in hunk overlay. Returns overlay." - (let ((ovr (vdiff--overlay-at-pos))) + (let ((ovr (vdiff--overlay-at-pos nil t))) (and (overlayp ovr) (overlay-get ovr 'vdiff-type) (not (eq (overlay-get ovr 'vdiff-type) 'fold)) @@ -394,7 +402,7 @@ Returns overlay." "Non-nil if point is in fold overlay. Returns overlay." - (let ((ovr (vdiff--overlay-at-pos))) + (let ((ovr (vdiff--overlay-at-pos nil t))) (and (overlayp ovr) (overlay-get ovr 'vdiff-type) (eq (overlay-get ovr 'vdiff-type) 'fold) @@ -411,7 +419,7 @@ Returns overlay." (defun vdiff--maybe-exit-overlay (&optional up no-fold) "Move point out of any vdiff overlays. Move down unless UP is non-nil. Ignore folds if NO-FOLD is non-nil." - (let* ((ovr (vdiff--overlay-at-pos)) + (let* ((ovr (vdiff--overlay-at-pos nil t)) (type (when ovr (overlay-get ovr 'vdiff-type)))) (when (and type (or (not no-fold) @@ -1162,7 +1170,7 @@ well. This only returns bounds for `interactive'." (deactivate-mark)) (list (if (or (= (line-number-at-pos) 1) (vdiff--overlay-at-pos - (line-beginning-position))) + (line-beginning-position) t)) (line-beginning-position) (save-excursion (forward-line -1)