É possível iniciar a conclusão da empresa sem um prefixo?

8

O preenchimento automático é particularmente útil ao escrever CSS, para ver as opções disponíveis para uma determinada propriedade. A empresa fornece company-minimum-prefix-lengthpara controlar quantos caracteres eu tenho que digitar antes de começar a oferecer opções.

No entanto, eu quero a conclusão sem nenhum caractere, então recebo o seguinte:

conclusão do modo empresa de css

Atualmente, eu só posso conseguir isso:

  1. Chamada explicitamente M-x company-complete
  2. Configuração (setq company-minimum-prefix-length 0), digitando um único caractere e backspace, por exemplo a DEL.

Isso é possível? Idealmente, eu seria capaz de fazê-lo para as propriedades e seus valores.

Wilfred Hughes
fonte
O problema, porém, é que a conclusão estaria sempre ativa. Seria ativado para propriedades e seletores pelo menos. Existem tantas propriedades que a conclusão sem prefixo não seria muito útil e ocuparia apenas o espaço na tela. Então, você deseja propriedades de conclusão sensíveis ao contexto?
PythonNut
Sim, suponho que seja contextual: pensei em aconselhar o comando self-insert para acionar a conclusão no espaço, mas isso só ajuda nos valores. Embora eu ache que a conclusão sem prefixo é útil, mesmo para propriedades. (Aprendo mais CSS e o menu suspenso mostra mais de 10 com uma barra de rolagem).
Wilfred Hughes
"digitando um único caractere e backspace" Por que isso? Com company-minimum-prefix-lengthdefinido como 0, você já verá o pop-up de conclusão após digitar o espaço. Não depois de pressionar return, no entanto.
Dmitry
@ Dmitry Eu não estou vendo esse comportamento. Qual versão da empresa você está usando?
Wilfred Hughes
@WilfredHughes master.
Dmitry

Respostas:

5

Eu uso o TAB para acionar o modo da empresa sob demanda em casos como esse - funciona bem no seu exemplo de CSS. Eu também uso TAB para recuar ( tab-always-indentdefinido como complete). Você pode integrar a empresa ao interno indent-for-tab-commandusando a configuração descrita aqui: https://github.com/company-mode/company-mode/issues/94#issuecomment-40884387

Aqui está o código relevante do comentário no 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
fonte
3

Nas versões recentes de company, este é o caminho a seguir:

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