Function: pages-add-new-page

pages-add-new-page is an interactive and byte-compiled function defined in page-ext.el.gz.

Signature

(pages-add-new-page HEADER-LINE)

Documentation

Insert new page. Prompt for header line.

If point is in the pages directory buffer, insert the new page in the buffer associated with the directory.

Insert the new page just before current page if pages-directory-for-adding-new-page-before-current-page-p is non-nil. Else insert at exact location of point.

Narrow to new page if pages-directory-for-adding-page-narrowing-p is non-nil.

Page begins with a ^L as the default page-delimiter. Use M-x set-page-delimiter (set-page-delimiter) to change the page-delimiter. Point is left in the body of page.

Key Bindings

Aliases

add-new-page (obsolete since 27.1)

Source Code

;; Defined in /usr/src/emacs/lisp/textmodes/page-ext.el.gz
(defun pages-add-new-page (header-line)
  "Insert new page.  Prompt for header line.

If point is in the pages directory buffer, insert the new page in the
buffer associated with the directory.

Insert the new page just before current page if
`pages-directory-for-adding-new-page-before-current-page-p' is non-nil.
Else insert at exact location of point.

Narrow to new page if `pages-directory-for-adding-page-narrowing-p' is
non-nil.

Page begins with a `^L' as the default `page-delimiter'.
Use \\[set-page-delimiter] to change the page-delimiter.
Point is left in the body of page."
  (interactive "sHeader line: ")
  (widen)
  ;; If in pages directory buffer
  (if (eq major-mode 'pages-directory-mode)
      (progn
        ;; Add new page before or after current page?
        (if pages-directory-for-adding-new-page-before-current-page-p
            (pages-directory-goto)
          (pages-directory-goto)
          (forward-page)
          (or (eobp) (forward-line -1)))))
  (widen)
  ;; Move point before current delimiter if desired.
  (and pages-directory-for-adding-new-page-before-current-page-p
       (if (re-search-backward page-delimiter nil t)
           (goto-char (match-beginning 0))
         ;; If going to beginning of file, insert a page-delimiter
         ;; before current first page.
         (goto-char (point-min))
         (insert
          (format "%s\n"
                  ;; Remove leading `^' from page-delimiter string
                  (if (eq '^ (car (read-from-string page-delimiter)))
                      (substring page-delimiter 1))))
         (goto-char (point-min))))
  ;; Insert page delimiter at beginning of line.
  (if (not (looking-at "^."))   (forward-line 1))
  (insert (format "%s\n%s\n\n\n"
                  (if (eq '^ (car (read-from-string page-delimiter)))
                      (substring page-delimiter 1))
                  header-line))
  (forward-line -1)
  (and pages-directory-for-adding-page-narrowing-p (narrow-to-page)))