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?


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 {...}.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.