【问题标题】:helm-grep-do-git-grep searches in the current directoryhelm-grep-do-git-grep 在当前目录中搜索
【发布时间】:2016-10-02 03:51:36
【问题描述】:

helm-grep-do-git-grep 带有前缀 arg grep 整个 repo 并且没有 grep 仅当前目录。

我想倒过来

helm-grep-do-git-grep 没有前缀 arg grep 整个 repo 和 grep 仅当前目录。

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

【问题讨论】:

    标签: emacs git-grep emacs-helm


    【解决方案1】:

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

    (defun foo (&optional arg)
      "Do something.  Do something else with prefix ARG."
      (interactive "P")
      (if arg
          (message "something else")
        (message "something")))
    
    (defun anti-foo (&optional arg)
      "Like `foo', but with opposite behavior w.r.t. ARG."
      (interactive "P")
      (if arg
          (foo nil)
        (foo '(4))))
    

    如果你只是想替换功能(可能会也可能不会,见下文),你可以使用advice:

    (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) 用于双前缀,依此类推。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2022-07-21
      • 1970-01-01
      相关资源
      最近更新 更多