Function: so-long-commentary

so-long-commentary is an autoloaded, interactive and byte-compiled function defined in so-long.el.gz.

Signature

(so-long-commentary)

Documentation

View the so-long library's documentation in outline-mode.

Probably introduced at or before Emacs version 27.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/so-long.el.gz
;;;###autoload
(defun so-long-commentary ()
  "View the `so-long' library's documentation in `outline-mode'."
  (interactive)
  (let ((buf "*So Long: Commentary*"))
    (when (buffer-live-p (get-buffer buf))
      (kill-buffer buf))
    ;; Use `finder-commentary' to generate the buffer.
    (require 'finder)
    (cl-letf (((symbol-function 'finder-summary) #'ignore))
      (finder-commentary "so-long"))
    (let ((inhibit-read-only t))
      (if (looking-at "^Commentary:\n\n")
          (replace-match "so-long.el\n\n")
        (insert "so-long.el\n")
        (forward-line 1))
      (save-excursion
        (while (re-search-forward "^-+$" nil :noerror)
          (replace-match ""))))
    (rename-buffer buf)
    ;; Enable `outline-mode' and `view-mode' for user convenience.
    (outline-mode)
    (declare-function outline-next-visible-heading "outline")
    (declare-function outline-previous-visible-heading "outline")
    (declare-function outline-toggle-children "outline")
    (declare-function outline-toggle-children "outline")
    (view-mode 1)
    ;; Add some custom local bindings.
    (let ((map (make-sparse-keymap)))
      (define-key map (kbd "TAB") #'outline-toggle-children)
      (define-key map (kbd "<M-tab>") #'outline-toggle-children)
      (define-key map (kbd "M-n") #'outline-next-visible-heading)
      (define-key map (kbd "M-p") #'outline-previous-visible-heading)
      (set-keymap-parent map (current-local-map))
      (use-local-map map))
    ;; Display the So Long menu.
    (so-long--ensure-enabled)
    (let ((so-long-action nil))
      (so-long))))