在verilog编写代码时,可能模块列表太长,或者变量定义列表太长,不容易看到代码的重点。用代码折叠功能可以大方便的看代码、编写代码的效率。
配置方法
下面是emacs自带hide/show
的配置方法,verilog-mode
除了默认的module port列表、注释等折叠规则,需要再定义几个折叠关键词,比如begin
/end
、task
/endtask
等。
;; define verilog hide/show keywords
(setq hs-special-modes-alist
(cons '(verilog-mode "\\<begin\\>\\|\\<case\\>\\|\\<task\\>\\|\\<function\\>\\|\\<class\\>\\|("
"\\<end\\>\\|\\<endcase\\>\\|\\<endtask\\>\\|\\<endfunction\\>\\|\\<endclass\\>\\|)"
nil
verilog-forward-sexp-function)
hs-special-modes-alist))
(add-hook 'verilog-mode-hook 'hs-minor-mode)
菜单和快捷键
配置好后,当打开verilog文件时,就会出现hideshow菜单,如下。常用的有Hide All
、Show All
、Toggle Hiding
等。
其中,Toggle Hiding
最为常用,可以再绑定到全局快捷键,比如Windows
+`\`。
(global-set-key (kbd "s-\\") 'hs-toggle-hiding)
选中文本的折叠
有时候只是想折叠指定的几行,并没有特定的语法标记。
这时就需要用到另一个库fold-this
。从github(https://github.com/magnars/fold-this.el)下载,配置如下。
(add-to-list 'load-path "~/.emacs.d/fold-this.el")
(require 'fold-this)
配置好之后,选中一段文字,再执行M-x fold-this
,就可以看到这段代码被折叠了。如下:
[[...]]
在折叠区域按C-g
或M-x fold-this-unfold-at-point
即可以展开。