[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Elisp code to insert a word in table
From: |
Nick Dokos |
Subject: |
Re: [Orgmode] Elisp code to insert a word in table |
Date: |
Sat, 04 Dec 2010 07:29:32 -0500 |
ishi soichi <address@hidden> wrote:
> Ah, I need more help, though...
>
> I have tried this code. I made it as simple as possible to clarify my
> question.
>
> (defun add-word ()
> (interactive)
> '(org-table-put (@2 $2 "word!")))
>
> and execute in a buffer having a table already. It did not work at all.
>
Four problems:
o point must be *in* the table before you call org-table-put (which
incidentally also answers your question below about multiple tables).
o line and column are integers: @2 and $2 is syntax for table formulas
in the spreadsheet, not for providing arguments to this function.
o quoting returns the quoted expression unevaluated, so the last line of
your function does not do anything much; in particular, it does *not*
call org-table-put at all (if it had you would have gotten an error).
o lisp functions are called like this: (func arg1 arg2 ...) and *not* like this:
(func (arg1 arg2 ...))
So your function should look something like this:
(defun add-word ()
(interactive)
(save-excursion
(goto-char <some-place-inside-the-table>)
(org-table-put 2 2 "word!" t)))
where you'll have to figure out how to get the point somewhere inside
the table. In the simplest case, providing a character position will
work, but is obviously not very general. I won't try to explain the
save-excursion here: see its documentation for more details.
I'd recommend you spend some time studying the "Introduction to Emacs Lisp"
guide:
http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html
> But also I kept wondering what could happen if there are two separate tables
> in the same buffer? I checked cells with C-c?, then realized that the cell
> locations are not unique in more than one table. So, there must be a way to
> identify the table in question.
>
HTH.
Nick