我想在这个verilog代码示例中对齐注释/内联注释。我计划通过突出显示区域并执行M-x align来分别对齐每个部分。我发现lisp代码可以对齐verilog代码,并且运行得很好,但是我无法获得注释来对齐我的生命。我开始认为在align模式下它被禁用了。
module spi_jstk (
input clk, // System Clock (40MHz)
input reset, // Async Reset
input START, // Initialize SPI Transfer
input [39:0] DATA, // Input Data to Transfer
input SS, // Chip Select
output SCLK, // Serial Clock
output NEW, // NEW SIGNAL
input MISO, // Master In Slave Out
output MOSI ); // Master Out Slave In
test0 = signal; // comment
test = signal; // comment
test1 = signal; // comment
test11 = signal; // comment
//
//
//
endmodule下面是elisp:
(defcustom align-verilog-rules-list
`(
(verilog-declaration
(regexp . "\\(logic\\|input\\|output\\|inout\\|wire\\|reg\\)\\s-*\\(\\s-+[[][^]]+[]]\\|reg\\|\\)\\(\\s-+\\)")
(group . (3)))
(verilog-asgn_param
(regexp . "\\(assign\\|parameter\\)\\(\\s-+\\)\\S-")
(group . (2)))
(verilog-assign
(regexp . "\\S-+\\(\\s-*\\)[!=><]+\\(\\s-*\\)\\S-")
(group . (1 2)))
(verilog-ports-no-comment
(regexp . "[.][a-zA-Z0-9_]+\\(\\s-+\\)\\S-")
(group . (1)))
;; Want to add code to align comments here.
)
"Verilog alignment rules."
:type 'align-rules-list-type
:group 'align)
(put 'align-verilog-rules-list 'risky-local-variable t)
(defun verilog-extras-hook ()
(setq align-mode-rules-list align-verilog-rules-list))
(add-hook 'verilog-mode-hook 'verilog-extras-hook t)
;; Align with spaces
(setq-default indent-tabs-mode nil)我需要添加什么才能对齐评论?
这里是奇怪的部分,我可以添加一个调用'align-regexp‘的函数来实现这个功能(见下文)。此外,当我将相同的regexp应用于上面的'align‘函数时,它不起作用。
使用'align-regexp‘可以工作:
(defun align-comments (beg end)
(interactive "r")
(align-regexp beg end "\\(\\s-*\\)//\\(\\s-*\\)" 1 1 t))我似乎遗漏了一些东西,因为我不能理解正则表达式,也不知道如何将它们应用到这些函数中。我已经在这个问题上挣扎了一段时间。
此外,如果它对任何人有帮助,以下是基于以下内容的原始代码:https://groups.google.com/forum/#!topic/gnu.emacs.help/odgMEJGd6Os
发布于 2014-04-30 09:03:07
到目前为止,我已经想出了这个(过时了,见下文):
(verilog-comment
(regexp . "\\S-+\\(\\s-*\\)[/]+\\(\\s-*\\)\\S-")
(group . (1 2)))这似乎几乎做了我想要的,但不适用于非内联注释( verilog代码底部的第三组注释)。
更新(最新!):
(verilog-comment
(regexp . "\\(\\s-*\\)[/]+\\(\\s-*\\)\\S-")
(group . (1 2)))由于某种原因,我似乎需要在一开始就去掉空格表达式\S-+。似乎混淆了emacs regexp的,这很奇怪,因为它看起来是有效的。无论如何,我发现了一个叫做M-x re-builder的很好的工具,它真的帮助可视化了地狱发生了什么。希望这对将来有帮助的人!
https://stackoverflow.com/questions/23377397
复制相似问题