gpt4 book ai didi

emacs - 组织模式表到 s 表达式

转载 作者:行者123 更新时间:2023-12-05 00:42:24 26 4
gpt4 key购买 nike

我想从 Org-Mode 表导出到 s 表达式。

| first  | second | thrid  |
|--------+--------+--------|
| value1 | value2 | value3 |
| value4 | value5 | value6 |

会变成:
((:FIRST "value1" :SECOND "value2" :THIRD "value3")
(:FIRST "value4" :SECOND "value5" :THIRD "value6"))

如果它尚不存在,我计划编写这样的设置,但我认为在开始重新发明轮子之前我会利用 stackoverflow。

最佳答案

这可以解决问题。它具有最少的错误检查。

要使用的接口(interface)是编程接口(interface):

(org-table-to-sexp <location-of-beginning-of-table> <location-of-end-of-table>)

在这种情况下,它将返回您请求的性别。

如果想要交互使用,可以调用如下命令对 region中的表进行操作.因此,在表格的开头设置标记,移动到末尾,然后键入:
M-x insert-org-table-to-sexp

这将在当前缓冲区中的表之后立即插入所需的 sexp。

这是代码:
(defun org-table-to-sexp-parse-line ()
"Helper, returns the current line as a list of strings"
(save-excursion
(save-match-data
(let ((result nil)
(end-of-line (save-excursion (end-of-line) (point))))
(beginning-of-line)
(while (re-search-forward "\\([^|]*\\)|" end-of-line t)
(let ((match (mapconcat 'identity (split-string (match-string-no-properties 1)) " ")))
(if (< 0 (length match))
;; really want to strip spaces from front and back
(push match result))))
(reverse result)))))

(require 'cl)
(defun org-table-to-sexp (b e)
"Parse an org-mode table to sexp"
(save-excursion
(save-match-data
(goto-char b)
(let ((headers (mapcar
(lambda (str)
(make-symbol (concat ":" (upcase str))))
(org-table-to-sexp-parse-line)))
(sexp nil))
(forward-line 1) ;skip |--+--+--| line
(while (< (point) e)
(forward-line 1)
(let ((line-result nil))
(mapcar* (lambda (h e)
(push h line-result)
(push e line-result))
headers
(org-table-to-sexp-parse-line))
(if line-result
(push (reverse line-result)
sexp))))
sexp))))

(defun insert-org-table-to-sexp (b e)
"Convert the table specified by the region and insert the sexp after the table"
(interactive "r")
(goto-char (max b e))
(print (org-table-to-sexp b e) (current-buffer)))

关于emacs - 组织模式表到 s 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com