I like to write in Markdown and often find myself needing tables. Are there any good ways of editing Markdown's pipe tables in Emacs? I am referring to this kind of syntax:
| Header | Header | Right |
|--------|--------|------:|
| Cell | Cell | $10 |
| Cell | Cell | $20 |
I first tried Emacs' table mode which is nice, but is designed for "grid tables" which are not supported by Markdown (let's say in Github's Markdown).
There is also org-mode's table mode which can be used as a minor mode. This comes pretty close; but the intersections are now replaced by +
characters and there is no support the alignment colon. So org-tblmode
first gives me something like this:
| Header | Header | Right |
|--------+--------+-------|
| Cell | Cell | $10 |
| Cell | Cell | $20 |
which I then need to manually edit to the following (editing intersection characters and adding alignment colon):
| Header | Header | Right |
|--------|--------|------:|
| Cell | Cell | $10 |
| Cell | Cell | $20 |
Is there some may that org-tblmode
can also handle this?
What else do you use/suggest for editing Markdown's pipe tables in Emacs?
OrgMode has nice function orgtbl-to-generic
for converting orgmode' tables to alien formats. I found simple example defining custom convertor based on orgtbl-to-generic
: https://gist.github.com/yryozo/5807243. Also see explanation of ORGTBL RECEIVE/SEND features here: http://dynamic-thinking.blogspot.ru/2009/11/orgtbl-mode.html. You need to define custom orgtbl-to-gfm
function in Emacs and place it to your autoload then you may use minor mode orgtbl-mode
for editing tables.
Small restriction: only right and left column alignments supported because Emacs OrgMode inside self doesn't supports central alignment.
See above sample org-mode source:
<!---
#+ORGTBL: SEND sample orgtbl-to-gfm
| Column 1 | Column 2 |
|---------------+----------|
| | <l> |
| Sample line 1 | 100 |
| Sample line 2 | 200 |
-->
And the result in markdown converted from the org-mode source:
<!--- BEGIN RECEIVE ORGTBL sample -->
| Column 1 | Column 2 |
|---|---|
| Sample line 1 | 100 |
| Sample line 2 | 200 |
<!--- END RECEIVE ORGTBL sample -->
Both them placed in the same file.