2010-04-19 81 views
3

我在查找相当于c-indent-levelruby-indent-level,对于asm-mode。也就是说,我想强制缩进到4个空格,并且我希望它们被替换为空格。Emacs在Asm模式下的缩进

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

我也试过这个: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

asm-mode使用功能tab-to-tab-stop indentation,这就是为什么tab-stop-list正在工作。据我所知,除此之外你无能为力。您可能会考虑使用某些“更高级”asm模式,例如 - gas-modeasm86-mode

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

注意,标签宽度和缩进线功能已经缓冲局部变量,所以设置它们只是改变自己的价值为当前缓冲区。这可能是你想要的。如果你设置了一些其他变量,你可能想使用(make-variable-buffer-local VARIABLE)函数将它们设置为缓冲区。