]> git.eshelyaron.com Git - emacs.git/commitdiff
Add adjust-buffer-face-height command
authorMiles Bader <miles@gnu.org>
Wed, 4 Jun 2008 05:38:04 +0000 (05:38 +0000)
committerMiles Bader <miles@gnu.org>
Wed, 4 Jun 2008 05:38:04 +0000 (05:38 +0000)
... and move face-height adjustment bindings into ctl-x-map using it.

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1203

doc/emacs/ChangeLog
doc/emacs/display.texi
lisp/ChangeLog
lisp/face-remap.el

index 314c42d4dffcafc80e522b61b1341b232d27eee6..41c3e3225bf23e7abdc9d31920f29b2ea978871b 100644 (file)
@@ -1,3 +1,10 @@
+2008-06-04  Miles Bader  <miles@gnu.org>
+
+       * display.texi (Temporary Face Changes): Add
+       `adjust-buffer-face-height'.  Rewrite description of
+       `increase-buffer-face-height' and `decrease-default-face-height' now
+       that they aren't bound by default.
+
 2008-06-03  Miles Bader  <miles@gnu.org>
 
        * display.texi (Temporary Face Changes): New node.
index 9cf8c986d4a2213bf5849201bd156762b6235664..47650ec560166c76b39a69b4c53966ecfeca3487 100644 (file)
@@ -1178,24 +1178,48 @@ fringe when positioned on that newline.
 These are commands which temporarily change the default face used to
 display text in a buffer.
 
+@cindex adjust buffer face height
+@findex adjust-buffer-face-height
+@kindex C-x C-+
+@kindex C-x C--
+@kindex C-x C-=
+@kindex C-x C-0
+To increase the height of the default face in the current buffer one
+step, type @kbd{C-x C-+} or @kbd{C-x C-=}.  To decrease it one step,
+type @kbd{C-x C--}.  To restore the default (global) face height, type
+@kbd{C-x C-0}.  These keys are all bound to the same command,
+@code{adjust-buffer-face-height}, which looks at the last key typed to
+determine the adjustment to make.
+
+The final key of these commands may be repeated without the leading
+@kbd{C-x} -- for instance, @kbd{C-x C-= C-= C-=} increases the face
+height by three steps.
+
+Each step scales the height of the default face by the value of the
+variable @code{text-scale-mode-step} (a negative number of steps
+decreases the height by the same amount).  As a special case, an
+argument of 0 will remove any scaling currently active.
+
+This command is a special-purpose wrapper around the
+@code{increase-buffer-face-height} command which makes repetition
+convenient even when it is bound in a non-top-level keymap.  For
+binding in a top-level keymap, @code{increase-buffer-face-height} or
+@code{decrease-default-face-height} may be more appropriate."
+
 @cindex increase buffer face height
 @findex increase-buffer-face-height
 @cindex decrease buffer face height
 @findex decrease-buffer-face-height
-@findex text-scale-mode
-To increase the size of the font used to display text in the current
-buffer, type @kbd{C-=} or @kbd{C-+}
-(@code{increase-buffer-face-height}).  With a numeric prefix argument,
-the size will be increased by that many steps (the default is 1 step);
-each step scales the font height by the value of the variable
-@code{text-scale-mode-step}.  If repeated, this command has a
+The @code{increase-buffer-face-height} and
+@code{decrease-buffer-face-height} commands increase or decrease the
+height of the default face in the current buffer by one step.  With a
+numeric prefix argument, the size will be increased/decreased by that
+many steps; each step scales the font height by the value of the
+variable @code{text-scale-mode-step}.  If repeated, this command has a
 cumulative effect.  As a special case, a prefix argument of 0 will
 remove any scaling currently active.
 
-To decrease the size of the text, type @kbd{C--}
-(@code{decrease-buffer-face-height}).  The behavior is similar to that
-of @code{increase-buffer-face-height}, but in reverse.
-
+@findex text-scale-mode
 These commands automatically enable or disable the
 @code{text-scale-mode} minor-mode, depending on whether the current
 font scaling is other than 1 or not.
