带有 Emacs 选项卡的自定义缩进模式

Ker*_* SB 1 tabs emacs

我喜欢 Emacs,但我的定制能力很弱,我很感激这方面的任何帮助。

我的默认设置是从不使用文字制表位 ( indent-tabs-mode nil)。但是,对于一个特定的项目,我确实需要使用制表位,并且我需要显示间距为 4(而不是默认的 8)的制表符,并且我希望将tab-stop-list其设为 4、8、12、...。

现在的问题是:如何定义(在我的~/.emacs.d)中可以M-x从我可能已经处于的任何模式中调用的单个函数,以便这些特定设置被这些要求覆盖?或者,如何使这些设置成为次要模式,我可以在给定的主要模式中选择激活该模式(比如一些虚构的 PHP 模式(我还没有找到))?

kin*_*ero 5

(setq-default 
          tab-width 4                                     ; Set tab stops
          tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44
                            48 52 56 60 64 68 72 76 80 84)
          )
Run Code Online (Sandbox Code Playgroud)

将其放入您的.emacs.d/init.el并用于M-i转到下一个选项卡位置

更新:

(defun my-tab-width ()
  "set tab-width as local variable"
  (interactive)
  (progn
    (set (make-local-variable 'tab-width) 4)
     (set (make-local-variable 'tab-stop-list)
     '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84))))
Run Code Online (Sandbox Code Playgroud)

以迭代方式调用此函数M-x或将其挂接到所需的模式以自动加载

(add-hook 'php-mode-hook 'my-tab-width)
Run Code Online (Sandbox Code Playgroud)