Di emacs, bagaimana cara menyelaraskan tanda kurung dengan awal baris pembuka?


11

Gaya indentasi default untuk panggilan fungsi multi-line dalam banyak mode emacs adalah untuk menyelaraskan braket putaran penutup dengan argumen lain ke fungsi, dengan demikian:

function_one(
    arg1,
    arg2
    );

Saya lebih suka jika braket penutup sejajar dengan awal baris yang berisi braket pembuka. Sebagai contoh:

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

Bagaimana saya melakukan ini?


1
Saya telah mengabaikan dorongan yang sama selama bertahun - tahun ! Hari ini adalah hari untuk memperbaikinya.
Kontrak Prof. Falken dilanggar

Jawaban:


12
  • Untuk banyak mode yang berasal dari Mode CC (misalnya, mode-c, mode java, mode-php), sesuaikan c-offsets-alistsehingga arglist-closediatur ke c-lineup-close-paren.
  • Untuk mode cperl, sesuaikan cperl-indent-parens-as-blockke true.
  • Untuk mode-cperl, GNU Emacs 24.3+, setel cperl-close-paren-offsetke negatif daricperl-indent-level
  • Untuk perl-mode di GNU emacs 24.3 dan lebih tinggi, sesuaikan perl-indent-parens-as-blockke true.
  • Untuk mode python, perilaku ini ditemukan di GNU emacs 24.3 dan lebih tinggi.

Anda dapat mengubahsuaikan variabel dengan mengetik M-x customize-variable. Atau, tambahkan baris berikut ke ~/.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)

Apakah ada cara agar ini berfungsi dalam mode python dengan Emacs 23.1.1?
ishmael

Solusi untuk Emacs 23.1.1 adalah hanya untuk mendapatkan python-mode.el terbaru di sini . Untar itu di direktori ~ / .emacs.d Anda, lalu di file .emacs Anda, tambahkan ini:(add-to-list 'load-path (expand-file-name "~/.emacs.d/python-mode.el-6.1.3")) (require 'python-mode)
ishmael

Dan bagaimana cara membuat ini bekerja di C atau C ++ ?
Kontrak Prof. Falken dilanggar

Apakah ada cara untuk mendapatkan style lain di python-modeEmacs> = 24.3?
mgalgs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.