(defun pelican-insert-auto-header ()
"Insert a Pelican header for a page or post."
(interactive)
- (call-interactively (if (pelican-is-page)
+ (call-interactively (if (pelican-page-p)
'pelican-insert-page-header
'pelican-insert-draft-post-header)))
(interactive "sField: \nsValue: ")
(save-excursion
(goto-char 0)
+ (when (and (derived-mode-p 'rst-mode)
+ (re-search-forward "^#" nil t))
+ (forward-line 2))
(if (re-search-forward (concat "^" (pelican-field field ".+*")) nil t)
(replace-match (pelican-field field value))
- (re-search-forward "#")
- (forward-line 2)
- (re-search-forward "^$")
- (replace-match (pelican-field field value)))))
+ (when value
+ (re-search-forward "^$")
+ (replace-match (pelican-field field value))))))
+
+(defun pelican-remove-field (field)
+ "Remove FIELD."
+ (pelican-set-field field nil))
(defun pelican-set-title (title)
"Set the title to TITLE."
(pelican-set-field "status" nil)
(pelican-update-date))
-(defun pelican-is-page ()
+(defun pelican-page-p ()
"Guess the current buffer is a Pelican page (vs. a post or neither)."
(when-let (pelican-base (pelican-find-root))
(let* ((relative (file-relative-name buffer-file-name pelican-base))
(when-let (conf (pelican-find-in-parents "pelicanconf.py"))
(file-name-directory conf)))
-(defun pelican-is-in-site ()
+(defun pelican-site-p ()
"Check if this buffer is under a Pelican site."
(not (null (pelican-find-root))))
(interactive)
(pelican-make "rsync_upload"))
-(defconst pelican-keymap (make-sparse-keymap)
- "The default keymap used in Pelican mode.")
-(define-key pelican-keymap (kbd "C-c P n")
- 'pelican-insert-auto-header)
-(define-key pelican-keymap (kbd "C-c P p")
- 'pelican-publish-draft)
-(define-key pelican-keymap (kbd "C-c P t")
- 'pelican-update-date)
-(define-key pelican-keymap (kbd "C-c P h")
- 'pelican-make-html)
-(define-key pelican-keymap (kbd "C-c P u")
- 'pelican-make-rsync-upload)
-
-
;;;###autoload
(define-minor-mode pelican-mode
"Toggle Pelican mode.
Interactively with no argument, this command toggles the mode.
for editing Pelican site files."
- :init-value nil
:lighter " Pelican"
- :keymap pelican-keymap
- :group 'pelican)
+ :group 'pelican
+ :keymap `((,(kbd "C-c P n") . pelican-insert-auto-header)
+ (,(kbd "C-c P p") . pelican-publish-draft)
+ (,(kbd "C-c P t") . pelican-update-date)
+ (,(kbd "C-c P h") . pelican-make-html)
+ (,(kbd "C-c P u") . pelican-make-rsync-upload)))
;;;###autoload
(defun pelican-enable-if-site ()
"Enable `pelican-mode' if this buffer is under a Pelican site."
- (when (pelican-is-in-site)
+ (when (pelican-site-p)
(pelican-mode 1)))
;;;###autoload