- 1 前言
- 2 Org mode 代码块执行出错信息优化
- 2.1 背景
- 2.2 正确的描述我们的问题
- 2.3 测试以及需求累进的描述
- 2.4 最终的效果
- 2.5 最终的代码
- 3 结语
1 前言 🔗
在大模型时代,一切皆有可能。对于 Emacs 同样如此,大模型拉低学习了 Emacs 的门槛,我们通过大模型可以做到以前我们敢想不敢做,或敢做没时间做,或有时间不会做的事。
今天继续这个新的系列,跟大家分享在大模型时代,我们可以如何“玩” Emacs,我们应该怎么用大模型来满足自己对 Emacs 使用的需求。
上一篇关于根据 jieba 分词移动和删除的文章,只是提供了一个思路,后来经 LuciusChen
道友推荐,我试用了 roife
大佬的 emt 包,利用 MacOS 自带的 Tokenizer 来分词,体验更加顺滑,强烈推荐!
2 Org mode 代码块执行出错信息优化 🔗
2.1 背景 🔗
我非常喜欢 Org mode,实际上我现在基本上不太使用 Office。Org mode 里有一个我非常喜欢的特性就是代码块。这使得我能在 Org 文件里通过代码块来编写一些小的程序,用一个专业术语叫「文学编程」。它能让在遇到某些任务时,一边记录你的思路,一边通过代码块以及 :noweb
或 :session
的特性,如流水般的往前行。
然而代码块有一个很让人难受的默认行为就是:当代码块里的代码出现错误时,它的报错不是在 Org 文件的 +RESULTS:
部分显示,而是新开了一个叫 *Org-Babel Error Output*
的 buffer 显示。
这在体验上不够连贯和统一,于是我开始了这次尝试。
2.2 正确的描述我们的问题 🔗
今天这个样例跟之前的不同,我们不是直接描述需求,而是先把相关函数的源代码给到 ChatGPT,让后直接让 ChatGPT 根据我们的描述来进行改造。
2.3 测试以及需求累进的描述 🔗
2.4 最终的效果 🔗
2.5 最终的代码 🔗
(defun my/org-babel-eval (command query)
"Run COMMAND on QUERY.
Return standard output and error produced by COMMAND.
Writes QUERY into a temp-buffer that is processed with
`org-babel--shell-command-on-region'."
(let ((error-buffer (get-buffer-create " *Org-Babel Error*")) exit-code)
(with-current-buffer error-buffer (erase-buffer))
(with-temp-buffer
(insert query "\n")
(setq exit-code
(org-babel--shell-command-on-region
command error-buffer))
(let ((stderr (with-current-buffer error-buffer (buffer-string)))
(stdout (buffer-string)))
(concat stdout
(if (not (string-empty-p stderr))
(concat "\n--- STDERR ---\n" stderr)
""))))))
(advice-add #'org-babel-eval :override #'my/org-babel-eval)
3 结语 🔗
今天这个案例,是一个简单的案例,但是我们的处理思路有一些变化,不是直接描述需求,而是直接将需要改造的函数源代码给到 ChatGPT,让它按照我们的要求进行改造,最后调试,完成我们的目标。
后续,将会继续分享几个案例。
- org-super-links 链接与反链改造
- …
我也会持续的使用 ChatGPT 和 Emacs,持续分享我的心得,感谢您的阅读。