我正在使用,spacemacs
但大概这里需要emacs知识。
我有一个带有长行的JSON文件,让我们说这个来自json.org/example的JSON:
{"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都可以采用一种主要的模式,或者说最受欢迎的语言来实现。
EDIT我发现M-x json-reformat-region
它spacemacs
随带并可以工作,但是是的,我希望这种语言适用于任何语言,并且基于主要模式始终具有相同的快捷方式...
EDIT2好吧,我的结论是,它至少适用于多种语言,包括JSON和lisp,可能还适用于其他语言,并且对其他语言(XML / XHTML,具有go-fmt的go,也使用clang)很容易实现。但是,没有通用函数名称可以对所有语言进行处理。这里有空间可以spacemacs
针对各种语言分层实现它……但是我没有找到X / HTML实现,这让我有些惊讶。
web-beautiful.el
。这是我发现的最好的,但是取决于node.js。