From 05e7356c4e6e5a61737c323837684acdc38efc69 Mon Sep 17 00:00:00 2001 From: Joe Wreschnig Date: Sun, 18 Jun 2017 20:56:12 +0200 Subject: [PATCH] Clean up title setting logic. --- pelican-mode.el | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/pelican-mode.el b/pelican-mode.el index f82be8a..15db6cf 100644 --- a/pelican-mode.el +++ b/pelican-mode.el @@ -49,12 +49,16 @@ (t (error "Unsupported major mode %S" major-mode))) "")) +(defun pelican-rst-title (title) + "Create a ReSt version of TITLE." + (concat title "\n" (make-string (string-width title) ?#) "\n\n")) + (defun pelican-title (title) "Format a TITLE for the current document, according to major mode." (cond ((derived-mode-p 'markdown-mode) (pelican-field "title" title)) ((derived-mode-p 'rst-mode) - (concat title "\n" (make-string (string-width title) ?#) "\n")) + (pelican-rst-title title)) (t (error "Unsupported major mode %S" major-mode)))) (defun pelican-header (title date status category tags slug) @@ -106,6 +110,17 @@ (re-search-forward "^$") (replace-match (pelican-field field value))))) +(defun pelican-set-title (title) + "Set the title to TITLE." + (if (pelican-is-markdown) + (pelican-set-field "title" title) + (save-excursion + (goto-char 0) + (let ((header (pelican-rst-title title))) + (if (looking-at ".*\n#+\n+") + (replace-match header) + (insert header)))))) + (defun pelican-update-date () "Update a Pelican date header." (interactive) @@ -208,7 +223,6 @@ to show buffer size and position in mode-line." :keymap pelican-keymap :group 'pelican) - ;;;###autoload (add-hook 'markdown-mode-hook 'pelican-enable-if-site) -- 2.20.1