(defun ztree-diff-node-update-diff-from-children (node)
"Set the diff status for the NODE based on its children."
- ;(unless (eq (ztree-diff-node-different node 'ignore))
- (let ((diff (cl-reduce 'ztree-diff-model-update-diff
- (ztree-diff-node-children node)
- :initial-value 'same
- :key 'ztree-diff-node-different)))
- (ztree-diff-node-set-different node diff)))
+ (unless (eql (ztree-diff-node-different node) 'ignore)
+ (let ((diff (cl-reduce 'ztree-diff-model-update-diff
+ (ztree-diff-node-children node)
+ :initial-value 'same
+ :key 'ztree-diff-node-different)))
+ (ztree-diff-node-set-different node diff))))
(defun ztree-diff-node-update-all-parents-diff (node)
"Recursively update all parents diff status for the NODE."
(,(kbd "v") . ztree-diff-view-file)
(,(kbd "d") . ztree-diff-simple-diff-files)
(,(kbd "r") . ztree-diff-partial-rescan)
+ (,(kbd "R") . ztree-diff-full-rescan)
([f5] . ztree-diff-full-rescan)))
(if (not parent)
(when ztree-diff-dirs-pair
(ztree-diff (car ztree-diff-dirs-pair) (cdr ztree-diff-dirs-pair)))
+ (ztree-diff-update-wait-message
+ (concat "Updating " (ztree-diff-node-short-name common) " ..."))
(ztree-diff-model-partial-rescan common)
+ (message "Done")
(ztree-refresh-buffer (line-number-at-pos)))))
(error error-trap))))
;; error message if failed
(if err (message (concat "Error: " (nth 2 err)))
- (progn ; otherwise:
- ;; assuming all went ok when left and right nodes are the same
- ;; set both as not different if they were not ignored
- (unless (eq (ztree-diff-node-different node) 'ignore)
- (ztree-diff-node-set-different node 'same))
- ;; update left/right paths
- (if copy-to-right
- (ztree-diff-node-set-right-path node target-path)
- (ztree-diff-node-set-left-path node target-path))
- (ztree-diff-node-update-all-parents-diff node)
- (ztree-refresh-buffer (line-number-at-pos)))))))
+ ;; otherwise:
+ ;; assuming all went ok when left and right nodes are the same
+ ;; set both as not different if they were not ignored
+ (unless (eq (ztree-diff-node-different node) 'ignore)
+ (ztree-diff-node-set-different node 'same))
+ ;; update left/right paths
+ (if copy-to-right
+ (ztree-diff-node-set-right-path node target-path)
+ (ztree-diff-node-set-left-path node target-path))
+ (ztree-diff-node-update-all-parents-diff node)
+ (ztree-refresh-buffer (line-number-at-pos))))))
(defun ztree-diff-copy-dir (node source-path destination-path copy-to-right)
;; and do rescan of the node
(ztree-diff-do-partial-rescan node))
;; if everything is ok, update statuses
- (progn
- (message target-full-path)
- (if copy-to-right
- (ztree-diff-node-set-right-path node
- target-full-path)
- (ztree-diff-node-set-left-path node
- target-full-path))
- (setq ztree-diff-model-wait-message
- (concat "Updating " (ztree-diff-node-short-name node) " ..."))
- (ztree-diff-model-update-node node)
- (message "Done.")
- (ztree-diff-node-update-all-parents-diff node)
- (ztree-refresh-buffer (line-number-at-pos)))))))
+ (message target-full-path)
+ (if copy-to-right
+ (ztree-diff-node-set-right-path node
+ target-full-path)
+ (ztree-diff-node-set-left-path node
+ target-full-path))
+ (ztree-diff-update-wait-message
+ (concat "Updating " (ztree-diff-node-short-name node) " ..."))
+ (ztree-diff-model-update-node node)
+ (message "Done.")
+ (ztree-diff-node-update-all-parents-diff node)
+ (ztree-refresh-buffer (line-number-at-pos))))))
(defun ztree-diff-copy ()
(ztree-refresh-buffer))
-(defun ztree-diff-update-wait-message ()
+(defun ztree-diff-update-wait-message (&optional msg)
"Update the wait mesage with one more '.' progress indication."
- (when ztree-diff-wait-message
- (setq ztree-diff-wait-message (concat ztree-diff-wait-message "."))
- (message ztree-diff-wait-message)))
+ (if msg
+ (setq ztree-diff-wait-message msg)
+ (when ztree-diff-wait-message
+ (setq ztree-diff-wait-message (concat ztree-diff-wait-message "."))))
+ (message ztree-diff-wait-message))
;;;###autoload
(defun ztree-diff (dir1 dir2)
(ztree-diff-model-set-ignore-fun #'ztree-diff-node-ignore-p)
(ztree-diff-model-set-progress-fun #'ztree-diff-update-wait-message)
(setq ztree-diff-dirs-pair (cons dir1 dir2))
-
- (setq ztree-diff-wait-message (concat "Comparing " dir1 " and " dir2 " ..."))
+ (ztree-diff-update-wait-message (concat "Comparing " dir1 " and " dir2 " ..."))
(ztree-diff-node-recreate model)
(message "Done.")