]> git.eshelyaron.com Git - emacs.git/commitdiff
Have `M-x battery' list all batteries under GNU/Linux
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 23 Aug 2019 00:40:26 +0000 (02:40 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 23 Aug 2019 00:40:26 +0000 (02:40 +0200)
* lisp/battery.el (battery-upower-device): Remove (bug#25559).
(battery--find-linux-sysfs-batteries): New function.
(battery-status-function, battery-linux-sysfs): Use it to list all
batteries, no matter what they're called.

etc/NEWS
lisp/battery.el

index 3fdc185af4f07f638dbaef3792aa6a74c118ef9e..da3c29b1ac5fca4ebd9aa5d923195a53d22607fd 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -507,6 +507,11 @@ current and the previous or the next line, as before.
 \f
 * Changes in Specialized Modes and Packages in Emacs 27.1
 
+---
+** On GNU/Linux, `M-x battery' will now list all batteries, no matter
+what they're named, and the `battery-linux-sysfs-regexp' variable has
+been removed.
+
 ** The 'list-processes' command now includes port numbers in the
 network connection information (in addition to the host name).
 
index 7037d07dcf06883f299b1bbf6690320c487dc648..0ef6d37b4069ac4192c676e68b798851f383f8d4 100644 (file)
   :prefix "battery-"
   :group 'hardware)
 
-(defcustom battery-linux-sysfs-regexp "[bB][aA][tT][0-9]?$"
-  "Regexp for folder names to be searched under
-  /sys/class/power_supply/ that contain battery information."
-  :version "26.1"
-  :type 'regexp
-  :group 'battery)
-
 (defcustom battery-upower-device "battery_BAT1"
   "Upower battery device name."
   :version "26.1"
   :type 'string
   :group 'battery)
 
+(defun battery--find-linux-sysfs-batteries ()
+  (let ((dirs nil))
+    (dolist (file (directory-files "/sys/class/power_supply/" t))
+      (when (and (or (file-directory-p file)
+                     (file-symlink-p file))
+                 (file-exists-p (expand-file-name "capacity" file)))
+        (push file dirs)))
+    (nreverse dirs)))
+
 (defcustom battery-status-function
   (cond ((and (eq system-type 'gnu/linux)
              (file-readable-p "/proc/apm"))
@@ -60,8 +62,7 @@
         #'battery-linux-proc-acpi)
        ((and (eq system-type 'gnu/linux)
              (file-directory-p "/sys/class/power_supply/")
-             (directory-files "/sys/class/power_supply/" nil
-                               battery-linux-sysfs-regexp))
+              (battery--find-linux-sysfs-batteries))
         #'battery-linux-sysfs)
        ((and (eq system-type 'berkeley-unix)
              (file-executable-p "/usr/sbin/apm"))
@@ -449,9 +450,7 @@ The following %-sequences are provided:
     ;; available information together.
     (with-temp-buffer
       (dolist (dir (ignore-errors
-                   (directory-files
-                    "/sys/class/power_supply/" t
-                     battery-linux-sysfs-regexp)))
+                     (battery--find-linux-sysfs-batteries)))
        (erase-buffer)
        (ignore-errors (insert-file-contents
                        (expand-file-name "uevent" dir)))