aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanma Barranquero2003-04-09 17:28:30 +0000
committerJuanma Barranquero2003-04-09 17:28:30 +0000
commit1cef654128ac75bf1cc0b5014b1b692f85d8f1b8 (patch)
tree3306fab1bdb7fc9089a7fd47bdff93097354f114
parentf979dc056ee4b707c3b74e9336978c0d566224bd (diff)
downloademacs-1cef654128ac75bf1cc0b5014b1b692f85d8f1b8.tar.gz
emacs-1cef654128ac75bf1cc0b5014b1b692f85d8f1b8.zip
(set-frame-font): Allow keeping frame size after changing font.
-rw-r--r--lisp/frame.el36
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.
799When called interactively, prompt for the name of the font to use. 799When called interactively, prompt for the name of the font to use.
800To get the frame's current default font, use `frame-parameters'." 800To get the frame's current default font, use `frame-parameters'.
801
802The default behavior is to keep the numbers of lines and columns in
803the frame, thus may change its pixel size. If optional KEEP-SIZE is
804non-nil (interactively, prefix argument) the current frame size (in
805pixels) 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)