如何在Emacs中展示项目所有文件的全部TODO事项?
实现Emacs一键查询项目所有TODO事项
方案1:Projectile + Ripgrep(推荐)
Projectile是Emacs主流项目管理工具,搭配Ripgrep(快速文本搜索工具)可以一键完成项目内TODO搜索:
- 先确保系统安装了
ripgrep,Emacs中安装projectile包。 - 添加自定义函数,自动在当前项目根目录搜索TODO类关键词:
(defun my-search-project-todos () (interactive) ;; 可自行添加更多关键词,比如 NOTE、HACK (projectile-ripgrep "TODO\\|FIXME\\|BUG" (projectile-project-root)))
- 绑定到你常用的按键,比如F5:
(global-set-key (kbd "<f5>") 'my-search-project-todos)
按下按键后,搜索结果会直接在*ripgrep*缓冲区展示,按Enter可跳转到对应文件的TODO位置。
方案2:Counsel + Ripgrep(适合Ivy用户)
如果你用Ivy/Counsel套件,可用counsel-rg实现带交互选择的搜索:
(defun my-counsel-project-todos () (interactive) (counsel-rg "TODO\\|FIXME" (projectile-project-root)))
绑定按键后,按下会弹出Ivy候选框,选中匹配项即可跳转,支持模糊搜索过滤结果。
方案3:增强hl-todo的跨文件搜索
针对你已经在用的hl-todo,可以包装它的hl-todo-occur函数,自动使用项目根路径:
(defun my-hl-todo-project-occur () (interactive) (hl-todo-occur (projectile-project-root)))
绑定按键后,直接调用就能跳过路径选择步骤,自动搜索当前项目下的所有TODO。
补充说明
- Projectile默认会识别Git/Mercurial等版本控制项目的根目录,非版本控制项目可在根目录创建空的
.projectile文件标记。 - 可根据需求修改搜索正则,比如添加
\\|NOTE\\|HACK来包含更多类型的注释标记。
内容的提问来源于stack exchange,提问作者Refael Sheinker
相关产品推荐
相关产品推荐

