zoom-frm.el 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. ;;; zoom-frm.el --- Commands to zoom frame font size.
  2. ;;
  3. ;; Filename: zoom-frm.el
  4. ;; Description: Commands to zoom frame font size.
  5. ;; Author: Drew Adams
  6. ;; Maintainer: Drew Adams (concat "drew.adams" "@" "oracle" ".com")
  7. ;; Copyright (C) 2005-2019, Drew Adams, all rights reserved.
  8. ;; Created: Fri Jan 07 10:24:35 2005
  9. ;; Version: 0
  10. ;; Package-Requires: ((frame-fns "0") (frame-cmds "0"))
  11. ;; Last-Updated: Tue Nov 19 13:15:54 2019 (-0800)
  12. ;; By: dradams
  13. ;; Update #: 359
  14. ;; URL: https://www.emacswiki.org/emacs/download/zoom-frm.el
  15. ;; Doc URL: https://emacswiki.org/emacs/SetFonts
  16. ;; Keywords: frames, extensions, convenience
  17. ;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x, 24.x, 25.x, 26.x
  18. ;;
  19. ;; Features that might be required by this library:
  20. ;;
  21. ;; `avoid', `backquote', `bytecomp', `cconv', `cl-lib',
  22. ;; `frame-cmds', `frame-fns', `macroexp', `misc-fns', `strings',
  23. ;; `thingatpt', `thingatpt+'.
  24. ;;
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. ;;
  27. ;;; Commentary:
  28. ;;
  29. ;; Commands to zoom into and out of text. They zoom a frame or a
  30. ;; buffer, so that the text appears larger or smaller.
  31. ;;
  32. ;; Commands `zoom-in', `zoom-out', and `zoom-in/out' do both kinds of
  33. ;; zooming. They can behave like command `text-scale-adjust',
  34. ;; zooming a buffer wherever it is displayed, or they can zoom an
  35. ;; entire single frame (all of its windows). Hit `C-u' at any time
  36. ;; while using these commands to toggle between buffer and frame
  37. ;; zooming.
  38. ;;
  39. ;; Because it is a more general replacement for `text-scale-adjust',
  40. ;; I suggest you bind `zoom-in/out' to the keys bound by default to
  41. ;; `text-scale-adjust': `C-x C-+', `C-x C-=', `C-x C--', and `C-x
  42. ;; C-0'.
  43. ;;
  44. ;; It is also handy to use a mouse button or wheel for zooming, hence
  45. ;; the mouse binding suggestions. For example, binding `zoom-in' and
  46. ;; `zoom-out' to mouse wheel events gives you the zooming effect you
  47. ;; are perhaps used to in a Web browser.
  48. ;;
  49. ;; User option `zoom-frame/buffer' determines which kind of zooming
  50. ;; (frame or buffer) is used by default. You can customize this
  51. ;; option, but (in Emacs 23 or later) you can also toggle it just by
  52. ;; providing a prefix arg (`C-u') to `zoom-in/out', `zoom-in', or
  53. ;; `zoom-out'.
  54. ;;
  55. ;; Note about saving changes made dynamically using the commands
  56. ;; defined here:
  57. ;;
  58. ;; Some of the commands defined here change frame properties. You
  59. ;; can save any changes you have made, by using Customize. To
  60. ;; visit a Customize buffer of all unsaved changes you have made,
  61. ;; use command `customize-customized'.
  62. ;;
  63. ;; Frame parameter changes, such as font size, can be saved for
  64. ;; future use by all frames or all frames of a certain kind. For
  65. ;; that, you must change the frame parameters of the correponding
  66. ;; frame-alist variable.
  67. ;;
  68. ;; There is no single variable for saving changes to parameters of
  69. ;; the current frame. Instead, there are several different
  70. ;; frame-alist variables, which you can use to define different
  71. ;; kinds of frames. These include: `default-frame-alist',
  72. ;; `initial-frame-alist', and `special-display-frame-alist'. The
  73. ;; complete list of such frame alist variables is available using
  74. ;; function `frame-alist-var-names', defined in library
  75. ;; `frame-cmds.el'.
  76. ;;
  77. ;; Example: Suppose you change the font size of a frame and want to
  78. ;; make that the default font size for new frames in the future.
  79. ;; You will need to update the value of variable
  80. ;; `default-frame-alist' to use the `font' parameter setting of the
  81. ;; changed frame.
  82. ;;
  83. ;; You can easily copy one or all parameter values from any given
  84. ;; frame to any frame alist (such as `default-frame-alist'), by
  85. ;; using the commands `set-frame-alist-parameter-from-frame' and
  86. ;; `set-all-frame-alist-parameters-from-frame'. Those commands are
  87. ;; defined in library `frame-cmds.el'.
  88. ;;
  89. ;;
  90. ;; Commands defined here:
  91. ;;
  92. ;; `toggle-zoom-frame', `zoom-all-frames-in',
  93. ;; `zoom-all-frames-out', `zoom-frm-in', `zoom-frm-out',
  94. ;; `zoom-frm-unzoom', `zoom-in', `zoom-in/out' (Emacs 23+),
  95. ;; `zoom-out'.
  96. ;;
  97. ;;
  98. ;; User options (variables) defined here:
  99. ;;
  100. ;; `frame-zoom-font-difference', `zoom-frame/buffer' (Emacs 23+).
  101. ;;
  102. ;;
  103. ;; Put this in your init file (`~/.emacs'): (require 'zoom-frm)
  104. ;;
  105. ;; Suggested key bindings:
  106. ;;
  107. ;; Emacs 23 and later:
  108. ;;
  109. ;; (define-key ctl-x-map [(control ?+)] 'zoom-in/out)
  110. ;; (define-key ctl-x-map [(control ?-)] 'zoom-in/out)
  111. ;; (define-key ctl-x-map [(control ?=)] 'zoom-in/out)
  112. ;; (define-key ctl-x-map [(control ?0)] 'zoom-in/out)
  113. ;;
  114. ;; Any Emacs version:
  115. ;;
  116. ;; (global-set-key (if (boundp 'mouse-wheel-down-event) ; Emacs 22+
  117. ;; (vector (list 'control
  118. ;; mouse-wheel-down-event))
  119. ;; [C-mouse-wheel]) ; Emacs 20, 21
  120. ;; 'zoom-in)
  121. ;; (global-set-key (if (boundp 'mouse-wheel-down-event) ; Emacs 22+
  122. ;; (vector (list 'control 'meta
  123. ;; mouse-wheel-down-event))
  124. ;; [C-M-mouse-wheel]) ; Emacs 20, 21
  125. ;; 'zoom-all-frames-in)
  126. ;; (when (boundp 'mouse-wheel-up-event) ; Emacs 22+
  127. ;; (global-set-key (vector (list 'control
  128. ;; mouse-wheel-up-event))
  129. ;; 'zoom-out))
  130. ;; (global-set-key (vector (list 'control 'meta
  131. ;; mouse-wheel-up-event))
  132. ;; 'zoom-all-frames-out))
  133. ;;
  134. ;; (global-set-key [S-mouse-1] 'zoom-in)
  135. ;; (global-set-key [C-S-mouse-1] 'zoom-out)
  136. ;; ;; Get rid of `mouse-set-font' or `mouse-appearance-menu':
  137. ;; (global-set-key [S-down-mouse-1] nil)
  138. ;;
  139. ;;
  140. ;; Some of the commands are not autoloaded by default, because this
  141. ;; library works with old as well as recent Emacs releases. The
  142. ;; commands that are not autoloaded are not usable in older releases.
  143. ;; You can autoload such commands yourself. For example, if you use
  144. ;; Emacs 23 or later, you can add this to your init file, to autoload
  145. ;; `zoom-in/out':
  146. ;;
  147. ;; (autoload 'zoom-in/out "zoom-frm"
  148. ;; "Zoom current frame or buffer in or out" t)
  149. ;;
  150. ;; The first two of the mouse bindings mean that in Emacs 22 or later
  151. ;; you can hold the Control key and rotate the mouse wheel to zoom in
  152. ;; and out, just as you might do in a Web browser.
  153. ;;
  154. ;; (In Emacs 20 and 21, Control plus mouse wheeling zooms in, but to
  155. ;; zoom out you need to use `C--' before wheeling with Control. This
  156. ;; is because Emacs 20 and 21 do not have separate events for the
  157. ;; mouse wheel directions, and it is the prefix arg, not the wheel
  158. ;; direction, that determines the effect.)
  159. ;;
  160. ;;
  161. ;; See also these files for other frame commands:
  162. ;;
  163. ;; `autofit-frame.el' - Automatically fit each frame to its
  164. ;; selected window. Uses `fit-frame.el'.
  165. ;;
  166. ;; `fit-frame.el' - 1) Fit a frame to its selected window.
  167. ;; 2) Incrementally resize a frame.
  168. ;;
  169. ;; `doremi-frm.el' - Incrementally adjust frame properties
  170. ;; using arrow keys and/or mouse wheel.
  171. ;;
  172. ;; `frame-cmds.el' - Miscellaneous frame and window commands.
  173. ;;
  174. ;; `thumb-frm.el' - Shrink frames to a thumbnail size and
  175. ;; restore them again.
  176. ;;
  177. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  178. ;;
  179. ;;; Change Log:
  180. ;;
  181. ;; 2019/11/19 dadams
  182. ;; zoom-all-frames-(in|out):
  183. ;; Use zoom-frm-(in|out): zoom each relative to its current font. Visible only. Autoload.
  184. ;; 2015/11/01 dadams
  185. ;; Require cl.el at compile time, for macro case.
  186. ;; 2015/01/10 dadams
  187. ;; zoom-in, zoom-out: Added message about new zoom type.
  188. ;; zoom-in/out: Corrected msg: C- modifier was missing. Reminder at end of doc string.
  189. ;; 2013/12/31 dadams
  190. ;; zoom-in/out: Use set-transient-map, if defined.
  191. ;; 2013/09//29 dadams
  192. ;; zoom-in/out: Only for Emacs 24.3+ (needs set-temporary-overlay-map).
  193. ;; 2013/09/13 dadams
  194. ;; Added: zoom-all-frames-in, zoom-all-frames-out.
  195. ;; 2013/04/21 dadams
  196. ;; Added: zoom-in/out.
  197. ;; 2011/01/04 dadams
  198. ;; Added autoload cookies for defgroup and defcustom.
  199. ;; 2010/07/06 dadams
  200. ;; zoom-(in|out): Put doc strings before interactive spec. Thx to Yidong Chong.
  201. ;; 2009/06/11 dadams
  202. ;; Added buffer zooming, for Emacs 23.
  203. ;; Added zoom-(in|out), group zoom, zoom-frame/buffer.
  204. ;; 2006/01/07 dadams
  205. ;; Added :link for sending bug report.
  206. ;; 2006/01/06 dadams
  207. ;; frame-zoom-font-difference: Changed :group to Frame-Commands. Added :link.
  208. ;; 2005/01/18 dadams
  209. ;; Changed default value of frame-zoom-font-difference.
  210. ;; Added Note on saving changes.
  211. ;;
  212. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  213. ;;
  214. ;; This program is free software; you can redistribute it and/or modify
  215. ;; it under the terms of the GNU General Public License as published by
  216. ;; the Free Software Foundation; either version 2, or (at your option)
  217. ;; any later version.
  218. ;; This program is distributed in the hope that it will be useful,
  219. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  220. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  221. ;; GNU General Public License for more details.
  222. ;; You should have received a copy of the GNU General Public License
  223. ;; along with this program; see the file COPYING. If not, write to
  224. ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
  225. ;; Floor, Boston, MA 02110-1301, USA.
  226. ;;
  227. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  228. ;;
  229. ;;; Code:
  230. (eval-when-compile (require 'cl)) ;; case
  231. (require 'frame-cmds) ;; enlarge-font
  232. (defvar zoom-frame/buffer) ;; Defined here for Emacs 22+.
  233. ;;;;;;;;;;;;;;;;;;;;;;;;
  234. ;;; USER OPTIONS (VARIABLES) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  235. ;;;###autoload
  236. (defgroup zoom nil
  237. "Zoom a frame or buffer."
  238. :group 'frames :group 'Frame-Commands ; Defined in `frame-cmds.el'.
  239. :link `(url-link :tag "Send Bug Report"
  240. ,(concat "mailto:" "drew.adams" "@" "oracle" ".com?subject=\
  241. zoom-frm.el bug: \
  242. &body=Describe bug here, starting with `emacs -q'. \
  243. Don't forget to mention your Emacs and library versions."))
  244. :link '(url-link :tag "Other Libraries by Drew"
  245. "https://www.emacswiki.org/emacs/DrewsElispLibraries")
  246. :link '(url-link :tag "Download"
  247. "https://www.emacswiki.org/emacs/download/zoom-frm.el")
  248. :link '(url-link :tag "Description"
  249. "https://www.emacswiki.org/emacs/SetFonts#ChangingFontSize")
  250. :link '(emacs-commentary-link :tag "Commentary" "zoom-frm"))
  251. ;;;###autoload
  252. (defcustom frame-zoom-font-difference 1
  253. "*Number of points to change the frame font size when zooming.
  254. This applies to commands `zoom-in/out', `zoom-in', `zoom-out',
  255. `zoom-frm-in', and `zoom-frm-out' when zooming a frame.
  256. The absolute value of the value must be less than the current font
  257. size for the frame, because the new font size cannot be less than one
  258. point."
  259. :type 'integer :group 'zoom)
  260. (when (> emacs-major-version 22)
  261. (defcustom zoom-frame/buffer 'frame
  262. "*What to zoom: current frame or current buffer.
  263. See command `zoom-in/out', `zoom-in', or `zoom-out'."
  264. :type '(choice (const :tag "Zoom frame" frame) (const :tag "Zoom buffer" buffer))
  265. :group 'zoom))
  266. ;;; FUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  267. (unless (> emacs-major-version 22) (defalias 'zoom-in 'zoom-frm-in))
  268. ;;;###autoload
  269. (defun zoom-frm-in (&optional frame flip)
  270. "Zoom FRAME in by `frame-zoom-font-difference', making text larger.
  271. If `frame-zoom-font-difference' is negative, make text smaller.
  272. With prefix argument FLIP, reverse the direction:
  273. if `frame-zoom-font-difference' is positive, then make text smaller.
  274. This is equal but opposite to `zoom-frm-out'."
  275. (interactive (list (selected-frame) current-prefix-arg))
  276. (setq frame (or frame (selected-frame)))
  277. (let ((zoom-factor (frame-parameter frame 'zoomed))
  278. (increment (if flip (- frame-zoom-font-difference) frame-zoom-font-difference)))
  279. (unless zoom-factor (setq zoom-factor 0))
  280. (setq zoom-factor (+ zoom-factor increment))
  281. (enlarge-font increment frame)
  282. (modify-frame-parameters frame (list (cons 'zoomed zoom-factor)))))
  283. (unless (> emacs-major-version 22) (defalias 'zoom-out 'zoom-frm-out))
  284. ;;;###autoload
  285. (defun zoom-frm-out (&optional frame flip)
  286. "Zoom FRAME out by `frame-zoom-font-difference', making text smaller.
  287. If `frame-zoom-font-difference' is negative, make text larger.
  288. With prefix argument FLIP, reverse the direction:
  289. if `frame-zoom-font-difference' is positive, then make text larger.
  290. This is equal but opposite to `zoom-frm-in'."
  291. (interactive (list (selected-frame) current-prefix-arg))
  292. (setq frame (or frame (selected-frame)))
  293. (let ((frame-zoom-font-difference (- frame-zoom-font-difference)))
  294. (zoom-frm-in frame flip)))
  295. ;;;###autoload
  296. (defun zoom-frm-unzoom (&optional frame)
  297. "Cancel zoom of FRAME."
  298. (interactive)
  299. (setq frame (or frame (selected-frame)))
  300. (let ((zoom-factor (frame-parameter frame 'zoomed)))
  301. (if (not zoom-factor)
  302. (error "Frame is not zoomed")
  303. (enlarge-font (- zoom-factor) frame)
  304. (modify-frame-parameters frame '((zoomed))))))
  305. ;;;###autoload
  306. (defun toggle-zoom-frame (&optional frame)
  307. "Alternately zoom/unzoom FRAME by `frame-zoom-font-difference'."
  308. (interactive)
  309. (setq frame (or frame (selected-frame)))
  310. (if (frame-parameter frame 'zoomed) (zoom-frm-unzoom frame) (zoom-frm-in frame)))
  311. (when (> emacs-major-version 22)
  312. (defun zoom-in (arg)
  313. "Zoom current frame or buffer in.
  314. With a prefix arg, toggle between zooming frame and zooming buffer.
  315. Frame zooming uses command `zoom-frm-in'.
  316. Buffer zooming uses command `text-scale-increase'."
  317. (interactive "P")
  318. (when arg
  319. (setq zoom-frame/buffer (if (eq zoom-frame/buffer 'frame) 'buffer 'frame))
  320. (message "%s zooming from now on" (upcase (symbol-name zoom-frame/buffer)))
  321. (sit-for 1))
  322. (if (eq zoom-frame/buffer 'frame)
  323. (zoom-frm-in)
  324. (with-current-buffer
  325. (if (string-match "mouse" (format "%S" (event-basic-type
  326. last-command-event)))
  327. (window-buffer (posn-window (event-start last-command-event)))
  328. (current-buffer))
  329. (text-scale-increase 1))))
  330. (defun zoom-out (arg)
  331. "Zoom current frame or buffer out.
  332. With a prefix arg, toggle between zooming frame and zooming buffer.
  333. Frame zooming uses command `zoom-frm-out'.
  334. Buffer zooming uses command `text-scale-decrease'."
  335. (interactive "P")
  336. (when arg
  337. (setq zoom-frame/buffer (if (eq zoom-frame/buffer 'frame) 'buffer 'frame))
  338. (message "%s zooming from now on" (upcase (symbol-name zoom-frame/buffer)))
  339. (sit-for 1))
  340. (if (eq zoom-frame/buffer 'frame)
  341. (zoom-frm-out)
  342. (with-current-buffer
  343. (if (string-match "mouse" (format "%S" (event-basic-type
  344. last-command-event)))
  345. (window-buffer (posn-window (event-start last-command-event)))
  346. (current-buffer))
  347. (text-scale-decrease 1))))
  348. (when (or (fboundp 'set-transient-map) ; Emacs 24.4+
  349. (fboundp 'set-temporary-overlay-map)) ; Emacs 24.3
  350. (defun zoom-in/out (arg)
  351. "Zoom current frame or buffer in or out.
  352. A prefix arg determines the behavior, as follows:
  353. none : Use 1 as the zoom amount.
  354. plain `C-u': Toggle between zooming frame and zooming buffer.
  355. 0 : Unzoom: reset size to the default.
  356. other : Use the numeric value as the zoom amount.
  357. Similar to the behavior of command `text-scale-adjust', you can
  358. continue to use any of the keys `+', `-', `0', and `C-u' repeatedly.
  359. The zoom amount from the initial key sequence is used each time.
  360. Example: `C-3 C-x C-- C-- C-- C--' zooms out 4 times with a zoom
  361. amount of 3 each time.
  362. The zoom amount for frame zooming is a point-size increment/decrement.
  363. The zoom amount for buffer zooming is a number of text-scaling steps.
  364. Frame zooming uses command `zoom-frm-in'.
  365. Buffer zooming uses command `text-scale-increase'.
  366. User option `zoom-frame/buffer' determines the default zoom type:
  367. frame or buffer. If the option value is `buffer' and you never use
  368. plain `C-u' with this command then it acts like `text-scale-adjust'.
  369. Remember that you can also use `C-u' when you are done zooming."
  370. (interactive "P")
  371. (when (or (equal arg '(4)) (eq ?\025 last-command-event)) ; `C-u'
  372. (setq zoom-frame/buffer (if (eq zoom-frame/buffer 'frame) 'buffer 'frame)
  373. arg 1)
  374. (message "%s zooming from now on" (upcase (symbol-name zoom-frame/buffer)))
  375. (sit-for 1))
  376. (let* ((ev last-command-event)
  377. (echo-keystrokes nil)
  378. (base (event-basic-type ev))
  379. (step (if (or (equal arg '(4)) (eq ?\025 last-command-event)) ; C-u
  380. 'C-U-WAS-USED
  381. (setq arg (prefix-numeric-value arg))
  382. (case base
  383. ((?+ ?=) arg)
  384. (?- (- arg))
  385. (?0 0)
  386. (t arg)))))
  387. (message (if (eq step 0)
  388. "Reset to default size. Use C-x C-+/C-- to zoom in/out"
  389. "Use C-x C-+/C-- to zoom in/out, C-0 to reset (unzoom)"))
  390. (unless (eq step 'C-U-WAS-USED)
  391. (if (eq zoom-frame/buffer 'frame)
  392. (if (eq step 0)
  393. (zoom-frm-unzoom)
  394. (let ((frame-zoom-font-difference step)) (zoom-frm-in)))
  395. (with-current-buffer
  396. (if (string-match "mouse" (format "%S" (event-basic-type last-command-event)))
  397. (window-buffer (posn-window (event-start last-command-event)))
  398. (current-buffer))
  399. (text-scale-increase step))))
  400. (let ((fun (if (fboundp 'set-transient-map)
  401. #'set-transient-map
  402. #'set-temporary-overlay-map)))
  403. (funcall fun
  404. (let ((map (make-sparse-keymap)))
  405. (dolist (mods '(() (control)))
  406. (dolist (key '(?- ?+ ?= ?0)) ; The `=' key is often unshifted `+' key.
  407. (define-key map (vector (append mods (list key)))
  408. `(lambda () (interactive) (zoom-in/out ',arg)))))
  409. (define-key map "\C-u" `(lambda () (interactive) (zoom-in/out ',arg)))
  410. map)))))))
  411. ;;;###autoload
  412. (defun zoom-all-frames-in (&optional flip)
  413. "Zoom all visible frames in, making text larger.
  414. Zoom by `frame-zoom-font-difference' points.
  415. If `frame-zoom-font-difference' is negative, make text smaller.
  416. With prefix argument FLIP, reverse the direction:
  417. if `frame-zoom-font-difference' is positive, make text smaller.
  418. This is equal but opposite to `zoom-all-frames-out'."
  419. (interactive "P")
  420. (dolist (fr (visible-frame-list))
  421. (zoom-frm-in fr flip)))
  422. ;;;###autoload
  423. (defun zoom-all-frames-out (&optional flip)
  424. "Zoom all frames out, making text smaller.
  425. Zoom by `frame-zoom-font-difference' points.
  426. If `frame-zoom-font-difference' is negative, make text larger.
  427. With prefix argument FLIP, reverse the direction:
  428. if `frame-zoom-font-difference' is positive, make text larger.
  429. This is equal but opposite to `zoom-all-frames-in'."
  430. (interactive "P")
  431. (dolist (fr (visible-frame-list))
  432. (zoom-frm-out fr flip)))
  433. ;;;;;;;;;;;;;;;;;;;;;;;;;
  434. (provide 'zoom-frm)
  435. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  436. ;;; zoom-frm.el ends here