怎么在调用consult-ripgrep的时候自动获取光标下的symbol

每次调用consult-ripgrep 的时候还要输入一下要查找的东西。 我想每次调用consult-ripgrep的时候,自动把光标下面的symbol传到consult-ripgrep里面去

M-n 会自动获取光标位置的symbol

2 个赞

参考 .emacs.d/package_extra.el at ac552c1bd4bd2763a8dfbaa9e80b1461b3b0845d · lynnux/.emacs.d · GitHub ,这个是参考 Centaur Emacs写的

M-n 默认是没有绑定任何函数的,你得说出它绑定的是什么函数。

我自己写了个不太成熟的方案

  (defun consult-line-at-point ()
    (interactive)
    (consult-line (format "%s" (symbol-at-point)))
    )
  (defun consult-ripgrep-at-point ()
    (interactive)
    (consult-ripgrep (projectile-project-root) (format "%s" (symbol-at-point)))
    )

但是我想做成那种 调用的时候会默认给个virtual text 按回车才真的搜索

参考这个回答:关于 emacs 的奇思妙想 - #3,来自 kinono

image

之前我也有类似的需求,就参考别人的写了个方案:

这个就是我想达到的效果啊

原来你说的是在 minibuffer 中按 M-n 执行next-history-element 函数,那确实是不错功能。

完全可以实现题主需要的功能。只是要多按一下按键,挺好用的 :smile:

我的就是这个效果,你可以试试

抱歉,我下次注意。 :grinning:

好的好的,感谢🙏

Fine-tuning of individual commands

  (consult-customize consult-ripgrep
                     :initial (consult--async-split-initial (thing-at-point 'symbol)))

删除我写了个函数:

      "s-<backspace>" (defun delete-line-before-point ()
                        (interactive)
                        (let ((prev-pos (point)))
                          (forward-visible-line 0)
                          (delete-region (point) prev-pos)
                          (indent-according-to-mode)))