emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r106713: * lisp/battery.el (battery-l


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r106713: * lisp/battery.el (battery-linux-sysfs): Add missing parameters from acpi.
Date: Wed, 21 Dec 2011 07:20:40 -0500
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 106713
author: Jérémy Compostella <address@hidden>
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2011-12-21 07:20:40 -0500
message:
  * lisp/battery.el (battery-linux-sysfs): Add missing parameters from acpi.
modified:
  lisp/ChangeLog
  lisp/battery.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-12-21 11:30:00 +0000
+++ b/lisp/ChangeLog    2011-12-21 12:20:40 +0000
@@ -1,3 +1,7 @@
+2011-12-21  Jérémy Compostella  <address@hidden>
+
+       * battery.el (battery-linux-sysfs): Add missing parameters from acpi.
+
 2011-12-21  Teodor Zlatanov  <address@hidden>
 
        * progmodes/cfengine.el: Add Version.

=== modified file 'lisp/battery.el'
--- a/lisp/battery.el   2011-10-19 12:54:24 +0000
+++ b/lisp/battery.el   2011-12-21 12:20:40 +0000
@@ -421,10 +421,15 @@
 
 The following %-sequences are provided:
 %c Current capacity (mAh or mWh)
+%r Current rate
 %B Battery status (verbose)
+%d Temperature (in degrees Celsius)
 %p Battery load percentage
-%L AC line status (verbose)"
-  (let (charging-state
+%L AC line status (verbose)
+%m Remaining time (to charge or discharge) in minutes
+%h Remaining time (to charge or discharge) in hours
+%t Remaining time (to charge or discharge) in the form `h:min'"
+  (let (charging-state rate temperature hours
        (charge-full 0.0)
        (charge-now 0.0)
        (energy-full 0.0)
@@ -444,6 +449,12 @@
          (and (re-search-forward "POWER_SUPPLY_STATUS=\\(.*\\)$" nil t)
               (member charging-state '("Unknown" "Full" nil))
               (setq charging-state (match-string 1)))
+         (when (re-search-forward
+                 "POWER_SUPPLY_\\(CURRENT\\|POWER\\)_NOW=\\([0-9]*\\)$"
+                 nil t)
+           (setq rate (float (string-to-number (match-string 2)))))
+         (when (re-search-forward "POWER_SUPPLY_TEMP=\\([0-9]*\\)$" nil t)
+           (setq temperature (match-string 1)))
          (let (full-string now-string)
            ;; Sysfs may list either charge (mAh) or energy (mWh).
            ;; Keep track of both, and choose which to report later.
@@ -466,12 +477,30 @@
                   (setq energy-full (+ energy-full
                                        (string-to-number full-string))
                         energy-now  (+ energy-now
-                                       (string-to-number now-string)))))))))
+                                       (string-to-number now-string))))))
+         (goto-char (point-min))
+         (when (and energy-now rate (not (zerop rate))
+                    (re-search-forward
+                      "POWER_SUPPLY_VOLTAGE_NOW=\\([0-9]*\\)$" nil t))
+           (let ((remaining (if (string= charging-state "Discharging")
+                                energy-now
+                              (- energy-full energy-now))))
+             (setq hours (/ (/ (* remaining (string-to-number
+                                              (match-string 1)))
+                                rate)
+                            10000000.0)))))))
     (list (cons ?c (cond ((or (> charge-full 0) (> charge-now 0))
                          (number-to-string charge-now))
                         ((or (> energy-full 0) (> energy-now 0))
                          (number-to-string energy-now))
                         (t "N/A")))
+         (cons ?r (if rate (format "%.1f" (/ rate 1000000.0)) "N/A"))
+         (cons ?m (if hours (format "%d" (* hours 60)) "N/A"))
+         (cons ?h (if hours (format "%d" hours) "N/A"))
+         (cons ?t (if hours
+                      (format "%d:%02d" hours (* (- hours (floor hours)) 60))
+                    "N/A"))
+         (cons ?d (or temperature "N/A"))
          (cons ?B (or charging-state "N/A"))
          (cons ?p (cond ((> charge-full 0)
                          (format "%.1f"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]