emacs-diffs
[Top][All Lists]
Advanced

[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))


reply via email to

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