Używam, spacemacs
ale prawdopodobnie jest to wiedza wymagająca tutaj.
Mam plik JSON z jedną długą linią, powiedzmy ten JSON z json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Chciałbym, aby emacs to powtórzył, co dla mnie oznacza, że nie zmieniam znaku po lewej stronie na odpowiedni poziom wcięcia, ale przerywam linię w kilku wierszach.
Jeśli użyję spacemacs/indent-region-or-buffer
( SPC j =
), tekst w ogóle się nie zmieni.
Jak mogłem poprosić emacsa, aby rzeczywiście przełamał tę długą linię i był gotowy na coś takiego:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Nie interesuje mnie odpowiedź specyficzna dla JSON, na przykład uważam, że intelliJ robi to dla dowolnego obsługiwanego języka (java, json ...). Sądzę, że jest to osiągalne dla każdego emacsa językowego, który ma tryb główny lub, powiedzmy, najpopularniejsze.
EDYCJA Odkryłem, M-x json-reformat-region
że jest spacemacs
dostarczany z i działa, ale tak, chciałbym to dla każdego języka i zawsze z tym samym skrótem, w oparciu o tryb główny ...
EDIT2 Ok, więc doszedłem do wniosku, że jest on zaimplementowany dla różnych języków, przynajmniej JSON i lisp, prawdopodobnie innych, i byłoby jeszcze łatwiej (XML / XHTML, go, który ma go-fmt, a także używa clang). Jednak nie ma ogólnej nazwy funkcji, która by to zrobiła dla wszystkich języków. Jest tu miejsce na implementację go w spacemacs
warstwach dla różnych języków ... Nie znalazłem jednak implementacji X / HTML, co mnie trochę zaskakuje.
web-beautiful.el
. To jest najlepsze, jakie znalazłem, ale zależy to od node.js.