Sto usando spacemacs
ma presumibilmente è la conoscenza di emacs che è richiesta qui.
Ho un file JSON con una sola linea lunga, diciamo questo JSON da json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Vorrei che Emacs lo reindentasse, il che significa per me non cambiare il carattere più a sinistra della linea con il livello di rientro corretto, ma spezzare la linea in più righe.
Se uso spacemacs/indent-region-or-buffer
( SPC j =
) il testo non viene affatto modificato.
Come potrei chiedere a Emacs di rompere effettivamente questa lunga fila e di ricorrere per ottenere qualcosa del genere:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Non mi interessa una risposta specifica per JSON, ad esempio credo che intelliJ lo faccia per qualsiasi linguaggio supportato (java, json ...). Penso che sia realizzabile per qualsiasi lingua. Emacs ha una modalità importante per, o diciamo, le più popolari.
EDIT Ho scoperto M-x json-reformat-region
che viene spacemacs
fornito con e funziona, ma sì, mi piacerebbe che per qualsiasi lingua e con sempre la stessa scorciatoia, basato sulla modalità principale ...
EDIT2 Ok, quindi la mia conclusione è che è implementato per varie lingue, almeno JSON e lisp, presumibilmente altri, e sarebbe facile per ancora di più (XML / XHTML, go che ha funzionato e anche usando clang). Tuttavia, non esiste un nome di funzione generico che lo farebbe per tutte le lingue. Qui c'è spazio per implementarlo a spacemacs
strati per le varie lingue ... Non ho trovato un'implementazione X / HTML, il che mi sorprende un po '.
web-beautiful.el
. Questo è il migliore che ho trovato, ma dipende da node.js.