2011-12-12 11 views
8

używam zła, który dostałustawić złego szerokość przejścia do lokalnego bufora wcięcia w emacs

(defcustom evil-shift-width 4 
    "The offset used by \\<evil-normal-state-map>\\[evil-shift-right] \ 
and \\[evil-shift-left]." 
    :type 'integer 
    :group 'evil) 

Chciałbym ustawić zło-Shift-szerokość do bufora lokalnego szerokości wcięcia (zmienna indent).

(add-hook 'after-change-major-mode-hook 
     (function (lambda() 
        (setq evil-shift-width indent)))) 

Czego mi brakowało?

+1

Brakuje pary nawiasów wokół formularza '(setq ...)' i wyjaśnienia, co chcesz lub czego można oczekiwać od "wcięcia". – tripleee

+0

@tripleee nadzieję, że to pomaga. – Reactormonk

+1

Co się dzieje i czego się spodziewać? Skąd pochodzi "indent" i kiedy jest ustawiony? – nschum

Odpowiedz

17

Bez więcej informacji, wierzę, rozumiem problem się, że pragnienie jest dla evil-shift-width być ustawiony na 4 w python-mode i 2 w ruby-mode (dla dwóch przykładów), ale to jest zawsze ustawiony na 2.

Problem w tym przypadku wynika z faktu, że indent nie jest zdefiniowany globalnie w Emacs, a na pewno nie w python-mode. W python-mode znajduje się zmienna python-indent, która jest ustawiona na 4, i która jest zmienną do użycia.

Choć irytujące musiał użyć zmiennych niestandardowych dla każdego z głównych trybów, to co każdy z trybów faktycznie korzysta, a to prawdopodobnie rozwiązanie, które faktycznie działa:

(add-hook 'python-mode-hook 
    (function (lambda() 
      (setq evil-shift-width python-indent)))) 
(add-hook 'ruby-mode-hook 
    (function (lambda() 
      (setq evil-shift-width ruby-indent-level)))) 

Dodanie nowego jeden dla każdy tryb główny, który ma być obsługiwany.

Powiązane problemy