Saya mencoba mengedit file Swagger JSON di emacs. Ini berisi objek JSON bersarang besar, jadi saya ingin menutup dan menyembunyikan beberapa di antaranya.
Saya sudah mencoba origami-mode
, dikonfigurasi seperti origami-c-style-parser
pada origami-parser-alist
, tetapi cukup tidak canggih (kata "parser" tampaknya menjadi kata yang terlalu muluk untuk apa yang dilakukannya). Ia tidak memperhatikan bahwa substring parameter Swagger URL seperti {id}
berada di dalam string JSON, jadi dengan senang hati mereka akan runtuh juga ketika saya memintanya untuk menutup semua node dalam buffer kecuali node saat ini. Saya tidak ingin melakukan itu. Saya ingin cara mengurangkan hanya subtree JSON seperti objek, bukan substring string JSON yang kebetulan memiliki kurung kurawal di dalamnya. Bagaimana saya bisa mencapai tujuan ini?
sumber
js2-mode
memiliki lipat yang juga dapat melipat file JSON.Jawaban:
Emacs hadir dengan hs-minor-mode yang dapat digunakan secara selektif menyembunyikan / menampilkan kode dan blok komentar dalam beberapa bahasa, termasuk JavaScript. Secara default ini akan memungkinkan Anda menyembunyikan dan menampilkan blok JSON yang dibatasi oleh '{' dan '}' tetapi mudah dimodifikasi untuk memungkinkan '[' dan ']' sebagai pembatas blok juga. Untuk melakukan ini, kita perlu memodifikasi
js-mode
entrihs-special-modes-alist
dengan sesuatu seperti:Anda kemudian harus menemukan bahwa [...] blok dapat disembunyikan dan ditampilkan serta {...} blok.
sumber
Saya
json-mode
memiliki fitur kode lipat yang tidak boleh mencoba untuk melipat hal-hal yang terlihat seperti Obyek atau Array di dalam string. Ini bukan mode utama dewasa, tetapi harus dapat digunakan.sumber