代码之家  ›  专栏  ›  技术社区  ›  modeller

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

  •  0
  • modeller  · 技术社区  · 6 年前

    我是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 而且效果很好。然而,当我把它改成一个表达式时,它失败了:

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

    我之所以这么做,是因为我分享了同样的东西 .emacs 在多台屏幕大小不同的计算机上创建文件。所以我的最终目标是根据屏幕大小计算字体大小。

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

    3 回复  |  直到 5 年前
        1
  •  1
  •   jpkotta    6 年前

    你完全可以照法律清单上说的做,这是完全合理的。如果要在“自定义”之外执行此操作:

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

    不需要使用Quasiquettes,因为表达式一开始没有被引用。

        2
  •  0
  •   ericstolten    5 年前

    我有一个类似的设置,我经常拔掉显示器的插头,使用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))
    

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

        3
  •  0
  •   Drew    5 年前

    您可以做您试图做的事情,但使用得到评估的代码,而不是受 quote .例如,使用 回传 表达式:将引号改为反引号,并在要计算的sexp前加逗号。

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

    这相当于:

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