从emacs组织模式表中提取字段值

时间:2016-09-14 13:51:04

标签: emacs org-mode

分隔符:我是emacs的新手。 我正在尝试创建一个遍历org-table的函数,并提取特定的值并对它们进行一些算术运算。该算法与我的问题无关,但我无法将字段值转换为整数或浮点数列表。

例如,函数

(defun print-field-value()
  (interactive)
  (setq list '())
  (unless (org-table-p) (error "Not in an org-table"))
  (goto-char (org-table-begin))
  (org-table-next-field)
  (while (org-table-p)
  (add-to-list 'list (save-excursion (org-table-get-field 1)))
  (forward-line))
  (print list)
)

在表格上执行时

|  7 |  8 |  9 | 10 | 11 | -12 |
| 78 | 46 | 00 | 36 | 64 |  98 |

产生输出

(#(" 78 " 0 4 (fontified t face org-table)) #("  7 " 0 4 (fontified t face org-table)))

我对社区有两个问题: 1.我列表中的这些元素是什么? (什么类型的对象或那些) 2.有没有办法可以将整数放入列表中,这样我就可以轻松地对值进行一些算术运算了?

我理想地寻找一种简单的方法来做到这一点,而不需要创建另一个函数,该函数包含上述函数返回的内容并提取整数。我的直觉(可能存在缺陷)是应该有一种更简单的方法来做到这一点。我是对的吗?

1 个答案:

答案 0 :(得分:0)

" 78 "是一个字符串,在C中只需要注明list。接下来,您无需打印即可返回结果:在代码中放置print list代替describe-function就足够了。

如果要在emacs中发现任何模式,请使用其所有功能具有相同前缀的事实。在这里,运行org-table- org-table-analyze并按两次TAB以获取有关组织表的所有函数的列表。然后,您将看到有希望的函数(defun get-field-values () (unless (org-table-p) (error "Not in an org-table")) (org-table-analyze) (mapcar (lambda (i) (mapcar (lambda (j) (string-to-number (org-table-get i j))) (number-sequence 1 org-table-current-ncol))) (number-sequence 1 (1- (length org-table-dlines))))) ,并阅读其文档。这样你就可能想出以下内容:

M-:

它将为您提供字段矩阵,作为数字列表的列表。请注意,此功能不是交互式的,您可以使用Data Source=[database instance];Initial Catalog=[database name];Integrated Security=true

运行它