我是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以获得所需的结果,但还有其他直接的解决方案吗?
答案 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。最好在钩子中使用专用函数,因为它更容易更改它们,你也可以从钩子中删除它们