Increment c-version to 5.32.2.
[bpt/emacs.git] / lisp / battery.el
index 0b74072..3b245ed 100644 (file)
@@ -1,7 +1,6 @@
 ;;; battery.el --- display battery status information  -*- coding: iso-8859-1 -*-
 
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
 
 ;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org>
 ;; Keywords: hardware
@@ -60,7 +59,7 @@
         'battery-pmset)
        ((eq system-type 'windows-nt)
         'w32-battery-status))
-  "*Function for getting battery status information.
+  "Function for getting battery status information.
 The function has to return an alist of conversion definitions.
 Its cons cells are of the form
 
@@ -80,7 +79,7 @@ introduced by a `%' character in a control string."
         "%L power, battery %B (%p%% load, remaining time %t)")
        (battery-status-function
         "Power %L, battery %B (%p%% load, remaining time %t)"))
-  "*Control string formatting the string to display in the echo area.
+  "Control string formatting the string to display in the echo area.
 Ordinary characters in the control string are printed as-is, while
 conversion specifications introduced by a `%' character in the control
 string are substituted as defined by the current value of the variable
@@ -103,12 +102,17 @@ string are substituted as defined by the current value of the variable
   "String to display in the mode line.")
 ;;;###autoload (put 'battery-mode-line-string 'risky-local-variable t)
 
+(defcustom battery-mode-line-limit 100
+  "Percentage of full battery load below which display battery status"
+  :type 'integer
+  :group 'battery)
+
 (defcustom battery-mode-line-format
   (cond ((eq battery-status-function 'battery-linux-proc-acpi)
         "[%b%p%%,%d°C]")
        (battery-status-function
         "[%b%p%%]"))
-  "*Control string formatting the string to display in the mode line.
+  "Control string formatting the string to display in the mode line.
 Ordinary characters in the control string are printed as-is, while
 conversion specifications introduced by a `%' character in the control
 string are substituted as defined by the current value of the variable
@@ -128,18 +132,18 @@ string are substituted as defined by the current value of the variable
   :group 'battery)
 
 (defcustom battery-update-interval 60
-  "*Seconds after which the battery status will be updated."
+  "Seconds after which the battery status will be updated."
   :type 'integer
   :group 'battery)
 
 (defcustom battery-load-low 25
-  "*Upper bound of low battery load percentage.
+  "Upper bound of low battery load percentage.
 A battery load percentage below this number is considered low."
   :type 'integer
   :group 'battery)
 
 (defcustom battery-load-critical 10
-  "*Upper bound of critical battery load percentage.
+  "Upper bound of critical battery load percentage.
 A battery load percentage below this number is considered critical."
   :type 'integer
   :group 'battery)
@@ -160,22 +164,29 @@ The text being displayed in the echo area is controlled by the variables
 
 ;;;###autoload
 (define-minor-mode display-battery-mode
-  "Display battery status information in the mode line.
-The text being displayed in the mode line is controlled by the variables
+  "Toggle battery status display in mode line (Display Battery mode).
+With a prefix argument ARG, enable Display Battery mode if ARG is
+positive, and disable it otherwise.  If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+The text displayed in the mode line is controlled by
 `battery-mode-line-format' and `battery-status-function'.
-The mode line will be updated automatically every `battery-update-interval'
+The mode line is be updated every `battery-update-interval'
 seconds."
   :global t :group 'battery
   (setq battery-mode-line-string "")
   (or global-mode-string (setq global-mode-string '("")))
   (and battery-update-timer (cancel-timer battery-update-timer))
-  (if (not display-battery-mode)
-      (setq global-mode-string
-           (delq 'battery-mode-line-string global-mode-string))
-    (add-to-list 'global-mode-string 'battery-mode-line-string t)
-    (setq battery-update-timer (run-at-time nil battery-update-interval
-                                           'battery-update-handler))
-    (battery-update)))
+  (if (and battery-status-function battery-mode-line-format)
+      (if (not display-battery-mode)
+         (setq global-mode-string
+               (delq 'battery-mode-line-string global-mode-string))
+       (add-to-list 'global-mode-string 'battery-mode-line-string t)
+       (setq battery-update-timer (run-at-time nil battery-update-interval
+                                               'battery-update-handler))
+       (battery-update))
+    (message "Battery status not available")
+    (setq display-battery-mode nil)))
 
 (defun battery-update-handler ()
   (battery-update)
@@ -183,16 +194,21 @@ seconds."
 
 (defun battery-update ()
   "Update battery status information in the mode line."
-  (setq battery-mode-line-string
-       (propertize (if (and battery-mode-line-format
-                            battery-status-function)
-                       (battery-format
-                        battery-mode-line-format
-                        (funcall battery-status-function))
-                     "")
-                   'help-echo "Battery status information"))
+  (let ((data (and battery-status-function (funcall battery-status-function))))
+    (setq battery-mode-line-string
+         (propertize (if (and battery-mode-line-format
+                              (<= (car (read-from-string (cdr (assq ?p data))))
+                                  battery-mode-line-limit))
+                         (battery-format
+                          battery-mode-line-format
+                          data)
+                       "")
+                     'face
+                     (and (<= (car (read-from-string (cdr (assq ?p data))))
+                                  battery-load-critical)
+                          'error)
+                     'help-echo "Battery status information")))
   (force-mode-line-update))
-
 \f
 ;;; `/proc/apm' interface for Linux.
 
@@ -553,5 +569,4 @@ MATCH-NUM in the match.  Otherwise, return nil."
 \f
 (provide 'battery)
 
-;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
 ;;; battery.el ends here