Gliederungsbearbeitung wie im Organisationsmodus für JSON


15

Ich versuche, eine Swagger-JSON-Datei in Emacs zu bearbeiten. Es enthält große verschachtelte JSON-Objekte, daher möchte ich einige von ihnen reduzieren und ausblenden.

Ich habe versucht origami-mode, konfiguriert wie origami-c-style-parserin origami-parser-alist, aber es ist ziemlich anspruchslos (das Wort "Parser" scheint ein übermäßig grandioses Wort für das zu sein, was es tut). Es wird nicht bemerkt, dass Swagger-URL-Parameter wie {id}Teilzeichenfolgen in JSON-Zeichenfolgen enthalten sind. Daher werden sie auch glücklich komprimiert, wenn ich sie auffordere, alle Knoten im Puffer mit Ausnahme des aktuellen Knotens zu komprimieren. Das möchte ich nicht. Ich möchte einen Weg von nur JSON Unterstrukturen wie Objekte zusammenbrechenden , nicht Strings von JSON - Strings , die passieren geschweiften Klammern in ihnen haben. Wie kann ich dieses Ziel erreichen?


Ich weiß das nicht genau, aber es ist durchaus möglich, dass js2-modedas Falten auch JSON-Dateien falten kann.
wvxvw


Ein Ansatz besteht darin, Ihren json in ein ähnliches Baumformat zu konvertieren und damit zu arbeiten. Dies kann in xml github.com/hay/xml2json umgewandelt werden . Yaml wäre ein anderer Ansatz.
Att Righ

Antworten:


1

Emacs wird mit dem hs-minor-Modus geliefert, mit dem Code- und Kommentarblöcke in mehreren Sprachen, einschließlich JavaScript, selektiv ein- und ausgeblendet werden können. Standardmäßig können Sie JSON-Blöcke, die durch '{' und '}' begrenzt sind, ausblenden und anzeigen. Sie können jedoch auch '[' und ']' als Blockbegrenzer festlegen. Dazu müssen wir den js-modeEintrag in hs-special-modes-alistetwa wie folgt ändern :

(setcdr (assoc 'js-mode hs-special-modes-alist)' ("[{[]" [} \\]] "" / [* /] "nil))

Sie sollten dann feststellen, dass Blöcke [...] ausgeblendet und angezeigt werden können, sowie Blöcke.


0

Myjson-mode hat eine Code-Folding-Funktion, die nicht versuchen sollte, Dinge, die wie Objekte oder Arrays aussehen, in Strings zu falten. Es ist kein ausgereifter Hauptmodus, aber er sollte verwendbar sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.