view lisp/pcmpl-rpm.el @ 81166:4c7d6994e8d6

(org-export-region-as-html, org-replace-region-by-html) (org-number-to-letters, org-table-fedit-finish) (org-normalize-color, org-table-fedit-ref-right) (org-date-to-gregorian, org-table-fedit-move) (org-table-convert-refs-to-rc, org-calendar-holiday) (org-table-fedit-toggle-ref-type, org-write-agenda) (org-colgroup-info-to-vline-list, org-agenda-todo-previousset) (org-defkey, org-encode-for-stdout) (org-indent-line-function, org-export-as-html-to-buffer) (org-store-agenda-views, org-update-mode-line) (org-find-if, org-delete-all) (org-table-fedit-convert-buffer, org-emphasize) (org-uniquify, org-table-fedit-lisp-indent) (org-table-fedit-scroll, org-get-todo-sequence-head) (org-table-fedit-scroll-down, org-table-fedit-line-down) (org-table-fedit-ref-left, org-agenda-export-csv-mapper) (org-table-fedit-toggle-coordinates, org-dvipng-color) (org-table-fedit-line-up, org-table-fedit-ref-down) (org-table-formula-from-user, org-mode-flyspell-verify) (org-cycle-show-empty-lines, org-ctrl-c-ret) (org-table-formula-to-user, org-diary-to-ical-string) (orgtbl-export, org-table-fedit-post-command) (org-closed-in-range, org-shiftcontrolright) (org-table-convert-refs-to-an, org-table-hline-and-move) (org-table-formula-less-p, org-format-table-ascii) (org-agenda-get-sexps, org-shift-refpart) (org-diary-sexp-entry, org-time-string-to-absolute) (org-table-show-reference, org-letters-to-number) (org-fix-agenda-info, org-table-fedit-ref-up) (org-table-fedit-shift-reference, org-table-fedit-abort) (org-closest-date, org-shiftcontrolleft) (org-at-heading-or-item-p, org-rematch-and-replace) (org-agenda-todo-nextset, org-export-grab-title-from-buffer): New function. (org-table-edit-scroll-down, org-finish-edit-formulas) (org-table-edit-next-field, org-abort-edit-formulas) (org-font-lock-level, org-export-find-first-heading-line) (org-table-edit-line-down, org-table-edit-backward-field) (org-edit-formula-lisp-indent, org-table-edit-move) (org-check-log-option, org-this-word) (org-table-edit-line-up, org-table-edit-formulas-post-command) (org-agenda-file-to-end, org-expand-file-name) (org-fake-empty-table-line, org-table-edit-scroll) (org-toggle-log-option, org-show-reference): Function removed. (org-inhibit-invisibility, org-table-formula-make-cmp-string): New defsubst. (org-unmodified, org-batch-store-agenda-views) (org-batch-agenda-csv): New macro. (org-agenda-export): New customization group. (org-agenda-skip-deadline-if-done, org-agenda-remove-tags) (org-highest-priority, org-agenda-exporter-settings) (org-log-done-with-time, org-replace-disputed-keys) (org-format-latex-header, org-export-table-header-tags) (org-cycle-separator-lines, org-export-table-data-tags) (org-icalendar-include-sexps) (org-empty-line-terminates-plain-lists) (org-log-repeat, org-special-ctrl-a) (org-table-use-standard-references, org-disputed-keys) (org-export-skip-text-before-1st-heading, org-agenda-with-colors) (org-agenda-export-html-style): New option. (org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix) (org-CUA-compatible): Option removed. (org-agenda-structure, org-sexp-date): New face. (org-todo-keywords-for-agenda, org-not-done-keywords) (org-planning-or-clock-line-re, org-agenda-name) (org-table-colgroup-info, org-todo-sets) (constants-unit-system, org-clock-mode-line-entry) (org-mode-line-timer, org-table-current-begin-pos) (org-todo-keywords-1, org-mode-line-string) (org-table-clean-did-remove-column, org-table-fedit-map) (org-clock-heading, org-table-buffer-is-an) (org-agenda-info, org-done-keywords) (org-done-keywords-for-agenda, org-todo-heads) (org-todo-kwd-alist, org-clock-start-time): New variable. (org-todo-kwd-priority-p, org-edit-formulas-map) (org-repeat-re, org-todo-kwd-max-priority) (org-version, org-done-string) (org-table-clean-did-remove-column-1, org-disputed-keys): Variable removed. (org-table-translate-regexp, org-repeat-re, org-version): New constant. (org-ts-lengths): Constant removed. (org-follow-gnus-link): Don't ask how many articles to read. (org-export-find-first-export-line): Renamed from `org-export-find-first-heading'. Use `org-export-skip-text-before-1st-heading'. (org-table-fedit-post-command): Renamed from `org-table-edit-formulas-post-command'. (org-table-fedit-finish): Renamed from `org-finish-edit-formulas'. (org-table-fedit-abort): Renamed from `org-abort-edit-formulas'. (org-table-fedit-lisp-indent): Renamed from `org-edit-formula-lisp-indent'. (org-table-show-reference): Renamed from `org-show-reference'. (org-table-store-formulas): Use `org-table-formula-less-p'. (org-table-edit-formulas): Position cursor to current field equation. (org-update-checkbox-count, org-hide-archived-subtrees) (org-timestamp-up-day, org-timestamp-down-day) (org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup) (org-shiftmetadown, org-metaleft, org-metaright, org-metaup) (org-metadown, org-shiftup, org-shiftdown, org-shiftright) (org-shiftleft, org-ctrl-c-ctrl-c, org-context): Let `org-on-heading-p' also check for invisible heading. (org-read-date): Match am/pm times. (org-eval-in-calendar): Fix default date in prompt.
author Carsten Dominik <dominik@science.uva.nl>
date Wed, 06 Jun 2007 15:13:27 +0000
parents e3694f1cb928
children 9355f9b7bbff 95d0cdf160ea
line wrap: on
line source

