2011-10-27 4 views
5

Existe-t-il une commande dans Emacs pour activer ce que l'on pourrait appeler le "mode mineur de verrouillage des majuscules"? Je cherche à faire quelque chose comme M-x toggle-caps-mode, puis chaque lettre que je tape dans le tampon est une lettre majuscule jusqu'à ce que je fasse M-x toggle-caps-mode à nouveau.Emacs caps verrouiller le mode mineur?

Note: Je ne cherche pas de directives sur la façon d'échanger les bouchons et de contrôler. En réalité, c'est parce que je l'ai déjà fait. Je suis généralement assez content de cela, mais de temps en temps je suis en train d'éditer du code où il y a un tas de constantes qui sont en majuscules, et ça devient une contrainte qui maintient la touche shift. Je suis au courant des diverses fonctions de conversion upcase; Je préfère ne pas avoir à taper le mot, sélectionnez-le, puis exécutez upcase-region.

Si c'est important, j'utilise Aquamacs 2.2 w/Emacs 23.3.1.

+0

Si vous avez échangé des bouchons et des commandes, vous avez des verrous sur la touche de contrôle, n'est-ce pas? Pourquoi ne l'utilisez-vous pas? – Tom

+0

Je suppose que je joue rapidement avec le mot "swappé". Je veux dire vraiment que j'ai remappé des bouchons pour contrôler. Le contrôle est toujours le contrôle, mais je pourrais les échanger. Toujours curieux s'il y a une réponse simple à cette question. – dantswain

Répondre

4

Vous n'avez pas besoin de taper le mot puis sélectionnez-le. Si vous souhaitez ignorer le dernier mot, appuyez sur M-b M-u ou ESC b u. Ok, vous devrez appuyer sur b plusieurs fois s'il s'agit d'un word_with_underscores.

Si vous voulez vraiment un mode mineur majuscule, essayez John Paul Wallington's lockcaps.el.

+0

C'est tout un tas de 'word_with_underscores's je travaille avec! lockcaps.el semble prometteur, cependant. – dantswain

+0

@dantswain Vous n'avez besoin de les taper qu'une seule fois. Ensuite, il vous suffit de taper les premières lettres et d'utiliser completion (sémantique avec 'M-TAB' ou dynamique avec' M-/'). – Gilles

+1

La saisie semi-automatique n'a jamais été mon style, mais 'lockcaps.el' voulait juste que je veuille. – dantswain

2

Vous pouvez essayer quelque chose comme ceci:

(define-minor-mode caps-lock-mode 
    "caps-lock mode" 
    ;; The initial value. 
    nil 
    ;; The indicator for the mode line. 
    " CAPS-LOCK" 
    ;; The minor mode bindings. 
    '(("a" . (lambda() (interactive) (insert-char ?A 1))) 
    ("b" . (lambda() (interactive) (insert-char ?B 1))) 
    ;;etc 
    ("A" . (lambda() (interactive) (insert-char ?a 1)))  
    ("B" . (lambda() (interactive) (insert-char ?b 1)))  
    ;;etc 
    )) 
+0

J'ai trouvé ceci: http://lists.gnu.org/archive/html/gnu-emacs-sources/2004-08/msg00013.html et les différentes réponses, qui finissent par donner une version légèrement plus compacte. J'espérais un built-in, mais si c'est la réponse, alors c'est la réponse. Je vais lui donner le temps de voir si quelqu'un d'autre a quelque chose de différent à offrir. – dantswain

+0

Merci, c'est un fil intéressant. Surtout comment remplacer le long keymap avec une seule fonction. –

Questions connexes