Emacs 窗口--显示缓冲区:如何在创建时精确设置窗口宽度

Emacs 窗口--显示缓冲区:如何在创建时精确设置窗口宽度,emacs,elisp,Emacs,Elisp,关于函数窗口--display buffer,我无法使用一个数字来精确设置窗口宽度,例如,”((window width.82))。宽度始终略小于其应有的宽度。如果您能帮助您可靠地使用一个数字来设置窗口宽度,我们将不胜感激 文件()说明如下: 要调整车窗宽度,请使用一个条目,其car为windowwidth,且cdr为以下之一: nil表示保留新窗口的宽度 数字指定新窗口的所需宽度整数指定窗口的列数浮点数给出窗口宽度相对于帧根窗口宽度的分数 如果cdr指定了一个函数,则会使用一个参数调用该函数

关于函数
窗口--display buffer
,我无法使用一个数字来精确设置窗口宽度,例如,
”((window width.82))
。宽度始终略小于其应有的宽度。如果您能帮助您可靠地使用一个数字来设置窗口宽度,我们将不胜感激

文件()说明如下:

要调整车窗宽度,请使用一个条目,其car
windowwidth
,且cdr为以下之一:

  • nil
    表示保留新窗口的宽度

  • 数字指定新窗口的所需宽度整数指定窗口的列数浮点数给出窗口宽度相对于帧根窗口宽度的分数

  • 如果
    cdr
    指定了一个函数,则会使用一个参数调用该函数:新窗口。该功能用于调整窗口的宽度;它的返回值被忽略


下面是一个
不完整的示例
,它演示了使用数字时
窗口--显示缓冲区
的问题,例如,
”((window width.82))

(defun中断示例()
(互动)
(窗口--显示缓冲区)
缓冲器
(获取缓冲区创建“*测试*”)
窗户
(拆分窗口(选定窗口)无右)
类型
“窗户
主义者
“((窗宽.82))
献身的
(t)
(消息“窗口宽度:%s”(窗口宽度(获取缓冲区窗口“*test*”))

下面是一个使用第三个选项的
工作示例,即一个参数为新窗口的函数

(defun工作示例()
(互动)
(窗口--显示缓冲区)
缓冲器
(获取缓冲区创建“*测试*”)
窗户
(拆分窗口(选定窗口)无右)
类型
“窗户
主义者
“((窗口宽度。设置窗口宽度))
献身的
(t)
(消息“窗口宽度:%s”(窗口宽度(获取缓冲区窗口“*test*”))
(取消设置窗口宽度(窗口)
“设置选定窗口的宽度。”
(窗口调整窗口大小(-82(窗口宽度))t)

对于2014年3月19日建造的当前版本的Emacs Trunk,
window.el的第5944行
(delta(-new width(window total width window)))
修改为
(delta(-new width(window width window))
解决了这个问题


编辑(2014年3月22日):这里有一个链接,指向关于这个问题的开放式错误报告--

请正确格式化您的代码。@sds--我很乐意学习如何更好地格式化代码。我患有OCDC,需要以某种方式拥有一切。您想让我为
窗口--display buffer
创建一个长行,并删除关于每个变量组件代表什么的有用注释吗?如果我这样做,那么每个人都需要使用descripe变量来查看每个组件的用途。只需使用Emacs缩进您的代码并学会喜欢这种样式即可。;-)@sds——好的——我选择了
emacs lisp模式
,选择了区域,然后使用了
缩进区域
。我使用这个链接作为指导:函数名中的“-”表示它是内部的,低“使用风险自负”。