JSON için kuruluş modu gibi anahat düzenleme


15

Emacs bir Swagger JSON dosyasını düzenlemeye çalışıyorum. Büyük iç içe JSON nesneleri içerir, bu yüzden bazılarını daraltmak ve gizlemek istiyorum.

Ben denedim origami-mode, olarak yapılandırılmış origami-c-style-parseriçinde origami-parser-alist, ama oldukça sade olup (kelime "ayrıştırıcı" ne demek için aşırı görkemli kelime gibi). Swagger URL parametresi alt {id}dizelerinin JSON dizeleri içinde olduğunu fark etmez , bu nedenle geçerli düğüm dışındaki tampondaki tüm düğümleri daraltmasını istediğimde onları da mutlu bir şekilde daraltır. Bunu yapmasını istemiyorum. Ben nesneler gibi sadece JSON alt ağaçlar çöken bir yol istiyorsanız, JSON dizeleri değil altdizgelerin gerçekleşmesi onları küme parantezi var. Bu hedefe nasıl ulaşabilirim?


Bu kesin olarak bilmiyorum, ama js2-modeaynı zamanda JSON dosyalarını katlayabilirsiniz katlanabilir oldukça mümkündür .
wvxvw


Bir yaklaşım, json'unuzu benzer bir ağaç formatına dönüştürmek ve üzerinde çalışmaktır. Bu, xml github.com/hay/xml2json biçimine dönüşebilir . Yaml başka bir yaklaşım olurdu.
Att Righ

Yanıtlar:


1

Emacs, JavaScript dahil birçok dilde kodu ve yorum bloklarını seçici olarak gizlemek / göstermek için kullanılabilen hs-minor-mode ile birlikte gelir. Varsayılan olarak bu, '{' ve '}' ile sınırlandırılmış JSON bloklarını gizlemenize ve göstermenize olanak tanır, ancak '[' ve ']' öğelerine blok sınırlayıcılar olarak izin verecek şekilde kolayca değiştirilebilir. Bunu yapmak için js-modegirişi aşağıdaki hs-special-modes-alistgibi bir şeyle değiştirmemiz gerekir :

(setcdr (js-mode hs-özel modlar-alist) '("[{[]" "[} \\]]" "/ [* /]" nil))

Daha sonra, {...} blokların yanı sıra [...] bloklarının gizlenebileceğini ve gösterilebileceğini bulmalısınız.


0

Benimjson-mode , dizelerin içindeki Nesneler veya Diziler gibi görünen şeyleri katlamaya çalışmayan bir kod katlama özelliğine sahiptir. Olgun bir ana mod değildir, ancak kullanılabilir olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.