index 7416318744f7b6501d1740590b162a63f7d73857..9cd7a630cf40d697222698394dcc60f2b11d23c2 100644 (file)
@@ -1,3 +1,10 @@
+2008-06-04  Miles Bader  <miles@gnu.org>
+
+       * face-remap.el (adjust-buffer-face-height): New function.
+       Add autoloaded keybindings in ctl-x-map.
+       (increase-buffer-face-height, decrease-buffer-face-height):
+       Simplify interactive spec to just "p".  Remove autoloaded keybindings.
+
 2008-06-03  Chong Yidong  <cyd@stupidchicken.com>
 
        * simple.el (line-move-1): If we did not move as far as desired,
index fe517a77a33f751418f6db00140aaf6c12a2c44d..f53e37e969ebd67b3f6e31ebe9a9aba4a9e1f053 100644 (file)
@@ -181,8 +181,6 @@ also enable or disable `text-scale-mode' as necessary."
                                                text-scale-mode-amount))))
   (force-window-update (current-buffer)))
 
-;;;###autoload (global-set-key [(control =)] 'increase-buffer-face-height)
-;;;###autoload (global-set-key [(control +)] 'increase-buffer-face-height)
 ;;;###autoload
 (defun increase-buffer-face-height (&optional inc)
   "Increase the height of the default face in the current buffer by INC steps.
@@ -192,28 +190,69 @@ Each step scales the height of the default face by the variable
 `text-scale-mode-step' (a negative number of steps decreases the
 height by the same amount).  As a special case, an argument of 0
 will remove any scaling currently active."
-  (interactive
-   (list
-    (cond ((eq current-prefix-arg '-) -1)
-         ((numberp current-prefix-arg) current-prefix-arg)
-         ((consp current-prefix-arg) -1)
-         (t 1))))
+  (interactive "p")
   (setq text-scale-mode-amount (if (= inc 0) 0 (+ text-scale-mode-amount inc)))
   (text-scale-mode (if (zerop text-scale-mode-amount) -1 1)))
 
-;;;###autoload (global-set-key [(control -)] 'decrease-buffer-face-height)
 ;;;###autoload
 (defun decrease-buffer-face-height (&optional dec)
   "Decrease the height of the default face in the current buffer by DEC steps.
 See `increase-buffer-face-height' for more details."
-  (interactive
-   (list
-    (cond ((eq current-prefix-arg '-) -1)
-         ((numberp current-prefix-arg) current-prefix-arg)
-         ((consp current-prefix-arg) -1)
-         (t 1))))
+  (interactive "p")
   (increase-buffer-face-height (- dec)))
 
+;;;###autoload (define-key ctl-x-map [(control ?+)] 'adjust-buffer-face-height)
+;;;###autoload (define-key ctl-x-map [(control ?-)] 'adjust-buffer-face-height)
+;;;###autoload (define-key ctl-x-map [(control ?=)] 'adjust-buffer-face-height)
+;;;###autoload (define-key ctl-x-map [(control ?0)] 'adjust-buffer-face-height)
+;;;###autoload
+(defun adjust-buffer-face-height (&optional inc)
+  "Increase or decrease the height of the default face in the current buffer.
+
+The actual adjustment made depends on the final component of the
+key-binding used to invoke the command, with all modifiers
+removed:
+
+   +, =   Increase the default face height by one step
+   -      Decrease the default face height by one step
+   0      Reset the default face height to the global default
+
+Then, continue to read input events and further adjust the face
+height as long as the input event read (with all modifiers
+removed) is one the above.
+
+Each step scales the height of the default face by the variable
+`text-scale-mode-step' (a negative number of steps decreases the
+height by the same amount).  As a special case, an argument of 0
+will remove any scaling currently active.
+
+This command is a special-purpose wrapper around the
+`increase-buffer-face-height' command which makes repetition
+convenient even when it is bound in a non-top-level keymap.  For
+binding in a top-level keymap, `increase-buffer-face-height' or
+`decrease-default-face-height' may be more appropriate."
+  (interactive "p")
+  (let ((first t) 
+       (step t)
+       (ev last-command-event))
+    (while step
+      (let ((base (event-basic-type ev)))
+       (cond ((or (eq base ?+) (eq base ?=))
+              (setq step inc))
+             ((eq base ?-)
+              (setq step (- inc)))
+             ((eq base ?0)
+              (setq step 0))
+             (first 
+              (setq step inc))
+             (t
+              (setq step nil))))
+      (when step
+       (increase-buffer-face-height step)
+       (setq inc 1 first nil)
+       (setq ev (read-event))))
+    (push ev unread-command-events)))
+
 \f
 ;; ----------------------------------------------------------------
 ;; variable-pitch-mode