我一直在使用Emacs来创建和修改Verilog代码。 但是,在Verilog模式下,当我尝试使用emacs命令插入“if”语句时,我遇到了一个小问题:
C-c C-t ?
以下是在上述场景中如何创建语句的示例:
if (a<b) begin
// the rest of the code
但是我需要emacs在下一行插入“begin”,如下所示:
if (a<b)
begin
//rest of the code
在深入了解可用的Verilog自定义选项后,我发现了一个名为Verilog Indent Begin After If
的选项,我认为该选项可以产生上述效果。但是,切换此选项并没有给我任何明显的变化。
非常感谢任何帮助。
答案 0 :(得分:3)
查看代码,您将看到函数:
(define-skeleton verilog-sk-if
"Insert a skeleton if statement."
> "if (" '(verilog-sk-prompt-condition) & ")" " begin" \n
> _ \n
> (- verilog-indent-level-behavioral) "end " \n )
实际上定义了一个骨架。只需复制粘贴并添加另一个换行符:
(define-skeleton my-verilog-sk-if
"Insert a skeleton if statement."
> "if (" '(verilog-sk-prompt-condition) & ")" \n " begin" \n
> _ \n
> (- verilog-indent-level-behavioral) "end " \n )
现在我们只需要在verilog-mode中挂钩我们的旧函数:
(add-hook 'verilog-mode-hook
'(lambda ()
;; this is quite the hack because we don't respect
;; the usual prefix of verilog-mode but sufficient for us
(define-key verilog-mode-map "\C-c\C-t?"
'my-verilog-sk-if)))