2012-07-22 1 views
3

EDIT Je pense que le mode joli est conceptuellement plus proche de ce que je veux que le mode de pliage divers, mais je devrais être capable de remplacer les chaînes avec d'autres chaînes, au lieu d'un seul caractère . Autant que je sache pretty-mode permet seulement de remplacer une chaîne avec un caractère unique.code se pliant sur une seule ligne

Je cherche à faire quelque chose de très spécifique dans Emacs et c'est une sorte de pliage de code. Je l'ai lu: Code folding in Emacs

qui a été fermé comme dupe de cette:

How to achieve code folding effects in Emacs?

Cependant, je suis en train de faire quelque chose d'un peu particulier que je ne veux pas lignes de fonctions de pli: je veux plier des caractères, sur une seule ligne.

Je ne suis pas du tout dans la navigation: ce n'est pas pour faciliter la navigation. C'est juste pour désencombrer l'écran.

Par exemple, si je ceci:

super verbose syntax my_bar = 42; 
hyper long syntax my_foo = 84; 

Je voudrais avoir apparaître, dans Emacs, comme ceci:

svs my_bar = 42; 
hls my_foo = 84; 

Parce que je l'ai lu non seulement un million de temps "super verbose syntaxe"/"hyper long syntaxe" et parce que depuis dix ans quand je tape 'svs' il est automatiquement étendu à "syntaxe super verbeuse" et 'hls' se développant automatiquement en "syntaxe hyper longue", il n'y a aucune chance que je utilisera jamais "svs" comme identifiant réel et Il n'y a aucune chance que je ne reconnaisse pas immédiatement ce qui se passe. Bien sûr, le fichier/tampon devrait toujours contenir la syntaxe terriblement bavarde.

Je veux purement un "caractères se pliant sur une ligne". Bref, quand je tape "super syntaxe verbeuse", je voudrais qu'elle se plie à l'écran automatiquement à "svs" (quand j'introduis 'svs' TAB, elle devient "syntaxe super verbeuse", mais est quelque chose d'autre ... Dans mon cas, taper svs TAB se développerait en "syntaxe super verbeuse" qui devrait ensuite être pliée directement à 'svs' sur l'écran). Cela permettrait d'économiser beaucoup d'écran de l'immobilier et de m'aider à me concentrer sur des choses plus importantes.

(comme un effet secondaire il serait cool aussi aligner des mots-clés réservés verticalement qui n'ont pas la même longueur, ce qui rend le code plus lisible pour moi)

Comment puis-je obtenir ce sous Emacs? Y a-t-il déjà un mode mineur qui le fait?

Répondre

4

Essayez d'ajouter ces deux expressions à votre mode-hook:

(font-lock-add-keywords 
nil 
'(("super verbose syntax" (0 '(face default display "svs") append)) 
    ("hyper long syntax" (0 '(face default display "hls") append))) 
t) 
(push 'display font-lock-extra-managed-props) 
+0

@huaiyan: +1 mais il semble ruiner tous les autres paramètres « face » j'ai de mon mode (j'ai essayé avec un « java- mode-hook). Cela "fonctionne" en ce que je vois les personnages pliés, mais je perds tous les autres paramètres de visage. –

+0

J'ai modifié les paramètres; J'espère que cela fonctionne maintenant. – huaiyuan