From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Hansen Subject: Re: [PATCH v3] fix SETUPFILE pathname expansion with subdirectories Date: Tue, 22 Sep 2015 18:28:19 -0400 Message-ID: <5601D603.7060303@bbn.com> References: <87bncxhe5i.fsf@kyleam.com> <1442726933-14360-1-git-send-email-rhansen@bbn.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZeW30-0002E7-IC for emacs-orgmode@gnu.org; Tue, 22 Sep 2015 18:28:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZeW2x-00067D-AH for emacs-orgmode@gnu.org; Tue, 22 Sep 2015 18:28:26 -0400 Received: from smtp.bbn.com ([128.33.0.80]:22695) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZeW2x-000674-7T for emacs-orgmode@gnu.org; Tue, 22 Sep 2015 18:28:23 -0400 Received: from socket.bbn.com ([192.1.120.102]:37606) by smtp.bbn.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.77 (FreeBSD)) (envelope-from ) id 1ZeW2u-000HdW-Bs for emacs-orgmode@gnu.org; Tue, 22 Sep 2015 18:28:20 -0400 In-Reply-To: <1442726933-14360-1-git-send-email-rhansen@bbn.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Any other feedback on this patch? Thanks, Richard On 2015-09-20 01:28, Richard Hansen wrote: > * lisp/org-macro.el (org-macro--collect-macros): cd to the directory > containing the SETUPFILE before recursing so that relative pathnames > in the SETUPFILE are expanded properly. > > * lisp/org.el (org--setup-collect-keywords): cd to the directory > containing the SETUPFILE before recursing so that relative pathnames > in the SETUPFILE are expanded properly. > > * lisp/ox.el (org-export--get-inbuffer-options, > org-export--list-bound-variables): cd to the directory containing the > SETUPFILE before recursing so that relative pathnames in the SETUPFILE > are expanded properly. > > If /path/to/foo.org contains: > > #+SETUPFILE: settings/beamer.org > > and /path/to/settings/beamer.org contains: > > #+SETUPFILE: common.org > > then we want to read /path/to/settings/common.org, not > /path/to/common.org. > > TINYCHANGE > --- > Patch changelog: > v3: use (setq default-directory ...) instead of (cd ...) > v2: fix a couple more cases; add some tests > > lisp/org-macro.el | 2 ++ > lisp/org.el | 1 + > lisp/ox.el | 4 ++++ > testing/examples/setupfile.org | 7 +------ > testing/examples/setupfile3.org | 6 ++++++ > testing/examples/subdir/setupfile2.org | 1 + > 6 files changed, 15 insertions(+), 6 deletions(-) > create mode 100644 testing/examples/setupfile3.org > create mode 100644 testing/examples/subdir/setupfile2.org > > diff --git a/lisp/org-macro.el b/lisp/org-macro.el > index 65795f6..e808972 100644 > --- a/lisp/org-macro.el > +++ b/lisp/org-macro.el > @@ -106,6 +106,8 @@ Return an alist containing all macro templates found." > (org-remove-double-quotes val)))) > (unless (member file files) > (with-temp-buffer > + (setq default-directory > + (file-name-directory file)) > (org-mode) > (insert (org-file-contents file 'noerror)) > (setq templates > diff --git a/lisp/org.el b/lisp/org.el > index 74fe4ae..bd5a183 100755 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -5194,6 +5194,7 @@ Return value contains the following keys: `archive', `category', > (org-remove-double-quotes value))))) > (when (and f (file-readable-p f) (not (member f files))) > (with-temp-buffer > + (setq default-directory (file-name-directory f)) > (insert-file-contents f) > (setq alist > ;; Fake Org mode to benefit from cache > diff --git a/lisp/ox.el b/lisp/ox.el > index bfdfeba..477fc06 100644 > --- a/lisp/ox.el > +++ b/lisp/ox.el > @@ -1455,6 +1455,8 @@ Assume buffer is in Org mode. Narrowing, if any, is ignored." > ;; Avoid circular dependencies. > (unless (member file files) > (with-temp-buffer > + (setq default-directory > + (file-name-directory file)) > (insert (org-file-contents file 'noerror)) > (let ((org-inhibit-startup t)) (org-mode)) > (setq plist (funcall get-options > @@ -1586,6 +1588,8 @@ an alist where associations are (VARIABLE-NAME VALUE)." > (org-remove-double-quotes val)))) > (unless (member file files) > (with-temp-buffer > + (setq default-directory > + (file-name-directory file)) > (let ((org-inhibit-startup t)) (org-mode)) > (insert (org-file-contents file 'noerror)) > (setq alist > diff --git a/testing/examples/setupfile.org b/testing/examples/setupfile.org > index a85dbc0..71acfca 100644 > --- a/testing/examples/setupfile.org > +++ b/testing/examples/setupfile.org > @@ -1,6 +1 @@ > -#+BIND: variable value > -#+DESCRIPTION: l2 > -#+LANGUAGE: en > -#+SELECT_TAGS: b > -#+TITLE: b > -#+PROPERTY: a 1 > +#+SETUPFILE: subdir/setupfile2.org > diff --git a/testing/examples/setupfile3.org b/testing/examples/setupfile3.org > new file mode 100644 > index 0000000..a85dbc0 > --- /dev/null > +++ b/testing/examples/setupfile3.org > @@ -0,0 +1,6 @@ > +#+BIND: variable value > +#+DESCRIPTION: l2 > +#+LANGUAGE: en > +#+SELECT_TAGS: b > +#+TITLE: b > +#+PROPERTY: a 1 > diff --git a/testing/examples/subdir/setupfile2.org b/testing/examples/subdir/setupfile2.org > new file mode 100644 > index 0000000..31586fa > --- /dev/null > +++ b/testing/examples/subdir/setupfile2.org > @@ -0,0 +1 @@ > +#+SETUPFILE: ../setupfile3.org