gpt4 book ai didi

c - emacs 中 C 函数调用的语法高亮显示

转载 作者:太空狗 更新时间:2023-10-29 17:18:45 26 4
gpt4 key购买 nike

我在 emacs 中为 C 使用自定义语法突出显示主题,但我错过了突出显示函数调用的可能性。例如:

int func(int foo)
{
return foo;
}

void main()
{
int bar = func(3);
}

在这个例子中有什么方法可以突出显示对“func”的调用吗?宏是否也突出显示并不重要。 if、switch 或 sizeof 等关键字不应匹配。

谢谢!

最佳答案

关键字列表中条目的顺序很重要。因此,如果您将条目放在突出显示关键字和函数声明的条目之后,这些将不会匹配。

(font-lock-add-keywords 'c-mode
'(("\\(\\w+\\)\\s-*\("
(1 rumpsteak-font-lock-function-call-face)))
t)

或者,您可以使用函数而不是正则表达式作为 MATCHER。如果您已经准确说明了您的要求,但在更困难的情况下很有用,那么您的问题就太过分了。未经测试(事实上,直接在浏览器中输入,所以我什至不保证平衡括号)。

(defun rumpsteak-match-function-call (&optional limit)
(while (and (search-forward-regexp "\\(\\w+\\)\\s-*\(" limit 'no-error)
(not (save-match-data
(string-match c-keywords-regexp (match-string 1))))
(not (save-excursion
(backward-char)
(forward-sexp)
(c-skip-whitespace-forward)
(or (eobp) (= ?\{ (char-after (point)))))))))
(font-lock-add-keywords 'c-mode
'((rumpsteak-match-function-call
(1 rumpsteak-font-lock-function-call-face))))

关于c - emacs 中 C 函数调用的语法高亮显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com