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))))