如何给自定义标号增加颜色?

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应该怎么判断?

研究我写的 https://github.com/manateelazycat/bison

猫哥,你这个方法只能匹配符合正则表达式规则的。

如果表达式内容是动态改变的怎么做呢?

就是说我定义了一个变量,定义的时候可以根据规则添加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)))

这是哪里有问题,帮忙给断断?

顶下,为什么写死一个表达式就可以。使用函数就报错?