Modification des contours, comme le mode org, pour JSON

15

J'essaie d'éditer un fichier Swagger JSON dans emacs. Il contient de grands objets JSON imbriqués, donc je veux réduire et masquer certains d'entre eux.

J'ai essayé origami-mode, configuré comme origami-c-style-parserdans origami-parser-alist, mais il est assez simple (le mot "analyseur" semble être un mot trop grandiose pour ce qu'il fait). Il ne remarque pas que les sous-chaînes de paramètres d'URL Swagger comme se {id}trouvent dans les chaînes JSON, donc il les réduit aussi avec plaisir lorsque je lui demande de réduire tous les nœuds du tampon, à l'exception du nœud actuel. Je ne veux pas que ça fasse ça. Je veux une façon de s'effondrer seulement comme des objets sous - arbres JSON, pas de sous - chaînes chaînes JSON arriver à avoir des accolades en eux. Comment puis-je atteindre cet objectif?

Robin Green
la source
Je ne sais pas cela avec certitude, mais il est tout à fait possible que le js2-modepliage puisse également plier les fichiers JSON.
wvxvw
Une approche consiste à convertir votre json en un format d'arborescence similaire et à l'utiliser. Cela peut être converti en xml github.com/hay/xml2json . Yaml serait une autre approche.
Att Righ

Réponses:

1

Emacs est livré avec le mode hs-minor qui peut être utilisé sélectivement pour masquer / afficher le code et les blocs de commentaires dans plusieurs langues, y compris JavaScript. Par défaut, cela vous permettra de masquer et d'afficher les blocs JSON délimités par «{» et «}», mais il est facilement modifié pour autoriser «[» et «]» comme délimiteurs de bloc également. Pour ce faire, nous devons modifier l' js-modeentrée hs-special-modes-alistavec quelque chose comme:

(setcdr (assoc 'js-mode hs-special-modes-alist)' ("[{{[]" "[} \\]]" "/ [* /]" nil))

Vous devriez alors trouver que les blocs [...] peuvent être masqués et affichés ainsi que les blocs {...}.

stevoooo
la source
0

Myjson-mode a une fonction de pliage de code qui ne devrait pas essayer de plier des choses qui ressemblent à des objets ou à des tableaux à l'intérieur de chaînes. Ce n'est pas un mode majeur mature, mais il devrait être utilisable.

DoMiNeLa10
la source