;;; +hideshow.el -*- lexical-binding: t; -*- ;;; Commentary: ;; initiated by https://karthinks.com/software/simple-folding-with-hideshow/ ;;; Code: (defun +hs-cycle (&optional level) (interactive "p") (let (message-log-max (inhibit-message t)) (if (= level 1) (pcase last-command ('+hs-cycle (hs-hide-level 1) (setq this-command 'hs-cycle-children)) ('hs-cycle-children ;; TODO: Fix this case. `hs-show-block' needs to be ;; called twice to open all folds of the parent ;; block. (save-excursion (hs-show-block)) (hs-show-block) (setq this-command 'hs-cycle-subtree)) ('hs-cycle-subtree (hs-hide-block)) (_ (if (not (hs-already-hidden-p)) (hs-hide-block) (hs-hide-level 1) (setq this-command 'hs-cycle-children)))) (hs-hide-level level) (setq this-command 'hs-hide-level)))) (defun +hs-global-cycle () (interactive) (pcase last-command ('+hs-global-cycle (save-excursion (hs-show-all)) (setq this-command 'hs-global-show)) (_ (hs-hide-all)))) (provide '+hideshow) ;;; +hideshow.el ends here