如何在Emacs中找到系统的显示尺寸?

时间:2010-08-18 16:26:27

标签: emacs pixels screen-size

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

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

更新:我刚刚找到similar question,但由于某种原因,在我的Windows XP系统上的GNU Emacs 23.2中找不到(x-display-pixel-width)和(display-pixel-width)。继续研究......

3 个答案:

答案 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

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