如何在Emacs中找到系统的显示大小?
我在多台机器、操作系统和平台上使用相同的.emacs。我希望调用时Emacs的默认帧大小与可用屏幕大小相对应(例如,在1600x1200桌面屏幕上,96行工作得很好,但在1280x800笔记本电脑上,我需要指定的行数不超过68行) 是否有返回系统屏幕宽度和高度的emacs lisp表达式如何在Emacs中找到系统的显示大小?,emacs,pixels,screen-size,Emacs,Pixels,Screen Size,我在多台机器、操作系统和平台上使用相同的.emacs。我希望调用时Emacs的默认帧大小与可用屏幕大小相对应(例如,在1600x1200桌面屏幕上,96行工作得很好,但在1280x800笔记本电脑上,我需要指定的行数不超过68行) 是否有返回系统屏幕宽度和高度的emacs lisp表达式 更新:我刚找到一个,但由于某些原因,在Windows XP系统上我的GNU Emacs 23.2中既找不到(x-display-pixel-width)也找不到(display-pixel-width)。继续研
更新:我刚找到一个,但由于某些原因,在Windows XP系统上我的GNU Emacs 23.2中既找不到(x-display-pixel-width)也找不到(display-pixel-width)。继续研究…我正在XP Pro上运行Gnu Emacs 23.2.1及其功能
(x-display-pixel-width)
及
两个都很好。它们是c源代码的一部分,应该存在
您可以在it信任的终端之外运行emacs
以下是我当前emacs中的文档:
x-display-pixel-height
是“C源代码”中的内置函数
(x-display-pixel-height &optional TERMINAL)
返回X显示终端的高度(以像素为单位)。
可选参数终端指定要询问的显示。
终端应该是终端对象、帧或显示名称(字符串)。
如果省略或为零,则表示选定帧的显示
此外,如果您有兴趣,我还有一整套方便的函数库来帮助调整和移动emacs框架。多亏了Chris和Scott的回答和评论,我在.emacs中找到了以下工作路线:
(set-frame-size (selected-frame) 96 (/ (* (x-display-pixel-height) 46) 600) )
当我在.emacs上执行eval buffer时,它工作得很好,但当我双击Windows XP的emacs快捷方式时,该语句被完全忽略
我知道(选定帧)不是(初始帧),所以我也尝试了以下方法:
(setq initial-frame-alist
'((top . 1) (left . 288) (width . 96) (height . (/ (* (x-display-pixel-height) 46) 600))))
但它只有在我对read.emacs进行缓冲区求值时才起作用。当Emacs启动时(从命令行或双击其快捷方式),它不起作用。奇怪
更新:我在快捷方式的目标字段的调用命令中设置了初始大小:
C:\emacs-23.2\bin\runemacs.exe -geometry 96x78+240+0
我知道这是一个丑陋的解决方案,但目前这是唯一能解决问题的解决方案。对于一个稍旧的版本,我做得很糟糕
(tool-bar-mode nil)
(mapc (lambda (x) (add-to-list 'default-frame-alist x))
(list
(cons 'top 0) (cons 'left 0)
(cons 'font "-outline-Courier New-normal-r-normal-normal-11-82-96-96-c-*-iso10646-1")
(cons 'height 67) (cons 'width 176)
))
默认帧是在.emacs运行后从默认帧列表生成的。我从来没有听说过最初的帧列表。Chris,谢谢。如何调用这些函数?我尝试从minibuffer中使用M-x x-display-pixel-height,但Emacs找不到。如何在系统中调用它?顺便说一句,我的系统中的“关于Emacs”显示:G41R2F1上2010-05-08的GNU Emacs 23.2.1(i386-mingw-nt5.1.2600)它们不是交互式功能。你可以用M-:(x-display-pixel-height)调用它们。雷斯科特,你的评论正是我需要的。在我的Windows XP键盘上,Alt+Shift+:'调用了“Eval:”提示符。然后我输入(x-display-pixel-height),点击回车键,果然显示了正确的结果:1200。谢谢John,您的方法本质上是等效的(默认与初始值除外),但在Emacs 23.2上不起作用。您使用的是哪个Emacs版本?
初始帧列表
仅影响第一帧<代码>默认帧列表影响此后创建的所有帧。由于添加了守护程序模式、多终端支持等,在Emacs 23上启动时没有选定的帧。因此,您需要设置初始帧列表或默认帧列表。请尝试(setq initial frame-alist'((top.1)(left.288)(width.96))(添加到列表“initial frame-alist”(cons)height(/(*(x-display-pixel-height‘))
当前版本无法工作的原因是高度计算在引用的列表中,另外:使用setq意味着您丢失了在代码运行之前添加到初始帧列表中的任何内容。我想我遇到了一个类似于默认框架列表的问题,这就是我使用add to list的原因。
(tool-bar-mode nil)
(mapc (lambda (x) (add-to-list 'default-frame-alist x))
(list
(cons 'top 0) (cons 'left 0)
(cons 'font "-outline-Courier New-normal-r-normal-normal-11-82-96-96-c-*-iso10646-1")
(cons 'height 67) (cons 'width 176)
))