如何从组织模式表生成源代码?

时间:2019-04-16 21:33:57

标签: emacs org-mode

我正在尝试找出一种将i3wm配置文件移动到组织模式文件的方法。我有一个包含键绑定及其应执行哪些命令的表,我想从中生成适当的源代码。

示例:

F

应生成

| Keybinding            | Command              | Action                   |
|-----------------------+----------------------+--------------------------|
| {{{mod}}} + Return    | i3-sensible-terminal | Opens a new terminal     |
| {{{mod}}} + Shift + q | kill                 | Kills the focused window |

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以命名表并将其作为参数传递给源块,并使源块遍历行。这是python中的实现:

#+NAME: commands
| Keybinding            | Command              | Action                   |
|-----------------------+----------------------+--------------------------|
| {{{mod}}} + Return    | i3-sensible-terminal | Opens a new terminal     |
| {{{mod}}} + Shift + q | kill                 | Kills the focused window |

#+begin_src python :var cmds=commands :results output raw
for row in cmds:
    print("bindsym {} exec --no-startup-id {}  ;; {}".format(row[0].replace(' ', ''), row[1], row[2]))
#+end_src

在这里,我假设应该消除第一列中的空格,而不是引用字符串,但是您可以轻松地对其进行修改。

这是运行上述源代码块的结果:

#+RESULTS:
bindsym {{{mod}}}+Return exec --no-startup-id i3-sensible-terminal  ;; Opens a new terminal
bindsym {{{mod}}}+Shift+q exec --no-startup-id kill  ;; Kills the focused window