2009-09-19 9 views
1

Je souhaite que les fonctions de mouvement syntaxique d'Emacs ignorent certaines zones du tampon; c'est-à-dire pour analyser correctement les régions non contiguës. Cela peut être fait efficacement si vous pouvez définir la région à ignorer comme un commentaire et définir la variable parse-sexp-ignore-comments sur true.emacs: zone tampon non contiguë

Voici le problème. Le mode principal a des commentaires commençant par '!' et se terminant par newline ('\ n') et la zone tampon que je veux ignorer comme un commentaire commence par "% {" et se termine par "}%". Cependant, je ne vois aucun moyen de définir ces deux comme des commentaires. Le mécanisme permettant de gérer les délimiteurs de commentaires multi-caractères dans la table de syntaxe est trop spécifique à C pour être utilisé ici. Est-ce que quelqu'un a d'autres suggestions, des propriétés de texte, par exemple?

Répondre

1

Oui, vous pouvez modifier la table de syntaxe de la même manière que C. Vous pouvez lire sur les tables de syntaxe here. Fondamentalement, vous devrez définir % comme ponctuation et comme caractère de commentaire, même avec les { et }.

La description du caractère / en C est:

 character:/(47, #o57, #x2f) 
preferred charset: ascii (ASCII (ISO646 IRV)) 
     code point: 0x2F 
      syntax: . 124b which means: punctuation, 
     is the first character of a comment-start sequence, 
     is the second character of a comment-start sequence, 
     is the second character of a comment-end sequence (comment style b) 

Note: pour obtenir la description d'un caractère, le type M-x describe-char et il vous dira tout sur le charbon après le point.

De même, le caractère * a la description (en C):

 character: * (42, #o52, #x2a) 
preferred charset: ascii (ASCII (ISO646 IRV)) 
     code point: 0x2A 
      syntax: . 23 which means: punctuation, 
     is the second character of a comment-start sequence, 
     is the first character of a comment-end sequence 

Fondamentalement, vous avez besoin de mettre en place les commentaires de démarrage et des commentaires de fin des séquences, comme décrit dans this part of the info pages.

Je pense que vous voulez modifier les entrées de syntaxe quelque chose comme ceci:

(modify-syntax-entry ?% ".14") 
(modify-syntax-entry ?{ "(}2") 
(modify-syntax-entry ?} "){3") 

Bien, je pense garder le { et } par paire de parenthèses pourrait confondre les choses ...

+0

Merci pour la réponse. Malheureusement, j'ai déjà essayé cela avant de venir ici pour poser la question. J'ai trouvé que le mécanisme est trop spécifique à C; le type de commentaire 'b' doit commencer par le premier symbole du type de commentaire 'a', dans ce cas '!' et '%' respectivement. En C, ceux-ci sont commodément à la fois '/' – Alex

Questions connexes