Ich habe es mit JSON-Dateien mit mehreren wiederholten Blöcken zu tun, bei denen nur ein Feldwert (Ganzzahl) geändert wurde - tatsächlich wird jeder geänderte Wert nur um den vorherigen entsprechenden Wert erhöht. Um das Lesen solcher Dateien zu vereinfachen, möchte ich in der Lage sein, diesen gesamten Satz von sich wiederholenden Blöcken in nur einen Block zu falten, wobei einige Angaben zu den Bereichen des sich ändernden Werts in diesen Blöcken gemacht werden sollen. Auf der Suche nach Code Folding Methoden in Emacs habe ich hs-minor-mode
und gefunden outline-mode
. Ich verstehe jedoch nicht, wie ich von der Funktionalität, die sie bieten, zu der gewünschten übergehen soll. Könnte jemand einen groben Überblick darüber geben, wie ich dies erreichen könnte?
EDIT: Ein Beispiel für das, was ich versuche zu tun:
Gegeben eine JSON-Datei, die so aussieht:
{
"SomeArray": [
{
"ChangingField": 1,
"ConstantField" : "X"
},
{
"ChangingField": 2,
"ConstantField" : "X"
},
{
"ChangingField": 3,
"ConstantField" : "X"
},
{
"ChangingField": 4,
"ConstantField" : "X"
},
{
"ChangingField": 5,
"ConstantField" : "X"
}
]
}
Ich möchte es so anzeigen lassen:
{
"SomeArray": [
{
"ChangingField": 1...5,
"ConstantField" : "X"
}
]
}
Entschuldigung für die sehr offene Frage.
quelle
Antworten:
Es gibt weitere Faltoptionen für Emacs: http://wikemacs.org/wiki/Folding#Yafolding und Yafolding scheinen die besten für Ihren Fall zu sein, da sie auf Einrückungen basieren. Es enthält auch eine schöne Schnittstelle à la Magit, um die Befehle zu entdecken.
Dies ist jedoch keine vollständige Antwort auf Ihre Frage, da der Bereich der Felder nicht sofort angezeigt wird.
Yafolding ist in MELPA:
quelle
Verwenden Sie Emacs
hideshow
. Sie können den Cursor an einer beliebigen Stelle platzieren und die darunter liegenden Blöcke mit dem Befehl "n" ausblendenHier ist n ein numerisches Präfixargument, das durch Drücken von festgelegt wird
Lesen Sie hier mehr über hsmode, hs-mode . Weitere Informationen zu Präfix-Argumenten finden Sie hier. Der Präfix- Modus args hs funktioniert im Standardmodus nicht. Sie müssen js2-mode (oder) js-mode installiert haben, damit dies funktioniert.
quelle