我在多台机器,操作系统和平台上使用相同的.emacs。我希望调用时Emacs的默认帧大小相对于可用的屏幕大小(例如,在1600x1200桌面屏幕上96行非常好用,但在1280x800笔记本电脑上我需要指定不超过68行)。
是否有emacs-lisp表达式返回宽度&系统屏幕的高度?
更新:我刚刚找到similar question,但由于某种原因,在我的Windows XP系统上的GNU Emacs 23.2中找不到(x-display-pixel-width)和(display-pixel-width)。继续研究......
答案 0 :(得分:2)
我在XP专业版上运行Gnu Emacs 23.2.1,以及函数
(x-display-pixel-width)
和
(x-display-pixel-height)
都工作正常。它们是c源的一部分,应该存在。
您可以在信任的终端之外运行emacs吗?
以下是我当前emacs的文档:
x-display-pixel-height
是“C源代码”中的内置函数。
(x-display-pixel-height &optional TERMINAL)
返回X显示TERMINAL的高度(以像素为单位)。 可选参数TERMINAL指定要询问的显示。 TERMINAL应该是终端对象,框架或显示名称(字符串)。 如果省略或为nil,则表示所选帧的显示。
此外,如果您有兴趣,我有一整套便利功能,可以帮助您调整和移动emacs框架。
答案 1 :(得分:2)
我做的很糟糕,对于一个有点旧的版本。
(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运行之后根据default-frame-alist构建的。我从来没有听说过初始框架。
答案 2 :(得分:1)
感谢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))))
但只有当我在读取.emacs上执行eval-buffer时它才有效。启动Emacs时(从命令行或双击其快捷方式)它不起作用。怪异。
更新:我最终在快捷方式的Target字段中调用命令中设置初始大小:
C:\emacs-23.2\bin\runemacs.exe -geometry 96x78+240+0
一个丑陋的解决方案,我知道,但目前这是解决问题的唯一解决方案。