[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r108677: Try to speed up pcomplete's
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r108677: Try to speed up pcomplete's calling of rpm -qa |
Date: |
Fri, 22 Jun 2012 00:01:32 -0700 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 108677
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Fri 2012-06-22 00:01:32 -0700
message:
Try to speed up pcomplete's calling of rpm -qa
Ref: http://lists.gnu.org/archive/html/emacs-devel/2012-04/msg00174.html
* lisp/pcmpl-rpm.el (pcmpl-rpm): New group.
(pcmpl-rpm-query-options): New option.
(pcmpl-rpm-packages): No need to inline it. Use pcmpl-rpm-query-options.
modified:
lisp/ChangeLog
lisp/pcmpl-rpm.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2012-06-22 01:50:35 +0000
+++ b/lisp/ChangeLog 2012-06-22 07:01:32 +0000
@@ -1,5 +1,10 @@
2012-06-22 Glenn Morris <address@hidden>
+ * pcmpl-rpm.el (pcmpl-rpm): New group.
+ (pcmpl-rpm-query-options): New option.
+ (pcmpl-rpm-packages): No need to inline it.
+ Use pcmpl-rpm-query-options.
+
* calendar/calendar.el (calendar-in-read-only-buffer):
Avoid some needless mode changes.
=== modified file 'lisp/pcmpl-rpm.el'
--- a/lisp/pcmpl-rpm.el 2012-04-07 18:52:43 +0000
+++ b/lisp/pcmpl-rpm.el 2012-06-22 07:01:32 +0000
@@ -27,18 +27,40 @@
(require 'pcomplete)
+(defgroup pcmpl-rpm nil
+ "Options for rpm completion."
+ :group 'pcomplete
+ :prefix "pcmpl-rpm-")
+
+;; rpm -qa can be slow. Adding --nodigest --nosignature is MUCH faster.
+(defcustom pcmpl-rpm-query-options
+ (let (opts)
+ (with-temp-buffer
+ (when (ignore-errors (call-process "rpm" nil t nil "--help"))
+ (if (search-backward "--nodigest " nil 'move)
+ (setq opts '("--nodigest")))
+ (goto-char (point-min))
+ (if (search-forward "--nosignature " nil t)
+ (push "--nosignature" opts))))
+ opts)
+ "List of extra options to add to an rpm query command."
+ :version "24.2"
+ :type '(repeat string)
+ :group 'pcmpl-rpm)
+
;; Functions:
-;; FIXME rpm -qa can be slow, so:
-;; Adding --nodigest --nosignature is MUCH faster.
-;; (Probably need to test --help for those options though.)
+;; TODO
+;; This can be slow, so:
;; Consider caching the result (cf woman).
;; Consider printing an explanatory message before running -qa.
-;;
-;; Seems pointless for this to be a defsubst.
-(defsubst pcmpl-rpm-packages ()
- (split-string (pcomplete-process-result "rpm" "-q" "-a")))
+(defun pcmpl-rpm-packages ()
+ "Return a list of all installed rpm packages."
+ (split-string (apply 'pcomplete-process-result "rpm"
+ (append '("-q" "-a") pcmpl-rpm-query-options))))
+;; Should this use pcmpl-rpm-query-options?
+;; I don't think it would speed it up at all (?).
(defun pcmpl-rpm-all-query (flag)
(message "Querying all packages with `%s'..." flag)
(let ((pkgs (pcmpl-rpm-packages))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r108677: Try to speed up pcomplete's calling of rpm -qa,
Glenn Morris <=