my-multi-purpose-grep
使用 prefix 来控制同一个函数展现不同的行为,可以减少快捷键的分配和记忆压力
(or (thing-at-point 'symbol) (read-string "Component attribute name?"))
如果光标下有 symbol 则使用该 symbol, 否则就要求输入, 可以减少键盘输入
使用了 counsel 提供的函数ounsel-etags-grep, 这个函数是对 ripgrep 和 grep 的调用的封装
(counsel-etags-grep &optional DEFAULT-KEYWORD HINT ROOT SHOW-KEYWORD-P)
default keyword 对应 grep keyword
root 对应需要搜索的目录
my-multi-purpose-grep 的多个分支中都是在 根目录下进行搜索,耗时比较长
narrow-to-region-indirect-buffer-maybe
涉及新概念Indirect Buffers
简单来说 Indirect Buffer 显示的是别的 buffer(可能是多个 buffer) 的部分或全部内容;对 Indirect Buffer 的修改保存会在对应的Buffer生效; 删除 Indirect Buffer 不会对其它buffer产生影响
这个函数在接下来的 my-narrow-or-widen-dwim 进了了调用
my-narrow-or-widen-dwim
这个命令提供了自动根据多种情况进行智能 narrow 或 widen 的功能,很强大,并且 narrow 是编程和日常的常用命令,价值很高
对应 org-mode 的实现也比较有趣, 利用 cond 的条件判断和 Ignore-errors 简洁地实现了成功则停止,失败继续的机制
(cond
((ignore-errors (org-edit-src-code)) t)
((ignore-errors (org-narrow-to-block) t))
((ignore-errors (org-narrow-to-element) t))
(t (org-narrow-to-subtree)))
my-save-current-buffer
将一些暂时性的 buffer 内容做持久化, 比如 dired , grep ; 可以保存 buffer 内容多次加载使用
适用于那些需要很长时间进行生成, 并且要在长时间内多次使用的 buffer
Misc
cliphist 系统级的剪切板管理支持
shellcop 为 emacs 中的shell 提供了一些加强,比如 reset 或 erase 整个 buffer, 搜索, 文件路径跳转
tramp 提供远程编程功能, 个人感觉不如 ssh 连上再运行 emacs
uniquify 为特殊的 buffer 提供特别的名字
hippie 提供补全, 不清楚和 company 的区别和优劣
eacl 行和多行补全,用得上的时候还是很快的