4

我在多台机器、操作系统和平台上使用相同的 .emacs。我希望调用时 Emacs 的默认帧大小与可用屏幕大小相关(例如,96 行在 1600x1200 桌面屏幕上效果很好,但在 1280x800 笔记本电脑上我需要指定不超过 68 行)。

是否有返回系统屏幕宽度和高度的 emacs-lisp 表达式?

更新:我刚刚发现了一个类似的问题,但由于某种原因,在 Windows XP 系统上的我的 GNU Emacs 23.2 中都找不到 (x-display-pixel-width) 和 (display-pixel-width) 。继续研究...

4

3 回答 3

2

我在 XP Pro 上运行 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 应该是终端对象、框架或显示名称(字符串)。如果省略或为零,则表示所选帧的显示。

此外,如果您有兴趣,我有一个完整的便利函数库来帮助调整 emacs 框架的大小和移动。

于 2010-08-18T18:24:40.183 回答
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 构建的。我从未听说过初始帧列表。

于 2010-08-18T20:56:35.760 回答
1

感谢 Chris 和 Scott 的回答和评论,我设法在我的 .emacs 中提出了以下工作行:

(set-frame-size  (selected-frame)  96 (/ (* (x-display-pixel-height) 46) 600) ) 

当我在 .emacs 上执行 eval-buffer 时它运行良好,但是当我双击 Windows XP 的 Emacs 快捷方式时,此语句被完全忽略。

我知道 (selected-frame) 不是 (initial-frame) 所以我也试过这个:

(setq initial-frame-alist
    '((top . 1) (left . 288) (width . 96) (height . (/ (* (x-display-pixel-height) 46) 600))))

但它仅在我对读取的 .emacs 执行 eval-buffer 时才有效。当 Emacs 启动时(无论是从命令行还是通过双击它的快捷方式),它都不起作用。诡异的。

更新:我最终在快捷方式的目标字段中的调用命令中设置了初始大小:

C:\emacs-23.2\bin\runemacs.exe -geometry 96x78+240+0

我知道,这是一个丑陋的解决方案,但目前这是唯一可以解决问题的解决方案。

于 2010-08-18T20:51:00.217 回答