diff options
| author | Juanma Barranquero | 2003-04-09 17:28:30 +0000 |
|---|---|---|
| committer | Juanma Barranquero | 2003-04-09 17:28:30 +0000 |
| commit | 1cef654128ac75bf1cc0b5014b1b692f85d8f1b8 (patch) | |
| tree | 3306fab1bdb7fc9089a7fd47bdff93097354f114 | |
| parent | f979dc056ee4b707c3b74e9336978c0d566224bd (diff) | |
| download | emacs-1cef654128ac75bf1cc0b5014b1b692f85d8f1b8.tar.gz emacs-1cef654128ac75bf1cc0b5014b1b692f85d8f1b8.zip | |
(set-frame-font): Allow keeping frame size after changing font.
| -rw-r--r-- | lisp/frame.el | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/lisp/frame.el b/lisp/frame.el index 3fac3b28490..ee879c531b2 100644 --- a/lisp/frame.el +++ b/lisp/frame.el | |||
| @@ -794,20 +794,34 @@ If FRAME is omitted, describe the currently selected frame." | |||
| 794 | (cdr (assq 'width (frame-parameters frame)))) | 794 | (cdr (assq 'width (frame-parameters frame)))) |
| 795 | 795 | ||
| 796 | (defalias 'set-default-font 'set-frame-font) | 796 | (defalias 'set-default-font 'set-frame-font) |
| 797 | (defun set-frame-font (font-name) | 797 | (defun set-frame-font (font-name &optional keep-size) |
| 798 | "Set the font of the selected frame to FONT-NAME. | 798 | "Set the font of the selected frame to FONT-NAME. |
| 799 | When called interactively, prompt for the name of the font to use. | 799 | When called interactively, prompt for the name of the font to use. |
| 800 | To get the frame's current default font, use `frame-parameters'." | 800 | To get the frame's current default font, use `frame-parameters'. |
| 801 | |||
| 802 | The default behavior is to keep the numbers of lines and columns in | ||
| 803 | the frame, thus may change its pixel size. If optional KEEP-SIZE is | ||
| 804 | non-nil (interactively, prefix argument) the current frame size (in | ||
| 805 | pixels) is kept by adjusting the numbers of the lines and columns." | ||
| 801 | (interactive | 806 | (interactive |
| 802 | (list | 807 | (let* ((completion-ignore-case t) |
| 803 | (let ((completion-ignore-case t)) | 808 | (font (completing-read "Font name: " |
| 804 | (completing-read "Font name: " | 809 | (mapcar #'list |
| 805 | (mapcar #'list | 810 | ;; x-list-fonts will fail with an error |
| 806 | ;; x-list-fonts will fail with an error | 811 | ;; if this frame doesn't support fonts. |
| 807 | ;; if this frame doesn't support fonts. | 812 | (x-list-fonts "*" nil (selected-frame)))))) |
| 808 | (x-list-fonts "*" nil (selected-frame))))))) | 813 | (list font current-prefix-arg))) |
| 809 | (modify-frame-parameters (selected-frame) | 814 | (let (fht fwd) |
| 810 | (list (cons 'font font-name))) | 815 | (if keep-size |
| 816 | (setq fht (* (frame-parameter nil 'height) (frame-char-height)) | ||
| 817 | fwd (* (frame-parameter nil 'width) (frame-char-width)))) | ||
| 818 | (modify-frame-parameters (selected-frame) | ||
| 819 | (list (cons 'font font-name))) | ||
| 820 | (if keep-size | ||
| 821 | (modify-frame-parameters | ||
| 822 | (selected-frame) | ||
| 823 | (list (cons 'height (round fht (frame-char-height))) | ||
| 824 | (cons 'width (round fwd (frame-char-width))))))) | ||
| 811 | (run-hooks 'after-setting-font-hook 'after-setting-font-hooks)) | 825 | (run-hooks 'after-setting-font-hook 'after-setting-font-hooks)) |
| 812 | 826 | ||
| 813 | (defun set-frame-parameter (frame parameter value) | 827 | (defun set-frame-parameter (frame parameter value) |