008. Emacs 之光的成长历程
本期节目请来了一位特殊嘉宾–付禹安,社区内一般称他为『Emacs 之光』。之所以这么称呼,是因为今年才刚刚大学毕业的他,就已经给 Emacs 贡献了多次代码。👍
与大多数用户不同,嘉宾在接触 Emacs 不久即开始尝试攒写自己的配置,并陆陆续续发布了几个比较实用的包,比如 valign[1],嘉宾是如何做到的?更令人好奇的是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾的学习、贡献经历,可以给听众打开 Emacs 源码的神秘面纱,让更多用户参与到 Emacs 的贡献中,一个多小时的分享,精彩不容错过。
时间线
• 00:00:56 嘉宾自我介绍• 00:02:20 Emacs 初相识• 00:10:08 ELisp 学习经历• 00:15:45 Emacs 的可发现性 Discoverability[2]• 00:23:58 源码贡献经历• 00:27:32 源码贡献流程介绍• 00:38:15 如何读懂 Emacs 源码• 00:57:59 嘉宾的第一个 Emacs patch• 01:02:34 分享环节
Show Notes
•嘉宾自我介绍• 网络 ID: casouri[3]• 17 年大一开始接触 Emacs ,到现在差不多四年• 个人博客[4]• 配置 lunarymacs[5]• 对 Emacs 仓库的提交记录[6]• 28 版本新增的 shortdoc[7],解决手册冗长,提供简洁的示例代码•正则表达式两处文档:• 只介绍如何写正则的 34.3 Regular Expressions[8]• 15.5 Regular Expression Search[9] 这一小结介绍正则相关函数•嘉宾对 Emacs 的主要 patch:• Improve word wrapping for CJK characters[10]• Add filter to GDB's register buffer[11]•Emacs 代码规范• 注释都是完整句子,最后有个句号,句号后两个空格• 注释用的是 C 风格的 /* */
,而不是 C++ 的 //
• 函数名后面跟一个空格,再是括号•读 Emacs 源码技巧• lisp.h[12] 里面有 C 如何调用 ELisp 的示例• 去 devel[13] 邮件列表咨询,还可以练习英文表达能力• ccls[14] + grep + ctags• 通过搜索相关功能来探究其个函数的用法•嘉宾的分享• aggressive-indent-mode[15]• Practical Typography[16]•主播的分享• 关注牙齿健康,最好每年去看一次牙医
Get in Touch
引用链接
[1]
valign: https://github.com/casouri/valign[2]
Discoverability: https://wikemacs.org/wiki/Discoverability[3]
casouri: https://github.com/casouri[4]
个人博客: https://casouri.github.io/[5]
lunarymacs: https://github.com/casouri/lunarymacs[6]
提交记录: https://github.com/emacs-mirror/emacs/commits?author=casouri[7]
shortdoc: https://emacstalk.github.io/post/002/[8]
34.3 Regular Expressions: https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html[9]
15.5 Regular Expression Search: https://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Search.html[10]
Improve word wrapping for CJK characters: https://github.com/emacs-mirror/emacs/commit/0d1ca2ac3805443690f3bcb6877251d9b74902c9[11]
Add filter to GDB's register buffer: https://github.com/emacs-mirror/emacs/commit/7c83e605ab84e8b62254c55f347abc8aa9c6057b[12]
lisp.h: https://github.com/emacs-mirror/emacs/blob/master/src/lisp.h[13]
devel: https://lists.gnu.org/archive/html/emacs-devel/[14]
ccls: https://github.com/MaskRay/ccls[15]
aggressive-indent-mode: https://github.com/Malabarba/aggressive-indent-mode[16]
Practical Typography: https://practicaltypography.com/[17]
530146104: https://jq.qq.com/?_wv=1027&k=9tAXJ8gG[18]
「❤️发电」: https://afdian.net/@emacstalk