Tôi đang sử dụng spacemacs
nhưng có lẽ đó là kiến thức cần thiết ở đây.
Tôi có một tệp JSON với một dòng dài, hãy nói JSON này từ json.org/example:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
Tôi muốn emacs nhắc lại điều này, điều đó có nghĩa là tôi không thay đổi ký tự ngoài cùng bên trái thành mức thụt lề thích hợp, nhưng ngắt dòng thành nhiều dòng.
Nếu tôi sử dụng spacemacs/indent-region-or-buffer
( SPC j =
) thì văn bản hoàn toàn không thay đổi.
Làm thế nào tôi có thể yêu cầu từ emacs thực sự phá vỡ dòng dài này và giới thiệu để có được một cái gì đó như thế này:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Tôi không quan tâm đến câu trả lời dành riêng cho JSON, ví dụ tôi tin rằng intelliJ thực hiện điều đó cho bất kỳ ngôn ngữ nào mà nó hỗ trợ (java, json ...). Tôi nghĩ rằng có thể đạt được cho bất kỳ emacs ngôn ngữ nào có chế độ chính cho, hoặc giả sử những ngôn ngữ phổ biến nhất.
EDIT Tôi phát hiện ra M-x json-reformat-region
rằng spacemacs
tàu có và hoạt động, nhưng vâng, tôi muốn điều đó cho bất kỳ ngôn ngữ nào và luôn có cùng một phím tắt, dựa trên chế độ chính ...
EDIT2 Ok vì vậy, kết luận của tôi là nó được triển khai cho nhiều ngôn ngữ khác nhau, ít nhất là JSON và lisp, có lẽ là những ngôn ngữ khác, và nó sẽ dễ dàng hơn nữa (XML / XHTML, sử dụng tiếng kêu và cũng sử dụng tiếng kêu). Tuy nhiên, không có tên hàm chung nào có thể làm điều đó cho tất cả các ngôn ngữ. Có không gian ở đây để triển khai nó trong spacemacs
các lớp cho các ngôn ngữ khác nhau ... Tôi đã không tìm thấy triển khai X / HTML, điều này làm tôi ngạc nhiên một chút.
web-beautiful.el
. Đây là thứ tốt nhất tôi tìm thấy, nhưng nó phụ thuộc vào node.js.