Edycja konturu, jak w trybie org, dla JSON

15

Próbuję edytować plik Swagger JSON w emacsie. Zawiera duże zagnieżdżone obiekty JSON, więc chcę zwinąć i ukryć niektóre z nich.

Próbowałem origami-mode, skonfigurowałem jak origami-c-style-parserw origami-parser-alist, ale jest dość niewyszukany (słowo „parser” wydaje się być zbyt imponującym słowem do tego, co robi). Nie zauważa, że ​​podciągi parametrów adresu URL Swagger, takie jak, {id}są wewnątrz ciągów JSON, więc z radością je również zwija, gdy proszę o zwinięcie wszystkich węzłów w buforze oprócz bieżącego. Nie chcę tego robić. Chcę sposób zawaleniem tylko JSON poddrzewa takich obiektów, a nie podciągi ciągów JSON, które zdarzają się mieć nawiasów klamrowych w nich. Jak mogę osiągnąć ten cel?

Robin Green
źródło
Nie wiem tego na pewno, ale jest całkiem możliwe, że js2-modema składanie, które może również składać pliki JSON.
wvxvw
Jednym z podejść jest przekonwertowanie pliku Json na podobny format drzewa i działanie na nim. Można to przekonwertować na xml github.com/hay/xml2json . Yaml byłby innym podejściem.
Att Righ

Odpowiedzi:

1

Emacs posiada tryb hs-minor, którego można używać do selektywnego ukrywania / pokazywania kodu i blokowania komentarzy w kilku językach, w tym JavaScript. Domyślnie pozwala to ukryć i pokazać bloki JSON rozdzielone znakami „{” i „}”, ale można je łatwo modyfikować, aby zezwolić także na „[” i „]” jako ograniczniki bloków. Aby to zrobić, musimy zmodyfikować js-modewpis za hs-special-modes-alistpomocą czegoś takiego:

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

Powinieneś wtedy stwierdzić, że [...] bloki mogą być ukryte i pokazane, a także bloki {...}.

stevoooo
źródło
0

Mój json-mode ma funkcję składania kodu, która nie powinna próbować składać rzeczy, które wyglądają jak obiekty lub tablice wewnątrz ciągów. To nie jest dojrzały tryb główny, ale powinien być użyteczny.

DoMiNeLa10
źródło