Pul*_*mon 1 emacs verilog emacs23
我对 emacs 很陌生(使用版本 23.3),我想设置默认 Tab 键以在 verilog 模式下插入 3 个空格而不是制表符。我确实在堆栈溢出中找到了许多关于此的帖子。他们之中有一些是: -
但它们似乎不能在 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)
Run Code Online (Sandbox Code Playgroud)
如果我尝试编辑文本文件,则设置会完美运行并插入 3 个空格而不是制表符。但是,当我尝试编辑 verilog 文件 (.v) 时,它仍会插入一个制表符。我可以选择整个文本并执行 Mx untabify 以获得所需的结果,但还有另一种直接的解决方案吗?
在钩子中,您应该使用setq
而不是setq-default
,因此您需要将钩子重写为:
(defun my-verilog-hook ()
(setq indent-tabs-mode nil)
(setq tab-width 3))
(add-hook 'verilog-mode-hook 'my-verilog-hook)
Run Code Online (Sandbox Code Playgroud)
PS 最好在 hooks 中使用专用函数,因为更容易改变它们,你也可以从 hooks 中移除它们