如何在Emacs中将字体大小设置为评估值?

时间:2018-08-06 23:40:24

标签: emacs elisp

我是emacs lisp的新手,正在尝试将关键字值设置为如下所示的评估表达式:

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:height (+ 70 70)))))
)

请注意,高度最初是静态值140,并且效果很好。但是,当我将其更改为表达式时,它以msg失败:

error: Default face height not absolute and positive, +, 70, 70

尝试此操作的原因是我在具有不同屏幕尺寸的多台计算机上共享相同的.emacs文件。所以我的最终目标是根据屏幕尺寸计算字体大小。

为表达式设置关键字值的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

您完全可以按照法律专家的话做,这是完全合理的。如果要在自定义之外执行此操作:

(set-face-attribute 'default nil :height (+ 70 70))

不需要准引号,因为该表达式没有首先被引用。

答案 1 :(得分:0)

我有类似的设置,我不断地插入和拔下显示器并使用Mac Retina显示器。

我发现default-text-scale表现不错。如果您的设置使用use-package,这就是我配置的内容。

(use-package default-text-scale
    :ensure t
    :config
    (setq default-text-scale-amount 8)
    :bind
    ;; Plus makes it better
    ("M-+" . default-text-scale-increase)
    ;; Underscore makes it smaller (- is already bound)
    ("M-_" . default-text-scale-decrease))

它不能解决您的特定问题,但是可以在所有窗口中通过调整字体大小来工作。如果您需要演示,可以派上用场。

答案 2 :(得分:0)

您可以执行尝试执行的操作,但要使用经过评估的代码,而不要使用受quote保护不受评估的代码。例如,使用 backquote 表达式:将报价更改为backquote,并在要评估的sexp前面加上逗号。

(custom-set-faces
 `(default ((t (:height ,(+ 70 70))))))

等效于此:

(custom-set-faces
 (list 'default (list (list t (list :height (+ 70 70))))))