外观
Emacs 社区日报 2026-09-27
约 5059 字大约 17 分钟
2026-09-27
自动整理自 Telegram 讨论组,每天更新。内容为 AI 摘要,仅作信息索引与回顾。
Emacs 中文讨论组
🎯 核心热点与专题探讨
1. Emacs 包管理器之争:straight vs elpaca vs elpa
群友展开了一场关于 Emacs 包管理器选择的讨论。有人提到大部分机器上用 elpa,但在需要 hack package 的机器上会用 straight,因为 straight 在 git 源码级别管理上更灵活。有人误将 elpa 听成 elpaca,引发了一段小插曲。讨论的核心痛点在于 side-by-side 体验(可能是并排窗口/分栏显示)在 Emacs 中对齐不佳,有群友提出“应该搞 toggle(切换模式)”而不是对齐方案。整体氛围偏向实用主义——用熟了的工具不轻易换,除非有明确优势。
2. 群内机器人 @meat_inspector_bot 上线
群友宣布自研 bot 上线,功能包括:
- 入群验证
- 群友举报 spam 功能(防误操作机制:需两人共同举报,且举报人积分必须大于被举报人)
- 积分系统:每条消息 +1 积分,7 天后过期
- 花费 1000 积分可兑换用户 tag
群友调侃“得赶快发言,不然被举报了就糟糕了”,也有人吐槽 Telegram 限制导致无法举报管理。整体气氛活跃,体现了社区自治理的极客精神。
3. AI 写 Lisp 代码的可靠性讨论
群友抛出观点:“AI 写 lisp 这种太灵活的语言会写得极不一致,不像写 Go 那样”。引发共鸣——同一种功能在 Lisp 里有太多写法,AI 容易随意发挥。但也有群友反驳:“好一点的模型早不会这样了”,甚至有人表示“用 AI 写了几万行 elisp 都没出过问题”。讨论延伸至 Python 也面临类似问题,最终落点到“能用就行,自己写要花多少时间精力”。这是一个典型的“AI 生成代码质量 vs 人类编写成本”的权衡话题。
4. HarmonyOS 上运行 Emacs(震惊全场)
有群友分享了一个 Reddit 链接:ohemacs — GNU Emacs for OpenHarmony/HarmonyOS。群里连续刷屏“我去”“可以啊”。话题迅速扩展到“HarmonyOS 是指华为笔记本/平板/手机”,有人质疑截图对不上手机。这一话题表明 Emacs 的移植生态已经延伸到国产操作系统,极具话题性和技术价值。
🔑 关键概念与技术解析
| 概念 | 解释 |
|---|---|
| straight | Emacs 包管理器,通过 git 源码级别管理包,支持对包进行 hack/修改,适合需要深度定制 package 的场景 |
| elpaca | 另一个 Emacs 包管理器,也支持下载源码,但群友对其了解不深 |
| textui | 群友提到的一种方案,可能是某个 TUI(文本用户界面)组件,用于解决 Emacs 中 side-by-side 对齐问题 |
| tag 兑换 | 群 bot 的积分玩法,1000 积分可兑换用户自定义标签,用于社群身份展示 |
| wave underline | Emacs 文本渲染中的波浪下划线,群友发现它不支持(而 line/dash/dot underline 均支持),疑似 bug |
| 物理 agent | 高校科研项目中使用的一种 AI 代理,可能指具身智能/机器人研究方向 |
💎 碎片知识与金句拾遗
- “Windows 永永远远是次级支持平台” —— 群友对 Windows 生态在开发者工具链中的定位吐槽,结合上下文是某个编辑器/框架对 Windows 支持不佳。
- “电脑本身就是特殊的,是 IBM 留下的遗产” —— 讨论为何电脑 OS 可以被刷掉而相机/电视 OS 不行时的观点,认为 PC 架构的历史包袱导致其开放性。
- “接受现实吧,屎山代码会迅速堆积” —— 关于 AI 生成代码质量的悲观调侃,但紧接着有人反驳“至少有效吧”。
- “试试 vivetool” —— 群友推荐了一个工具,可能是 Windows 上修改系统功能的工具(ViveTool),用于启用隐藏功能。
- “一代一代一代” —— 简短回应“zig cpp 呢”,疑似在感叹技术迭代节奏或某种代际传承。
- “商业策略问题” —— 讨论系统封闭性时的核心归因,认为不是技术做不到,而是商业选择。
- 有人申请某项目被拒(“被拒绝了,我得换个想法说服一下”),随后另一群友接话“可以私我邮箱,我来邀请”,展示社区互助氛围。
- “Google Play 必须内测两周才可以公测” —— 一条关于 Google Play 上架流程的冷知识。
🛠️ 值得深入研究的点 (Follow-up)
- ohemacs — GNU Emacs for OpenHarmony/HarmonyOS:这是一个极具前瞻性的项目。Emacs 移植到鸿蒙系统,涉及底层渲染、触摸交互、移动端文本编辑体验等大量适配工作,值得持续关注其实现方式和可用性。
- 群 bot 的防滥用举报机制:积分过期 + 双人举报 + 积分门槛的设计思路,是社区治理中防 spam 的巧妙方案,可借鉴到其他社群/产品中。
- Emacs wave underline 不支持的问题:可能是某个渲染库/主题的 bug,若能定位根因,或许能为 Emacs 渲染层贡献补丁。
- AI 生成 Lisp 代码的多样性问题:如何约束 AI 在“多解法”语言上的一致性,是值得探索的 prompt 工程方向,尤其对 Emacs 配置自动生成场景。
观点延伸
昨晚最值得咀嚼的不是包管理器之争,是那句「AI 写 Lisp 会写得很不一致,不像写 Go」。这句话被两边各说对了一半,但它把因果装反了:让 AI 在 Go 里显得靠谱的,不是 Go 死板,而是 Go 的验收面窄而硬——格式化有唯一答案、编译错误一屏说清、惯用写法收敛到几乎只有一条路。Lisp 的问题从来不是"灵活",是缺少能把 AI 输出立刻否掉的机器信号。
一、"写了几万行 elisp 没出过问题"和"AI 写得很随意"可以同时为真。 关键差别在闭环:一个人天天用的配置,他自己就是测试用例,出错当天就疼;而让 AI 产出的、没人跑没人回看的 elisp,随意不随意根本不可见。前者不是模型的胜利,是反馈回路的胜利。所以争论"Lisp 适不适合 AI"没有落点,该问的是这次输出有没有验收动作。
二、正确的干预方向是砍搜索空间,不是给模型加约束。 与其在 prompt 里反复叮嘱"风格要统一",不如把自己配置里已经稳定的命名、宏、helper 抽成可引用的方言,让模型做续写而不是从零发明。同一件事让模型写三遍,把三份都出现的结构下沉成宏——这才是把不确定性变成资产。顺带一提,这跟当天群里另一条线是同一个思路的两次出现:side-by-side 对齐怎么调都别扭,最后有人一句"还是应该搞 toggle"就绕开了。当两头对齐成本高于收益时,别继续调参数,去改接口形态。
三、留一个可验证的观察。 wave underline 不支持,而 line / dash / dot 都支持——这种"同一个枚举里只有一个值没人走过"的缺口,恰恰是测试和直觉都容易漏掉的地方。它值得单开一个最小复现,而不是停留在群里说一句。判断方法很廉价:同一个字符串分别用四种 underline 渲染,比较底层 face 属性的落点。
可继续实践的一件事: 拿自己一份 elisp 配置做两轮小实验——同一需求让模型写三遍,抽取稳定复现的结构固化成宏或 helper,再重复一次,看下笔一致性是否真的变化。这比再做十轮"Lisp 行不行"的讨论,能拿到真数据。
Emacs 轻聊讨论组
🎯 核心热点与专题探讨
专题:Emacs 图形渲染的跨平台差异与解决方案
群里展开了一场关于 Emacs 渲染问题的深度讨论。起因是一位用户分享了一段 Lisp 代码,用于在 Emacs 中渲染带波浪线下划线(wave underline)的文本,并请求 Linux 用户帮忙截图对比。随后引发了对 Emacs 在不同平台上渲染质量的详细比较:
- 核心痛点:同一段代码在 Windows 和 Linux 上渲染出的波浪线(wave)视觉效果差异显著。Windows 上线条更细,放大后几乎看不清;Linux 上则清晰得多。用户怀疑是 GDI(Windows 图形设备接口)的问题——同样是 1px 的线条,渲染出来的实际效果差别很大。
- 技术深入:有用户提到这个差异其实与字体渲染引擎有关,Windows 的 GDI 对线条的抗锯齿处理与 Linux 的 FreeType 不同。还有人提到已经有人提交了 patch 来解决这个问题,但 Emacs 核心维护者 Eli(Eli Zaretskii)并不同意这个改动——有人打趣说“你把 mac 和 linux 都实现一遍就同意了”,暗示开发者需要先在多个平台验证过再提意见。
- 关联讨论:从渲染问题延伸到 Emacs 的图形能力边界。有用户提出想把 Excalidraw(一个开源的白板绘图工具)移植到 Emacs 里,像 Obsidian 那样使用。讨论中提出了多种方案:直接 port 成单页 canvas app、用 xwidget 访问网站、或者用动态模块的方式“把交互从 emacs 接出去,然后把显示接进来”,完全绕开 Emacs 的渲染限制。有人指出可以参考 video.el 的操作逻辑——这个插件在处理视频时已经实现了类似的“外部渲染、Emacs 交互”模式,60Hz 流畅度完全没问题。
专题:Linux 发行版格局与 openEuler/SUSE 的变局
凌晨时段有一场关于发行版生态的讨论:
- 国内发行版现状:openEuler 源自华为的 EulerOS(华为原本是 SUSE 派),现在国内服务器发行版主要是“复刻 CentOS”,桌面端则是统信和麒麟“两坨”。
- SUSE 抛弃 YaST:讨论中提到 openEuler 曾有意与 SUSE 合作移植 YaST(SUSE 的系统管理工具),但 SUSE 自己却决定放弃 YaST——理由很简单:“yast 太老了啊之类的,维护不起就不维护了”。现在 SUSE 的管理功能拆成了多个组件拼合,比如 cockpit 管系统、梅林管包。群里对这个变化评价不高——“这个好难用啊”“打开文档之后试试的欲望一下子就没了”。
- 发行版战争的终局:有观点认为,只要没有类似 NixOS 那种颠覆性创新,“目前的发行版战争应该就这样了”。systemd 已经吃掉了太多发行版之间的差异——这既是统一,也意味着个性消失了。SUSE 和 openEuler 的联姻更多是生态层面的务实合作,而非技术上的突破。
专题:AI 终端与“古法编程”之争
有一段关于 AI 辅助编程工具的讨论:
- 有人感叹“AI-Native 终端都不如普通的终端 + herdr 好用”,认为 AI 终端噱头大于实用。
- 有人提到“opus 5.5 实在太耐用了”——Claude Opus 5.5 的能力让人满意,但又有人说“tibo 已经无法吸引我了”,似乎对新出的某款 AI 工具失去兴趣。随后话题转向“重置白痴有啥用”——可能指某个 AI 被重置后能力退化,但“astra 能跑逆向”又给了新理由。
- 重写项目趋势:有人分享了一个把 pi(可能是某个计算器或数学库)移植成 Go 实现的项目,命名为
pig,并调侃“是不是就会再出现 pir 之类的”。群里指出“早就有 rust 重写了”,但对这类重写项目持保留态度——“重写给人一种 ai 直接生成的感觉”“如果是用的顶级模型的话,那只考虑性能有没有提升和有没有引入新 bug 才是重写最重要的意义”。还有人提到“pi 本身貌似还是很坚持古法编程的来着”,暗示原作者可能并不认可这些重写。
🔑 关键概念与技术解析
- YaST:SUSE 发行版的系统管理工具,负责安装、网络配置、软件包管理等。群内讨论揭示 SUSE 已决定放弃维护这个年迈的组件,将其职责拆分到 cockpit(Web 管理界面)和梅林(软件包管理)等工具中。
- wave underline:Emacs 文本属性中的一种下划线样式,用来渲染波浪线,常用于拼写错误提示。聊天中展示了在 Windows 和 Linux 上渲染效果的巨大差异,引发了对 GDI 与 FreeType 渲染引擎差异的讨论。
- video.el:一个在 Emacs 中播放视频的插件,采用了“外部渲染、Emacs 交互”的架构——视频帧由外部引擎渲染,Emacs 只负责处理用户交互。群里认为这个架构模式可以复用到画布应用(如 Excalidraw)上。
- xwidget:Emacs 的嵌入式控件系统,允许在 Emacs 窗口中嵌入浏览器等原生组件。讨论中提到用它直接访问 Excalidraw 网站的方案。
- 动态模块(dynamic module):Emacs 的扩展机制之一,允许加载原生代码库。群里提出了用动态模块把渲染交互接出去的思路,避免受限于 Emacs 自身的图形能力。
- 幽灵文本补全(ghost text completion):编辑器在光标位置显示灰色提示文本,显示可能的补全内容但不实际插入。群里提到现在 Emacs 已经有了词级(word-level)的补全,不再局限于整行或整段补全。
💎 碎片知识与金句拾遗
- 关于 Emacs 的渲染 bug:“我发现在放大之后水平滚动看上去就挺平滑的”——有用户分享在 Windows 上放大 Emacs 窗口后,水平滚动变得流畅的意外发现。
- 关于重写项目的态度:“重写给人一种 ai 直接生成的感觉”——群里对 Rust 重写项目的普遍印象,认为它们缺乏原作者的手工风格。
- 关于 AI 补全的边界:“我也曾经想过这个问题,就是是否可以让我在记笔记的时候,自动补全剩下的内容,后来想想,还是不要的好”——有人对 AI 自动补全笔记内容持保留态度,担心它会“一直卡我”。
- Gmail 发送延迟的怪现象:“谷歌邮箱发送有时候灵有时候不灵的”“卡住了就是被卡验证了”——有用户分享通过 nnimap(Emacs 的 IMAP 客户端)发邮件时遇到的诡异延迟,有时秒发、有时卡十几分钟。
- 潮州牛肉火锅的意外插曲:“潮州这不到 200 的牛肉火锅给我干趴了”“吃挺了”——深夜群里冒出的一句生活感慨,与代码无关,但保留了群聊的真实感。
- 最纯粹的 Emacs 用法:有人分享了一段 Lisp 代码,用
propertize给文本加上strike-through、overline和underline三种文本属性,纯粹是为了测试渲染效果。这种对细节的极致追求,正是硬核用户的典型操作。
🛠️ 值得深入研究的点 (Follow-up)
- Excalidraw 移植到 Emacs 的可行性:群里有人打算尝试把 Excalidraw(开源白板工具)移植到 Emacs 中,并计划参考 video.el 的操作逻辑。这是一个有潜力的方向——如果成功,Emacs 将成为绘图工具,而不仅仅是文本编辑器。
- 动态模块渲染方案:讨论中提到“把交互从 emacs 接出去,然后把显示接进来”,并强调“只渲染显示在窗口里的部分”“多个 view 分窗口渲染”——这种思路值得关注,可能成为 Emacs 图形能力扩展的标准模式。
- pi 的 Go 移植(pig):有人在 X 上分享了一个把 pi 移植成 Go 实现的项目。虽然群里对这类重写项目持怀疑态度,但既然“早就有 rust 重写了”,这些重写项目是否值得使用仍是一个值得验证的问题。
- openEuler 与 SUSE 的 YaST 合作:讨论中提到 openEuler 曾打算移植 YaST,但 SUSE 自己却放弃了——这个合作的后续走向值得关注,因为 openEuler 若想自己维护 YaST,需要考虑其维护成本和长期价值。
观点延伸
今天最值得咀嚼的,不是任何单个 bug 或工具,而是一种正在成型的思维切换:当一条路的天花板压不动时,这个社区的反应越来越不是继续加力,而是换维度。 渲染与重写两条讨论,各给了一个样本。
其一:Emacs 的图形问题,答案可能不在 Emacs 里。 一段用 propertize 拼出的红色波浪下划线(wave),在 Windows 与 Linux 上观感肉眼可见地不同,放大后问题更明显;已有 patch 试图改善,但维护者 Eli 没有接受,群里打趣“把 mac 和 linux 都实现一遍就同意了”。没人展开背后的理由,但从工程角度读,这个门槛的本质是维护契约:合并意味着有人要长期兜住多平台的渲染回归,而疑点被指向的 GDI 这类平台后端,属于“改一处、赌三处”的泥潭。像素级一致性在这种薄封装架构里基本无解——更清醒的做法是承认渲染层不该由 Emacs 负责。Excalidraw 的讨论恰好给出了出口:“把交互从 emacs 接出去,然后把显示接进来”,用动态模块做渲染,Emacs 只当事件循环。这不是脑洞:video.el 已经跑通了同一模式,真正的工程量落在两个约束上——只渲染窗口可见区域,以及同一 buffer 在多窗口下的分 view 渲染。
其二:重写之争的出路,是换掉评判维度。 面对把 pi 移植成 Go 的项目(pig),群里的直觉是“重写给人一种 AI 直接生成的感觉”,反驳也干脆:“如果是用的顶级模型的话,那只考虑性能有没有提升和有没有引入新 bug 才是重写最重要的意义。”后者更站得住:像不像人类手写,不可验证也不可复现;性能与 bug,可度量。但这段讨论还藏着第三个维度——维护归属。“pi 本身还是很坚持古法编程”说明原作者构成了事实标准,重写版若无人认领维护,就只是 fork 噪音。当重写能被批量生成、fork 成本趋近于零,项目之间真正的差异只剩设计判断与长期承诺。
可继续研究/实践:把 Excalidraw 计划压成一次最小验证——用动态模块先渲染一块 canvas,只验收三个硬指标:(1)仅绘制可见区域时,大画布滚动的帧率是否稳定;(2)同一 buffer 分多个窗口 view 渲染时,状态是否一致;(3)按键到画布反馈的往返延迟是否在 60Hz 量级。全过,再谈移植;过不了,也能得到一份“外部渲染适合什么场景”的边界报告——这比直接开工更值钱。
交付说明:以上为完整板块,可直接追加到日报末尾(文件副本在 /tmp/opinion_ext.md)。正文纯 Markdown、无裸 HTML 与尖括号占位符,正文汉字约 830 字,落在 500–1000 区间内。本想用脚本再机器核验一次字数与尖括号,但工具调用轮次已用尽,未跑成——如需,我可下一轮补跑核验。
