# HG changeset patch # User Stefan Monnier # Date 1095543224 0 # Node ID b628e08b02303d0150d4b3487f05ed63f40e8e7d # Parent 53277dccf4695b243835f3eaf5b9686ef58c91e3 (battery-linux-proc-apm): Use string-to-number. (battery-linux-proc-acpi): Ignore all hidden files in the battery dir. Use dolist (and less indentation). Use erase-buffer. Pre-initialize `design-capacity', `warn', and `low'. (battery-format): Use replace-regexp-in-string. diff -r 53277dccf469 -r b628e08b0230 lisp/ChangeLog --- a/lisp/ChangeLog Sat Sep 18 20:27:40 2004 +0000 +++ b/lisp/ChangeLog Sat Sep 18 21:33:44 2004 +0000 @@ -1,3 +1,11 @@ +2004-09-18 Stefan Monnier + + * battery.el (battery-linux-proc-apm): Use string-to-number. + (battery-linux-proc-acpi): Ignore all hidden files in the battery dir. + Use dolist (and less indentation). Use erase-buffer. + Pre-initialize `design-capacity', `warn', and `low'. + (battery-format): Use replace-regexp-in-string. + 2004-09-18 Ralph Schleicher * battery.el: Delete superfluous empty lines. @@ -15,8 +23,8 @@ 2004-09-17 Romain Francoise - * ibuf-ext.el (define-ibuffer-filter filename): Expand - dired-directory since buffer-file-name is absolute. + * ibuf-ext.el (define-ibuffer-filter filename): + Expand dired-directory since buffer-file-name is absolute. 2004-09-17 Dan Nicolaescu @@ -32,16 +40,14 @@ Use min-colors. * term.el (term-down): Perform vertical motion if DOWN is negative. - (term-exec-1): Set both TERMCAP and TERMINFO - unconditionally. + (term-exec-1): Set both TERMCAP and TERMINFO unconditionally. (term-termcap-format): Synchronyze with the eterm terminfo entry in etc/e/eterm.ti. (term-handle-colors-array): If the current foreground or background are zero (i.e. unspecified), use the foreground and background of the default face for reverse video. (term-ansi-at-eval-string, term-ansi-default-fg) - (term-ansi-default-bg, term-ansi-current-temp): Delete unused - variable. + (term-ansi-default-bg, term-ansi-current-temp): Delete unused variable. (term-mem): Delete ununsed function. (term-protocol-version): Increment. (term-current-face): Set to default. diff -r 53277dccf469 -r b628e08b0230 lisp/battery.el --- a/lisp/battery.el Sat Sep 18 20:27:40 2004 +0000 +++ b/lisp/battery.el Sat Sep 18 21:33:44 2004 +0000 @@ -1,6 +1,7 @@ ;;; battery.el --- display battery status information -;; Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004 +;; Free Software Foundation, Inc. ;; Author: Ralph Schleicher ;; Keywords: hardware @@ -31,6 +32,7 @@ ;;; Code: (require 'timer) +(eval-when-compile (require 'cl)) (defgroup battery nil @@ -181,20 +183,20 @@ (re-search-forward battery-linux-proc-apm-regexp) (setq driver-version (match-string 1)) (setq bios-version (match-string 2)) - (setq tem (string-to-int (match-string 3) 16)) + (setq tem (string-to-number (match-string 3) 16)) (if (not (logand tem 2)) (setq bios-interface "not supported") (setq bios-interface "enabled") (cond ((logand tem 16) (setq bios-interface "disabled")) ((logand tem 32) (setq bios-interface "disengaged"))) - (setq tem (string-to-int (match-string 4) 16)) + (setq tem (string-to-number (match-string 4) 16)) (cond ((= tem 0) (setq line-status "off-line")) ((= tem 1) (setq line-status "on-line")) ((= tem 2) (setq line-status "on backup"))) - (setq tem (string-to-int (match-string 6) 16)) + (setq tem (string-to-number (match-string 6) 16)) (if (= tem 255) (setq battery-status "N/A") - (setq tem (string-to-int (match-string 5) 16)) + (setq tem (string-to-number (match-string 5) 16)) (cond ((= tem 0) (setq battery-status "high" battery-status-symbol "")) ((= tem 1) (setq battery-status "low" @@ -242,64 +244,52 @@ %m Remaining time in minutes %h Remaining time in hours %t Remaining time in the form `h:min'" - (let (capacity design-capacity rate rate-type charging-state warn low - minutes hours) - ;; ACPI provides information about each battery present in the system - ;; in a separate subdirectory. We are going to merge the available + (let ((design-capacity 0) + (warn 0) + (low 0) + capacity rate rate-type charging-state minutes hours) + ;; ACPI provides information about each battery present in the system in + ;; a separate subdirectory. We are going to merge the available ;; information together since displaying for a variable amount of ;; batteries seems overkill for format-strings. (with-temp-buffer - (mapc (lambda (dir) - (if (string-match "/\\.\\.?\\'" dir) - nil - (delete-region (point-min) (point-max)) - (condition-case nil - (insert-file-contents (expand-file-name "state" dir)) - (error nil)) - (when (re-search-forward "present: +yes$" nil t) - (and (re-search-forward - "charging state: +\\(.*\\)$" nil t) - (or (null charging-state) - (string= charging-state "unknown")) - ;; On most multi-battery systems, most of the time - ;; only one battery is "charging/discharging", the - ;; others are "unknown". - (setq charging-state (match-string 1))) - (when (re-search-forward - "present rate: +\\([0-9]+\\) \\(m[AW]\\)$" nil t) - (setq rate (+ (or rate 0) - (string-to-int (match-string 1))) - rate-type (or (and rate-type - (if (string= rate-type (match-string 2)) - rate-type - (error - "Inconsistent rate types (%s vs. %s)" - rate-type (match-string 2)))) - (match-string 2)))) - (when (re-search-forward - "remaining capacity: +\\([0-9]+\\) m[AW]h$" nil t) - (setq capacity (+ (or capacity 0) - (string-to-int (match-string 1)))))) - (goto-char (point-max)) - (condition-case nil - (insert-file-contents (expand-file-name "info" dir)) - (error nil)) - (when (re-search-forward "present: +yes$" nil t) - (when (re-search-forward - "design capacity: +\\([0-9]+\\) m[AW]h$" nil t) - (setq design-capacity (+ (or design-capacity 0) - (string-to-int (match-string 1))))) - (when (re-search-forward - "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t) - (setq warn (+ (or warn 0) - (string-to-int (match-string 1))))) - (when (re-search-forward - "design capacity low: +\\([0-9]+\\) m[AW]h$" nil t) - (setq low (+ (or low 0) - (string-to-int (match-string 1)))))))) - (condition-case nil - (directory-files "/proc/acpi/battery/" t) - (error nil)))) + (dolist (dir (ignore-errors (directory-files "/proc/acpi/battery/" + t "\\`[^.]"))) + (erase-buffer) + (ignore-errors (insert-file-contents (expand-file-name "state" dir))) + (when (re-search-forward "present: +yes$" nil t) + (and (re-search-forward "charging state: +\\(.*\\)$" nil t) + (member charging-state '("unknown" nil)) + ;; On most multi-battery systems, most of the time only one + ;; battery is "charging"/"discharging", the others are + ;; "unknown". + (setq charging-state (match-string 1))) + (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$" + nil t) + (setq rate (+ (or rate 0) (string-to-number (match-string 1))) + rate-type (or (and rate-type + (if (string= rate-type (match-string 2)) + rate-type + (error + "Inconsistent rate types (%s vs. %s)" + rate-type (match-string 2)))) + (match-string 2)))) + (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$" + nil t) + (setq capacity + (+ (or capacity 0) (string-to-number (match-string 1)))))) + (goto-char (point-max)) + (ignore-errors (insert-file-contents (expand-file-name "info" dir))) + (when (re-search-forward "present: +yes$" nil t) + (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$" + nil t) + (incf design-capacity (string-to-number (match-string 1)))) + (when (re-search-forward + "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t) + (incf warn (string-to-number (match-string 1)))) + (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$" + nil t) + (incf low (string-to-number (match-string 1))))))) (and capacity rate (setq minutes (if (zerop rate) 0 (floor (* (/ (float (if (string= charging-state @@ -336,8 +326,8 @@ rate-type)) "N/A")) (cons ?B (or charging-state "N/A")) (cons ?b (or (and (string= charging-state "charging") "+") - (and low (< capacity low) "!") - (and warn (< capacity warn) "-") + (and (< capacity low) "!") + (and (< capacity warn) "-") "")) (cons ?h (or (and hours (number-to-string hours)) "N/A")) (cons ?m (or (and minutes (number-to-string minutes)) "N/A")) @@ -355,28 +345,16 @@ (defun battery-format (format alist) "Substitute %-sequences in FORMAT." - (let ((index 0) - (length (length format)) - (result "") - char flag elem) - (while (< index length) - (setq char (aref format index)) - (if (not flag) - (if (char-equal char ?%) - (setq flag t) - (setq result (concat result (char-to-string char)))) - (cond ((char-equal char ?%) - (setq result (concat result "%"))) - ((setq elem (assoc char alist)) - (setq result (concat result (cdr elem))))) - (setq flag nil)) - (setq index (1+ index))) - (or (null flag) - (setq result (concat result "%"))) - result)) + (replace-regexp-in-string + "%." + (lambda (str) + (let ((char (aref str 1))) + (if (eq char ?%) "%" + (or (cdr (assoc char alist)) "")))) + format t t)) (provide 'battery) -;;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37 +;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37 ;;; battery.el ends here