[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Proposal for battery.el
From: |
Michaël Cadilhac |
Subject: |
Re: Proposal for battery.el |
Date: |
Sun, 05 Nov 2006 13:53:03 +0100 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.90 (gnu/linux) |
Romain Francoise <address@hidden> writes:
> address@hidden (Michaël Cadilhac) writes:
>
> + (defun battery-search-for-one-match-in-files (files regexp match-num)
> + "Search REGEXP in content of the files listed in FILES.
> + If a match occured, return the parenthesized expression numbered by
> + MATCH-NUM in the match. Otherwise, return nil."
> + (with-temp-buffer
> + (while (and files
> + (not (or (ignore-errors
> + (insert-file-contents (car files))
> + (re-search-forward regexp))
> + (erase-buffer))))
> + (setq files (cdr files)))
> + (when files
> + (match-string match-num))))
>
> Since battery.el requires cl at compilation time, you can safely use
> `dolist'...
You're right, it'd enhance the readability of the code. Please
consider this (hopefully) final version.
Index: lisp/battery.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/battery.el,v
retrieving revision 1.36
diff -c -r1.36 battery.el
*** lisp/battery.el 9 May 2006 22:43:35 -0000 1.36
--- lisp/battery.el 5 Nov 2006 12:46:37 -0000
***************
*** 49,56 ****
(file-directory-p "/proc/acpi/battery"))
'battery-linux-proc-acpi)
((and (eq system-type 'darwin)
! (condition-case nil
! (with-temp-buffer
(and (eq (call-process "pmset" nil t nil "-g" "ps") 0)
(> (buffer-size) 0)))
(error nil)))
--- 49,56 ----
(file-directory-p "/proc/acpi/battery"))
'battery-linux-proc-acpi)
((and (eq system-type 'darwin)
! (condition-case nil
! (with-temp-buffer
(and (eq (call-process "pmset" nil t nil "-g" "ps") 0)
(> (buffer-size) 0)))
(error nil)))
***************
*** 355,399 ****
60)))
hours (/ minutes 60)))
(list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
! (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
! (with-temp-buffer
! (insert-file-contents
! "/proc/acpi/ac_adapter/AC/state")
! (when (re-search-forward "state: +\\(.*\\)$" nil t)
! (match-string 1))))
"N/A"))
! (cons ?d (or (when (file-exists-p
! "/proc/acpi/thermal_zone/THRM/temperature")
! (with-temp-buffer
! (insert-file-contents
! "/proc/acpi/thermal_zone/THRM/temperature")
! (when (re-search-forward
! "temperature: +\\([0-9]+\\) C$" nil t)
! (match-string 1))))
! (when (file-exists-p
! "/proc/acpi/thermal_zone/THM/temperature")
! (with-temp-buffer
! (insert-file-contents
! "/proc/acpi/thermal_zone/THM/temperature")
! (when (re-search-forward
! "temperature: +\\([0-9]+\\) C$" nil t)
! (match-string 1))))
! (when (file-exists-p
! "/proc/acpi/thermal_zone/THM0/temperature")
! (with-temp-buffer
! (insert-file-contents
! "/proc/acpi/thermal_zone/THM0/temperature")
! (when (re-search-forward
! "temperature: +\\([0-9]+\\) C$" nil t)
! (match-string 1))))
! (when (file-exists-p
! "/proc/acpi/thermal_zone/THR2/temperature")
! (with-temp-buffer
! (insert-file-contents
! "/proc/acpi/thermal_zone/THR2/temperature")
! (when (re-search-forward
! "temperature: +\\([0-9]+\\) C$" nil t)
! (match-string 1))))
"N/A"))
(cons ?r (or (and rate (concat (number-to-string rate) " "
rate-type)) "N/A"))
--- 355,373 ----
60)))
hours (/ minutes 60)))
(list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
! (cons ?L (or (battery-search-for-one-match-in-files
! (mapcar (lambda (e) (concat e "/state"))
! (directory-files "/proc/acpi/ac_adapter/"
! t "\\`[^.]"))
! "state: +\\(.*\\)$" 1)
!
"N/A"))
! (cons ?d (or (battery-search-for-one-match-in-files
! (mapcar (lambda (e) (concat e "/temperature"))
! (directory-files "/proc/acpi/thermal_zone/"
! t "\\`[^.]"))
! "temperature: +\\([0-9]+\\) C$" 1)
!
"N/A"))
(cons ?r (or (and rate (concat (number-to-string rate) " "
rate-type)) "N/A"))
***************
*** 478,483 ****
--- 452,468 ----
(or (cdr (assoc char alist)) ""))))
format t t))
+ (defun battery-search-for-one-match-in-files (files regexp match-num)
+ "Search REGEXP in the content of the files listed in FILES.
+ If a match occured, return the parenthesized expression numbered by
+ MATCH-NUM in the match. Otherwise, return nil."
+ (with-temp-buffer
+ (catch 'found
+ (dolist (file files)
+ (and (ignore-errors (insert-file-contents file nil nil nil 'replace))
+ (re-search-forward regexp nil t)
+ (throw 'found (match-string match-num)))))))
+
(provide 'battery)
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.10237
diff -c -0 -r1.10237 ChangeLog
*** lisp/ChangeLog 31 Oct 2006 11:07:10 -0000 1.10237
--- lisp/ChangeLog 5 Nov 2006 12:46:41 -0000
***************
*** 0 ****
--- 1,8 ----
+ 2006-10-31 Michaël Cadilhac <address@hidden>
+
+ * battery.el (battery-linux-proc-acpi): Search an ac_adapter in
+ `/proc/acpi/ac_adapter/*'. Ditto for the thermometers in
+ `/proc/acpi/thermal_zone/*'.
+ (battery-search-for-one-match-in-files): New. Search a regexp in
+ the content of some files.
+
--
/!\ My mail address changed, please update your files accordingly.
| Michaël `Micha' Cadilhac | In a World without Walls and Fences, |
| Epita/LRDE Promo 2007 | who needs Windows and Gates? |
| http://michael.cadilhac.name | -- Dino Esposito |
`-- - JID: address@hidden --' - --'
pgpc7yswV1TWM.pgp
Description: PGP signature