Ekstensi kode-lipat untuk json

15

Saya berurusan dengan file json dengan beberapa blok berulang dengan hanya satu nilai bidang (integer) berubah - pada kenyataannya, setiap nilai yang diubah hanya nilai yang sesuai sebelumnya bertambah. Untuk membuat file seperti itu mudah dibaca, saya ingin dapat melipat seluruh rangkaian blok berulang ini menjadi hanya satu blok dengan beberapa indikasi berapa kisaran nilai yang berubah di seluruh blok ini. Mencari metode kode lipat di emacs, saya menemukan hs-minor-modedan outline-mode. Namun, saya tidak melihat bagaimana cara beralih dari fungsi yang mereka berikan ke yang saya inginkan. Bisakah seseorang memberikan gambaran kasar tentang bagaimana saya bisa mencapai ini?

EDIT: Contoh dari apa yang saya coba lakukan:

Diberikan file json yang terlihat seperti ini:

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

Saya ingin ditampilkan seperti ini:

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

Permintaan maaf untuk pertanyaan yang sangat terbuka.

Pradhan
sumber
1
Pertanyaan bagus - itu akan sangat berguna.
Drew

Jawaban:

8

Ada lebih banyak opsi lipat untuk Emacs: http://wikemacs.org/wiki/Folding#Yafolding dan Yafolding sepertinya yang terbaik untuk casing Anda karena didasarkan pada lekukan. Ini juga termasuk antarmuka yang bagus à-la Magit untuk menemukan perintah.

Namun, itu tidak sepenuhnya menjawab pertanyaan Anda karena tidak akan menampilkan rentang bidang di luar kotak.

Yafolding dalam MELPA:

M-x package-install yafolding
Ehvince
sumber
1

Gunakan emacs ' hideshow. Anda dapat menjaga kursor Anda di mana saja & untuk menyembunyikan level blok 'n' di bawahnya, gunakan perintah

C-c @ C-l

Di sini, n adalah argumen awalan numerik yang diset dengan menekan

C-u 1 RET

Baca lebih lanjut tentang hsmode di sini, hs-mode . Lebih lanjut tentang argumen awalan di sini, awalan args mode hs tidak berfungsi pada mode Default. Anda harus memiliki mode js2 (atau) mode js agar bisa berfungsi.

Madhavan
sumber