emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] manipulate org tables using emacs-lisp


From: Heikki Lehvaslaiho
Subject: Re: [O] manipulate org tables using emacs-lisp
Date: Sun, 2 Oct 2016 10:19:28 +0300

Hi Alan,

Try this function. You can test if the table was found before manipulating it. Table functions typically work only inside tables, but the #+NAME line is part of it although it is before the table itself (as defined by function org-table-begin).


  (defun my/org-table-find-by-name (str)
    "Move point to the first table of the buffer with STR in the name.

The point does not move if the table is not found.
Returns the new position if successful, nil otherwise.
"
    (interactive "sTable name substring: ")
    (let ((re (concat "#\\+NAME:.+" str))
          (loc-table nil))
      (setq loc-table (save-excursion
                        (goto-char (point-min))
                        (re-search-forward re nil t)))
      (if (number-or-marker-p loc-table)
          (goto-char loc-table))))

  -Heikki

Hi Thorsten,

On 2016-09-30 22:52, Thorsten Jolitz <address@hidden> writes:

>> Are there functions for manipulating org-tables using emacs-lisp? More
>> precisely, I would like to refer to a table by its name, read some cells
>> (either by position or by matching some given text with some text in the
>> first row/column), and write in some cells.
>
> ,----[ C-h f org-table-to-lisp RET ]
> | org-table-to-lisp is an autoloaded compiled Lisp function in
> | ‘../org-mode/lisp/org-table.el’.
> |
> | (org-table-to-lisp &optional TXT)
> |
> | Convert the table at point to a Lisp structure.
> | The structure will be a list.  Each item is either the symbol ‘hline’
> | for a horizontal separator line, or a list of field values as strings.
> | The table is taken from the parameter TXT, or from the buffer at point.
> |
> | [back]
> `----
>
> returns the table as a nested list you can map with lots of Elisp
> functions (like mapcar).
>
> Ex.:
>
> | my | tab |
> |  1 |   2 |
>
> =>
>
> (("my" "tab") ("1" "2"))

This is very useful, thank you. But how do I go to a named table? I
found org-babel-goto-named-block, but nothing for tables.

Thanks again,

Alan

--
OpenPGP Key ID : 040D0A3B4ED2E5C7
Monthly Athmospheric CO₂, Mauna Loa Obs. 2016-08: 402.25, 2015-08: 398.93


reply via email to

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