Function: speedbar-window-mode

speedbar-window-mode is an autoloaded, interactive and byte-compiled function defined in speedbar.el.gz.

Signature

(speedbar-window-mode &optional ARG)

Documentation

Enable or disable speedbar window mode.

Positive ARG means turn on, negative turn off. A nil ARG means toggle. Once the speedbar window is activated, a buffer in speedbar-mode will be displayed. Currently, only one speedbar is supported at a time. speedbar-before-popup-hook is called before popping up the speedbar frame. speedbar-before-delete-hook is called before the frame is deleted.

Probably introduced at or before Emacs version 31.1.

Key Bindings

Aliases

speedbar-window

Source Code

;; Defined in /usr/src/emacs/lisp/speedbar.el.gz
;;;###autoload
(defun speedbar-window-mode (&optional arg)
  "Enable or disable speedbar window mode.
Positive ARG means turn on, negative turn off.
A nil ARG means toggle.  Once the speedbar window is activated, a buffer in
`speedbar-mode' will be displayed.  Currently, only one speedbar is
supported at a time.
`speedbar-before-popup-hook' is called before popping up the speedbar frame.
`speedbar-before-delete-hook' is called before the frame is deleted."
  (interactive "P")
  (when (eq (speedbar-frame-or-window) 'frame)
    (delete-frame (speedbar-current-frame)))

  (if (or (and (not arg) (speedbar-window--live-p))
	  (and (numberp arg) (< arg 0)))
      (speedbar-window--close)
    (let ((current-window (selected-window)))
      (unless (speedbar-window--buffer-live-p)
	(setq speedbar-buffer (get-buffer-create speedbar--buffer-name)))

      (setq speedbar-frame (selected-frame)
	    dframe-attached-frame (selected-frame)
	    speedbar-select-frame-method 'attached
	    speedbar-last-selected-file nil)

      (set-buffer speedbar-buffer)
      (speedbar-mode)

      ;; let's create the window
      (setq speedbar--window
	    (display-buffer-in-side-window speedbar-buffer
					   `((side ,@speedbar-window-side)
					     (slot . 0)
					     (dedicated ,@speedbar-window-dedicated-window)
					     (window-width ,@speedbar--window-width))))
      ;; additional window parameters
      (set-window-parameter speedbar--window 'no-other-window t)
      (set-window-parameter speedbar--window 'no-delete-other-windows t)

      ;; `speedbar-reconfigure-keymaps' checks if the `speedbar-window' is open, so
      ;; should stay after the buffer and window definition.
      (speedbar-reconfigure-keymaps)
      (speedbar-update-contents)
      (speedbar-set-timer dframe-update-speed)

      ;; hscroll
      (setq-local auto-hscroll-mode nil)
      ;; reset the selection variable
      (setq speedbar-last-selected-file nil)
      (select-window current-window))))