(push (cons (match-beginning 0) (match-end 0)) regions)))
regions))
+(declare-function track-changes-register "track-changes")
+(declare-function track-changes-fetch "track-changes")
+
(cl-defgeneric refactor-backend-read-replacement (backend old scope)
"Read a replacement for identifier OLD across SCOPE using BACKEND."
- (pcase-dolist (`(,beg . ,end)
- (refactor-backend-rename-highlight-regions backend old scope))
- (let ((ov (make-overlay beg end)))
- (overlay-put ov 'refactor-rename-old t)
- (overlay-put ov 'face 'lazy-highlight)))
- (unwind-protect
- (let ((new nil)
- (invalid nil))
- (while (not new)
- (setq new (read-string (format "%sRename \"%s\" across %s to: "
+ (let (ovs)
+ (pcase-dolist (`(,beg . ,end)
+ (refactor-backend-rename-highlight-regions backend old scope))
+ (let ((ov (make-overlay beg end)))
+ (overlay-put ov 'face 'lazy-highlight)
+ (push ov ovs)))
+ (unwind-protect
+ (let ((new nil) (invalid nil))
+ (while (not new)
+ (setq new
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (require 'track-changes)
+ (track-changes-register
+ (lambda (id)
+ (track-changes-fetch
+ id (lambda (&rest _)
+ (dolist (ov ovs)
+ (overlay-put ov 'display
+ (minibuffer-contents))))))
+ :nobefore t))
+ (read-string (format "%sRename \"%s\" across %s to: "
(or invalid "")
old (or scope "current scope"))
- nil nil old))
- (when-let ((inv (refactor-backend-invalid-replacement
- backend old new scope)))
- (setq invalid (format "Invalid replacement \"%s\": %s\n" new inv)
- new nil)))
- new)
- (remove-overlays (point-min) (point-max) 'refactor-rename-old t)))
+ nil nil old)))
+ (when-let ((inv (refactor-backend-invalid-replacement
+ backend old new scope)))
+ (setq invalid (format "Invalid replacement \"%s\": %s\n" new inv)
+ new nil)))
+ new)
+ (mapc #'delete-overlay ovs))))
(cl-defgeneric refactor-backend-read-new-function-name (_backend)
"Read a new function name."