X-Git-Url: https://git.korewanetadesu.com/?p=pelican-mode.git;a=blobdiff_plain;f=pelican-mode.el;h=47153f8570df7444416769c1f53457109fb204ab;hp=7f7460baf1e4576c6dedf24ede776e1666626ae6;hb=2fd809219972559a0defeef38aec14a772e88649;hpb=4c47190c4c9bdd1ae77d04e26e48f580ee6975bc diff --git a/pelican-mode.el b/pelican-mode.el index 7f7460b..47153f8 100644 --- a/pelican-mode.el +++ b/pelican-mode.el @@ -20,11 +20,22 @@ ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . + ;;; Commentary: ;; -;; Probably, this doesn't handle a lot of error cases. I also never -;; tested it on networked drives and the lookup for pelicanconf.py -;; might slow it down considerably. +;; pelican-mode is an Emacs minor mode for editing pages and posts in +;; Pelican (URL http://getpelican.com/) sites. +;; +;; It's intended to be used alongside `markdown-mode' or `rst-mode'. +;; It also assumes you've set up Pelican with ``pelican-quickstart'' +;; or something like it. In particular it assumes: +;; +;; * The existence of ``pelicanconf.py'' and ``Makefile'' in some +;; ancestor directory. +;; * The first component of the path (e.g. ``content'') after that +;; ancestor is irrelevant. +;; * If the next component is ``pages'', that indicates a page +;; rather than an article. ;;; Code: @@ -196,19 +207,9 @@ the unquoted printed representation of it is used: (when-let (file-name (file-name-sans-extension buffer-file-name)) (file-name-base file-name)))) -(defun pelican-mode-find-in-parents (file-name) - "Find FILE-NAME in the default directory or one of its parents, or nil." - (let* ((parent (expand-file-name default-directory))) - (while (and (not (file-readable-p (concat parent file-name))) - (not (string= parent (directory-file-name parent)))) - (setq parent (file-name-directory (directory-file-name parent)))) - (let ((found (concat parent file-name))) - (if (file-readable-p found) found nil)))) - (defun pelican-mode-find-root () "Return the root of the buffer's Pelican site, or nil." - (when-let (conf (pelican-mode-find-in-parents "pelicanconf.py")) - (file-name-directory conf))) + (locate-dominating-file default-directory "pelicanconf.py")) (defun pelican-make (target) "Execute TARGET in a Makefile at the root of the site."