本文列出了编写 Elisp 时常见的错误及其解决方案,包括 cl-defstruct 的 copy-* 函数不支持关键字参数、字符串直接使用 aref 索引、旧版 Emacs 中缺少 string<= 函数等。建议在编写代码前检查这些问题,以避免运行时错误,并强调数学公式测试期望值应从参考实现提取,以避免心算错误。
本文介绍了 Elisp 中局部函数的三种写法:cl-flet、cl-labels 和 cl-letf。cl-flet 用于定义局部辅助函数,cl-labels 支持递归,cl-letf 用于临时覆盖全局函数。旧的 flet 已被废弃,因其在词法作用域下行为不可预测。选择合适的宏需根据具体需求。
Emacs 31 新增了 elisp-fontify-semantically 选项,实现语义高亮,区别于传统的语法高亮。此功能通过分析代码结构,使用不同颜色显示函数名和局部变量。可通过设置 (setopt elisp-fontify-semantically t) 开启,并支持鼠标悬停显示文档字符串。此功能在 Emacs 30 中不可用,用户可尝试 MELPA 的 lisp-semantic-hl 包。
Emacs 28 引入了 context-menu-mode,允许用户通过右键菜单进行 Elisp 开发,简化调试过程。内置菜单根据光标位置提供不同操作,用户可自定义菜单项。Anju 包增强了右键菜单功能,支持 Edebug 调试命令,提升开发效率。
本文总结了六种适用于 Elisp 编程的模式,包括使用 make-process 处理异步进程输出、利用 hash table 进行数据查找、使用 rx 宏编写正则、管理 timer 生命周期、检测 TRAMP 远程主机,以及通过 custom attributes 扩展功能。这些模式在编程中具有广泛的应用价值。
本文介绍了作者使用纯 Emacs Lisp 构建零依赖的 Org 静态站点生成器(ossg)的过程。项目利用 Emacs 内置的 org-export 功能,强调不依赖外部工具。作者从字符串模板出发,逐步改进为使用 Lisp 闭包控制输出,解决了模板扩展性差的问题。通过两遍编译器实现跨路由链接,优化性能,并引入增量热重建机制,显著提高构建速度。
本文总结了Elisp性能优化的六个实战教训,包括:只解析所需数据、避免使用find-file-noselect进行批量操作、用cl-progv隔离全局状态、让数据形状决定行为、先进行性能分析再优化,以及用哈希表替代线性扫描。这些技巧能显著提升处理大量文件的效率,适用于Emacs用户。
SEM Assistant 是一个自托管的 Elisp 守护进程,旨在通过手机快速捕获信息并自动处理。它利用 LLM 进行文本处理,Elisp 代码控制整个流程,确保可预测性和安全性。用户可以通过 WebDAV 发送任务和链接,LLM 负责归一化和规划任务,生成笔记。系统定期将数据同步到 Git 仓库,确保信息安全和可追溯性。
dmsg.el 是一个用于 Elisp 的调试日志系统,解决了 *Messages* 缓冲区混乱、缺乏调用栈和日志级别的问题。它提供带时间戳和日志级别的日志记录,支持交互式浏览和过滤。用户可以通过简单的宏记录日志,自动捕获调用栈,并导出日志,同时可以拦截现有代码的消息和错误,方便调试。
这篇文章介绍了如何使用 Emacs 自动生成每周链接推荐。通过 org-capture 收集链接,利用 elisp 脚本生成博文,并通过 GitHub Actions 定时发布。整个过程分为收集、生成和发布三步,用户只需在浏览器中保存文章链接,其他操作均可自动完成。
为了简化在借助Github Pages建立的博客写博客的过程,我尝试使用elisp编写脚本来减少重复性的工作
emacs是利用elisp写成的,而elisp是lisp的一个方言。lisp语言是出名的优美和晦涩,当然,更出名的是括号。。。 emacs利用elisp作为上层抽象。首先,emacs提供了基本的编辑器框架,包括文件操作函数API,buffer,frame,windows的API。而后,emacs附带了很多函数实现,并且和按键一一绑定。例如Ctrl+N(简写为C-N)就被绑定到“换到下一行”这...
完成下面两步后,将自动完成登录并继续当前操作。