J'utilise spacemacs
mais je suppose que ce sont les connaissances emacs qui sont requises ici.
J'ai un fichier JSON avec une seule longue ligne, disons ce JSON de json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
J'aimerais qu'emacs réindente cela, ce qui signifie pour moi de ne pas changer le caractère le plus à gauche de la ligne au niveau d'indentation approprié, mais de casser la ligne en plusieurs lignes.
Si j'utilise spacemacs/indent-region-or-buffer
( SPC j =
) alors le texte n'est pas changé du tout.
Comment pourrais-je demander à emacs de briser cette longue file d'attente et de se réindenter pour obtenir quelque chose comme ceci:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Je ne suis pas intéressé par une réponse spécifique à JSON, par exemple je crois qu'intelliJ le fait pour n'importe quelle langue qu'il supporte (java, json ...). Je pense que c'est réalisable pour n'importe quel langage emacs a un mode majeur pour, ou disons les plus populaires.
EDIT J'ai découvert M-x json-reformat-region
que spacemacs
livré avec et fonctionne, mais oui, j'aimerais ça pour n'importe quelle langue et avec toujours le même raccourci, basé sur le mode majeur ...
EDIT2 Ok donc ma conclusion est qu'il est implémenté pour différentes langues, JSON & lisp au moins, probablement d'autres, et il serait facile pour encore plus (XML / XHTML, go qui a go-fmt et utilise également clang). Cependant, il n'y a pas de nom de fonction générique qui le ferait pour tous les langages. Il y a de la place ici pour l'implémenter en spacemacs
couches pour les différents langages ... Je n'ai cependant pas trouvé d'implémentation X / HTML, ce qui m'étonne un peu.
web-beautiful.el
. C'est le meilleur que j'ai trouvé, mais cela dépend de node.js.