[-- Attachment #1: Type: text/plain, Size: 474 bytes --] I'm using an org-mode publishing project in different locations and would like to set different (location dependent) values for the publishing-directory property (e.g. use different servers to upload published files). There might be a way to do that with the current org-mode which i just did not find. In that case, please let me know how. Otherwise the attached patch seems to provide the desired effect and it would be great if it could be added to org-mode. BR, Kai [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: allow variable publishing-dir --] [-- Type: text/x-patch, Size: 481 bytes --] diff --git a/lisp/org-publish.el b/lisp/org-publish.el index ccd2068..4ed2346 100644 --- a/lisp/org-publish.el +++ b/lisp/org-publish.el @@ -685,7 +685,7 @@ See `org-publish-projects'." (pub-dir (file-name-as-directory (file-truename - (or (plist-get project-plist :publishing-directory) + (or (eval (plist-get project-plist :publishing-directory)) (error "Project %s does not have :publishing-directory defined" (car project)))))) tmp-pub-dir)
Hi Kai, Kai Tetzlaff <kai.tetzlaff@web.de> writes: > There might be a way to do that with the current org-mode which i just > did not find. In that case, please let me know how. Otherwise the > attached patch seems to provide the desired effect and it would be great > if it could be added to org-mode. The patch looks good but I'd like to understand it better. Can you send an example configuration working with your patch? Also, please try to send git patch using these conventions: http://orgmode.org/worg/org-contribute.html#sec-5 Thanks a lot! -- Bastien
[-- Attachment #1: Type: text/plain, Size: 1734 bytes --] Bastien <bzg@altern.org> writes: Hi Bastien, > The patch looks good but I'd like to understand it better. > Can you send an example configuration working with your patch? In org-publish-project-alist, i have HTML publishing projects which should be published to different target directories depending on e.g. where emacs is running (which i determine in my init files using the MAC address of the default GW, the name the machine, ...). Here is an example: At home, i publish to a local directory (:publishing-directory "~/tmp/publish-test") but at work i would like to publish directly to a webserver (:publishing-directory "/plinkx:doxydoc:~/public_html/publish-test" - this is on w32, using tramps PuTTY/plink). To avoid having to change the definition of the publishing project when i change locations i would like to construct the actual value of :publishing-directory by calling a function: ("publishing-dir-test" :base-directory "~/Documents/Work/RS" :recursive t :base-extension "org" :exclude-tags ("intern") :publishing-directory '(expand-file-name "publish-test" kt:org-default-publishing-dir) :publishing-function org-publish-org-to-html) Depending on the location i'm in, 'kt:org-default-publishing-dir' would be set to either "~/tmp" or "/plinkx:doxydoc:~/public_html". Without the patch, the example above does not work as the value of :publishing-directory does not get evaluated. > Also, please try to send git patch using these conventions: > http://orgmode.org/worg/org-contribute.html#sec-5 > > Thanks a lot! Thanks for the hint. I've attached a revised version of the patch which includes a changelog/commit msg - i hope that works for you. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: eval :publishing-directory --] [-- Type: text/x-patch, Size: 941 bytes --] Publish: allow dynamic construction of the publish destination. * org-publish.el (org-publish-file): Added 'eval'ing the value of the :publishing-directory property before using it as destination of the publishing project. This allows to construct the publish destination directory dynamically at run-time using the return value of a function. TINYCHANGE --- lisp/org-publish.el | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lisp/org-publish.el b/lisp/org-publish.el index e2213c5..518c1bf 100644 --- a/lisp/org-publish.el +++ b/lisp/org-publish.el @@ -684,7 +684,7 @@ See `org-publish-projects'." (pub-dir (file-name-as-directory (file-truename - (or (plist-get project-plist :publishing-directory) + (or (eval (plist-get project-plist :publishing-directory)) (error "Project %s does not have :publishing-directory defined" (car project)))))) tmp-pub-dir) -- 1.7.5.4
[-- Attachment #1: Type: text/plain, Size: 1734 bytes --] Bastien <bzg@altern.org> writes: Hi Bastien, > The patch looks good but I'd like to understand it better. > Can you send an example configuration working with your patch? In org-publish-project-alist, i have HTML publishing projects which should be published to different target directories depending on e.g. where emacs is running (which i determine in my init files using the MAC address of the default GW, the name the machine, ...). Here is an example: At home, i publish to a local directory (:publishing-directory "~/tmp/publish-test") but at work i would like to publish directly to a webserver (:publishing-directory "/plinkx:doxydoc:~/public_html/publish-test" - this is on w32, using tramps PuTTY/plink). To avoid having to change the definition of the publishing project when i change locations i would like to construct the actual value of :publishing-directory by calling a function: ("publishing-dir-test" :base-directory "~/Documents/Work/RS" :recursive t :base-extension "org" :exclude-tags ("intern") :publishing-directory '(expand-file-name "publish-test" kt:org-default-publishing-dir) :publishing-function org-publish-org-to-html) Depending on the location i'm in, 'kt:org-default-publishing-dir' would be set to either "~/tmp" or "/plinkx:doxydoc:~/public_html". Without the patch, the example above does not work as the value of :publishing-directory does not get evaluated. > Also, please try to send git patch using these conventions: > http://orgmode.org/worg/org-contribute.html#sec-5 > > Thanks a lot! Thanks for the hint. I've attached a revised version of the patch which includes a changelog/commit msg - i hope that works for you. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: eval :publishing-directory --] [-- Type: text/x-patch, Size: 941 bytes --] Publish: allow dynamic construction of the publish destination. * org-publish.el (org-publish-file): Added 'eval'ing the value of the :publishing-directory property before using it as destination of the publishing project. This allows to construct the publish destination directory dynamically at run-time using the return value of a function. TINYCHANGE --- lisp/org-publish.el | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lisp/org-publish.el b/lisp/org-publish.el index e2213c5..518c1bf 100644 --- a/lisp/org-publish.el +++ b/lisp/org-publish.el @@ -684,7 +684,7 @@ See `org-publish-projects'." (pub-dir (file-name-as-directory (file-truename - (or (plist-get project-plist :publishing-directory) + (or (eval (plist-get project-plist :publishing-directory)) (error "Project %s does not have :publishing-directory defined" (car project)))))) tmp-pub-dir) -- 1.7.5.4
Patch 895 (http://patchwork.newartisans.com/patch/895/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C7ipqk3qfxn.fsf%40mack.tetzco.de%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O] Variable publishing-directory? (resent with patch as attachment) > Date: Thu, 18 Aug 2011 13:17:56 -0000 > From: Kai Tetzlaff <kai.tetzlaff@web.de> > X-Patchwork-Id: 895 > Message-Id: <7ipqk3qfxn.fsf@mack.tetzco.de> > To: emacs-orgmode@gnu.org > > Bastien <bzg@altern.org> writes: > > Hi Bastien, > > > The patch looks good but I'd like to understand it better. > > Can you send an example configuration working with your patch? > > In org-publish-project-alist, i have HTML publishing projects which > should be published to different target directories depending on e.g. > where emacs is running (which i determine in my init files using the MAC > address of the default GW, the name the machine, ...). > > Here is an example: At home, i publish to a local directory > (:publishing-directory "~/tmp/publish-test") but at work i would like to > publish directly to a webserver (:publishing-directory > "/plinkx:doxydoc:~/public_html/publish-test" - this is on w32, using > tramps PuTTY/plink). To avoid having to change the definition of the > publishing project when i change locations i would like to construct the > actual value of :publishing-directory by calling a function: > > ("publishing-dir-test" > :base-directory "~/Documents/Work/RS" > :recursive t > :base-extension "org" > :exclude-tags ("intern") > :publishing-directory '(expand-file-name "publish-test" kt:org-default-publishing-dir) > :publishing-function org-publish-org-to-html) > > Depending on the location i'm in, 'kt:org-default-publishing-dir' would > be set to either "~/tmp" or "/plinkx:doxydoc:~/public_html". Without the > patch, the example above does not work as the value of > :publishing-directory does not get evaluated. > > > Also, please try to send git patch using these conventions: > > http://orgmode.org/worg/org-contribute.html#sec-5 > > > > Thanks a lot! > > Thanks for the hint. I've attached a revised version of the patch which > includes a changelog/commit msg - i hope that works for you. > > > Publish: allow dynamic construction of the publish destination. > > * org-publish.el (org-publish-file): Added 'eval'ing the value of the > :publishing-directory property before using it as destination of the > publishing project. This allows to construct the publish destination > directory dynamically at run-time using the return value of a > function. > > TINYCHANGE > --- > lisp/org-publish.el | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/lisp/org-publish.el b/lisp/org-publish.el > index e2213c5..518c1bf 100644 > --- a/lisp/org-publish.el > +++ b/lisp/org-publish.el > @@ -684,7 +684,7 @@ See `org-publish-projects'." > (pub-dir > (file-name-as-directory > (file-truename > - (or (plist-get project-plist :publishing-directory) > + (or (eval (plist-get project-plist :publishing-directory)) > (error "Project %s does not have :publishing-directory defined" > (car project)))))) > tmp-pub-dir) > -- > 1.7.5.4 > >
Hi Kay,
Kai Tetzlaff <kai.tetzlaff@web.de> writes:
> Here is an example: At home, i publish to a local directory
> (:publishing-directory "~/tmp/publish-test") but at work i would like to
> publish directly to a webserver (:publishing-directory
> "/plinkx:doxydoc:~/public_html/publish-test" - this is on w32, using
> tramps PuTTY/plink). To avoid having to change the definition of the
> publishing project when i change locations i would like to construct the
> actual value of :publishing-directory by calling a function:
>
> ("publishing-dir-test"
> :base-directory "~/Documents/Work/RS"
> :recursive t
> :base-extension "org"
> :exclude-tags ("intern")
> :publishing-directory '(expand-file-name "publish-test" kt:org-default-publishing-dir)
> :publishing-function org-publish-org-to-html)
>
> Depending on the location i'm in, 'kt:org-default-publishing-dir' would
> be set to either "~/tmp" or "/plinkx:doxydoc:~/public_html". Without the
> patch, the example above does not work as the value of
> :publishing-directory does not get evaluated.
>
>> Also, please try to send git patch using these conventions:
>> http://orgmode.org/worg/org-contribute.html#sec-5
>>
>> Thanks a lot!
>
> Thanks for the hint. I've attached a revised version of the patch which
> includes a changelog/commit msg - i hope that works for you.
Thanks for the detailed explanations -- for the record,
this patch has been applied a while ago.
Thanks,
--
Bastien