emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Using Buffer name in :include export property
@ 2014-08-28 21:37 Julien Cubizolles
  2014-08-28 23:21 ` Nick Dokos
  0 siblings, 1 reply; 4+ messages in thread
From: Julien Cubizolles @ 2014-08-28 21:37 UTC (permalink / raw)
  To: emacs-orgmode

I'm using the following elisp source block in my org files to choose the
publication options.

--8<---------------cut here---------------start------------->8---
  (setq org-publish-project-alist
        '(("TeX"
           :base-directory "./"
           :publishing-directory "./"
           :publishing-function org-beamer-publish-to-latex
           :exclude ".*"
           :latex-class "mpsi_beamer"
           :include ("test.org"))
          ))
--8<---------------cut here---------------end--------------->8---

I'd like to define it once and for all in my emacs
configuration files but I'd need to replace the

--8<---------------cut here---------------start------------->8---
           :include ("test.org")
--8<---------------cut here---------------end--------------->8---

line with the result of (buffer-name). Is it possible ?

Julien.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Using Buffer name in :include export property
  2014-08-28 21:37 Using Buffer name in :include export property Julien Cubizolles
@ 2014-08-28 23:21 ` Nick Dokos
  2014-08-29  9:40   ` Julien Cubizolles
  0 siblings, 1 reply; 4+ messages in thread
From: Nick Dokos @ 2014-08-28 23:21 UTC (permalink / raw)
  To: emacs-orgmode

Julien Cubizolles <j.cubizolles@free.fr> writes:

> I'm using the following elisp source block in my org files to choose the
> publication options.
>
>   (setq org-publish-project-alist
>         '(("TeX"
>            :base-directory "./"
>            :publishing-directory "./"
>            :publishing-function org-beamer-publish-to-latex
>            :exclude ".*"
>            :latex-class "mpsi_beamer"
>            :include ("test.org"))
>           ))
>
> I'd like to define it once and for all in my emacs
> configuration files but I'd need to replace the
>
>            :include ("test.org")
>
> line with the result of (buffer-name). Is it possible ?
>

Do you mean buffer-file-name? 

When you publish a project, it does not matter what your current buffer
is. So why would you want to include the random file that you just
happen to be visiting?  And what if the buffer is not associated with a
file at all (so buffer-file-name returns nil)?

Can you explain what exactly you are trying to do?

The usual method of splicing in a variable into a list is with
backquote - see e.g.

          http://thread.gmane.org/gmane.emacs.orgmode/9583/focus=9603
          
but I don't think that would work here in any case.

-- 
Nick

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Using Buffer name in :include export property
  2014-08-28 23:21 ` Nick Dokos
@ 2014-08-29  9:40   ` Julien Cubizolles
  2014-08-29 10:34     ` Julien Cubizolles
  0 siblings, 1 reply; 4+ messages in thread
From: Julien Cubizolles @ 2014-08-29  9:40 UTC (permalink / raw)
  To: emacs-orgmode

Nick Dokos <ndokos@gmail.com> writes:

> Julien Cubizolles <j.cubizolles@free.fr> writes:
>
>> I'm using the following elisp source block in my org files to choose the
>> publication options.
>>
>>   (setq org-publish-project-alist
>>         '(("TeX"
>>            :base-directory "./"
>>            :publishing-directory "./"
>>            :publishing-function org-beamer-publish-to-latex
>>            :exclude ".*"
>>            :latex-class "mpsi_beamer"
>>            :include ("test.org"))
>>           ))
>>
>> I'd like to define it once and for all in my emacs
>> configuration files but I'd need to replace the
>>
>>            :include ("test.org")
>>
>> line with the result of (buffer-name). Is it possible ?
>>
>
> Do you mean buffer-file-name? 

Yes that's better.

> When you publish a project, it does not matter what your current buffer
> is. So why would you want to include the random file that you just
> happen to be visiting?  And what if the buffer is not associated with a
> file at all (so buffer-file-name returns nil)?

> Can you explain what exactly you are trying to do?

I need to export the same org file with different latex classes and
package options. I do so by using different projects for the same file.

> The usual method of splicing in a variable into a list is with
> backquote - see e.g.
>
>           http://thread.gmane.org/gmane.emacs.orgmode/9583/focus=9603
>           
> but I don't think that would work here in any case.

Thanks for the pointer, it works:

--8<---------------cut here---------------start------------->8---
(defun jc-org-publish-project-options ()
  (setq org-publish-project-alist
        `(("TeX"
           :base-directory "./"
           :publishing-directory "./"
           :publishing-function org-beamer-publish-to-latex
           :exclude ".*"
           :latex-class "mpsi_beamer"
           :include , (list (file-name-nondirectory buffer-file-name))
           )
          ( several other projects...)
          )))

(add-hook 'org-mode-hook 'jc-org-publish-project-options)
(add-hook 'org-export-before-processing-hook 'jc-org-publish-project-options)
--8<---------------cut here---------------end--------------->8---

I'm not sure file-name-nondirectory is necessary. As you can see I need
to hook this function twice:

 - the org-mode-hook is so that the project names are available in any
   org file
 - the org-export-before-processing-hook is to adapt the :include option
   to each org file before export.

That's not very elegant, if someone has any idea.

Julien.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Using Buffer name in :include export property
  2014-08-29  9:40   ` Julien Cubizolles
@ 2014-08-29 10:34     ` Julien Cubizolles
  0 siblings, 0 replies; 4+ messages in thread
From: Julien Cubizolles @ 2014-08-29 10:34 UTC (permalink / raw)
  To: emacs-orgmode

Julien Cubizolles <j.cubizolles@free.fr> writes:


> Thanks for the pointer, it works:
>
> (defun jc-org-publish-project-options ()
>   (setq org-publish-project-alist
>         `(("TeX"
>            :base-directory "./"
>            :publishing-directory "./"
>            :publishing-function org-beamer-publish-to-latex
>            :exclude ".*"
>            :latex-class "mpsi_beamer"
>            :include , (list (file-name-nondirectory buffer-file-name))
>            )
>           ( several other projects...)
>           )))
>
> (add-hook 'org-mode-hook 'jc-org-publish-project-options)
> (add-hook 'org-export-before-processing-hook 'jc-org-publish-project-options)

Arg, it doesn't: org-export-before-processing-hook calls its functions
with the backend as an argument, so I could do
--8<---------------cut here---------------start------------->8---
(defun jc-org-publish-project-options (backend)
--8<---------------cut here---------------end--------------->8---

but the call to jc-org-publish-project-options in org-mode-hook doesn't
work anymore then...

Julien.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-08-29 10:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-28 21:37 Using Buffer name in :include export property Julien Cubizolles
2014-08-28 23:21 ` Nick Dokos
2014-08-29  9:40   ` Julien Cubizolles
2014-08-29 10:34     ` Julien Cubizolles

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).