Use a global mode rather than initializing on load.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Sun, 6 Aug 2017 10:43:32 +0000 (12:43 +0200)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Sun, 6 Aug 2017 10:43:32 +0000 (12:43 +0200)
pelican-mode.el

index dd251d7..d8f71a7 100644 (file)
@@ -244,7 +244,6 @@ for editing articles or pages:
 
 \\{pelican-mode-map}"
   :lighter " Pelican"
-  :group 'pelican
   :keymap `((,(kbd "C-c P n") . pelican-mode-insert-auto-header)
             (,(kbd "C-c P p") . pelican-mode-publish-draft)
             (,(kbd "C-c P t") . pelican-mode-update-date)
@@ -252,16 +251,30 @@ for editing articles or pages:
             (,(kbd "C-c P u") . pelican-make-rsync-upload)))
 
 ;;;###autoload
-(defun pelican-mode-enable-if-site ()
-  "Enable `pelican-mode' if this buffer is part of a Pelican site."
-  (when (not (null (pelican-mode-find-root)))
-    (pelican-mode 1)))
+(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.
 
-;;;###autoload
-(add-hook 'markdown-mode-hook 'pelican-mode-enable-if-site)
+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
+  (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
-(add-hook 'rst-mode-hook 'pelican-mode-enable-if-site)
+(defun pelican-mode-enable-if-site ()
+  "Enable `pelican-mode' if this buffer is part of a Pelican site."
+  (when (pelican-mode-find-root)
+    (pelican-mode 1)))
 
 (provide 'pelican-mode)
 ;;; pelican-mode.el ends here