Spacemacs下counsel搜索系列不工作

求助各位大佬。

我用的是Spacemacs的develop分支,但我的 counsel-ag counsel-git-grep一直都不正常。情况是这样的:

打开Emacs后,第一次用这些功能没有任何问题,敲了第三个字母后立刻会出结果。但第一次用后半分钟之内,这些搜索就再也不会工作了。 具体表现是,你敲了关键词后,什么都不会发生,一切处于静止状态。CPU也完全不会工作,0%占用。

我在网上搜了很多次,没有看见类似的情况。有人说是工程太大搜索本身就慢,但我的情况不是。50行的工程也完全不搜。并且,每次重启Emacs第一次用都在前10s内不会有问题,大工程也立刻会有搜索结果,但就是只能维持30s不到。

我试图去看代码,但Elisp水平太差,无法找到原因。只有一个猜想,counsel搜索是异步的,会不会这中间发生死锁,导致后来再也不工作了。

在此求助各位大佬指点,如何能够定位问题,感谢!

系统:Ubuntu 16.04 Emacs:26.1和27.0.50都是一样的问题 Spacemacs:develop分支

1 个赞

换个别的分支呢?

我现在网络不太好,暂时不方便试。

counsel ag 不如helm-ag好用,建议使用 helm-ag,问题会少很多, helm-ag可以使用rg做为后端,曾经执着于remove helm,只使用ivy,但是helm-ag还是丢不掉。

2 个赞

的确 紫薯布丁

查看下对应设的counsel-ag, counsel-rg的bash命令 是不是在terminal下工作正常。我是自己都在config里重新设了下。因为作者用的是Linux,而mac 和 win下fork过来的ag, rg这些命令格式/语法稍有不同的(参数不一样,甚至少些参数功能)。总知,你用哪个counsel搜索命令有问题(有好多个-ag, -pt, -rg, -ack啥的),就去测试它对应设的命令termianl下能不能工作。

比如参考我修改的,Mac下能用的:(*is-mac*是我判断是不是mac os)

  (setq counsel-grep-base-command
        "rg -i -M 120 --no-heading --line-number --color never '%s' %s"
        counsel-git-cmd "rg --files"
        counsel-rg-base-command
        "rg -i -M 120 --no-heading --line-number --color never %s .")
        ;; counsel-rg-base-command
        ;; "rg -zS --no-heading --line-number --color never %s ."
        ;; counsel-ag-base-command "ag -zS --nocolor --nogroup %s"
        ;; counsel-pt-base-command "pt -zS --nocolor --nogroup -e %s"
  ;; fix the bug for ivy-occur in OSX
  (when *is-mac*
    (setq counsel-find-file-occur-cmd
          "gls -a | grep -i -E '%s' | tr '\\n' '\\0' | xargs -0 gls -d --group-directories-first"))
  )

感谢建议。不过我的 counsel-ag-base-command 在Ubuntu下没有问题,非常快。另外,我在OP里提到了,打开Emacs后第一次搜索一点儿问题也没有,不工作是30s之内被触发的。同样的问题在 counsel-git-grep 也是,而对应的命令我以前也试过。所以我这儿的问题不是出在本身的搜索命令本身。

我现在 helm layer直接不工作 :joy: ,手动安装 helm-ag 也不行,哪天有时间折腾一下山人的配置吧。

终于找到原因了。pyenv配上zsh会导致counsel系列的搜索hang住(刚刚验证了v1.2.15最新release依旧存在),具体原因不详,我已经想了办法绕过这个问题了。

1 个赞