Emacs'ta kapanış parantezlerini açılış çizgisinin başlangıcıyla nasıl hizalarım?


11

Birçok emacs modunda çok hatlı işlev çağrıları için varsayılan girinti stili, kapanış yuvarlak köşeli ayracı diğer bağımsız değişkenlerle işleve hizalamaktır, böylece:

function_one(
    arg1,
    arg2
    );

Kapatma braketi, açılış braketini içeren çizginin başlangıcı ile hizalanmışsa bunu tercih ederim. Örneğin:

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

Bunu nasıl yaparım?


1
Ben aynı dürtü görmezden edilmiştir yıllar ! Bugün bunu düzeltmenin günü.
Prof. Falken sözleşmesi

Yanıtlar:


12
  • CC Modu türetilen bir çok tarzda için (örneğin, c-mod, java modunda, PHP mod için), özelleştirmek c-offsets-alistböylece arglist-closeayarlanır c-lineup-close-paren.
  • Cperl modu cperl-indent-parens-as-blockiçin true olarak özelleştirin .
  • Cperl-mod için, GNU Emacs 24.3+, set cperl-close-paren-offsetnegatifinecperl-indent-level
  • GNU emacs 24.3 ve üzerindeki perl modu perl-indent-parens-as-blockiçin true değerine özelleştirin .
  • Python modu için bu davranış GNU emacs 24.3 ve daha üstü sürümlerde bulunur.

Bir değişkeni yazarak özelleştirebilirsiniz M-x customize-variable. Alternatif olarak, aşağıdaki satırları ekleyin ~/.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)

Bunu Emacs 23.1.1 ile python modunda çalıştırmanın herhangi bir yolu var mı?
ishmael

Emacs 23.1.1 için çözüm, en son python modunu elde etmektir . Burada . ~ / .Emacs.d dizininizdeki yıldız işaretini kaldırın, ardından .emacs dosyanıza şunu ekleyin:(add-to-list 'load-path (expand-file-name "~/.emacs.d/python-mode.el-6.1.3")) (require 'python-mode)
ishmael

Ve bu çalışmayı C veya C ++ ile nasıl yapabilirim ?
Prof. Falken sözleşmesi

Emacs> = 24.3'te diğer stili python-modebulmanın bir yolu var mı ?
mgalgs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.