【问题标题】:set the evil shift width to the buffer-local indentation in emacs将邪恶的移位宽度设置为 emacs 中的缓冲区局部缩进
【发布时间】:2012-01-18 09:02:56
【问题描述】:

我用邪恶,得到了

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

我错过了什么?

【问题讨论】:

  • 您在(setq ...) 表单周围缺少一对括号,以及您想要或期望indent 是什么的说明。
  • @tripleee 希望对您有所帮助。
  • 会发生什么,您预计会发生什么? indent 来自哪里,何时设置?
  • indent 应该来自当前的主要模式,代表缩进宽度,python 为 4,ruby 为 2,依此类推。目前,对于 ruby​​,我将它设置为 2,但这对 python 来说很烦人。
  • 您尝试过使用最小的 .emacs 吗?是python模式的问题吗?

标签: emacs elisp evil-mode


【解决方案1】:

在没有更多信息的情况下,我相信我理解的问题是希望 evil-shift-widthpython-mode 中设置为 4,在 ruby-mode 中设置为 2(对于两个示例),但它始终设置为 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))))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多