In einem großen C ++ - Projekt verwende ich dabberv-expand (auch bekannt als M- /). Rtags, ctags, csope usw. funktionieren aus verschiedenen Gründen nicht. Leider weiß ich nicht, wie ich Dabbrev erzwingen soll, um eine Fuzzy-Suche zu verwenden. Also habe ich mich für Efeu entschieden. Der folgende Code macht fast alles, was ich will:
(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))))))
Eines fehlt. Die Vervollständigung zeigt die Kandidaten im Minibuffer. Ich möchte, dass sie in einem Popup-Fenster in der Nähe des Einstiegspunkts angezeigt werden. Ich habe versucht, Ivy-Display-Funktion-Popup und Ivy-Display-Funktion-Overlay zu verwenden, aber es ist fehlgeschlagen.
Fragen: Wie werden die Kandidaten in einem Popup- oder Overlay-Fenster angezeigt? Vielleicht ist es möglich, Efeu als Backend für ein anderes Paket wie Unternehmen zu verwenden?