Dans mes emacs, disons, j'utilise un "elisp"
yasnippet pour étendre un bloc lisp en mode org. Mais avant de l'étendre, la société est déclenchée en premier, ce qui me donne un menu comme "1. elisp1, 2. elisp2"
sans option "elisp"
. Maintenant, si j'utilise tab
pour étendre yasnippet, il est toujours ennuyeux de "elisp1"
toujours d'abord s'afficher à l'écran. Je dois donc d' "1"
abord supprimer et faire l'extension de l'extrait de yasnippet.
Donc, comme solution, j'utilise toujours la touche fléchée gauche pour désactiver le menu d'achèvement de l'entreprise en premier, mais le curseur va maintenant se "elis|p"
déplacer, alors j'utilise à nouveau la touche fléchée droite pour déplacer le curseur jusqu'à la fin "elisp|"
et étendre l'extrait de code.
Voici ma question: comment puis-je lier la tab
clé d'abord déclencher yasnippet mais pas la société pour me sauver la vie?
la source
tab
pourcompany
etC-o
pouryasnippet
. Je peux décrire davantage si vous êtes intéressé.tab
. Je ne voudrais donc pas modifier la liaison.C-o
Inutile de faire une diatribe sur la façon dont pourraient développer les abréviations et les extraits de code et les lignes ouvertes, etc. si cela ne vous intéresse pas.Réponses:
C'est ce que j'ai créé pour moi, confronté au même problème. Il s'agit de la page Wiki Emacs en mode entreprise , mais fortement étendue:
Fondamentalement, cela fait <tab>faire la bonne chose la plupart du temps. Appuyez sur l'onglet
Notez que s'il existe une possibilité de saisie semi-automatique et que vous modifiez actuellement un espace réservé d'extrait de code, la situation est ambiguë. En guise de compromis, je devais C-<tab>passer directement à l'espace réservé suivant.
Le fait que le nom de l'extrait n'apparaisse pas dans le menu de l'entreprise et que l'existence d'un extrait modifie silencieusement le comportement de la touche de tabulation n'est pas particulièrement agréable, malheureusement ... Bien qu'il soit au moins possible de taper à la <return>place pour obtenir l'achèvement à la place de l'extrait.
la source
Buffer is read-only: #<buffer *magit: ~/.emacs.d/*>
. Une idée de comment résoudre ce problème?magit-section-toggle
, est en conflit avec la ligne(global-set-key [tab] 'tab-indent-or-complete)
ci-dessus. Une solution rapide et sale serait d'ajouter une vérification au début de la fonctiontab-indent-or-complete
ci-dessus pour voir si nous sommes en mode magit, par exemple pour une variable globale qui est activéemagit-mode-hook
.when
est à peu près unif
+progn
tab-indent-or-complete
cond `((mode dérivé-p 'mode magit) (bascule-section-magit (section-magit-actuelle)))`Voici le code que j'utilise:
aya-open-line
de auto-yasnippet fait plus qu'une simpleopen-line
:open-line
si tout le reste échouela source
C-o
, il suffit de fermer le menu de l'entreprise, j'ai donc besoin d'appuyer deux fois pour étendre yasnippet.C-o
lorsque le menu de la société est actif, le menu est fermé et le fragment de code est développé.