如何使用elisp在Emacs中格式化数据表?

如何使用elisp在Emacs中格式化数据表?,emacs,elisp,Emacs,Elisp,我想使用elisp和awesometableinsert命令在Emacs中自动格式化数据表。我的想法是这样做,但不起作用: (defun make-table () (interactive) (table-insert 2 1) ; Table with 2 columns and 1 row (insert "first cell contents") (table-forward-cell) (insert "second cell contents") (tabl

我想使用elisp和awesometableinsert命令在Emacs中自动格式化数据表。我的想法是这样做,但不起作用:

(defun make-table ()
  (interactive)
  (table-insert 2 1) ; Table with 2 columns and 1 row
  (insert "first cell contents")
  (table-forward-cell)
  (insert "second cell contents")
  (table-release)
  )
它不是在表中插入第一个单元格内容,而是在第一个单元格之前插入文本,因此文本根本不会进入表中。然后,它在转发手机呼叫时崩溃


当我以交互方式执行此操作时,效果很好。上面的elisp代码与用键盘手动执行此操作有何不同?

原因是插入会在移动|字符时破坏表格。然后,表转发单元失败,因为它无法解析缓冲区中的表


我的建议是查看org模式及其提供的表关联功能。然后,您将找出哪一个更适合您的需要,表模式还是组织模式

如何使其不破坏表?当我手动执行M-x insert table时,会创建一个表格,并自动将点放入第一个单元格中,因此随后的键入将进入单元格和modeline表格。我会考虑org模式,但我真的很想知道在ELISP和交互式编辑之间有什么不同。插页是否将|字符向右移动?您是否使用覆盖模式?这可能就是不同之处。insert函数不会在单元格中插入文本,也不会在缓冲区中插入文本,因此会破坏表格。如果以交互方式操作,则不会将|字符移到上方,从而使其正常工作。顺便说一句,我的意思是M-x表格插入。我不认为插入会覆盖任何内容,我也不认为缓冲区和单元格是不同的东西——单元格只是缓冲区的一个特殊区域。我想真正的问题是,如何使用elisp准确地模拟交互式键入?