Re: [Orgmode] org-babel-load-file can't use properties drawers ?

2010-03-22 Thread Eric Schulte
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 julien.fan...@gmail.com 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.
 Emacs-orgmode@gnu.org
 http://lists.gnu.org/mailman/listinfo/emacs-orgmode


___
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


[Orgmode] org-babel-load-file can't use properties drawers ?

2010-02-28 Thread Julien Fantin
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.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode