一行开头的每组空格的正则表达式

时间:2013-07-08 07:32:16

标签: regex emacs elisp

我正在尝试修复emacs的highlight indentation模块的正则表达式。它目前的工作方式是每%s空格突出显示一次:

"\\( \\) \\{%s\\}"

以下是一些Verilog代码行为的示例结果:

enter image description here

当前正则表达式适用于每行开头的缩进。然而,存在不期望的伪像,即不在行开头的空间序列也与正则表达式匹配。 我想修改正则表达式以匹配上述行为,但仅限于行的开头。这就是我想要的东西(我必须手动绘制它):

enter image description here

这是我尝试过的。您可以从结果中看出行为不正确。

"^\\(\\( \\) \\{%s\\}\\) \\{1,\\}"

结果:

enter image description here

也试过

"^\\(\\( \\) \\{%s\\}\\)\\{1,\\}"

结果:

enter image description here

这是相关的代码,但我道歉这不是一个有效的例子。请使用上面的链接作为工作示例。

(set (make-local-variable 'highlight-indentation-current-regex)
     (format "\\( \\) \\{%s\\}" (- highlight-indentation-offset 1)))
(font-lock-add-keywords nil `((,highlight-indentation-current-regex
                               (1 'highlight-indentation-face))))

1 个答案:

答案 0 :(得分:1)

假设您当前的字体锁定规则如下:

(,highlight-indentation-current-regex (1 'highlight-indentation-face))

你可以使用

(,highlight-indentation-current-regex (1 (if (save-excursion (skip-chars-backward " \t") (bolp)) 'highlight-indentation-face)))