开发者

emacs 23 and font size

I am using emacs 23 on my Ubuntu netbook edition. Every app, automatically goes to fullscreen (so does my emacs). But depending on the font size (:height), I get a smaller 开发者_StackOverflow中文版working window. If I go to :height normal I get the full area but the fonts are HUGE!

any ideas?


Your window manager is broken. emacs resizes itself when you change the font size (this happens during startup). Your window manager should tell emacs that emacs was resized by the window manager, at which point everything will work normally.

Anyway, start emacs as "emacs --daemon" and connect with "emacsclient -c" and you should not notice this problem.


OK, so actually I added this to my 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))))))))

and now the window is the same size as the full screen. If you are setting your fonts inside of the after-make-frame-functions hook then it is important that this comes first in your initfile, (I think because hooks are run in reverse order) but if you're just setting the fonts then this should work OK anywhere.

Of course for maximum safety you could put this and your 'set fonts' stuff into the same defun, with this coming after the fonts have been set.

EDIT: This is a slightly more forceful way to do it, in case that doesn't work.

This gives me some issues though, really you would probably want to subtract the height of the top panel from the height you're setting it to.

(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))))))


The font size issue can be fixed simply by selecting a different size font as the default font (Options->Set Default Font), then saving the options (Options->Save Options). Emacs seems to have issues with font point sizes matching system sizes (there's discussion about X standard DPIs versus GTK standard DPIs), but if you select one that works it will stay the same.

To get the window to come up maximized correctly, I've found there's an issue with the frame alist not accounting for the minibuffer correctly as well as the different font sizes not triggering the frame to resize correctly. If you set the initial-frame-alist to include (fullscreen . fullwidth) and (minibuffer-lines . 1) it accounts for the minibuffer size correctly and comes up with the correct width, forcing an effect as if you resized the window by hand to the maximum visible area (not quite the same as maximizing). You can set these via Options->Customize Emacs->Settings Matching Regexp... Then typing initial-frame-alist. Set two new parameters and values, "minibuffer-lines" to "1" and "fullscreen" to "fullwidth".

Removing the "minibuffer-lines" parameter will give you a full screen width window that's the wrong height, and removing the "fullscreen" parameter means nothing resizes correctly. Attempting to set "fullscreen" to "fullscreen" gives the same issue as setting nothing, and "fullscreen" to "fullheight" gives blank space only across the height and not the width when a smaller font size is used.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