Skip to content

Commit 4d03560

Browse files
committed
Complete first version.
1 parent 4834cfa commit 4d03560

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

ivy-file-preview.el

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
(defvar ivy-file-preview--selected-file ""
5858
"Record down the current selected file.")
5959

60+
(defvar ivy-file-preview--window-status '()
61+
"Record windows status for when canceling command.")
62+
6063
;;; Util
6164

6265
(defun ivy-file-preview--project-path ()
@@ -102,24 +105,42 @@ PROJECT-DIR represents the path of the project root directory."
102105
cl (string-to-number cl))
103106
(ivy-file-preview--do-preview fn ln cl project-dir))))
104107

108+
(defun ivy-file-preview--cancel-revert ()
109+
"Revert frame status if user cancel the commands."
110+
(unless ivy-exit
111+
(switch-to-buffer (pop ivy-file-preview--window-status))
112+
(ivy-file-preview--goto-line (pop ivy-file-preview--window-status))
113+
(move-to-column (pop ivy-file-preview--window-status))))
114+
115+
(defun ivy-file-preview--enter ()
116+
"Execution after minibuffer setup."
117+
(setq ivy-file-preview--window-status '())
118+
(with-selected-window minibuffer-scroll-window
119+
(push (current-column) ivy-file-preview--window-status)
120+
(push (line-number-at-pos) ivy-file-preview--window-status)
121+
(push (buffer-name) ivy-file-preview--window-status)))
122+
105123
(defun ivy-file-preview--exit ()
106124
"Execution before minibuffer exits."
107125
(delete-dups ivy-file-preview--preview-files)
108126
(dolist (fn ivy-file-preview--preview-files)
109127
(unless (string= ivy-file-preview--selected-file fn)
110128
(kill-buffer (f-filename fn))))
129+
(ivy-file-preview--cancel-revert) ; If already empty, revert it.
111130
(setq ivy-file-preview--selected-file "")
112131
(setq ivy-file-preview--preview-files '()))
113132

114133
;;; Entry
115134

116135
(defun ivy-file-preview--enable ()
117136
"Enable `ivy-file-preview'."
137+
(add-hook 'minibuffer-setup-hook #'ivy-file-preview--enter)
118138
(add-hook 'minibuffer-exit-hook #'ivy-file-preview--exit)
119139
(advice-add 'ivy--exhibit :after #'ivy-file-preview--after-select))
120140

121141
(defun ivy-file-preview--disable ()
122142
"Disable `ivy-file-preview'."
143+
(remove-hook 'minibuffer-setup-hook #'ivy-file-preview--enter)
123144
(remove-hook 'minibuffer-exit-hook #'ivy-file-preview--exit)
124145
(advice-remove 'ivy--exhibit #'ivy-file-preview--after-select))
125146

0 commit comments

Comments
 (0)