;;; pcmpl-rpm.el --- functions for dealing with rpm completions

;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
;;   2005, 2006, 2007 Free Software Foundation, Inc.

;; This file is part of GNU Emacs.

;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; These functions provide completion rules for RedHat's `rpm' tool.

;;; Code:

(provide 'pcmpl-rpm)

(require 'pcomplete)

(defgroup pcmpl-rpm nil
  "Functions for dealing with CVS completions."
  :group 'pcomplete)

;; Functions:

(defsubst pcmpl-rpm-packages ()
  (split-string (pcomplete-process-result "rpm" "-q" "-a")))

(defun pcmpl-rpm-all-query (flag)
  (message "Querying all packages with `%s'..." flag)
  (let ((pkgs (pcmpl-rpm-packages))
	(provs (list t)))
    (while pkgs
      (nconc provs (split-string
		    (pcomplete-process-result
		     "rpm" "-q" (car pkgs) flag)))
      (setq pkgs (cdr pkgs)))
    (pcomplete-uniqify-list (cdr provs))))

(defsubst pcmpl-rpm-files ()
  (pcomplete-dirs-or-entries "\\.rpm\\'"))

;;;###autoload
(defun pcomplete/rpm ()
  "Completion for RedHat's `rpm' command.
These rules were taken from the output of `rpm --help' on a RedHat 6.1
system.  They follow my interpretation of what followed, but since I'm
not a major rpm user/builder, please send me any corrections you find.
You can use \\[eshell-report-bug] to do so."
  (let (mode)
    (while (<= pcomplete-index pcomplete-last)
      (unless mode
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (pcomplete-here*
	     '("--addsign"
	       "--checksig"
	       "--erase"
	       "--help"
	       "--initdb"
	       "--install"
	       "--pipe"
	       "--querytags"
	       "--rebuild"
	       "--rebuilddb"
	       "--recompile"
	       "--resign"
	       "--rmsource"
	       "--setperms"
	       "--setugids"
	       "--upgrade"
	       "--verify"
	       "--version"))
	  (pcomplete-opt "vqVyiUebtK")))
;     -b<stage> <spec>
;     -t<stage> <tarball>    - build package, where <stage> is one of:
;	  p                - prep (unpack sources and apply patches)
;	  l                - list check (do some cursory checks on %files)
;	  c                - compile (prep and compile)
;	  i                - install (prep, compile, install)
;	  b                - binary package (prep, compile, install, package)
;	  a                - bin/src package (prep, compile, install, package)
      (cond
       ((or (eq mode 'query)
	    (pcomplete-match "-[^-]*q"))
	(setq mode 'query)
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--changelog"
		 "--dbpath"
		 "--dump"
		 "--ftpport"            ;nyi for the next four
		 "--ftpproxy"
		 "--httpport"
		 "--httpproxy"
		 "--provides"
		 "--queryformat"
		 "--rcfile"
		 "--requires"
		 "--root"
		 "--scripts"
		 "--triggeredby"
		 "--whatprovides"
		 "--whatrequires"))
	      (cond
	       ((pcomplete-test "--dbpath")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--queryformat")
		(pcomplete-here*))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--root")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--scripts")
		(if (pcomplete-match "^--\\(.*\\)" 0)
		    (pcomplete-here* '("--triggers"))))
	       ((pcomplete-test "--triggeredby")
		(pcomplete-here* (pcmpl-rpm-packages)))
	       ((pcomplete-test "--whatprovides")
		(pcomplete-here*
		 (pcmpl-rpm-all-query "--provides")))
	       ((pcomplete-test "--whatrequires")
		(pcomplete-here*
		 (pcmpl-rpm-all-query "--requires")))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "af.p(pcmpl-rpm-files)ilsdcvR")
	    (pcomplete-here (pcmpl-rpm-packages)))))
       ((pcomplete-test "--pipe")
	(pcomplete-here* (funcall pcomplete-command-completion-function)))
       ((pcomplete-test "--rmsource")
	(pcomplete-here* (pcomplete-entries))
	(throw 'pcomplete-completions nil))
       ((pcomplete-match "\\`--re\\(build\\|compile\\)\\'")
	(pcomplete-here (pcmpl-rpm-files))
	(throw 'pcomplete-completions nil))
       ((pcomplete-match "\\`--\\(resign\\|addsign\\)\\'")
	(while (pcomplete-here (pcmpl-rpm-files))))
       ((or (eq mode 'checksig)
	    (pcomplete-test "--checksig"))
	(setq mode 'checksig)
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--nopgp"
		 "--nogpg"
		 "--nomd5"
		 "--rcfile"))
	      (cond
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "v")
	    (pcomplete-here (pcmpl-rpm-files)))))
       ((or (eq mode 'rebuilddb)
	    (pcomplete-test "--rebuilddb"))
	(setq mode 'rebuilddb)
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--dbpath"
		 "--root"
		 "--rcfile"))
	      (cond
	       ((pcomplete-test "--dbpath")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--root")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "v")
	    (pcomplete-here))))
       ((memq mode '(install upgrade))
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       (append
		'("--allfiles"
		  "--badreloc"
		  "--dbpath"
		  "--excludedocs"
		  "--excludepath"
		  "--force"
		  "--hash"
		  "--ignorearch"
		  "--ignoreos"
		  "--ignoresize"
		  "--includedocs"
		  "--justdb"
		  "--nodeps"
		  "--noorder"
		  "--noscripts"
		  "--notriggers")
		(if (eq mode 'upgrade)
		    '("--oldpackage"))
		'("--percent"
		  "--prefix"
		  "--rcfile"
		  "--relocate"
		  "--replacefiles"
		  "--replacepkgs"
		  "--root")))
	      (cond
	       ((pcomplete-test "--dbpath")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--relocate")
		(pcomplete-here*))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--excludepath")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--root")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--prefix")
		(pcomplete-here* (pcomplete-dirs)))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "vh")
	    (pcomplete-here (pcmpl-rpm-files)))))
       ((or (pcomplete-test "--install")
	    (pcomplete-match "-[^-]*i"))
	(setq mode 'install))
       ((or (pcomplete-test "--upgrade")
	    (pcomplete-match "-[^-]*U"))
	(setq mode 'upgrade))
       ((or (eq mode 'erase)
	    (pcomplete-test "--erase")
	    (pcomplete-match "-[^-]*e"))
	(setq mode 'erase)
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--allmatches"
		 "--dbpath"
		 "--justdb"
		 "--nodeps"
		 "--noorder"
		 "--noscripts"
		 "--notriggers"
		 "--rcfile"
		 "--root"))
	      (cond
	       ((pcomplete-test "--dbpath")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--root")
		(pcomplete-here* (pcomplete-dirs)))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "v")
	    (pcomplete-here (pcmpl-rpm-packages)))))
       ((or (eq mode 'verify)
	    (pcomplete-test "--verify"))
	(setq mode 'verify)
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--dbpath"
		 "--nodeps"
		 "--nofiles"
		 "--nomd5"
		 "--rcfile"
		 "--root"
		 "--triggeredby"
		 "--whatprovides"
		 "--whatrequires"))
	      (cond
	       ((pcomplete-test "--dbpath")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--root")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--triggeredby")
		(pcomplete-here* (pcmpl-rpm-packages)))
	       ((pcomplete-test "--whatprovides")
		(pcomplete-here*
		 (pcmpl-rpm-all-query "--provides")))
	       ((pcomplete-test "--whatrequires")
		(pcomplete-here*
		 (pcmpl-rpm-all-query "--requires")))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "af.p(pcmpl-rpm-files)v")
	    (pcomplete-here (pcmpl-rpm-packages)))))
       ((or (memq mode '(build test))
	    (pcomplete-match "\\`-[bt]"))
	(setq mode (if (pcomplete-match "\\`-b")
		       'build
		     'test))
	(if (pcomplete-match "^--\\(.*\\)" 0)
	    (progn
	      (pcomplete-here*
	       '("--buildroot"
		 "--clean"
		 "--nobuild"
		 "--rcfile"
		 "--rmsource"
		 "--short-circuit"
		 "--sign"
		 "--target"
		 "--timecheck"))
	      (cond
	       ((pcomplete-test "--buildroot")
		(pcomplete-here* (pcomplete-dirs)))
	       ((pcomplete-test "--rcfile")
		(pcomplete-here* (pcomplete-entries)))
	       ((pcomplete-test "--timecheck")
		(pcomplete-here*))))
	  (if (pcomplete-match "^-" 0)
	      (pcomplete-opt "v")
	    (pcomplete-here
	     (if (eq mode 'test)
		 (pcomplete-dirs-or-entries "\\.tar\\'")
	       (pcomplete-dirs-or-entries "\\.spec\\'"))))))
       (t
	(error "You must select a mode: -q, -i, -U, --verify, etc"))))))

;;; arch-tag: 4e64b490-fecf-430e-b2b9-70a8ad64b8c1
;;; pcmpl-rpm.el ends here