emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] [PATCH] Remove unecesssary invocations of org-mode in ox-publish


From: Matt Lundin
Subject: [O] [PATCH] Remove unecesssary invocations of org-mode in ox-publish
Date: Tue, 29 Jul 2014 00:10:52 -0500
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.3 (gnu/linux)

This patch fixes a bug in which org-publish makes the following call...

(let ((org-inhibit-startup t) (org-mode)))

...in buffers that are already open. This often happens, for instance,
when publishing a sitemap. But there is no need to call org-mode again
in these open buffers. Moreover calling org-mode with
org-inhibit-startup set to t destroys crucial information in open
buffers, such as dir-locals variables. This can interfere rather
seriously with web publishing, causing website files I am editing to
lose the following crucial settings after I call org-publish:

((org-mode .
           ((org-link-file-path-type . relative)
            (org-display-custom-times . t))))

Thanks,
Matt

>From 05410ec611fdf8483053e2905df9a52ea9c53551 Mon Sep 17 00:00:00 2001
From: Matt Lundin <address@hidden>
Date: Mon, 28 Jul 2014 23:56:42 -0500
Subject: [PATCH] Remove unnecessary invocations of org-mode

* lisp/ox-publish.el: (org-publish-find-title) (org-publish-find-date)
  Fix unnecessary invocations of org-mode with
  org-inhibit-startup.

The functions above call org-mode with org-inhibit-startup in org
buffers that are already open. The result is that these open buffers
lose some crucial local variables during publishing. For instance,
an open buffer will lose its dir-local-variables-alist setting
during publishing. There is no need to call org-mode here, because
org-mode is a) either already initialized in the buffer or b)
initialized via earlier call to find-file-no-select.

This looks to me like a relic of some past time when these functions were
called in temporary buffers that contained copies of the file's contents.
---
 lisp/ox-publish.el | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index be208df..94f12e9 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -806,11 +806,9 @@ Default for SITEMAP-FILENAME is 'sitemap.org'."
   "Find the title of FILE in project."
   (or
    (and (not reset) (org-publish-cache-get-file-property file :title nil t))
-   (let* ((org-inhibit-startup t)
-         (visiting (find-buffer-visiting file))
+   (let* ((visiting (find-buffer-visiting file))
          (buffer (or visiting (find-file-noselect file))))
      (with-current-buffer buffer
-       (org-mode)
        (let ((title
              (let ((property (plist-get (org-export-get-environment) :title)))
                (if property
@@ -831,7 +829,6 @@ time in `current-time' format."
           (file-buf (or visiting (find-file-noselect file nil)))
           (date (plist-get
                  (with-current-buffer file-buf
-                   (let ((org-inhibit-startup t)) (org-mode))
                    (org-export-get-environment))
                  :date)))
       (unless visiting (kill-buffer file-buf))
-- 
2.0.2


reply via email to

[Prev in Thread] Current Thread [Next in Thread]