Возвышенный текст 2 «Goto Anything» (или мгновенный поиск) для Emacs?

Я попробовалВозвышенный текст 2 недавно, и я нашелGoto Anything очень полезно для навигации по исходному коду (Ctrl-P файл @ символ кажется, работает очень хорошо). Есть ли что-то похожее на Emacs? Желательно что-то, что просто работает, без тонны кастомных элисп.

Что я пробовал до сих пор:

я виделШлем а такжеЧто-нибудь, но, насколько я понимаю, ни один из них не способен на настоящий «мгновенный» поиск (см. правку ниже).

Я использовалmulti-occur-in-matching-buffersНо, похоже, он также не может удовлетворить критерий «мгновенного действия».

imenu / idomenu хорошо работает для отдельных файлов, но не работает для всех файлов.

В настоящее время я использую № 2 и № 3 вместе, как плохую замену Goto Anything.

Если бы не точный клон Goto Anything, то я мог бы обойтись с наивным решением мгновенного поиска (которое ищет данную строку во всех открытых буферах и отображает результаты динамически). Так что это тоже приемлемо.

Я использую Emacs 24.2, так что любой elisp только для v24 тоже подойдет.

РЕДАКТИРОВАТЬ: Я дал Хелму еще один шанспредложение event_jrи я обнаружил, что этоделает поддержка мгновенного поиска по всем открытым буферам.helm-multi-occur + helm-follow-mode подходит на удивление близко к удовлетворению моих потребностей, единственными незначительными проблемами являются (рискуя казаться придирчивыми):

Я не нашел способ включитьhelm-follow-mode автоматически когда я бегуhelm-multi-occur, Я должен вызвать его вручную сC-c C-f, Кто-нибудь хочет сделать снимок с помощью фрагмента elisp? (см. правку № 2 ниже)

он не «интеллектуален», как ST2 Goto Anything (то есть он не понимает «символы» в исходном коде, как это делает Goto Anything).

РЕДАКТИРОВАТЬ № 2: Теперь у меня есть большая часть Goto Anything, благодаряEvent_jr ответ ниже (и, конечно же, благодаря создателю Хелма,Тьерри Вольпятто). Я рекомендую это от всей души всем, кто ищет подобную функцию. Ниже приведен elisp, который я сейчас использую:

;; instant recursive grep on a directory with helm
(defun instant-rgrep-using-helm ()
  "Recursive grep in a directory."
  (interactive)
  (let ((helm-after-initialize-hook #'helm-follow-mode))
    (helm-do-grep)))


;; instant search across all buffers with helm
(defun instant-search-using-helm ()
  "Multi-occur in all buffers backed by files."
  (interactive)
  (let ((helm-after-initialize-hook #'helm-follow-mode))
    (helm-multi-occur
     (delq nil
           (mapcar (lambda (b)
                     (when (buffer-file-name b) (buffer-name b)))
                   (buffer-list))))))

;; set keybindings
(global-set-key (kbd "C-M-s") 'instant-search-using-helm)
(global-set-key (kbd "C-M-S-s") 'helm-resume)
(global-set-key (kbd "C-M-g") 'instant-rgrep-using-helm)

Ответы на вопрос(5)

Ваш ответ на вопрос