unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
To: "'martin rudalics'" <rudalics@gmx.at>
Cc: esabof@gmail.com, 14233@debbugs.gnu.org
Subject: bug#14233: 24.3; Don't constrain frame size to character multiples
Date: Sat, 27 Apr 2013 06:53:11 -0700	[thread overview]
Message-ID: <D17C6B35A87C4502A02FFB0A7B7EDF74@us.oracle.com> (raw)
In-Reply-To: <517B776B.2080007@gmx.at>

>  > I have code that relies on this behavior to shrink not 
>  > only the default font size (of all windows in the frame)
>  > but the frame itself.  I do this not only to zoom
>  > (shrink or enlarge) a frame and its text slightly.  I do
>  > it also to shrink it a lot - down to a thumbnail/icon size
>  > - and later restore it.
>  >
>  > I would not like to see this behavior change, so that, 
>  > e.g., Emacs stopped resizing the frame when I change the
>  > font size for the frame.
> 
> It depends on the interface you use.

Already that does not sound very good.  Why should the behavior be different
depending on how you change a frame parameter?

> The function `set-frame-font' has the KEEP-SIZE argument
> and I don't intend to change its semantics (I'll probably
> remove the rounding when `frame-resize-pixelwise' is non-nil).

I use `modify-frame-parameters', providing a new value for parameter `font'.
The new value is calculated this way (in frame-cmds.el):

(defun enlarged-font-name (fontname frame increment)
  "FONTNAME, after enlarging font size of FRAME by INCREMENT.
FONTNAME is the font of FRAME."
  (when (query-fontset fontname)
    (let ((ascii  (assq 'ascii
                        (aref (fontset-info fontname frame) 2))))
      (when ascii (setq fontname (nth 2 ascii)))))
  (let ((xlfd-fields  (x-decompose-font-name fontname)))
    (unless xlfd-fields (error "Cannot decompose font name"))
    (let ((new-size  (+ (string-to-number
                         (aref xlfd-fields
                               xlfd-regexp-pixelsize-subnum))
                       increment)))
      (unless (> new-size 0)
        (error "New font size is too small: %s" new-size))
      (aset xlfd-fields xlfd-regexp-pixelsize-subnum
            (number-to-string new-size)))
    ;; Set point size & width to "*", so frame width will adjust
    ;; to new font size
    (aset xlfd-fields xlfd-regexp-pointsize-subnum "*")
    (aset xlfd-fields xlfd-regexp-avgwidth-subnum "*")
    (x-compose-font-name xlfd-fields)))

This is the function that uses that new value:

(defun enlarge-font (&optional increment frame)
  "Increase size of font in FRAME by INCREMENT.
Interactively, INCREMENT is given by the prefix argument.
Optional FRAME parameter defaults to current frame."
  (interactive "p")
  (setq frame (or frame (selected-frame)))
  (let ((fontname  (cdr (assq 'font (frame-parameters frame))))
        (count enlarge-font-tries))
    (setq fontname (enlarged-font-name fontname frame increment))
    (while (and (not (x-list-fonts fontname))
                (wholenump (setq count (1- count))))
      (setq fontname (enlarged-font-name fontname frame increment)))
    (unless (x-list-fonts fontname)
      (error "Cannot change font size"))
    (modify-frame-parameters frame (list (cons 'font fontname)))
    ;; Update faces that want a bold or italic version of default.
    (when (< emacs-major-version 21) (frame-update-faces frame))))

I use this code a lot: in doremi-frm.el to enlarge/shrink incrementally; in
zoom-frm.el to do likewise, but differently; in thumb-frm.el to (de)thumbify.

I really hope this will not be broken by whatever changes you envision.  Thx.

The code is here:
http://www.emacswiki.org/emacs-en/download/frame-cmds.el
http://www.emacswiki.org/emacs-en/download/zoom-frm.el
http://www.emacswiki.org/emacs-en/download/thumb-frm.el






  reply	other threads:[~2013-04-27 13:53 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-19 23:58 bug#14233: 24.3; Don't constrain frame size to character multiples E Sabof
2013-04-20  0:17 ` Glenn Morris
2013-04-20  6:45   ` Eli Zaretskii
2013-04-20  8:53     ` martin rudalics
2013-04-20  9:11       ` Jan Djärv
2013-04-20 11:00         ` martin rudalics
2013-04-20 12:56           ` Jan Djärv
2013-04-20 13:13             ` Eli Zaretskii
2013-04-20 19:26               ` Jan Djärv
2013-04-20 19:54                 ` Eli Zaretskii
2013-04-20 22:02                   ` Drew Adams
2013-04-21  3:40                   ` Stefan Monnier
2013-04-21  7:04                     ` Jan Djärv
2013-04-21  9:28                       ` martin rudalics
2013-04-21 17:05                         ` Jan Djärv
2013-04-22  9:34                           ` martin rudalics
2013-04-22 14:17                       ` Stefan Monnier
2013-04-21  9:27                     ` martin rudalics
2013-04-21  9:27                   ` martin rudalics
2013-04-20 20:47                 ` E Sabof
2013-04-21  9:26                 ` martin rudalics
2013-04-21 17:21                   ` Jan Djärv
2013-04-22  9:34                     ` martin rudalics
2013-04-22 13:11                       ` Jan Djärv
2013-04-22 15:36                         ` martin rudalics
2013-04-22 16:11                           ` Jan Djärv
2013-04-22 16:38                             ` martin rudalics
2013-04-22 18:21                               ` Eli Zaretskii
2013-04-23  6:52                                 ` martin rudalics
2013-04-23 16:28                                   ` Eli Zaretskii
2013-04-24  6:39                                     ` martin rudalics
2013-04-24 17:13                                       ` Eli Zaretskii
2013-04-23 11:58                               ` Jan Djärv
2013-04-23 12:33                                 ` martin rudalics
2013-04-23 16:48                                   ` Eli Zaretskii
2013-04-24  6:39                                     ` martin rudalics
2013-04-24 16:54                                       ` Jan Djärv
2013-04-25  7:29                                         ` martin rudalics
2013-04-25  9:55                                           ` Jan Djärv
2013-04-25 11:58                                             ` martin rudalics
2013-04-25 15:47                                         ` Richard Stallman
2013-04-24 17:15                                       ` Eli Zaretskii
2013-04-24 17:50                                         ` Jan Djärv
2013-04-25  7:29                                         ` martin rudalics
2013-04-20 13:38             ` martin rudalics
2013-04-20 19:33               ` Jan Djärv
2013-04-20 16:22             ` Drew Adams
2013-04-20 17:12               ` Eli Zaretskii
2013-04-20 21:50                 ` Drew Adams
2013-04-21  9:27                   ` martin rudalics
2013-04-21 16:17                     ` Drew Adams
2013-04-20  9:25       ` Eli Zaretskii
2013-04-20 11:01         ` martin rudalics
2013-04-20 11:32           ` Eli Zaretskii
2013-04-20 13:38             ` martin rudalics
2013-04-20 16:25               ` Eli Zaretskii
2013-04-20 17:35                 ` martin rudalics
2013-04-20 17:48                   ` E Sabof
2013-04-20 18:26                   ` Eli Zaretskii
2013-04-21  9:26                     ` martin rudalics
2013-04-21 15:03                       ` Eli Zaretskii
2013-04-22  9:34                         ` martin rudalics
2013-04-21 17:30                       ` Jan Djärv
2013-04-22  9:34                         ` martin rudalics
2013-04-22 13:12                           ` Jan Djärv
2013-04-22 15:36                             ` martin rudalics
2013-04-22 18:36                               ` Eli Zaretskii
2013-04-23  6:54                                 ` martin rudalics
2013-04-23 16:29                                   ` Eli Zaretskii
2013-04-23  6:50                             ` martin rudalics
2013-04-23 16:23                               ` Eli Zaretskii
2013-04-24  6:38                                 ` martin rudalics
2013-04-24 17:09                                   ` Eli Zaretskii
2013-04-24 18:50                                     ` Stefan Monnier
2013-04-24 20:09                                       ` Jan Djärv
2013-04-25  7:31                                         ` martin rudalics
2013-04-25 10:02                                           ` Jan Djärv
2013-04-25 11:58                                             ` martin rudalics
2013-04-25 14:11                                               ` Jan Djärv
2013-04-25  7:30                                       ` martin rudalics
2013-04-25  7:29                                     ` martin rudalics
2013-04-25 16:24                                       ` Eli Zaretskii
2013-04-26  7:42                                         ` martin rudalics
2013-04-26 13:21                                           ` Stefan Monnier
2013-04-26 14:39                                           ` Drew Adams
2013-04-27  6:59                                             ` martin rudalics
2013-04-27 13:53                                               ` Drew Adams [this message]
2013-04-28 12:17                                                 ` martin rudalics
2013-04-28 15:33                                                   ` Drew Adams
2013-04-28 16:29                                                     ` Drew Adams
2013-04-29  7:33                                                     ` martin rudalics
2013-04-29 14:10                                                       ` Drew Adams
2013-04-29 16:48                                                         ` martin rudalics
2013-04-29 20:41                                                           ` Drew Adams
2013-04-30  7:34                                                             ` martin rudalics
2013-04-30 15:47                                                               ` Drew Adams
2013-04-30 17:08                                                                 ` martin rudalics
2013-04-30 19:45                                                                   ` Drew Adams
2013-05-01  9:15                                                                     ` martin rudalics
2013-05-01 13:47                                                                       ` Drew Adams
2013-05-02  9:22                                                                         ` martin rudalics
2013-05-02 13:28                                                                           ` Drew Adams
2014-12-25 19:30 ` martin rudalics

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D17C6B35A87C4502A02FFB0A7B7EDF74@us.oracle.com \
    --to=drew.adams@oracle.com \
    --cc=14233@debbugs.gnu.org \
    --cc=esabof@gmail.com \
    --cc=rudalics@gmx.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).