我想做elisp相当于
<font color="red">normal<b>bold</b></font>
我试过了
(propertize (concat "normal"
(propertize "bold" 'font-lock-face
'(:weight bold)))
'font-lock-face '(:foreground "red"))
然而,“红色”财产覆盖了“大胆”的财产,我最终得到了
#("normalbold" 0 6
(font-lock-face
(:foreground "red"))
6 10
(font-lock-face
(:foreground "red")))
它可行吗?
谢谢!
最佳答案 我不认为使用elisp提供的功能可以完成嵌套.
The docs建议单独对字符串的每个部分进行属性化,然后将它们连接起来:
“
要在字符串的各个部分放置不同的属性,可以使用properties来构造每个部分,然后将它们与concat组合:
(concat
(propertize "foo" 'face 'italic
'mouse-face 'bold-italic)
" and "
(propertize "bar" 'face 'italic
'mouse-face 'bold-italic))
⇒ #("foo and bar"
0 3 (face italic mouse-face bold-italic)
3 8 nil
8 11 (face italic mouse-face bold-italic))
“
在您的情况下,它看起来像:
(concat (propertize "normal" 'font-lock-face '(:foreground "red" ))
(propertize "bold" 'font-lock-face '(:foreground "red" :weight bold)))
如果不了解您的用例,我无法确定这对您有用.如果不能,您可以尝试使用add-text-properties(也在文档中描述),您可以使用它来有状态地修改字符串的文本属性.