Trong emacs, làm cách nào để căn chỉnh dấu ngoặc đơn khi bắt đầu dòng mở đầu?


11

Kiểu thụt lề mặc định cho các lệnh gọi hàm đa dòng trong nhiều chế độ emacs là căn chỉnh khung tròn đóng với các đối số khác cho hàm, do đó:

function_one(
    arg1,
    arg2
    );

Tôi thích nó hơn nếu khung đóng được căn chỉnh với điểm bắt đầu của dòng có chứa khung mở. Ví dụ:

function_one(
    function_two(
        f2_arg1,
        f2_arg2
    ),
    f1_arg2,
    f1_arg3
);

Làm thế nào để tôi làm điều này?


1
Tôi đã bỏ qua cùng một sự thôi thúc trong nhiều năm ! Hôm nay là ngày để sửa nó.
Hợp đồng của giáo sư Falken vi phạm

Câu trả lời:


12
  • Đối với nhiều chế độ có nguồn gốc từ Chế độ CC (ví dụ: chế độ c, chế độ java, chế độ php), hãy tùy chỉnh c-offsets-alistđể arglist-closeđược đặt thành c-lineup-close-paren.
  • Đối với chế độ cperl, tùy chỉnh cperl-indent-parens-as-blockthành đúng.
  • Đối với chế độ cperl, GNU Emacs 24.3+, được đặt thành cperl-close-paren-offsetâm củacperl-indent-level
  • Đối với chế độ perl trong GNU emacs 24.3 trở lên, hãy tùy chỉnh perl-indent-parens-as-blockthành true.
  • Đối với chế độ python, hành vi này được tìm thấy trong GNU emacs 24.3 trở lên.

Bạn có thể tùy chỉnh một biến bằng cách gõ M-x customize-variable. Ngoài ra, thêm các dòng sau vào ~/.emacs:

(add-to-list 'c-offsets-alist '(arglist-close . c-lineup-close-paren))
(setq cperl-indent-parens-as-block t)
(setq perl-indent-parens-as-block t)

Có cách nào để làm việc này ở chế độ python với Emacs 23.1.1 không?
ishmael

Giải pháp cho Emacs 23.1.1 chỉ đơn giản là lấy python-mode.el mới nhất tại đây . Bỏ nó trong thư mục ~ / .emacs.d của bạn, sau đó trong tệp .emacs của bạn, thêm cái này:(add-to-list 'load-path (expand-file-name "~/.emacs.d/python-mode.el-6.1.3")) (require 'python-mode)
ishmael

Và làm thế nào để tôi thực hiện công việc này trong C hoặc C ++ ?
Hợp đồng của giáo sư Falken vi phạm

Có cách nào để có được kiểu khác trong python-modeEmacs> = 24.3 không?
mgasms
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.