Qt prend en charge les raccourcis clavier de type Emacs , mais pour seulement jusqu'à quatre clés. Pour expliquer pourquoi cette limite devrait être augmentée, il serait utile de montrer des exemples de raccourcis clavier de type Emacs avec encore plus de clés que cela. Existe-t-il des exemples connus ou peut-être même un moyen de trouver par programme de longues séquences de touches définies dans les keymaps Emacs?
edit: Je pensais que c'était une connaissance commune, mais une séquence de touches est un ensemble de clés lu par read-key-sequence
. Essayez F1 k
pour votre candidat et voyez s'il décrit votre commande ou une autre sans rapport la précédant.
key-bindings
keymap
wasamasa
la source
la source
C-u 1 0 0 0 C-n
qui est six touches.F1 k C-u 1 0 0 0 C-n
et voyez qu'ilC-u
s'agit d'une séquence de touches en soi.Réponses:
J'ai testé avec le script suivant,
Et le plus longtemps que j'obtiens avec mon
.emacs.d
estC-x c C-x r i
qui est une commande de barre, et avecemacs -q
j'obtiensC-x a i l
qui exécute la commandeinverse-add-mode-abbrev
.la source
C-x M-c M-b u t t e r f l y
:) J'avais oublié que j'avais fait ça ...where-is-internal
domine de loin le temps CPU ici, mais vous pouvez toujours raser facilement quelques cycles en ajoutant de manière destructive la liste la plus courte à la plus longue via(setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs))
.M-x butterfly
? Je viens de le lier à cette commande pour une authenticité accrue :)Je ne peux pas vous dire ce qui pourrait être le plus long quelque part, mais voici un peu d'informations qui pourraient vous aider.
J'ai quelques bibliothèques qui fournissent un ensemble de commandes liées liées aux clés dans une table de clés que je lie à une clé de préfixe.
Parce que je ne veux pas coopter les clés utilisateur, etc., je lie généralement une telle clé de préfixe sous, disons
C-x
ou, pour lesother-window
commandes, sousC-x 4
(keymapctl-x-4-map
).Les mêmes considérations s'appliquent aux groupes de commandes dans un tel clavier: ils obtiennent parfois leur propre clavier. Et ainsi de suite, récursivement.
Je m'attends à ce qu'au moins certains utilisateurs puissent vouloir lier de tels keymaps (à n'importe quel niveau) à leurs propres clés de préfixe plus courtes, ou ils pourraient vouloir lier des commandes spécifiques à des séquences de touches plus courtes. Mais je ne veux pas faire ça dans la bibliothèque elle-même, évidemment.
Voici un exemple d'une telle touche assez longue:
C-x 4 j t . % *
(sept frappes), qui est liée à la commandeicicle-bookmark-file-this-dir-all-tags-regexp-other-window
dans Bookmark + .Anatomie:
Sur la
C-x 4
touche préfixe (ctl-x-4-map
).Sur la
j
clé de préfixe, qui correspond à toutes les commandes permettant de passer à un signet .Sur la
t
clé de préfixe, qui concerne toutes les commandes permettant de passer aux signets qui sont balisés d'une manière ou d'une autre.Sur la
.
clé de préfixe, qui concerne toutes les commandes de saut vers les signets qui concernent les fichiers du répertoire actuel qui sont étiquetés d'une manière ou d'une autre.Sur la
%
touche préfixe, qui est pour toutes les commandes pour sauter aux favoris qui sont des choses dans le répertoire courant qui ont des balises qui correspondent à une expression rationnelle , vous êtes invité à saisir.Sur la
*
clé, qui est pour toutes les commandes pour sauter aux favoris qui sont des choses dans le répertoire courant qui ont des balises , ALL qui correspondent à une expression rationnelle , vous êtes invité à saisir. (En revanche,C-x 4 j t . % +
concerne les signets dont CERTAINES balises correspondent à l'expression rationnelle.)Tout cela est conventionnel dans Bookmark + (et certains correspondent aux conventions Dired, BTW):
j
est pour les commandes de saut ,t
est pour le tag ,.
est pour le répertoire courant ,%
est pour regexp et*
est pour tous (+
est pour certains ).(Oh, et en utilisant @ le sexp de mkcms, je reçois
C-x 4 j t f % *
, ce qui est tout aussi longue. Lef
est synonyme de fichier . Il est commeC-x 4 j t . % *
, mais les signets candidats à la fin sont tous les signets de fichiers, pas seulement ceux des fichiers dans le répertoire courant (.
).)la source
Magit
ajoute de longues séquences car il permet de basculer les options. Par exemple, lorsque vous demandez le journal, vous pouvez sélectionner des options courtes ou longues, si vous voulez des branches distantes ou non, si vous voulez l'affichage graphique des branches et ainsi de suite. La demande de base pour un journal est juste quelques touches dumagit-status
tampon, mais vous pouvez en ajouter beaucoup plus.Il en va de même pour la validation, deux touches pour une validation de base, mais de nombreux ajouts facultatifs.
Donc, la question est sous spécifiée, envisagez-vous seulement un
stock
(quoi que cela signifie) emacs?la source
F1 k
et voyez combien de touches vous pouvez taper jusqu'à ce qu'elle décrive la commande.