]> code.delx.au - gnu-emacs/blobdiff - lisp/face-remap.el
Fixes: debbugs:6594
[gnu-emacs] / lisp / face-remap.el
index 88c1c7790402ad56007f189054924bc1ac854afc..6bb84acb16c9b802d6d6359bd296d4095d94255a 100644 (file)
@@ -1,6 +1,6 @@
 ;;; face-remap.el --- Functions for managing `face-remapping-alist'
 ;;
-;; Copyright (C) 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 ;;
 ;; Author: Miles Bader <miles@gnu.org>
 ;; Keywords: faces face remapping display user commands
@@ -103,7 +103,7 @@ The list structure of ENTRY may be destructively modified."
   (setcdr entry (sort (cdr entry) 'face-attrs-more-relative-p))
   (nreverse entry))
 
-;;;### autoload
+;;;###autoload
 (defun face-remap-add-relative (face &rest specs)
   "Add a face remapping entry of FACE to SPECS in the current buffer.
 
@@ -146,7 +146,7 @@ COOKIE should be the return value from that function."
                  (remq remapping face-remapping-alist)))
          (cdr cookie))))))
 
-;;;### autoload
+;;;###autoload
 (defun face-remap-reset-base (face)
   "Set the base remapping of FACE to inherit from FACE's global definition."
   (let ((entry (assq face face-remapping-alist)))
@@ -160,7 +160,7 @@ COOKIE should be the return value from that function."
                (remq entry face-remapping-alist))
        (setcar (last entry) face)))))  ; otherwise, just inherit global def
 
-;;;### autoload
+;;;###autoload
 (defun face-remap-set-base (face &rest specs)
   "Set the base remapping of FACE in the current buffer to SPECS.
 If SPECS is empty, the default base remapping is restored, which
@@ -188,7 +188,8 @@ not inherit from the global definition of FACE."
   "Scale factor used by `text-scale-mode'.
 Each positive or negative step scales the default face height by this amount."
   :group 'display
-  :type 'number)
+  :type 'number
+  :version "23.1")
 
 ;; current remapping cookie for text-scale-mode
 (defvar text-scale-mode-remapping nil)
@@ -210,10 +211,10 @@ The amount of scaling is determined by the variable
 face size by the value of the variable `text-scale-mode-step'
 \(a negative amount shrinks the text).
 
-The `text-scale-increase' and `text-scale-decrease' functions may
-be used to interactively modify the variable
-`text-scale-mode-amount' (they also enable or disable
-`text-scale-mode' as necessary)."
+The `text-scale-increase', `text-scale-decrease', and
+`text-scale-set' functions may be used to interactively modify
+the variable `text-scale-mode-amount' (they also enable or
+disable `text-scale-mode' as necessary)."
   :lighter (" " text-scale-mode-lighter)
   (when text-scale-mode-remapping
     (face-remap-remove-relative text-scale-mode-remapping))
@@ -229,7 +230,20 @@ be used to interactively modify the variable
   (force-window-update (current-buffer)))
 
 ;;;###autoload
-(defun text-scale-increase (&optional inc)
+(defun text-scale-set (level)
+  "Set the scale factor of the default face in the current buffer to LEVEL.
+If LEVEL is non-zero, `text-scale-mode' is enabled, otherwise it is disabled.
+
+LEVEL is a number of steps, with 0 representing the default size.
+Each step scales the height of the default face by the variable
+`text-scale-mode-step' (a negative number decreases the height by
+the same amount)."
+  (interactive "p")
+  (setq text-scale-mode-amount level)
+  (text-scale-mode (if (zerop text-scale-mode-amount) -1 1)))
+
+;;;###autoload
+(defun text-scale-increase (inc)
   "Increase the height of the default face in the current buffer by INC steps.
 If the new height is other than the default, `text-scale-mode' is enabled.
 
@@ -243,7 +257,7 @@ will remove any scaling currently active."
   (text-scale-mode (if (zerop text-scale-mode-amount) -1 1)))
 
 ;;;###autoload
-(defun text-scale-decrease (&optional dec)
+(defun text-scale-decrease (dec)
   "Decrease the height of the default face in the current buffer by DEC steps.
 See `text-scale-increase' for more details."
   (interactive "p")
@@ -254,7 +268,7 @@ See `text-scale-increase' for more details."
 ;;;###autoload (define-key ctl-x-map [(control ?=)] 'text-scale-adjust)
 ;;;###autoload (define-key ctl-x-map [(control ?0)] 'text-scale-adjust)
 ;;;###autoload
-(defun text-scale-adjust (&optional inc)
+(defun text-scale-adjust (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
@@ -281,7 +295,8 @@ a top-level keymap, `text-scale-increase' or
   (interactive "p")
   (let ((first t)
        (step t)
-       (ev last-command-event))
+       (ev last-command-event)
+       (echo-keystrokes nil))
     (while step
       (let ((base (event-basic-type ev)))
        (cond ((or (eq base ?+) (eq base ?=))
@@ -297,7 +312,7 @@ a top-level keymap, `text-scale-increase' or
       (when step
        (text-scale-increase step)
        (setq inc 1 first nil)
-       (setq ev (read-event))))
+       (setq ev (read-event "+,-,0 for further adjustment: "))))
     (push ev unread-command-events)))
 
 \f
@@ -309,7 +324,8 @@ a top-level keymap, `text-scale-increase' or
 It may contain any value suitable for a `face' text property,
 including a face name, a list of face names, a face-attribute
 plist, etc."
-  :group 'display)
+  :group 'display
+  :version "23.1")
 
 ;; current remapping cookie for  buffer-face-mode
 (defvar buffer-face-mode-remapping nil)
@@ -377,7 +393,7 @@ including a face name, a list of face names, or a face-attribute
 
 If INTERACTIVE is non-nil, a message will be displayed describing the result.
 
-This is a wrapper function which calls just `buffer-face-set' or
+This is a wrapper function which calls `buffer-face-set' or
 `buffer-face-toggle' (depending on ARG), and prints a status
 message in the echo area.  In many cases one of those functions
 may be more appropriate."
@@ -401,7 +417,8 @@ may be more appropriate."
 An interface to `buffer-face-mode' which uses the `variable-pitch' face.
 Besides the choice of face, it is the same as `buffer-face-mode'."
   (interactive (list (or current-prefix-arg 'toggle)))
-  (buffer-face-mode-invoke 'variable-pitch arg (interactive-p)))
+  (buffer-face-mode-invoke 'variable-pitch arg
+                          (called-interactively-p 'interactive)))
 
 
 (provide 'face-remap)