Я использую, spacemacs
но, вероятно, это знание emacs, которое требуется здесь.
У меня есть файл JSON с одной длинной строкой, скажем, этот JSON с json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Я бы хотел, чтобы emacs переопределил это, что означает, что я не изменяю крайний левый символ строки на нужный уровень отступа, а разбиваю строку на несколько строк.
Если я использую spacemacs/indent-region-or-buffer
( SPC j =
), то текст вообще не изменяется.
Как я могу попросить emacs разорвать эту длинную строку и сделать отступ, чтобы получить что-то вроде этого:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Меня не интересует специфичный для JSON ответ, например, я считаю, что intelliJ делает это для любого языка, который он поддерживает (java, json ...). Я думаю, что это достижимо для любого языка, в котором Emacs имеет основной режим или, скажем, самые популярные.
РЕДАКТИРОВАТЬ Я обнаружил, M-x json-reformat-region
что spacemacs
поставляется с и работает, но да, я хотел бы это для любого языка и с всегда одним и тем же ярлыком, основанным на основном режиме ...
EDIT2 Хорошо, поэтому я пришел к выводу, что он реализован для разных языков, по крайней мере, JSON и lisp, предположительно для других, и это будет легко сделать еще больше (XML / XHTML, go с go-fmt, а также с использованием clang). Однако нет общего имени функции, которое бы делало это для всех языков. Здесь есть место для его реализации в spacemacs
слоях для разных языков ... Однако я не нашел реализации X / HTML, что меня немного удивляет.
web-beautiful.el
. Это лучшее, что я нашел, но это зависит от node.js.