Rozszerzenia składania kodu dla json

15

Mam do czynienia z plikami json z wieloma powtórzonymi blokami z jedną zmienną tylko jednej wartości pola (liczbą całkowitą) - w rzeczywistości każda zmieniona wartość jest tylko poprzednią odpowiednią zwiększoną wartością. Aby takie pliki były łatwe do odczytania, chciałbym móc złożyć cały zestaw powtarzających się bloków w jeden blok z pewnymi wskazaniami, jakie są zakresy zmieniającej się wartości w tych blokach. Szukając metod składania kodu w emacs, znalazłem hs-minor-modei outline-mode. Jednak nie widzę, jak przejść od funkcji, które zapewniają, do tych, których pragnę. Czy ktoś mógłby przedstawić ogólny zarys tego, jak mogę to osiągnąć?

EDYCJA: Przykład tego, co próbuję zrobić:

Biorąc pod uwagę plik json, który wygląda następująco:

{
    "SomeArray": [
        {
        "ChangingField": 1,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 2,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 3,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 4,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 5,
        "ConstantField" : "X"
        }
    ]
}

Chciałbym, aby wyświetlał się w następujący sposób:

{
    "SomeArray": [
        {
        "ChangingField": 1...5,
        "ConstantField" : "X"
        }
    ]
}

Przepraszamy za bardzo otwarte pytanie.

Pradhan
źródło
1
Dobre pytanie - byłoby całkiem przydatne.
Drew

Odpowiedzi:

8

Istnieje więcej opcji składania Emacsa: http://wikemacs.org/wiki/Folding#Yafolding i Yafolding wygląda najlepiej w twoim przypadku, ponieważ opiera się na wcięciach. Zawiera także przyjemny interfejs à-la Magit do odkrywania poleceń.

Jednak to nie w pełni odpowiada na twoje pytanie, ponieważ nie pokaże zakresu pól po wyjęciu z pudełka.

Yafolding jest w MELPA:

M-x package-install yafolding
Ehvince
źródło
1

Użyj emacsa ” hideshow. Możesz trzymać kursor w dowolnym miejscu i ukryć pod nim poziom bloków, użyj polecenia

C-c @ C-l

Tutaj n jest argumentem przedrostka numerycznego, który ustawia się przez naciśnięcie

C-u 1 RET

Przeczytaj więcej o hsmode tutaj, hs-mode . Więcej informacji o argumentach przedrostka tutaj, przedrostek argumenty Tryb hs nie działa w trybie domyślnym. Aby to działało, musisz mieć zainstalowany tryb js2 (lub) js-mode.

Madhavan
źródło