Extensions de pliage de code pour JSON


15

Je traite des fichiers json avec plusieurs blocs répétés avec une seule valeur de champ (entier) modifiée - en fait, chaque valeur modifiée est juste la valeur correspondante précédente incrémentée. Pour rendre ces fichiers faciles à lire, j'aimerais pouvoir plier cet ensemble entier de blocs répétés en un seul bloc avec une indication de la plage de la valeur changeante sur ces blocs. À la recherche de méthodes de pliage de code dans emacs, j'ai trouvé hs-minor-modeet outline-mode. Cependant, je ne vois pas comment passer de la fonctionnalité qu'ils fournissent à celle que je désire. Quelqu'un pourrait-il donner un aperçu approximatif de la façon dont je pourrais y parvenir?

EDIT: Un exemple de ce que j'essaie de faire:

Étant donné un fichier json qui ressemble à ceci:

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

Je voudrais l'afficher comme ceci:

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

Toutes mes excuses pour la question très ouverte.


1
Bonne question - ce serait très utile.
Drew

Réponses:


8

Il y a plus d'options de pliage pour Emacs: http://wikemacs.org/wiki/Folding#Yafolding et Yafolding ressemble le mieux à votre cas car il est basé sur l'indentation. Il comprend également une belle interface à-la Magit pour découvrir les commandes.

Cependant, cela ne répond pas entièrement à votre question car il n'affichera pas la plage des champs hors de la boîte.

Yafolding est au MELPA:

M-x package-install yafolding

1

Utilisez emacs ' hideshow. Vous pouvez garder votre curseur n'importe où et masquer le niveau des blocs en dessous, utilisez la commande

C-c @ C-l

Ici, n est un argument de préfixe numérique qui est défini en appuyant sur

C-u 1 RET

En savoir plus sur hsmode ici, hs-mode . Plus d'informations sur les arguments de préfixe ici, le mode hs de préfixe ne fonctionne pas sur le mode par défaut. Vous devez disposer du mode js2 (ou) du mode js pour que cela fonctionne.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.