2010-04-19 84 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)函數將它們設置爲緩衝區。