Refactor code-fold system (defer load + advise)

This commit is contained in:
Henrik Lissner 2017-06-07 20:43:58 +02:00
parent cd078e5e5c
commit a20aeaf76b
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 27 additions and 42 deletions

View file

@ -10,11 +10,17 @@
(defun +evil--vimish-fold-p ()
(cl-some #'vimish-fold--vimish-overlay-p (overlays-at (point))))
(defun +evil--ensure-modes ()
(defun +evil--ensure-modes (&rest _)
"Ensure hs-minor-mode is enabled."
(unless (bound-and-true-p hs-minor-mode)
(hs-minor-mode +1)))
(advice-add #'hs-toggle-hiding :before #'+evil--ensure-modes)
(advice-add #'hs-hide-block :before #'+evil--ensure-modes)
(advice-add #'hs-hide-level :before #'+evil--ensure-modes)
(advice-add #'hs-show-all :before #'+evil--ensure-modes)
(advice-add #'hs-hide-all :before #'+evil--ensure-modes)
;; --- fold commands ----------------------
@ -25,43 +31,41 @@
(+evil--ensure-modes)
(hs-already-hidden-p))))
;;;###autoload (autoload '+evil/fold-toggle "feature/evil/autoload/folds" nil t)
(evil-define-command +evil/fold-toggle ()
;;;###autoload (autoload '+evil:fold-toggle "feature/evil/autoload/folds" nil t)
(evil-define-command +evil:fold-toggle ()
(interactive)
(if (+evil--vimish-fold-p)
(vimish-fold-toggle)
(hs-toggle-hiding)))
;;;###autoload (autoload '+evil/fold-open "feature/evil/autoload/folds" nil t)
(evil-define-command +evil/fold-open ()
;;;###autoload (autoload '+evil:fold-open "feature/evil/autoload/folds" nil t)
(evil-define-command +evil:fold-open ()
(interactive)
(if (+evil--vimish-fold-p)
(vimish-fold-unfold)
(hs-hide-block)))
;;;###autoload (autoload '+evil/fold-close "feature/evil/autoload/folds" nil t)
(evil-define-command +evil/fold-close ()
;;;###autoload (autoload '+evil:fold-close "feature/evil/autoload/folds" nil t)
(evil-define-command +evil:fold-close ()
(interactive)
(if (+evil--vimish-fold-p)
(vimish-fold-refold)
(hs-hide-block)))
;;;###autoload (autoload '+evil/fold-open-all "feature/evil/autoload/folds" nil t)
(evil-define-command +evil/fold-open-all (&optional level)
;;;###autoload (autoload '+evil:fold-open-all "feature/evil/autoload/folds" nil t)
(evil-define-command +evil:fold-open-all (&optional level)
"Open folds at LEVEL (or all folds if LEVEL is nil)."
(interactive "<c>")
(vimish-fold-unfold-all)
(+evil--ensure-modes)
(if (integerp level)
(hs-hide-level (1- level))
(hs-show-all)))
;;;###autoload (autoload '+evil/fold-close-all "feature/evil/autoload/folds" nil t)
(evil-define-command +evil/fold-close-all (&optional level)
;;;###autoload (autoload '+evil:fold-close-all "feature/evil/autoload/folds" nil t)
(evil-define-command +evil:fold-close-all (&optional level)
"Close folds at LEVEL (or all folds if LEVEL is nil)."
(interactive "<c>")
(vimish-fold-refold-all)
(+evil--ensure-modes)
(if (integerp level)
(hs-hide-level (1- level))
(hs-hide-all)))
@ -80,6 +84,6 @@
(cond ((eq major-mode 'magit-status-mode)
#'magit-section-toggle)
((+evil-fold-p)
#'+evil/fold-toggle)
#'+evil:fold-toggle)
(t
#'evilmi-jump-items)))))