2009-10-29 17 views
4

Dans Emacs, existe-t-il un moyen de mettre en surbrillance les parenthèses des sexps cités et contre-indiqués différemment des parens des autres sexps pour qu'ils se distinguent? par exemple. Je veux que ces parens d'être une couleur différente de celle d'autres parens:Surligner les parens cités/contre-citées

(foo `(bar (baz)) quux) 
    ^  ^
+1

La réponse est presque certainement "oui" malheureusement, je ne connais pas la réponse à la question de suivi de "Comment?" B-) –

+0

Serait-il suffisant d'avoir une commande qui met en évidence (persistante) met en évidence à un tampon? Ou, peut-être une modification de mic-paren qui fait que la surbrillance soit différente que vous êtes sur eux? –

+0

Soit serait génial. –

Répondre

1

Jetez un oeil à mic-paren, un mode mineur construit comme une extension aux paquets paren.el et Stig-paren.el pour Emacs. Il comporte la reconnaissance des sexps «échappés».

Maintenant, pour la mise en évidence spéciale: si vous regardez the code, le comportement d'appariement de sexp cité est régie par la paren-match-quoted-paren variable. Lors de la recherche d'un couple de sexps match, le changement de caractère est faite en utilisant des déclarations telles que:

(mic-overlay-put mic-paren-backw-overlay 'face paren-mismatch-face) 

(avec des alternatives similaires pour apparié, sans équivalent). Il ne devrait pas être trop difficile de définir une police alternative (similaire à ce qui est fait avec paren-mismatch-face), et remplacer ces instructions de changement de police par des fonctions qui utilisent votre police alternative si paren-match-quoted-paren est vrai.

Note: Les liens mis à jour de se référer à la version la plus récente

+0

Le code auquel vous êtes lié est complètement impénétrable. Merci quand même. –

1

Vous pouvez appliquer le correctif suivant pour mic-paren (suivre le lien pour dernière version, 3.8) pour obtenir ce que vous voulez. Personnalisez le visage nouvellement créé paren-face-quoted-match qui est clairement mis en place pour avoir un premier plan vert et un arrière-plan orange à des fins de test. Maintenant, lorsque vous êtes à côté d'un ensemble de parenthèses correspondant précédé d'une seule citation ouverte `, vous obtiendrez le visage cité. Cet exemple utilise un arrière-plan orange et un premier plan vert - les couleurs les plus susceptibles d'être modifiées.

est ici une image de celui-ci dans l'action: alt text http://img262.imageshack.us/img262/8866/quoted.png

--- orig-mic-paren.el 2009-11-11 17:02:42.000000000 -0800 
+++ mic-paren.el 2009-11-11 17:05:35.306263000 -0800 
@@ -561,4 +561,16 @@ 
    :group 'mic-paren-matching) 

+(defface paren-face-quoted-match 
+ '((((class color)) (:foreground "green" :background "orange")) 
+ (t (:reverse-video t))) 
+ "" 
+ :group 'faces 
+ :group 'mic-paren-matching) 
+ 
+(defcustom paren-quoted-match-face 'paren-face-quoted-match 
+ "Mic-paren face used for a quoted paren" 
+ :type 'face 
+ :group 'mic-paren-matching) 
+ 
;;; End of User Options 
;;; ====================================================================== 
@@ -1052,5 +1064,9 @@ 
        face (if mismatch 
          paren-mismatch-face 
-       paren-match-face) 
+       (save-excursion 
+       (if (progn (goto-char (- (min (point) opos) 1)) 
+          (looking-at "`")) 
+        paren-quoted-match-face 
+       paren-match-face))) 
        visible (when (pos-visible-in-window-p opos) 
          (save-excursion 

Pour appliquer le patch, couper/coller le morceau de patch à un fichier nommé mic.patch, et exécutez ce qui suit:

patch mic-paren.el mic.patch