You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Emacs函数bookmark-config-files为指定目录匹配的.el文件批量创建书签

实现代码
(defun bookmark-config-files ()
  "为`user-emacs-directory'/els/下所有匹配asdasd-*.el的文件批量创建书签"
  (interactive)
  (let* ((target-dir (expand-file-name "els/" user-emacs-directory))
         (config-files (directory-files target-dir t "^asdasd-.*\\.el$")))
    (dolist (file config-files)
      (let* ((bookmark-name (file-name-nondirectory file))
             ;; 手动构造标准文件书签结构,无需打开目标文件
             (bookmark-record `((filename . ,file)
                                (name . ,bookmark-name)
                                (position . 1)))) ;; 默认跳转至文件开头
        ;; 写入全局书签列表,第三个参数设为t可覆盖同名书签
        (bookmark-store bookmark-name bookmark-record nil)))
    ;; 持久化保存书签到磁盘,重启Emacs后依然可用
    (bookmark-save))
说明
  • 无需打开目标文件即可完成创建,执行效率远高于读写文件缓存的方案
  • 路径基于user-emacs-directory拼接为绝对路径,不会受当前工作目录变化影响
  • 生成的书签名为对应.el文件的文件名,若需要自定义跳转位置,修改position字段的取值即可
之前实现的问题
  • 第一次尝试:bookmark-make-record默认生成当前buffer的书签记录,仅修改文件名属性也没有调用存储接口写入全局书签列表,修改不生效
  • 第二次尝试:生成了目标文件的书签记录但同样没有执行存储逻辑,且打开文件的操作属于冗余开销,无必要执行

内容的提问来源于stack exchange,提问作者Commander Asdasd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:54:06