Hello,最近想把 Org mode 正文、标题的字体设置成 variable-pitch,更多一点『文档』的感觉, 而让 code、table 等部分还是保持 fixed-pitch。
我找到了这个 package:mixed-pitch。其实就能够完全满足我的需求了,但只有一个地方很苦恼:开启 mixed-pitch-mode 之后,company 的 auto completion 的候选词变得乱七八糟。
不知道是不是 company auto-completion 的这个部分也变成了 variable-pitch 所导致的,或者有没有什么办法能够把这个部分也加入到 mixed-pitch 的 mixed-pitch-fixed-pitch-faces 里呢?
用company-box或者company-posframe
1 个赞
对,我也发现了,原来 mixed-pitch GitLab 页面下面就有说……谢谢!现在完全 OK 了。
其实并没有完全解决,company-box 感觉不是很好用,auto-completion 的候选词背景框老是适配不完善,要么大要么小,没有适当填充到所有候选词。而且时不时还会遮挡住光标所在的地方。scroll bar 也太粗,并且在往下滚动选词的时候,时不时从贴在右边的状态往左跳一下。还是 company-posframe 比较好用。
如果你的目的只是想要在 org-mode 里有 variable-pitch 的话,我觉得你不应该用
mixed-pitch 这个包。它把事情搞复杂了,用 face-remap 有点违背初衷,也很可能是造成 company 出问题的原因。导致为了用它还要拖家带口的搬其他的包进来,不太值得 (edit: company 要配合 org 的话,company-posframe 还是有必要的)
分享一个我自用的 org 文档化的简单方案:
(defvar my-fixed-font "Victor Mono"
"Fixed pitch font.")
(defvar my-variable-font "Sarasa Mono SC"
"Variable pitch font.")
(defun my-org-font-setup ()
"Setup variable-pitch fonts for `org-mode'."
(interactive)
(variable-pitch-mode)
(let ((variable-pitch `(:font ,my-fixed-font))
(fixed `(:font ,my-variable-font)))
(custom-theme-set-faces
'user
`(org-level-1 ((t (,@variable-pitch :height 1.5))))
`(org-level-2 ((t (,@variable-pitch :height 1.4))))
`(org-level-3 ((t (,@variable-pitch :height 1.3))))
`(org-level-4 ((t (,@variable-pitch :height 1.2))))
`(org-table ((t (,@fixed))))
`(org-verbatim ((t (,@fixed))))
`(org-formula ((t (,@fixed))))
`(org-code ((t (,@fixed))))
`(org-block ((t (,@fixed)))))))
(add-hook 'org-mode-hook #'my-org-font-setup)
参考: https://github.com/alexluigit/emacs-grandview#org-mode
2 个赞