W emacs, jak wyrównać nawiasy zamykające z początkiem linii otwierającej?

10

Domyślnym stylem wcięcia dla wywołań funkcji wieloliniowych w wielu trybach emacs jest wyrównanie zamykającego nawiasu okrągłego z innymi argumentami funkcji, a zatem:

function_one(
    arg1,
    arg2
    );

Wolałbym, aby nawias zamykający był wyrównany z początkiem linii zawierającej nawias otwierający. Na przykład:

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

Jak mam to zrobic?

mavit
źródło
Ignorowałem tę samą potrzebę lat ! Dzisiaj jest dzień, aby to naprawić.
Prof. Falken

Odpowiedzi:

12
  • Dla wielu trybów pochodzących z trybu CC (na przykład tryb c, tryb java, tryb php) dostosuj c-offsets-alist po to aby arglist-close jest ustawione na c-lineup-close-paren.
  • W trybie cperl dostosuj cperl-indent-parens-as-block do prawdy.
  • Dla trybu cperl ustaw GNU Emacs 24.3+ cperl-close-paren-offset na negatyw cperl-indent-level
  • Dla trybu perl w GNU emacs 24.3 i nowszych dostosuj perl-indent-parens-as-block do prawdy.
  • W trybie python to zachowanie występuje w GNU emacs 24.3 i nowszych.

Możesz dostosować zmienną, wpisując M-x customize-variable. Alternatywnie dodaj następujące linie do swojego ~/.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)
mavit
źródło
Czy jest jakiś sposób, aby to działało w trybie Pythona z Emacsem 23.1.1?
ishmael
Rozwiązaniem Emacsa 23.1.1 jest po prostu pobranie najnowszego python-mode.el tutaj . Rozpakuj go w katalogu ~ / .emacs.d, a następnie w pliku .emacs dodaj: (add-to-list 'load-path (expand-file-name "~/.emacs.d/python-mode.el-6.1.3")) (require 'python-mode)
ishmael
I jak mam to zrobić? do lub C ++ ?
Prof. Falken
Czy jest jakiś sposób na zdobycie inny styl w python-mode na Emacs> = 24.3?
mgalgs