代码之家  ›  专栏  ›  技术社区  ›  Jon Romero

Emacs 23和字体大小

  •  2
  • Jon Romero  · 技术社区  · 15 年前

    我正在我的Ubuntu上网本版本上使用Emacs23。每个应用程序都会自动全屏显示(我的emacs也是如此)。但根据字体大小(:height),我得到一个较小的工作窗口。 如果我去:高度正常,我得到完整的区域,但字体是巨大的!

    有什么想法吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   quodlibetor    15 年前

    好吧,实际上我把这个添加到了initfile中:

    (add-hook 'after-make-frame-functions
          (lambda (frame)
            (progn
              (add-to-list 'default-frame-alist
                   (cons 'height
                     (/ (x-display-pixel-height)
                        (frame-char-height)))
                   (add-to-list 'default-frame-alist
                        (cons 'width
                              (/ (x-display-pixel-width)
                             (frame-char-width))))))))
    

    现在窗口和全屏一样大。如果您在 after-make-frame-functions 钩子,这在in it文件中是很重要的,(我认为因为钩子的运行顺序是相反的),但是如果你只是设置字体,那么它在任何地方都可以正常工作。

    当然,为了最大的安全性,你可以把这个和你的“设置字体”的东西放在同一个defun中,这是在字体设置之后。

    编辑: 这是一种更有力的方法,以防不起作用。

    这给了我一些问题,实际上,你可能想从你设置的高度中减去顶部面板的高度。

    (add-hook 'after-make-frame-functions
      (lambda (frame)
        (progn
          (set-frame-height frame
                (/ (x-display-pixel-height)
                   (frame-char-height)))
          (set-frame-width frame
                (/ (x-display-pixel-width)
                   (frame-char-width))))))
    
        2
  •  2
  •   jrockway    15 年前

    你的窗户管理器坏了。当您更改字体大小时,Emacs会自动调整大小(这在启动过程中发生)。窗口管理器应该告诉Emacs窗口管理器已经调整了Emacs的大小,此时一切都将正常工作。

    无论如何,将emacs作为“emacs--daemon”启动,并与“emacsclient-c”连接,您不应该注意到这个问题。

        3
  •  1
  •   Mike    14 年前

    只需选择不同大小的字体作为默认字体(选项->设置默认字体),然后保存选项(选项->保存选项),即可解决字体大小问题。Emacs似乎对匹配系统大小的字体点大小有问题(有关于x标准dpis与gtk标准dpis的讨论),但如果您选择一个有效的字体点,它将保持不变。

    为了使窗口正确地达到最大化,我发现帧列表没有正确地考虑缓冲区,以及不同的字体大小没有触发帧正确调整大小,这是一个问题。如果将初始帧列表设置为包含(全屏)。全宽)和(微缓冲行。1)它正确地说明了最小缓冲区的大小,并给出了正确的宽度,这就产生了一种效果,就像您手动将窗口调整到最大可见区域(与最大化不完全相同)。您可以通过选项->自定义Emacs->设置匹配regexp…然后输入初始帧列表。设置两个新参数和值,“minibuffer lines”为“1”,“fullscreen”为“fullwidth”。

    删除“minibuffer lines”参数将为您提供一个错误高度的全屏宽度窗口,而删除“full screen”参数意味着没有正确调整大小。尝试将“全屏”设置为“全屏”会产生与不设置任何内容相同的问题,“全屏”设置为“全屏”只会在使用较小字体时在高度而不是宽度上提供空白。