Je souhaite souvent accéder à une nouvelle ligne pendant que la suggestion de mode entreprise s'affiche. Comment configurer le mode entreprise pour que seule la touche de tabulation déclenche une exécution?
13
Je souhaite souvent accéder à une nouvelle ligne pendant que la suggestion de mode entreprise s'affiche. Comment configurer le mode entreprise pour que seule la touche de tabulation déclenche une exécution?
Ceci est défini dans company-active-map
. Vous pouvez dissocier la clé de retour dans cette carte:
(define-key company-active-map (kbd "<return>") nil)
Notez cependant que retour et tabulation font des choses différentes lorsqu'il y a plusieurs candidats. Tab est lié à company-complete-common
, tandis que return est lié à company-complete-selection
. Si vous dissociez la touche de retour, vous ne pourrez pas utiliser M-n
et M-p
choisir un achèvement dans la liste.
Vous pouvez choisir une autre clé à utiliser company-complete-selection
, par exemple:
(with-eval-after-load 'company
(define-key company-active-map (kbd "<return>") nil)
(define-key company-active-map (kbd "RET") nil)
(define-key company-active-map (kbd "C-SPC") #'company-complete-selection))
Ma configuration complète pour corriger ce comportement par défaut ennuyeux est la suivante:
( lien vers la configuration actuelle, qui a été encore améliorée mais qui est assez compliquée à ce stade)
(mis à jour selon cette question )
la source
(define-key company-active-map (kbd "C-RET") #'company-complete-selection)
mais cela n'a pas fonctionné. Savez-vous si cela serait possible et comment y parvenir?TAB
pour sélectionner le premier élément de la liste sans avoir à «interagir». Mais pour répondre à votre question, je parie que votre terminal ne peut pas envoyerC-RET
(le mien ne peut pas). Essayez deC-h k C-RET
voir si Emacs reçoit réellement le signalC-RET
au lieu de justeRET
.(define-key company-active-map (kbd "TAB") #'company-complete-common-or-cycle)
mais cela ressemble à votre droit, quand je suis passé à autre chose que C-RET, j'ai le comportement souhaité. Merci.M-p
etM-n
, ou les rechercher avecC-s
, ou sélectionner directement un candidat avecM-1
parM-0
(les numéros sont affichés si vous définissezcompany-show-numbers
).Je viens de voir cela en cherchant une solution au même problème (bien que les clés ennuyeuses pour moi l'étaient
SPC
et.
).Je trouve que lier les clés incriminées
nil
comme proposé par @glucas et @Radon Rosborough n'est pas une bonne expérience utilisateur, car vous devez alors annuler manuellement la liste déroulante de la société, ce qui perturbe la saisie rapide.Autrement dit, si la société devient active et que vous tapez une clé liée à
nil
rien , cela se produira. Ce n'est pas ce à quoi vous vous attendez lorsque vous tapez un caractère. Vous vous attendriez à ce que le caractère soit inséré.Au contraire, il est beaucoup plus pratique d’appeler automatiquement emacs
company-abort
, puis d’ insérer le caractère tapé pour vous. Voici ma solution:Je pense que vous pouvez facilement étendre cela à
RET
en appelant à la(newline)
place de(insert-char)
, (même si je n'ai pas essayé cela parce que j'utiliseRET
pour sélectionner).En fait, j'utilise
use-package
donc c'est ce que j'ai dans mon init:la source