Mã định dạng mã hóa giống như trong Eclipse


7

Trong Eclipse, tôi có thể nhấn CTRL + SHIFT + Fmà không chỉ sửa lỗi thụt lề mà còn cả khoảng trắng (ví dụ: c=a +b ;được sửa thành c = a + b;) và độ dài dòng. Tôi đang tìm kiếm một công cụ tương tự cho Emacs. Tất cả những gì tôi biết là C-x h TABđiều chỉnh vết lõm, nhưng không có gì hơn. Bạn có biết cách tự động nào để định dạng hoàn toàn tệp nguồn (đặc biệt là C / C ++) trong Emacs không?


Không. Tuy nhiên, không quá khó để viết một tích hợp cho một công cụ bên ngoài, chẳng hạn như AStyle hoặc ClangFormat. Đây là một câu hỏi có liên quan: stackoverflow.com/questions/841075/ từ
Dmitry

Để thụt lề, bạn có thể thực hiện nhanh hơn với lệnh prelude-cleanup-buffer-or-area . Sao chép định nghĩa chức năng và chế độ mở đầu-thụt lề-nhạy cảm trong của bạn init.el. Sau đó liên kết lệnh với một khóa như C-c ivà sử dụng nó bất cứ khi nào bạn muốn thụt lề mà không di chuyển con trỏ đi nơi khác.
Từ Đỗ

Câu trả lời:


8

Bạn có thể sử dụng ClangFormat để đạt được điều này. Sau khi cài đặt clang-formatcông cụ, bạn có thể sử dụng clang-format.elđể thực hiện các hành động thích hợp từ emacs. clang-format.elcũng có sẵn từ MELPA . Các lệnh emacs được cung cấp là clang-format-bufferclang-format-regionbạn có thể liên kết khi bạn cần. Lưu ý rằng bạn có thể tùy chỉnh các tùy chọn định dạng bằng cách sử dụng .clang-formattệp nằm trong thư mục tổ tiên.


Ah, vậy là sự tích hợp đã tồn tại. Tuy nhiên, lưu ý rằng MELPA phân phối một phiên bản khác (dường như mới hơn) so với phiên bản bạn đã liên kết.
Dmitry

Clang-Format thực sự là một công cụ tuyệt vời, được tích hợp tốt vào Emacs. Để có liên kết giống như trong Eclipse, bạn có thể sử dụng cách sau trong hook chế độ C / C ++ của mình (define-key c-mode-base-map (kbd "C-S-f") 'clang-format-region). Trong các phiên bản gần đây clang-formatcũng hỗ trợ một số ngôn ngữ khác như Javascript và Java, hãy xem LanguageKind trong trang này: clang.llvm.org/docs/ClangFormatStyleOptions.html
Guillaume Papin

Được rồi, điều này hoạt động gần như tốt, chỉ có một điểm yếu: không gian trong các góc đóng trong các đối số mẫu lồng nhau được loại bỏ: List<pair<int, int> >->List<pair<int, int>> //Error!
Monkey Supersonic

@ user3000316 Kiểm tra các tùy chọn cho giá trị cấu hình "Tiêu chuẩn" tại đây . Bạn có thể thiết lập nó Cpp03để khắc phục vấn đề này.
Pradhan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.