-(defun pelican-mode-set-field-markdown-mode (field value)
- "Set Markdown metadata FIELD to VALUE."
- (setq field (capitalize field))
- (let ((text (when value (format "%s: %s\n" field value))))
- (if (re-search-forward (format "^%s:.*\n" (regexp-quote field)) nil t)
- (replace-match text)
- (when value
- (if (re-search-forward "^$" nil t)
- (replace-match text)
- (insert text))))))
+\\{pelican-mode-map}"
+ :keymap pelican-mode-map
+ :lighter " Pelican")
+
+;;;###autoload
+(define-minor-mode pelican-global-mode
+ "Toggle Pelican global mode.
+With a prefix argument ARG, enable Pelican global mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Pelican is a static site generator which can process a variety of
+text file formats. For more information, see URL
+https://blog.getpelican.com/.
+
+When Pelican global mode is enabled, text files which seem to
+be part of a Pelican site will have `pelican-mode' automatically
+enabled.
+
+If you disable this, you may still enable `pelican-mode' manually
+or add `pelican-mode-enable-if-site' to more specific mode
+hooks."
+ :global t
+ :group 'pelican-mode
+ (if pelican-global-mode
+ (add-hook 'text-mode-hook #'pelican-mode-enable-if-site)
+ (remove-hook 'text-mode-hook #'pelican-mode-enable-if-site)))
+
+;;;###autoload
+(defun pelican-mode-enable-if-site ()
+ "Enable `pelican-mode' if this buffer is part of a Pelican site.
+
+Pelican sites are detected by looking for a file named `pelicanconf.py'
+in an ancestor directory."
+ (when (pelican-mode-find-root)
+ (pelican-mode)))
+
+\f
+
+;; User Commands