Як я можу вирівняти дужки, що закриваються, із початковим рядком відкриття?


11

Стиль відступу за замовчуванням для багаторядкових викликів функцій у багатьох режимах emacs полягає у вирівнюванні круглої дужки, що закривається, з іншими аргументами функції, таким чином:

function_one(
    arg1,
    arg2
    );

Я вважаю за краще, якщо дужка закриття вирівняна з початком рядка, який містить дужку відкриття. Наприклад:

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

Як це зробити?


1
Я ігнорую той самий заклик роками ! Сьогодні день, щоб це виправити.
Контракт професора Фолкена порушив

Відповіді:


12
  • Для багатьох режимів, похідних від режиму CC (наприклад, c-mode, java-mode, php-mode), налаштуйте c-offsets-alistтак, щоб arglist-closeбуло встановлено значення c-lineup-close-paren.
  • Для режиму cperl налаштуйте cperl-indent-parens-as-blockна true.
  • Для режиму cperl, GNU Emacs 24.3+ і встановлено cperl-close-paren-offsetмінус значенняcperl-indent-level
  • Для режиму perl в GNU emacs 24.3 і більше налаштовуйте perl-indent-parens-as-blockна true.
  • Для режиму python така поведінка знаходиться у GNU emacs 24.3 та більше.

Ви можете налаштувати змінну, ввівши M-x customize-variable. Крім того, додайте до свого рядка такі рядки ~/.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)

Чи є спосіб змусити це працювати в python-режимі з Emacs 23.1.1?
ishmael

Рішенням для Emacs 23.1.1 є просто отримати найновіший python-mode.el тут . Зніміть його у каталозі ~ / .emacs.d, а потім у вашому файлі .emacs, додайте це:(add-to-list 'load-path (expand-file-name "~/.emacs.d/python-mode.el-6.1.3")) (require 'python-mode)
ishmael

І як мені зробити цю роботу на C або C ++ ?
Контракт професора Фолкена порушив

Чи є спосіб отримати інший стиль python-modeна Emacs> = 24.3?
mgalgs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.