¿Es posible comenzar la finalización de la empresa sin un prefijo?

8

El autocompletado es particularmente útil al escribir CSS, para ver las opciones disponibles para una propiedad determinada. La compañía proporciona company-minimum-prefix-lengthcontrolar cuántos caracteres tengo que escribir antes de comenzar a ofrecer opciones.

Sin embargo, quiero completar sin ningún carácter, así que obtengo esto:

modo de empresa finalización de css

Actualmente, solo puedo obtener esto:

  1. Llamando explícitamente M-x company-complete
  2. Configuración (setq company-minimum-prefix-length 0), escribir un solo carácter y retroceso, por ejemplo a DEL.

es posible? Lo ideal sería poder hacerlo tanto para las propiedades como para sus valores.

Wilfred Hughes
fuente
Sin embargo, el problema es que la finalización siempre estaría activada. Estaría activado para propiedades y selectores al menos. Hay tantas propiedades, que la finalización sin un prefijo no sería muy útil, y solo ocuparía espacio en la pantalla. Entonces, ¿desea propiedades de finalización sensibles al contexto?
PythonNut
Sí, supongo que es contextual: pensé en recomendar el comando de autoinserción para activar la finalización en el espacio, pero eso solo ayuda para los valores. Aunque creo que la finalización sin prefijo es útil, incluso para las propiedades. (Aprendo más CSS y el menú desplegable muestra más de 10 con una barra de desplazamiento).
Wilfred Hughes
"escribiendo un solo carácter y retroceso" ¿Por qué esto? Con el company-minimum-prefix-lengthconjunto en 0, ya verá la ventana emergente de finalización después de escribir espacio. Sin embargo, no después de presionar volver.
Dmitry
@Dmitry, no veo ese comportamiento. ¿Qué versión de empresa estás usando?
Wilfred Hughes
@WilfredHughes maestro.
Dmitry

Respuestas:

5

Utilizo TAB para activar el modo de empresa a pedido en casos como ese: funciona bien en su ejemplo de CSS. También uso TAB para sangrar ( tab-always-indentestablecido en complete). Puede integrar la empresa con el incorporado indent-for-tab-commandutilizando la configuración descrita aquí: https://github.com/company-mode/company-mode/issues/94#issuecomment-40884387

Aquí está el código relevante del comentario de github vinculado:

(define-key company-mode-map [remap indent-for-tab-command]
  'company-indent-for-tab-command)

(setq tab-always-indent 'complete)

(defvar completion-at-point-functions-saved nil)

(defun company-indent-for-tab-command (&optional arg)
  (interactive "P")
  (let ((completion-at-point-functions-saved completion-at-point-functions)
        (completion-at-point-functions '(company-complete-common-wrapper)))
    (indent-for-tab-command arg)))

(defun company-complete-common-wrapper ()
  (let ((completion-at-point-functions completion-at-point-functions-saved))
    (company-complete-common)))
glucas
fuente
3

A partir de versiones recientes de company, este es el camino a seguir:

(define-key company-mode-map [remap indent-for-tab-command] #'company-indent-or-complete-common)
Alexander Shukaev
fuente