diff options
author | Glenn Morris <rgm@gnu.org> | 2012-06-22 00:01:32 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2012-06-22 00:01:32 -0700 |
commit | a4c8dd51c1ca62fbfc4fce54a4e90f6604d073af (patch) | |
tree | 447e9465640e0d37725144e9054eecd4bda8069c /lisp/pcmpl-rpm.el | |
parent | d251c37c729a3c96ad10c5f6675370d371159534 (diff) | |
download | emacs-a4c8dd51c1ca62fbfc4fce54a4e90f6604d073af.tar.gz |
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.
Diffstat (limited to 'lisp/pcmpl-rpm.el')
-rw-r--r-- | lisp/pcmpl-rpm.el | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el index f28469d791b..6347666507b 100644 --- a/lisp/pcmpl-rpm.el +++ b/lisp/pcmpl-rpm.el @@ -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)) |