ส่วนขยายการพับโค้ดสำหรับ json


15

ฉันกำลังจัดการกับไฟล์ json ที่มีบล็อกซ้ำหลายบล็อกที่มีค่าฟิลด์เดียว (จำนวนเต็ม) เปลี่ยนแปลง - อันที่จริงค่าที่เปลี่ยนแปลงทุกรายการเป็นเพียงค่าที่สอดคล้องกันก่อนหน้านี้เพิ่มขึ้น เพื่อให้ไฟล์ดังกล่าวอ่านง่ายฉันต้องการที่จะพับชุดบล็อกซ้ำทั้งหมดนี้เป็นบล็อกเดียวโดยมีข้อบ่งชี้ว่าช่วงของค่าการเปลี่ยนแปลงในบล็อกเหล่านี้เป็นเท่าใด กำลังหาวิธีการพับโค้ดใน emacs ผมพบและhs-minor-mode outline-modeอย่างไรก็ตามฉันไม่เห็นวิธีการใช้งานจากฟังก์ชันที่พวกเขามีให้กับสิ่งที่ฉันต้องการ มีคนให้ภาพรวมคร่าวๆว่าฉันจะทำสิ่งนี้ได้อย่างไร

แก้ไข: ตัวอย่างของสิ่งที่ฉันพยายามทำ:

รับไฟล์ json ที่มีลักษณะดังนี้:

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

ฉันต้องการให้มันแสดงเช่นนี้:

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

ขอโทษสำหรับคำถามปลายเปิด


1
คำถามที่ดี - นั่นจะมีประโยชน์มาก
ดึง

คำตอบ:


8

มีตัวเลือกการพับเพิ่มเติมสำหรับ Emacs: http://wikemacs.org/wiki/Folding#Yafolding และ Yafolding ดูเหมือนจะดีที่สุดสำหรับกรณีของคุณเนื่องจากเป็นไปตามการเยื้อง นอกจากนี้ยังมีอินเทอร์เฟซที่ดีสำหรับการค้นหาคำสั่ง

อย่างไรก็ตามนั่นไม่ได้ตอบคำถามของคุณอย่างเต็มที่เนื่องจากจะไม่แสดงช่วงของฟิลด์ที่ไม่อยู่ในกรอบ

Yafolding อยู่ใน MELPA:

M-x package-install yafolding

1

ใช้ emacs' hideshowคุณสามารถเก็บเคอร์เซอร์ไว้ที่ใดก็ได้ & เพื่อซ่อนระดับบล็อก 'n' ด้านล่างใช้คำสั่ง

C-c @ C-l

ที่นี่ n เป็นอาร์กิวเมนต์คำนำหน้าตัวเลขที่ได้รับการตั้งค่าโดยการกด

C-u 1 RET

อ่านเพิ่มเติมเกี่ยวกับ hsmode นี่ hsmode เพิ่มเติมเกี่ยวกับคำนำหน้าอาร์กิวเมนต์ที่นี่ คำนำหน้า args โหมด hs ไม่ทำงานในโหมดเริ่มต้น คุณต้องมีโหมด js2 (หรือ) โหมด js เพื่อให้สามารถใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.