emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Darlan Cavalcante Moreira <darcamo@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: How to add content from a file to a table automatically
Date: Thu, 10 Jan 2013 15:12:57 -0300	[thread overview]
Message-ID: <50ef04af.0839650a.7f7b.ffff9872@mx.google.com> (raw)
In-Reply-To: <87txqpy65u.fsf@gmail.com>

Thank you Eric and Jambunathan for your answers.

If I process the whole table with babel to manually add the lines from the
external file than I would have to take care of updating the formula for
the "Total" value as well as making sure the new content was added before
the "Total" line, right?. The later is simple, but updating the formula
could be complicated.

Meanwhile, I'm investigating using org-capture for this.

For instance, if I use a template such as
#+begin_src emacs-lisp
  ("f" "test" table-line
   (file+headline "test.org" "Test table")
   (file "path/food.org")
   :table-line-pos "II-1"
   :immediate-finish t)
where the food.org file has a single line then I can capture with
#+begin_src emacs-lisp
  (org-capture nil "f")'
and org-capture will place the content from the "food.org" file in a table
in the "Test Table" headline of the test.org file.

The advantage of using org-capture instead of pure babel is that it will
already put the content in the correct place and update the
formulas. However, the formulas are updated correctly only if I capture a
single line each time.

I think a combination of babel with org-capture is my best option.
Once that is working I will use your timer approach for automating this
(while I investigate inotify suggested by Jambunathan).


At Wed, 09 Jan 2013 22:10:37 -0700,
Eric Schulte wrote:
> #+Title: Periodically Rerun a Code Block
> Here's the lisp code to define a function to continually re-run a code
> block.  Evaluate the following code block, then =M-x continually-run=,
> press ENTER and then type in the name of the code block to continually
> run (in this case "date").
> #+begin_src emacs-lisp :results silent
>   (defvar continual-runners nil
>     "Holds running block timers (so they may be canceled).")
>   (defun run-block-in-buffer (name buffer)
>     (save-match-data
>       (with-current-buffer buffer
>         (save-excursion
>           (org-babel-goto-named-src-block name)
>           (with-local-quit
>             (undo-boundary)
>             (with-temp-message (format "re-running %s" name)
>               (org-babel-execute-src-block))
>             (undo-boundary))))))
>   (defun continually-run (name)
>     "Continually run the supplied code block name.
>   The code block is assumed to be in the current buffer."
>     (interactive "scode block to continually run: ")
>     (let ((run-buffer (current-buffer)))
>       (add-to-list 'continual-runners
>                    (run-at-time nil 5 'run-block-in-buffer name run-buffer))))
> #+end_src
> Here's the code block to be continually re-run.
> #+Name: date
> #+begin_src sh
>   date
> #+end_src
> And here are the results which will be continually updated.
> #+RESULTS: date
> : Wed Jan  9 22:04:08 MST 2013
> Execute the following to stop all continually updating code blocks.
> #+begin_src emacs-lisp :results silent
>   (mapc #'cancel-timer continual-runners)
> #+end_src

  reply	other threads:[~2013-01-10 18:13 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-10  3:25 How to add content from a file to a table automatically Darlan Cavalcante Moreira
2013-01-10  5:07 ` Usecase for inotify? " Jambunathan K
2013-01-10 18:58   ` Eli Zaretskii
2013-01-10  5:10 ` Eric Schulte
2013-01-10 18:12   ` Darlan Cavalcante Moreira [this message]
2013-01-10 18:27     ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50ef04af.0839650a.7f7b.ffff9872@mx.google.com \
    --to=darcamo@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \


* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox


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).