2011-02-04 9 views
5

Sprawdziłem w python-mode i python.el. Używam Pythona-mode.el. Używam też lin i ropemaków. Szukam albo dokumentacji na temat tych, które mi pomaga, lub inny pakiet elisp lub coś.Edytowanie Pythona w Emacs

Mój obecny problem polega na tym, że otrzymany kod ma niespójne rozmiary wcięć. W przypadku niektórych bloków będzie to dwa, dla niektórych będzie to 4. Chcę to wyczyścić, ale Z jakiegoś powodu, kiedy mówię emacsowi "fix wcięcia", po prostu uderza on w kartę każdego wiersza, co powoduje, że kod zostaje wkręcony. To, czego chcę, to zachować takie samo względne wcięcie, ale standaryzować na 4 przestrzeniach. Czy cokolwiek pozwoli mi to łatwo zrobić?

Przypuszczam, że mogłem znaleźć każde wystąpienie złego wcięcia, zablokować je i zastąpić zapytanie 2 miejscami o 4 spacje. Ale to trochę zależy od mojej precyzji, zauważając, gdzie należy to zrobić. Poza tym jest dużo kodu.

Ktoś powiedział mi, że mechanik rowerowy rozwiąże ten problem, ale od kilku lat nie ma go w tej dziedzinie ... Jakieś inne sugestie?

dzięki.

+3

naprawdę nie odpowiedź emacs, ale może być zainteresowany [w tej odpowiedzi Alex Martelli] (http://stackoverflow.com/questions/1024435/howto-fix-python-wcięcie/1024489 # 1024489). –

+0

Dzięki! to przynajmniej rozwiązuje jeden problem! –

Odpowiedz

0

Zakładając, że użyłeś komentarza Svena Marnacha do oczyszczenia bazy kodu, zgaduję, że potrzebujesz tylko, aby python-mode.el używał preferowanego stylu wcięcia?

Sprawdź zmienne py-indent-offset i py-smart-indentation (i być może także py-continuation-offset i py-honor-comment-indentation). Podobnie jak normalne indent-tabs-mode.

Można też dostosować je (M-xcustomize-groupRETpythonRET) lub dodać funkcję niestandardową do python-mode-hook. np .:

(add-hook 'python-mode-hook 'my-python-mode-hook) 
(defun my-python-mode-hook() 
    (setq indent-tabs-mode nil 
     py-smart-indentation nil 
     py-indent-offset 4)) 
+0

tak, myślę, że 4 jest domyślne i tego właśnie chcę. To bardziej kwestia wykorzystania sugestii Svena i posiadania narzędzi do łatwiejszego przenoszenia bloków kodu ... –

-1
(custom-set-variables 
    ... 
    '(indent-tabs-mode nil) 
    '(tab-stop-list (quote (4 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120))) 
    '(tab-width 4)) 

Oczywiście są globalne ustawienia dla trybów że ich honor (który python-mode robi). Nie kręciłem się z ustawieniami wcięć w trybie Pythona.