Возвышенный текст 2 «Goto Anything» (или мгновенный поиск) для Emacs?
Я попробовалВозвышенный текст 2 недавно, и я нашелGoto Anything очень полезно для навигации по исходному коду (Ctrl-P файл @ символ кажется, работает очень хорошо). Есть ли что-то похожее на Emacs? Желательно что-то, что просто работает, без тонны кастомных элисп.
Что я'Я пробовал до сих пор: я
виделШлем а такжеЧто-нибудь,но, насколько я понимаю, ни один из них не способен на актуальное "мгновенный" поиск (см. правку ниже) .I '
мы использовали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 's Goto Anything (то есть, это неТ понять "символы» в исходном коде, как Goto Anything).
РЕДАКТИРОВАТЬ № 2: Сейчас я'Получил большую часть Goto Anything, благодаряevent_jr»ответ ниже (и, конечно, благодаря Хельмус создателем,Тьерри Вольпятто). Я рекомендую это от всей души всем, кто ищет подобную функцию. Ниже элисп ям в настоящее время использует:
;; 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)