2011-12-12 61 views
8

我使用惡,這得到了惡偏移寬度設定爲緩衝局部壓痕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) 

我想惡移寬度設置爲緩衝器本地縮進寬度(可變indent)。

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

我錯過了什麼?

+1

你錯過了'(setq ...)'形式的一對括號,並且澄清了你想要或希望得到的'indent'。 – tripleee

+0

@tripleee希望它有幫助。 – Reactormonk

+1

會發生什麼,你期望發生什麼? 'indent'從何而來?何時設置? – nschum

回答

17

沒有更多的信息,我相信我理解這個問題是這種願望是evil-shift-widthpython-mode和2 ruby-mode(兩個例子)被設置爲4,但它始終設置爲2

這種情況下的問題來自於Emacs中沒有全局定義indent,當然也沒有在python-mode中定義。在python-mode中有一個變量python-indent,它被設置爲4,這是要使用的變量。

雖然討厭不得不使用自定義變量對每個主要模式,這就是每個模式的實際使用,而這可能是將實際工作的解決方案:

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

添加了一個新的您需要支持的每個主要模式。