Asm模式下的Emacs缩进

时间:2010-04-19 15:17:22

标签: emacs indentation

我正在为c-indent-level寻找等效的ruby-indent-levelasm-mode。也就是说,我想将缩进强制为4个空格,我希望将它们替换为空格。

我看到的内容告诉我,asm-mode不存在。有人可以告诉我这是错的吗?

我也尝试了这个:Set 4 Space Indent in Emacs in Text Mode,没有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-mode定义。如果我想保留其他模式的默认选项卡行为怎么办?

2 个答案:

答案 0 :(得分:2)

asm-mode使用indentation的tab-to-tab-stop功能,这就是tab-stop-list正常工作的原因。据我所知,你无能为力。您可以考虑使用一些“更高级”的asm模式,例如 - gas-modeasm86-mode

答案 1 :(得分:0)

Emacs为每个(?)主要模式定义了挂钩。如果在汇编文件中执行H-m,则可以在文本末尾部分看到汇编器模式挂钩被称为“asm-mode-hook'”。因此,您可以添加代码,以便在为这样的缓冲区选择汇编程序模式时运行:

(add-hook 'asm-mode-hook (lambda()
                           (setq tab-width 4)
                           (setq indent-line-function 'insert-tab)
                           (setq asm-indent-level 4)))

注意,tab-width和indent-line-function已经是缓冲区局部变量,因此设置它们只会为当前缓冲区更改其值。这可能就是你想要的。如果你设置一些其他变量,你可能想让它们使用(make-variable-buffer-local VARIABLE)函数缓冲局部。