Emacs helm grep在当前目录中执行git grep搜索

Emacs helm grep在当前目录中执行git grep搜索,emacs,git-grep,emacs-helm,Emacs,Git Grep,Emacs Helm,helm grep do git grep,前缀为arg grep whole repo,不带 grep仅当前目录 我要倒过来 helm grep do git grep不带前缀arg grep whole repo和 grep仅当前目录 如何定义一个函数来反转它或定义键盘快捷键?这是一个通用的解决方案,适用于任何要反转前缀参数含义的命令(至少适用于将前缀参数解释为布尔值的命令) 如果您只想更换该功能(可能正常,也可能不正常,请参见下文),您可以使用建议: (advice-add 'foo

helm grep do git grep,前缀为arg grep whole repo,不带 grep仅当前目录

我要倒过来

helm grep do git grep不带前缀arg grep whole repo和 grep仅当前目录


如何定义一个函数来反转它或定义键盘快捷键?

这是一个通用的解决方案,适用于任何要反转前缀参数含义的命令(至少适用于将前缀参数解释为布尔值的命令)


如果您只想更换该功能(可能正常,也可能不正常,请参见下文),您可以使用建议:

(advice-add 'foo
            :around
            (lambda (orig &rest args)
              "Reverse sense of prefix arg."
              (let ((arg (car args)))
                (if arg
                    (setq args (cons nil (cdr args)))
                  (setq args (cons '(4) (cdr args))))
                (apply orig args))))
如果该函数只是一个最终用户函数,那么可以使用建议(浏览helm源代码,
helm grep do git grep
可以提供建议)。如果该函数被其他函数使用,则通知可能会导致从属函数行为不当(因为您正在有效地更改建议函数的定义)


旁白:如果您不熟悉Emacs的前缀参数,
nil
用于无前缀,
'(4)
用于单个前缀,
'(16)
用于双前缀,依此类推

(advice-add 'foo
            :around
            (lambda (orig &rest args)
              "Reverse sense of prefix arg."
              (let ((arg (car args)))
                (if arg
                    (setq args (cons nil (cdr args)))
                  (setq args (cons '(4) (cdr args))))
                (apply orig args))))