gptel-magit(fork)
仓库:GitHub - roife/gptel-magit · GitHub
这是 ragnard/gptel-magit 的维护 fork。原版最主要的功能是根据 staged diff 生成 commit message;上游有一阵子没有更新了,我把一些散落的 PR 合进来,又补了几处自己使用时遇到的问题。
目前除了生成 commit message,还包括:
- 可选 Conventional Commits、Zed、GNU 三种 prompt 风格;
- 生成前可以补一段 rationale,告诉模型“为什么这样改”;
- 流式插入结果;
- 解释当前 diff section,也可以解释整个可见 diff;
- 生成时在 buffer 和 mode line 显示状态;重新生成时只清掉可编辑的提交信息,保留 Magit 的注释部分。
在 Magit 的 commit transient 里,g 是直接生成,r 是先写 rationale 再生成。已经进入 git-commit buffer 后也可以用 M-g / M-r。
(use-package gptel-magit
:vc (:url "https://github.com/roife/gptel-magit")
:hook (magit-mode . gptel-magit-install))
emms-ui
仓库:GitHub - roife/emms-ui: Emacs EMMS album, song list, and now-playing UI · GitHub
我一直在用 EMMS 听本地音乐,但它自带的 browser/playlist 对我来说更像“管理界面”,不太像平时打开音乐播放器时想看到的东西。emms-ui 就是在现有 EMMS 上增加了类 iTunes 的 UI。
常用入口是:
(emms-ui) ; Albums
(emms-ui-list) ; 歌曲列表
(emms-ui-now-playing) ; Now Playing
Albums 和歌曲列表里按 / 可以用 regexp 过滤标题、artist、album、genre 和文件名。键盘和鼠标都能用,不过没有偷偷装全局按键。
要求 EMMS 的 cache、browser、player 已经配好。封面还需要一个能返回 large cover 的 cover backend。
liberime-regexp
一个类似 ace-pinyin, pinyinlib,但是依赖于 liberime。
(use-package liberime-regexp
:vc (:url "https://github.com/roife/liberime-regexp")
:hook (liberime-after-start . liberime-regexp-enable))
;; 如果还想让 Avy 的字符跳转支持 Rime code:
(liberime-regexp-avy-mode 1)
ezf
ezf 的想法有点像 fzf,但筛选界面不在终端里自己画,而是借用已经运行的 Emacs server,以及我平时就在用的 Consult + Vertico。
比如:
printf '%s\n' alpha beta gamma | ezf
git branch --all | ezf --query main
shell 把候选交给 Emacs,选完以后结果再回到 stdout,所以可以继续放在管道或 command substitution 里。现在有 Fish、Bash、Zsh 三套前端,也带了三个 shell widget:Ctrl-T 选文件、Ctrl-R 搜历史、Alt-C 选目录并 cd。