gpt4 book ai didi

emacs - 如何让 Emacs 在计算列宽时知道字体大小发生了变化?

转载 作者:行者123 更新时间:2023-12-02 03:55:37 26 4
gpt4 key购买 nike

我正在尝试编写一个根据 Emacs 当前窗口宽度执行某些操作的函数。问题是,Emacs 对列的宽度感到困惑。它似乎是基于原始字体大小而不是我的自定义字体大小进行计算。这是一个截图来说明:

Screenshoot illustrating the problem

当我删除我的自定义字体设置时它似乎可以正常工作,所以我认为在切换到新字体后它一定没有更新它认为列的大小。

这是我的视觉配置的相关部分:

(setq default-frame-alist
'(
(font . "-apple-Ubuntu_Mono-medium-normal-normal-*-17-*-*-*-p-0-iso10646-1")
(width . 130)
(height . 45)))

(很明显,图片中的框架是根据我的默认值调整大小的,但这是我设置字体的地方,所以它看起来很相关)

这是我用来确定计算的当前宽度的函数:

(defun get-window-size ()
(interactive)
(message "The width is %d." (window-body-width)))

根据文档,window-body-width 函数应该只返回编辑区域,因此应该消除列数和总框架大小之间的任何差异......

如何让 Emacs 在更改字体后更新其对列宽的理解?

最佳答案

指示的“行和列”位置是基于字符数(有些字符可以算作 2 列或更多,TAB 是一个常见的例子)而不是基于它们的视觉显示大小。不同的行可以使用不同大小的字体,因此不同的行将在不同的“列”处到达右边距。相反,窗口大小计入“标准大小字符单元的数量”,其中该标准字符单元的大小取决于用于该框架的默认面(即您在默认框架列表中指定的字体) .

在您的屏幕截图中,我没有看到任何可以明显解释差异的内容,虽然:您似乎使用的是普通的等宽字体并且所有文本都使用相同的字体,而且您似乎没有使用类似 text-scale-increase,所以我不确定你为什么会看到你所看到的。

关于emacs - 如何让 Emacs 在计算列宽时知道字体大小发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com