2011-12-12 21 views
8

utilizo el mal, que tienedefinir el ancho de cambio mal a la sangría local al búfer en 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) 

me gustaría establecer el mal de cambio de ancho al ancho guión local al búfer (la variable indent).

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

¿Qué es lo que extrañé?

+1

Falta un par de paréntesis alrededor del formulario '(setq ...)' y una aclaración sobre lo que quiere o espera 'indent'. – tripleee

+0

@tripleee espero que ayude. – Reactormonk

+1

¿Qué sucede y qué esperas que pase? ¿De dónde viene el 'sangrado' y cuándo se establece? – nschum

Respuesta

17

Sin más información, creo entender que el problema es que el deseo es para evil-shift-width a ser 4 en python-mode y 2 en ruby-mode (para dos ejemplos), sin embargo, siempre se establece en 2.

El problema en este caso proviene del hecho de que indent no está definido globalmente en Emacs, y ciertamente no en python-mode. En python-mode hay una variable python-indent, que se establece en 4, y esa es la variable que se debe usar.

Mientras molesto tener que utilizar las variables personalizadas para cada uno de los principales modos, eso es lo que cada uno de los modos de utilizar realmente, y eso es probablemente la solución que realmente funciona:

(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)))) 

Adición de una nueva para cada modo principal que desee admitir.

Cuestiones relacionadas