section sec_a
length dd prog_end - section.sec_a.start
section sec_b
prog_end:
我使用了nasm-mode,在定义标号的时有face。但是在程序中使用的时候就是默认的字符颜色了。
想要让在使用时如:length dd prog_end - section.sec_a.start
也显示跟标号一样的face应该怎么做?
另外,像section.sec_a.start
这样的语句也想给一个face应该怎么判断?
猫哥,你这个方法只能匹配符合正则表达式规则的。
如果表达式内容是动态改变的怎么做呢?
就是说我定义了一个变量,定义的时候可以根据规则添加face。但是在其他地方用的时候也想让带上face。
我想的是把所有的label遍历一遍存到临时变量里。然后在生成一个正则表达式进行匹配,但是不生效。
(defun asm--find-labels()
"Find lables."
(interactive)
(save-excursion
(save-restriction
(let* ((exist-label-list '())
(lstr))
(goto-char (point-min))
(while (re-search-forward "[0-9 a-z A-Z \. _]+:$" nil t)
(c-remove-font-lock-face
(car (bounds-of-thing-at-point 'symbol))
(cdr (bounds-of-thing-at-point 'symbol)))
(setq lstr (substring (thing-at-point 'symbol)
0
(- (length (thing-at-point 'symbol)) 1)))
(setq exist-label-list (cons lstr exist-label-list)))
exist-label-list) ;; let
)) ;; save
)
(add-hook 'nams-mode '(lambda()
(font-lock-add-keywords
nil
'(("section\\.[0-9 a-z A-Z \. ]+"
.
'nasm-section-name)
((regexp-quote (regexp-opt (asm--find-labels) 'symbols))
.
'nasm-labels)
))
)
没效果。反到报错
Error during redisplay: (jit-lock-function 1) signaled (invalid-function (regexp-quote (regexp-opt (asm--find-labels) 'symbols)))
这是哪里有问题,帮忙给断断?
顶下,为什么写死一个表达式就可以。使用函数就报错?