[求助] org-roam的补全minibuffer在暗色主题下不太清晰

配置用的doom-emacs,补全用的是vertico套件,主题是doom-nord,补全的时候node的父heading的颜色偏暗,在暗色主题下看的不太清楚,不知道怎么调整。

另外,右边的@文件名字 好像有长度限制,不知道怎么调整。

多换几个主题试试啊,我也用的doom,也有这问题,换了主题后解决了

我试过几个暗色主题都有这个问题,不过换主题感觉有点过了,如果能找到控制这些颜色的face就更好了。

melpa.org-theme为关键字过滤后按下载量排序,一般用的人多的theme会比较成熟一点。多试几个。

你是不是自定义了 org-roam-node-display-template ?如果是的话,方便发一下这部分的代码吗?face 和 filename length 的设置应该都在里面。

是doom自定义的

(format "${doom-hierarchy:*} %s %s"
                (propertize "${doom-type:12}" 'face 'font-lock-keyword-face)
                (propertize "${doom-tags:42}" 'face 'org-tag))

两个face,但截图看起来有三种配色,这应该怎么修改啊?

我之前用sublime text, vim的时候都是用nord主题,用了很多年了,一路尝试过其他主题,但还是更喜欢nord。

你的配置里应该有个叫 org-roam-node-doom-hierarchy 函数,你可以用 C-h f 来找到它,这是用来生成 补全里的 heading 的

edit:

你用的是 Doom?那应该是这个:doomemacs/modules/lang/org/autoload/contrib-roam2.el at 07fca786154551f90f36535bfb21f8ca4abd5027 · doomemacs/doomemacs · GitHub

你可以修改里面的 face

这种代码要在配置里面重新覆盖定义org-roam-node-doom-hierarchy这个函数吧,改天试试,谢谢!

我修改face的设定,手动eval后能更改显示效果,但不知道怎么放在配置里面,放在(after! org-roam )里面好像不会自动执行,没有效果,放在外面又会提示org-roam-node错误,因为org-roam没有加载。

(cl-defmethod org-roam-node-doom-hierarchy ((node org-roam-node))
    "Return hierarchy for NODE, constructed of its file title, OLP and direct title.
If some elements are missing, they will be stripped out."
    (let ((title (org-roam-node-title node))
          (olp (org-roam-node-olp node))
          (level (org-roam-node-level node))
          (filetitle (org-roam-node-doom-filetitle node))
          (separator (propertize org-eldoc-breadcrumb-separator 'face 'italic)))
      (cl-case level
        ;; node is a top-level file
        (0 filetitle)
        ;; node is a level 1 heading
        (1 (concat (propertize filetitle 'face '(italic))
                   separator (propertize title 'face '(org-level-1))))
        ;; node is a heading with an arbitrary outline path
        (t (concat (propertize filetitle 'face '(italic))
                   separator (propertize (string-join olp separator) 'face '(italic))
                   separator (propertize title 'face '(org-level-1)))))))

不用 Doom ,我也不知道放哪里

换个名字吧,暂时先这么做。

(after! org-roam
  ;; use a new name
  (cl-defmethod org-roam-node-doom-hierarchy-mine ((node org-roam-node))
    "Return hierarchy for NODE, constructed of its file title, OLP and direct title.
If some elements are missing, they will be stripped out."
    (let ((title (org-roam-node-title node))
          (olp (org-roam-node-olp node))
          (level (org-roam-node-level node))
          (filetitle (org-roam-node-doom-filetitle node))
          (separator (propertize org-eldoc-breadcrumb-separator 'face 'italic)))
      (cl-case level
        ;; node is a top-level file
        (0 filetitle)
        ;; node is a level 1 heading
        (1 (concat (propertize filetitle 'face '(italic))
                   separator (propertize title 'face '(org-level-1))))
        ;; node is a heading with an arbitrary outline path
        (t (concat (propertize filetitle 'face '(italic))
                   separator (propertize (string-join olp separator) 'face '(italic))
                   separator (propertize title 'face '(org-level-1)))))))

  (setq org-roam-node-display-template
         ;; use a new name
        (format "${doom-hierarchy-mine:*} %s %s"
                (propertize "${doom-type:12}" 'face 'font-lock-keyword-face)
                (propertize "${doom-tags:42}" 'face 'org-tag))))

@分类 的长度还没有找到