Estoy usando, spacemacs
pero presumiblemente es el conocimiento de emacs que se requiere aquí.
Tengo un archivo JSON con una sola línea larga, digamos este JSON de json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Me gustaría que emacs reindenté esto, lo que significa que no cambiaré el carácter más a la izquierda de la línea al nivel de sangría adecuado, sino que la dividiré en varias líneas.
Si uso spacemacs/indent-region-or-buffer
( SPC j =
), el texto no cambia en absoluto.
¿Cómo podría pedirle a emacs que rompa realmente esta larga línea y reindent para obtener algo como esto:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
No estoy interesado en una respuesta específica de JSON, por ejemplo, creo que intelliJ hace eso para cualquier idioma que admita (java, json ...). Creo que es posible para cualquier idioma en el que emacs tenga un modo principal, o digamos los más populares.
EDITAR Descubrí M-x json-reformat-region
que spacemacs
viene con y funciona, pero sí, me gustaría eso para cualquier idioma y con siempre el mismo acceso directo, basado en el modo principal ...
EDIT2 Ok, entonces mi conclusión es que está implementado para varios idiomas, JSON y lisp al menos, presumiblemente otros, y sería fácil para aún más (XML / XHTML, vaya que tiene go-fmt y también usa clang). Sin embargo, no hay un nombre de función genérico que lo haga para todos los idiomas. Aquí hay espacio para implementarlo en spacemacs
capas para los distintos idiomas ... Sin embargo, no encontré una implementación X / HTML, lo que me sorprende un poco.
web-beautiful.el
. Este es el mejor que he encontrado, pero depende de node.js.