Estou usando, spacemacs
mas presumivelmente é necessário o conhecimento do emacs aqui.
Eu tenho um arquivo JSON com uma única linha longa, digamos este JSON em json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Gostaria que o emacs reinscreva isso, o que significa para mim não alterar o caractere mais à esquerda da linha para o nível de indentação adequado, mas quebrar a linha em várias linhas.
Se eu usar spacemacs/indent-region-or-buffer
( SPC j =
), o texto não será alterado.
Como eu poderia pedir ao emacs para realmente romper essa longa fila e se reintegrar para obter algo assim:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Não estou interessado em uma resposta específica ao JSON, por exemplo, acredito que o intelliJ faz isso para qualquer idioma compatível (java, json ...). Eu acho que é viável para qualquer idioma emacs tem um modo principal para, ou digamos os mais populares.
EDIT Descobri M-x json-reformat-region
que é spacemacs
fornecido com e funciona, mas sim, eu gostaria disso para qualquer idioma e sempre com o mesmo atalho, com base no modo principal ...
EDIT2 Ok, então minha conclusão é que ele é implementado para várias linguagens, pelo menos JSON e lisp, provavelmente para outras, e seria fácil ainda mais (XML / XHTML, go que possui go-fmt e também usa clang). No entanto, não há nome de função genérico que o faria para todos os idiomas. Há espaço aqui para implementá-lo em spacemacs
camadas para as várias linguagens ... Não encontrei uma implementação X / HTML, o que me surpreende um pouco.
web-beautiful.el
. Este é o melhor que encontrei, mas depende do node.js.