[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] org-babel-load-file can't use properties drawers ?
From: |
Eric Schulte |
Subject: |
Re: [Orgmode] org-babel-load-file can't use properties drawers ? |
Date: |
Mon, 22 Mar 2010 08:52:47 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.90 (gnu/linux) |
Hi Julien,
I just pushed up a small commit which will allow you to pull property
values from a headline by embedding a small amount of elisp into
your :var header argument. In this way the `org-entry-get' function can
be used with our existing tangle-then-load elisp machinery.
Best -- Eric
,----[from the commit message]
| babel: variable references which look like lisp forms are now evaluated
|
| for example, the following simple example
| #+begin_src emacs-lisp :var two=(+ 1 1)
| (sqrt two)
| #+end_src
|
| #+results:
| : 1.4142135623730951
|
| Or this more interesting usage, which pulls variable values from
| headline properties
| *** example headline w/property
| :PROPERTIES:
| :special: 89
| :last-name: schulte
| :END:
|
| #+begin_src emacs-lisp :var special=(string-to-number (org-entry-get
nil "special" t))
| (+ special 1)
| #+end_src
|
| #+results:
| : 90
|
| #+begin_src emacs-lisp :var last-name=(org-entry-get nil "last-name"
t))
| (message "hello %s" last-name)
| #+end_src
|
| #+results:
| : hello schulte
`----
Julien Fantin <address@hidden> writes:
> I've been using this init file to load my org-mode-contained emacs
> configuration :
>
> ;;; init.el --- Where all the magic begins
> ;;
> ;; This file loads both
> ;; - Org-mode : http://orgmode.org/ and
> ;; - Org-babel:
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#library-of-babel
> ;;
> ;; It then loads the rest of our Emacs initialization from Emacs lisp
> ;; embedded in literate Org-mode files.
> ;; Load up Org Mode and Org Babel for elisp embedded in Org Mode files
> (setq dotfiles-dir (file-name-directory (or (buffer-file-name)
> load-file-name)))
>
> (let* ((org-dir (expand-file-name
> "lisp" (expand-file-name
> "org-mode" (expand-file-name
> "elisp" dotfiles-dir))))
> (org-contrib-dir (expand-file-name
> "lisp" (expand-file-name
> "contrib" (expand-file-name
> ".." org-dir))))
> (load-path (append (list org-dir org-contrib-dir)
> (or load-path nil))))
> ;; load up Org-mode and Org-babel
> (require 'org-install)
> (require 'org-babel-init)
> (require 'org-babel-emacs-lisp))
> ;; load up all literate org-mode files in this directory
> (mapc 'org-babel-load-file (directory-files dotfiles-dir t "\\.org$"))
> ;;; init.el ends here
>
> It's been working nicely until I tried to clean things up by setting some
> commonly used variables in properties drawers, and access them from
> emacs-lisp src blocks.
>
> The following illustrates my intent, and will behave as expected with
> org-babel-execute-buffer, but fails when it is loaded by org-babel-load-file :
>
> * Configuration
> :PROPERTIES:
> :ELISP-DIR:~/emacs.d/elisp/
> :END:
>
> ** Load Path
> #+begin_src emacs-lisp
> (add-to-list 'load-path (org-entry-get nil "ELISP-DIR" t))
> #+end_src
>
> From my understanding, orb-babel-load-file tangles then loads the file,
> losing the variables in the process.
>
> I've been using this function to get the expected behaviour, but the default
> somewhat breaks expectations, don't you think ?
> (defun
> ba/org-babel-load-file (file) (with-temp-buffer (insert-file-contents
> file) (org-mode) (org-babel-execute-buffer)))
>
> Or, is there a cleaner way to achieve this ?
>
> Regards,
> julien
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Orgmode] org-babel-load-file can't use properties drawers ?,
Eric Schulte <=