emacs-orgmode
[Top][All Lists]
Advanced

[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




reply via email to

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