Asm模式下的Emacs缩进

Asm模式下的Emacs缩进,emacs,indentation,Emacs,Indentation,我正在寻找与c-indent-level和ruby-indent-level等效的asm模式。也就是说,我想强制缩进到4个空格,我想用空格替换它们 我所看到的告诉我它在asm模式下并不存在。有人能告诉我这是错的吗 我也试过:,没有av 我试过: (setq tab-width 4) (setq indent-line-function 'insert-tab) (setq asm-indent-level 4) 然而,这是可行的: (custom-set-variables '(tab-st

我正在寻找与
c-indent-level
ruby-indent-level
等效的
asm模式
。也就是说,我想强制缩进到4个空格,我想用空格替换它们

我所看到的告诉我它在asm模式下并不存在。有人能告诉我这是错的吗

我也试过:,没有av

我试过:

(setq tab-width 4)
(setq indent-line-function 'insert-tab)
(setq asm-indent-level 4)
然而,这是可行的:

(custom-set-variables
 '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))))

但是我想知道是否有一种方法可以仅为
asm模式定义它。如果我想保留其他模式的默认选项卡行为,该怎么办?

asm模式使用功能选项卡停止,这就是选项卡停止列表工作的原因。据我所知,你已经无能为力了。您可能会考虑使用一些“更高级”的ASM模式,例如-OR或

< P> Emacs定义每个主要模式的钩子。如果您在汇编文件中执行H-m,您可以在文本部分的末尾看到,汇编程序模式挂钩被称为“asm模式挂钩”。因此,当为缓冲区选择汇编程序模式时,您可以添加要运行的代码,如下所示:

(add-hook 'asm-mode-hook (lambda()
                           (setq tab-width 4)
                           (setq indent-line-function 'insert-tab)
                           (setq asm-indent-level 4)))
注意,制表符宽度和缩进行函数已经是缓冲区局部变量,因此设置它们只会更改当前缓冲区的值。这可能是你想要的。如果您设置了一些其他变量,您可能希望使用(make variable buffer local variable)函数将它们设置为buffer local