;;; 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
(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.
(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)))
(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
"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)
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))
(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.
(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")
;;;###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
(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 ?=))
(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
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)
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."
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)