在没有用户交互的情况下转换一个org模式表和table.el表



i将org-mode表转换为table.el表。为此,我选择了表:

| Option      | Type | Value | Descr        |
| -[no]h      | bool | yes   | Print        |
| -[no]versio | bool | no    | Print        |
| -nice       | int  | 0     | Set t        |
| -[no]v      | bool | no    | Be lo        |
| -time       | real | -1    | Take         |
| -[no]rmvsbd | bool | yes   | Removvirtual |
| sites       |      |       |              |
| -maxwarn    | int  | 0     | Numbe        |
| procenerate |      |       |              |
| unsta       |      |       |              |
| -[no]zero   | bool | no    | Set pthout   |
| defau error |      |       |              |
| -[no]renum  | bool | yes   | Renum        |
| atomty      |      |       |              |

并按C-c ~org-mode然后问我

Convert table to table.el table? (y or n)

如何编程回答y?我读了那个辩护的文档 - 没有办法使用前缀arg。

bash中的类似功能:

echo y | script-which-asks-y-or-n

C-c ~调用命令org-table-create-with-table.el,该命令围绕调用org-table-convert提供了一堆包装。如果您想在知道自己已经在组织表中的表中时使用此功能,则不需要包装器,您只需要两个(可能只有一个)命令:org-table-alignorg-table-convert即可。

因此,如果您正在互动执行此操作,则可以调用M-x org-table-convert,然后完成。假设表已经对齐。您可以通过从一个单元格到下一个单元格来手动执行此操作,从而触发表对齐。或者您可以使用一个小功能来完成:

(defun my-convert-tables ()
"No questions asked, just convert the table"
  (interactive)
  (org-table-align)
  (org-table-convert))

您可以按以下方式进行编程执行此操作。您将在defadvice函数中用org-table-with-with-table.el替换函数名称test1,否则与下面的功能相同。

使用defadvice在功能之前和之后运行一些代码,我们可以将函数保存到符号y-or-n-p到全局变量,然后将其重新命名为简单返回true的函数。函数之后,我们然后恢复原始功能。

(setq save-y-or-n-p nil)
(defadvice test1 (around always-yes) 
  (fset 'save-y-or-n-p (symbol-function 'y-or-n-p)) 
  (fset 'y-or-n-p (lambda (s) t)) 
  ad-do-it 
  (fset 'y-or-n-p (symbol-function 'save-y-or-n-p)))
 (defun test1 ()
  (interactive)
  (if (y-or-n-p "Happy? ")
      (insert "Happy day")
    (insert "Unhappy day")))

相关内容

最新更新