Function: elisp-demos-add-demo

elisp-demos-add-demo is an interactive and byte-compiled function defined in elisp-demos.el.

Signature

(elisp-demos-add-demo SYMBOL)

Documentation

Add demo for SYMBOL.

Key Bindings

Source Code

;; Defined in ~/.emacs.d/elpa/elisp-demos-20260826.1326/elisp-demos.el
(defun elisp-demos-add-demo (symbol)
  "Add demo for SYMBOL."
  (interactive
   (list (elisp-demos--read-symbol "Add demo: "
                                   (lambda (sym)
                                     (or (functionp sym)
                                         (special-form-p sym)
                                         (macrop sym))))))
  ;; Try to reuse existing window
  (let* ((file (or (car elisp-demos-user-files) elisp-demos--elisp-demos\.org))
         (buffer (get-file-buffer file))
         (window (and buffer (get-buffer-window buffer))))
    (if window
        (select-window window)
      (find-file file)))
  (goto-char (point-min))
  (or
   (catch 'found
     (while (re-search-forward "^\\* \\(.+\\)$" nil t)
       (cond ((string= (org-entry-get (point) "ITEM") (symbol-name symbol))
              (goto-char (line-beginning-position))
              (user-error "%s already exists" symbol))
             ((string< (symbol-name symbol) (org-entry-get (point) "ITEM"))
              (goto-char (line-beginning-position))
              (throw 'found t)))))
   (goto-char (point-max)))
  (org-insert-heading)
  (insert (symbol-name symbol) "\n"
          "\n"
          "#+BEGIN_SRC elisp\n"
          (format "  (%s )\n" (symbol-name symbol))
          "#+END_SRC")
  (search-backward ")\n#+END_SRC"))