10

我用邪恶,它得到了

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

我想将 evil-shift-width 设置为缓冲区局部缩进宽度(变量indent)。

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

我错过了什么?

4

1 回答 1

20

在没有更多信息的情况下,我相信我理解的问题是欲望evil-shift-width被设置为 4 英寸python-mode和 2 英寸ruby-mode(对于两个示例),但它始终设置为 2。

这种情况下的问题来自indent于 Emacs 中没有全局定义的事实,当然也没有在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))))

为您想要支持的每个主要模式添加一个新的。

于 2011-12-19T23:55:49.613 回答