如何设置emacs在verilog模式下使用3个空格而不是制表符?

时间:2011-11-28 12:43:58

标签: emacs verilog emacs23

我是emacs的新手(使用版本23.3),我想设置默认的tab键以在verilog模式下插入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 untabify以获得所需的结果,但还有其他直接的解决方案吗?

1 个答案:

答案 0 :(得分: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)

P.S。最好在钩子中使用专用函数,因为它更容易更改它们,你也可以从钩子中删除它们