@@ -167,27 +167,31 @@ See macro `with-selected-window' description for arguments WINDOW and BODY."
167167
168168(defun foldvis--choose-backend ()
169169 " Set the current possible backend."
170- (let ((backend (cl-some (lambda (x )
171- (when (foldvis--call-backend " -valid" x)
172- x))
173- foldvis-backends)))
174- (when (and foldvis--backend
175- (not (equal foldvis--backend backend))) ; has changed?
176- ; ; TODO: ..
177- )
178- (setq foldvis--backend backend)))
170+ (let* ((backend (cl-some (lambda (x )
171+ (when (foldvis--call-backend " -valid" x)
172+ x))
173+ foldvis-backends))
174+ (changed (and foldvis--backend backend
175+ (not (equal foldvis--backend backend)))))
176+ (setq foldvis--backend backend)
177+ ; ; If backend has changed, re-render once.
178+ (when changed
179+ (foldvis--render-buffer))
180+ ; ; If backend has become nil, remove it.
181+ (unless backend
182+ (foldvis--remove-ovs-buffer))))
179183
180184(defun foldvis--enable ()
181185 " Start folding minor mode."
182186 (foldvis--call-backend " -enable" )
183187 (add-hook 'after-save-hook #'foldvis--trigger-render nil t )
184188 (add-hook 'post-command-hook #'foldvis--post-command nil t )
185189 (add-hook 'window-size-change-functions #'foldvis--size-change )
186- (add-hook 'window-scroll-functions #'foldvis--scroll )
187- (foldvis--render-buffer))
190+ (add-hook 'window-scroll-functions #'foldvis--scroll ))
188191
189192(defun foldvis--disable ()
190193 " Stop folding minor mode."
194+ (setq foldvis--backend nil )
191195 (foldvis--call-backend " -disable" )
192196 (remove-hook 'after-save-hook #'foldvis--trigger-render t )
193197 (remove-hook 'post-command-hook #'foldvis--post-command t )
@@ -201,11 +205,7 @@ See macro `with-selected-window' description for arguments WINDOW and BODY."
201205 :group 'foldvis
202206 :init-value nil
203207 :lighter " FoldVis"
204- (foldvis--choose-backend)
205- (cond (foldvis--backend
206- (if foldvis-mode (foldvis--enable) (foldvis--disable)))
207- (t (message " No folding backend found: %s " foldvis--backend)
208- (foldvis-mode -1 ))))
208+ (if foldvis-mode (foldvis--enable) (foldvis--disable)))
209209
210210(defun foldvis--turn-on-foldvis-mode ()
211211 " Turn on the `foldvis-mode' ."
@@ -380,6 +380,7 @@ Argument FOLDED holds folding state; it's a boolean."
380380
381381(defun foldvis--post-command ()
382382 " Post command."
383+ (foldvis--choose-backend)
383384 (when foldvis--render-this-command-p
384385 (foldvis-refresh)
385386 (setq foldvis--render-this-command-p nil )))
0 commit comments