emacs-orgmode
[Top][All Lists]
Advanced

[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




reply via email to

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