前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >compile 时只保存项目内的文件

compile 时只保存项目内的文件

作者头像
飞驰的西瓜
发布2022-12-14 18:30:20
3550
发布2022-12-14 18:30:20
举报
文章被收录于专栏:EmacsTalk

Emacs 中有一个非常好用的 compile 模块,可以非常方便的编译代码、运行测试等。不熟悉的读者可以参考: Compiling and running scripts in Emacs - Mastering Emacs[1] 。

有一点比较烦人的是,

每次执行 compile 时,如果有已经修改,但是还未保存的文件,它都会在 minibuffer 中提示。

这样做的初衷是可以理解的,如果修改的文件没有保存,编译会用老的文件。问题是,所有未保存的文件都会提示,这就有些过分了,最好是能控制在项目内,之外的文件就不要再提示了。

幸好,compile 模块提供了一个选项用来控制提示那些文件: compilation-save-buffers-predicate

我定义了如下函数实现上述目的:

代码语言:javascript
复制
(defun my/file-in-project? ()
  "检查当前 buffer 是否属于当前项目,如果当前目录不属于任何项目,直接返回 `nil'"
  (when-let* ((pr (project-current))
              (root (project-root pr)))
    (string-prefix-p root (file-truename (buffer-file-name)))))


(setq compilation-save-buffers-predicate 'my/file-in-project?)

参考

  • • Suppress prompt for save file in emacs with recompile - Super User[2]
引用链接

[1] Compiling and running scripts in Emacs - Mastering Emacs: https://www.masteringemacs.org/article/compiling-running-scripts-emacs [2] Suppress prompt for save file in emacs with recompile - Super User: https://superuser.com/questions/799859/suppress-prompt-for-save-file-in-emacs-with-recompile

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 EmacsTalk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档