Em um grande projeto C ++, uso o dabberv-expand (também conhecido como M- /). Rtags, ctags, csope etc não funcionam por diferentes razões. Infelizmente, não sei como aplicar o dabbrev para usar uma pesquisa difusa. Então eu decidi usar a hera. O código a seguir faz quase tudo o que eu quero:
(defun ivy-complete ()
(interactive)
(dabbrev--reset-global-variables)
(let* ((abbrev (dabbrev--abbrev-at-point))
(candidates (dabbrev--find-all-expansions abbrev t)))
(when (not (null candidates))
(let* ((found-match (ivy-read "matches " candidates
:preselect (thing-at-point 'word)
:sort t))
(abbrev-length (length abbrev)))
(insert (substring found-match abbrev-length))))))
Uma coisa está faltando. A conclusão mostra os candidatos no minibuffer. Eu quero que eles sejam exibidos em uma janela pop-up perto do ponto de entrada. Tentei usar ivy-display-function-popup e ivy-display-function-overlay, mas falhei.
Perguntas: como mostrar os candidatos em uma janela pop-up ou sobreposta? Pode ser possível usar a hera como back-end para algum outro pacote como a empresa?