Function: mh-speed-toggle

mh-speed-toggle is an interactive and byte-compiled function defined in mh-speed.el.gz.

Signature

(mh-speed-toggle &rest IGNORED)

Documentation

Toggle the display of child folders in the speedbar.

The optional arguments from speedbar are IGNORED.

Key Bindings

Aliases

mh-speed-expand-folder mh-speed-contract-folder

Source Code

;; Defined in /usr/src/emacs/lisp/mh-e/mh-speed.el.gz
(defun mh-speed-toggle (&rest _ignored)
  "Toggle the display of child folders in the speedbar.
The optional arguments from speedbar are IGNORED."
  (interactive)
  (beginning-of-line)
  (let ((parent (get-text-property (point) 'mh-folder))
        (kids-p (get-text-property (point) 'mh-children-p))
        (expanded (get-text-property (point) 'mh-expanded))
        (level (get-text-property (point) 'mh-level))
        (point (point))
        start-region)
    (speedbar-with-writable
      (cond ((not kids-p) nil)
            (expanded
             (forward-line)
             (setq start-region (point))
             (while (and (get-text-property (point) 'mh-level)
                         (> (get-text-property (point) 'mh-level) level))
               (let ((folder (get-text-property (point) 'mh-folder)))
                 (when (gethash folder mh-speed-folder-map)
                   (set-marker (gethash folder mh-speed-folder-map) nil)
                   (remhash folder mh-speed-folder-map)))
               (forward-line))
             (delete-region start-region (point))
             (forward-line -1)
             (speedbar-change-expand-button-char ?+)
             (add-text-properties
              (line-beginning-position) (1+ (line-beginning-position))
              '(mh-expanded nil)))
            (t
             (forward-line)
             (mh-speed-add-buttons parent (1+ level))
             (goto-char point)
             (speedbar-change-expand-button-char ?-)
             (add-text-properties
              (line-beginning-position) (1+ (line-beginning-position))
              '(mh-expanded t)))))))