Preparar:
Versión GUI GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) de 2015-07-25 en KAEL
, utilizando la última versión de MELPA
Windows 7 x64 bit.
Situación:
Por ejemplo, estoy escribiendo en el buffer foobarsentence.
Y luego comience una nueva línea debajo de eso, y escribiendo fooba, esperaba que me foobarsentence
sugirieran desde la ventana emergente de finalización de la Compañía. Pero allí no está foobarsentence
.
Lo encontré hacia fuera de otra respuesta que podría utilizar sociedad-dabbrev`` para que, unidos, M-/. Pero no pude entender cómo podría 'alimentar' las sugerencias desde company-dabbrev
la ventana emergente. Hice un gif de screencast para aclarar mi pregunta.
Como puedes ver, M-/llamadas company-dabbrev
. Pero me gustaría ver eso sugerido en la ventana emergente de finalización de la empresa. Me sorprendió que esto no sea por defecto.
¿Alguna sugerencia para 'alimentar' las sugerencias desde la company-dabbrev
ventana emergente de la empresa?
fuente
Respuestas:
Así es como funciona la finalización en la empresa (estoy simplificando un poco una descripción más detallada se puede encontrar en la documentación de
company-backends
C-hvcompany-backends
RET.Usted tiene una lista de backends (motores de finalización) que la empresa debería intentar proporcionarle en el momento. La compañía intenta cada uno de estos backend uno tras otro y el primero que devuelve cualquier candidato se usa para completar y el resto de los backends se ignoran. Entonces, de manera predeterminada, solo se usa un back-end a la vez.
En su caso (parece que está en modo emacs-lisp), el backend de emacs-lisp está devolviendo candidatos para su finalización y, por
company-dabbrev
lo tanto, nunca es utilizado por la empresa para la finalización y nunca sefoobarsentence
completa. Por lo tanto, es posible que desee cambiar los backends de la compañía para que eso ocurracompany-dabbrev
antescompany-elisp
(ocompany-capf
en emacsen reciente). Pero supongo que eso no es lo que desea, ya que revertiría la situación actual y no obtendrá terminaciones del backend de emacs-lisp (en cuyo caso siga leyendo).La compañía proporciona una forma de combinar terminaciones de múltiples fuentes usando lo que llama
grouped
backends. Por lo general, los miembroscompany-backends
son backends individuales, pero también puede ser una lista de backends, en cuyo caso la finalización de los backends se fusiona siempre que se devuelvaprefix
o el texto que se completará (consulte la documentacióncompany-backends
para obtener una descripción detallada).Entonces, si desea fusionar las terminaciones de
company-elisp
(en emacsen recientecompany-capf
se usa) ycompany-dabbrev
simplemente haga estoAdemás, puede combinar diferentes backends con la
:with
palabra claveEsto es diferente del ejemplo sin una lista de backends
:with
ya que la compañía usará solo los backends antes:with
para determinar elprefix
(el texto que se completará). Esto implica que los candidatos de backends posteriores:with
serán ignorados por la compañía, independientemente de si los backends devuelven aprefix
o no, si ninguno de los backends antes:with
devuelve aprefix
.Es posible que desee configurar esto localmente en el búfer emacs-lisp (prefiero hacerlo)
fuente
:with