2011-11-28 110 views
1

我是emacs的新手(使用版本23.3),我想設置默認的tab鍵,以在verilog模式下插入3個空格而不是tab字符。我在堆棧溢出中找到了許多關於這個的帖子。其中一些是: -如何在verilog模式下設置emacs使用3個空格而不是製表符?

How To Force spaces instead of tabs regardless of major mode

Why might my Emacs use spaces instead of tabs?

Emacs global configuration of tabs

但他們似乎並不用Verilog模式下工作。這是我的.emacs文件看起來像

(custom-set-variables  
'(tab-stop-list ('(3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111 114 117 120))) 
'(verilog-case-indent 3)  
'(verilog-indent-level-directive 0) 
'(verilog-indent-level 3)  
'(verilog-tab-always-indent nil)) 
(custom-set-faces 
) 
(add-hook 'after-change-major-mode-hook 
      '(lambda() 
      (setq-default indent-tabs-mode nil) 
      (setq tab-width 3))) 

(setq-default indent-tabs-mode nil) 
(setq-default tab-width 3) 
(setq-default standard-indent 3) 

如果我嘗試編輯一個文本文件,安裝完美的作品,並插入3個空格,而不是一個標籤。但是,當我嘗試編輯verilog文件(.v)時,它仍會插入製表符。我可以選擇整個文本,並做M-x unabify以獲得所需的結果,但有沒有另一種直接的解決方案?

回答

4

在鉤子,你應該使用setq代替setq-default,所以你需要你的鉤子改寫爲這樣的:

(defun my-verilog-hook() 
    (setq indent-tabs-mode nil) 
    (setq tab-width 3)) 
(add-hook 'verilog-mode-hook 'my-verilog-hook) 

附:最好在鉤子中使用專用函數,因爲它更容易更改它們,並且還可以將它們從鉤子中移除它們

+0

感謝Alex,但我仍然有問題。通過不同的選項瀏覽,我找到了4個選項,名爲1)Verilog auto hook,2)Verilog在自動掛鉤之前3)verilog刪除自動掛鉤,4)verilog在刪除自動掛鉤之前。我應該改變這些值使它工作嗎?\ – Pulimon

+0

這很奇怪 - 我只是再次檢查這個函數(從bzr gnu emacs 24),當我設置'indent-tabs-mode'爲't',那麼我得到源代碼中的標籤,但是當我將它設置爲'nil',然後我得到空間... 你可以檢查 - 也許你有一些鉤子,這是Emacs init代碼的一部分? 'verilog-mode-hook'中列出了哪些函數? –

+0

好吧,我檢查了'verilog-mode-hook',它說'my-verilog-hook'問題依然存在。 Btb我使用emacs 23.3版,從[emacs官方網站](http://www.gnu.org/s/emacs/)下載。可能是一個在版本24中得到修復的bug。是的,我確實得到了一個臨時工作[在這裏](http://www.veripool.org/issues/345-Verilog-mode-can-t-get-untabify-保存到工作)這似乎工作正常。當我保存文件時,製表符將被轉換爲空格 – Pulimon

相關問題