В emacs, как мне выровнять закрывающие скобки с началом открывающей строки?


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-mode в 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?
Измаил

Решение для 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-modeEmacs> = 24.3?
mgalgs
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.