;ELC   
;;; Compiled by rms@psilocin.ai.mit.edu on Tue Aug 18 03:23:11 1998
;;; from file /gd/gnu/emacs/lisp/complete.el
;;; in Emacs version 20.2.98.3
;;; with bytecomp version 2.48
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`complete.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(custom-declare-group 'partial-completion nil "Partial Completion of items." :prefix "pc-" :group 'minibuffer :group 'convenience)
#@411 Toggle Partial Completion mode.
When Partial Completion mode is enabled, TAB (or M-TAB if `PC-meta-flag' is
nil) is enhanced so that if some string is divided into words and each word is
delimited by a character in `PC-word-delimiters', partial words are completed
as much as possible and `*' characters are treated likewise in file names.
You must modify via \[customize] for this variable to have an effect.
(custom-declare-variable 'partial-completion-mode 'nil '(#$ . 736) :set (lambda (symbol value) (partial-completion-mode (or value 0))) :initialize 'custom-initialize-default :type 'boolean :group 'partial-completion :require 'complete)
#@403 *Control how the first character of a string is to be interpreted.
If nil, the first character of a string is not taken literally if it is a word
delimiter, so that ".e" matches "*.e*".
If t, the first character of a string is always taken literally even if it is a
word delimiter, so that ".e" matches ".e*".
If non-nil and non-t, the first character is taken literally only for file name
completion.
(custom-declare-variable 'PC-first-char ''find-file '(#$ . -1389) :type '(choice (const :tag "delimiter" nil) (const :tag "literal" t) (other :tag "find-file" find-file)) :group 'partial-completion)
#@148 *If non-nil, TAB means PC completion and M-TAB means normal completion.
Otherwise, TAB means normal completion and M-TAB means Partial Completion.
(custom-declare-variable 'PC-meta-flag 't '(#$ . -1997) :type 'boolean :group 'partial-completion)
#@383 *A string of characters treated as word delimiters for completion.
Some arcane rules:
If `]' is in this string, it must come first.
If `^' is in this string, it must not come first.
If `-' is in this string, it must come first or right after `]'.
In other words, if S is this string, then `[S]' must be a legal Emacs regular
expression (not containing character ranges like `a-z').
(custom-declare-variable 'PC-word-delimiters '"-_. " '(#$ . -2250) :type 'string :group 'partial-completion)
#@137 *A list of directories in which to look for include files.
If nil, means use the colon-separated path in the variable $INCPATH instead.
(custom-declare-variable 'PC-include-file-path ''("/usr/include" "/usr/local/include") '(#$ . -2748) :type '(repeat directory) :group 'partial-completion)
#@60 *If non-nil, wildcard support in \[find-file] is disabled.
(custom-declare-variable 'PC-disable-wildcards 'nil '(#$ . -3045) :type 'boolean :group 'partial-completion)
#@64 *If non-nil, include-file support in \[find-file] is disabled.
(custom-declare-variable 'PC-disable-includes 'nil '(#$ . -3219) :type 'boolean :group 'partial-completion)
#@69 If non-nil, default partial completion key bindings are suppressed.
(defvar PC-default-bindings t (#$ . 3396))
(byte-code "\302\300!\204 \303\300	B\303\207" [PC-old-read-file-name-internal current-load-list boundp nil] 2)
#@1157 Toggle Partial Completion mode.
With prefix ARG, turn Partial Completion mode on if ARG is positive.

When Partial Completion mode is enabled, TAB (or M-TAB if `PC-meta-flag' is
nil) is enhanced so that if some string is divided into words and each word is
delimited by a character in `PC-word-delimiters', partial words are completed
as much as possible.

For example, M-x p-c-b expands to M-x partial-completion-mode since no other
command begins with that sequence of characters, and
\[find-file] f_b.c TAB might complete to foo_bar.c if that file existed and no
other file in that directory begin with that sequence of characters.

Unless `PC-disable-wildcards' is non-nil, the "*" wildcard is interpreted
specially when entering file or directory names.  For example,
\[find-file] *.c RET finds each C file in the currenty directory, and
\[find-file] */foo_bar.c TAB completes the directory name as far as possible.

Unless `PC-disable-includes' is non-nil, the "<...>" sequence is interpreted
specially in \[find-file].  For example,
\[find-file] <sys/time.h> RET finds the file /usr/include/sys/time.h.
See also the variable `PC-include-file-path'.
(defalias 'partial-completion-mode #[(&optional arg) "\203\f \306!\307V\202 	?\310\n!\210\n\204 \311\312\313\"\210\202( \204( \314\312\313\"\210\n\2044 \311\312\315\"\210\202= \f\204= \314\312\315\"\210\n\204N \316!\203N \317M\210\202] \f\204] \204] \317K\317\320M\210\n\211)\207" [arg partial-completion-mode on-p PC-disable-wildcards PC-disable-includes PC-old-read-file-name-internal prefix-numeric-value 0 PC-bindings remove-hook find-file-not-found-hooks PC-try-load-many-files add-hook PC-look-for-include-file functionp read-file-name-internal PC-read-include-file-name-internal] 3 (#$ . 3629) "P"])
(defalias 'PC-bindings #[(bind) "	\f\204@ \306\307\310#\210\306\311\312#\210\306\313\314#\210\306\n\307\310#\210\306\n\311\312#\210\306\n\315\316#\210\306\n\317\316#\210\306\n\313\314#\210\306\320\321#\202\266 \205\266 \306\307\322#\210\306\311\323#\210\306\313\324#\210\306\320\322#\210\306\325\323#\210\306\326\327#\210\306\330\327#\210\306\331\324#\210\306\n\307\322#\210\306\n\311\323#\210\306\n\315\332#\210\306\n\317\332#\210\306\n\313\324#\210\306\n\320\322#\210\306\n\325\323#\210\306\n\326\332#\210\306\n\330\332#\210\306\n\331\324#\210\306\320\333#*\207" [minibuffer-local-completion-map minibuffer-local-must-match-map must-match-map completion-map bind global-map define-key "	" minibuffer-complete " " minibuffer-complete-word "?" minibuffer-completion-help "" minibuffer-complete-and-exit "\n" "	" complete-symbol PC-complete PC-complete-word PC-completion-help " " "" PC-force-complete-and-exit "\n" "?" PC-complete-and-exit PC-lisp-complete-symbol PC-default-bindings] 4])
(byte-code "\203 \300\301!\210\300\207" [partial-completion-mode t] 2)
#@520 Like minibuffer-complete, but allows "b--di"-style abbreviations.
For example, "M-x b--di" would match `byte-recompile-directory', or any
name which consists of three or more words, the first beginning with "b"
and the third beginning with "di".

The pattern "b--d" is ambiguous for `byte-recompile-directory' and
`beginning-of-defun', so this would produce a list of completions
just like when normal Emacs completions are ambiguous.

Word-delimiters for the purposes of Partial Completion are "-", "_",
".", and SPC.
(defalias 'PC-complete #[nil "\304 \203 \305 \207	=\204 \306\n\211\203? \307!\203? \310\307!!\203? \212\307!q\210\311d\"\2039 \312e\306#\202; \313 )\202B \314\306!)\207" [last-command this-command minibuffer-scroll-window window PC-was-meta-key minibuffer-complete nil window-buffer buffer-name pos-visible-in-window-p set-window-start scroll-other-window PC-do-completion] 5 (#$ . 6497) nil])
#@169 Like `minibuffer-complete-word', but allows "b--di"-style abbreviations.
See `PC-complete' for details.
This can be bound to other keys, like `-' and `.', if you wish.
(defalias 'PC-complete-word #[nil "\302 =\203 	\303=\203 \304 \207\305\306!\207\305\306!\210m\205 \307\310!\207" [PC-meta-flag last-command-char PC-was-meta-key 32 minibuffer-complete-word self-insert-command 1 PC-do-completion word] 2 (#$ . 7427) nil])
#@180 Like `minibuffer-complete-word', but allows "b--di"-style abbreviations.
See `PC-complete' for details.
This is suitable for binding to other keys which should act just like SPC.
(defalias 'PC-complete-space #[nil "\301 =\203\n \302 \207\303c\210m\205 \304\305!\207" [PC-meta-flag PC-was-meta-key minibuffer-complete-word " " PC-do-completion word] 2 (#$ . 7860) nil])
#@109 Like `minibuffer-complete-and-exit', but allows "b--di"-style abbreviations.
See `PC-complete' for details.
(defalias 'PC-complete-and-exit #[nil "\301 =\203\n \302 \207\303 \207" [PC-meta-flag PC-was-meta-key minibuffer-complete-and-exit PC-do-complete-and-exit] 2 (#$ . 8238) nil])
#@109 Like `minibuffer-complete-and-exit', but allows "b--di"-style abbreviations.
See `PC-complete' for details.
(defalias 'PC-force-complete-and-exit #[nil "\301\302 )\207" [minibuffer-completion-confirm nil PC-do-complete-and-exit] 1 (#$ . 8530) nil])
(defalias 'PC-do-complete-and-exit #[nil "\302 \303U\203\n \304 \207\305\306!\211\205$ \307=\204 	\204! \304 \202$ \310\311!)\207" [flag minibuffer-completion-confirm buffer-size 0 exit-minibuffer PC-do-completion exit complete PC-temp-minibuffer-message " [Confirm]"] 3])
#@107 Like `minibuffer-completion-help', but allows "b--di"-style abbreviations.
See `PC-complete' for details.
(defalias 'PC-completion-help #[nil "\301 =\203\n \302 \207\303\304!\207" [PC-meta-flag PC-was-meta-key minibuffer-completion-help PC-do-completion help] 2 (#$ . 9063) nil])
(defalias 'PC-was-meta-key #[nil "\301 G\302U?\206! \301 \303H\211\250\203 \304Y\202  \305\306!>??)\207" [key this-command-keys 1 0 128 meta event-modifiers] 4])
(byte-code "\306\300!\204 \307\300	B\306\302!\204 \307\302	B\306\303!\204  \310\303	B\306\304!\204, \310\304	B\306\305!\2048 \310\305	B\306\311!\204E \310	\311	B\306\312!\204R \310\n\312	B\310\207" [PC-ignored-extensions current-load-list PC-delims PC-ignored-regexp PC-word-failed-flag PC-delim-regex boundp empty-cache nil PC-ndelims-regex PC-delims-list] 2)
#@210 A function testing whether a minibuffer completion now will work filename-style.
The function takes no arguments, and typically looks at the value
of `minibuffer-completion-table' and the minibuffer contents.
(defvar PC-completion-as-file-name-predicate #[nil "\301>\207" [minibuffer-completion-table (read-file-name-internal read-directory-name-internal)] 2] (#$ . 9894))
(defalias 'PC-do-completion #[(&optional mode beg end) "\204 e	\204\f d\n\f@ A\306B\306C	{DA\205* \307\310D\"E\306F\306G\306H\306I\306J\306K\306LMNO\311=\203Y \312D#\203Y \313\202zA\203f \314D!G\202g \315CA\203\215 D\316D!\211I\232\204\215 	|\210Ic\210IDDG\\PQ\232\204\256 PQ\317Q\320QR\321Q\322QS\323Q\306\"TA\203P\307\324D\"\203PD\306UV\307\325V\"TI\307RVI#\211I\203\361 V\315IO\326VI\306OQVI\327\\I\202\312 \330V\326P!\211U\203H\314U@!UIWIA\211I\203W\314I@!\232\204I\203.\306A\306\306\331F\202D	|\210W\332D!P\211Dc\210DG\\*\202O\306A\306\306*A\203|E\203mDE\306OGD\315EOB\202\200\332D!G\314D!B\202\200DG\333G!\211HG\315V\203\253G\315H\334=\204\253X\331=\204\247X\203\253A\203\253\335\202\254\315\211JI\307RHI#\211I\203\"HIH\336=\203\354H\315IOSRHIT\306ORHISG\\RG\\I\202\261HIH\337>\203\372\340\202\373\315YH\315IY\\OSHIY\\\306OQHISG\\\335\\I)\202\261\315IA\203L\307\341HI#\211I\203LH\315IO\342HI\327\\\306OQH\202*\343HPH\307RA\203^\344\202_\345PDBGJ\\#\211I\204z\346D#K\202\265\346D\315IO#\211Z\211I\203\264\307HI@\"\203\253\347\315I@G\306I@$\210I@KBKIA\211I\204\215)K\204\363O\350=\203\324[\204\324\331[\351\335!\210\352\350!)\202z\353 \210\354F\203\341\355\202\355O\356=\203\354\357\202\355\360!\210\306\202zK\211LA\204O\361>\203BA\203_O\356=\204_K\\]^\232\204)\362\363\333]\211^\364#\365Q_\306I\\\203U\307_\\@\"\204L\307\366\\@\"\204L\\@IBI\\A\211\\\2041I\203^IK)O\356=?\205iK\211I\203\201I@G\230\204\201IA\211I\204oI\203\217O\204\217\354\367!\210I\203\245O\204\241`a=\204\245\331\202z\306\211\211\343bcdeO\356=\204\317\370\345\371\372K\"\"\211d\203\317\331\306fgO\350=\203\333\373dG\"dBG\\b\210\315f\315dGW\203Z`	W\203dfHg=\203\335u\210\202Q`	W\2030\374\375!\203dfHT>\204&dfH\227g\227=\2030\376\335!\210	S\202EA\203B\374\377!\203B\376\335!\210	S\331edf\211TOc\210	TfT\211f\202\346c\204h`\232\204h`c\374R!\203\273b\333d!SQb\370\345\371\201k K\"\"\211d\203\273f\315V\204\231dG\315V\203\273O\350=\203\342g\203\273dG\315V\203\273\306gd\315\335O\211d\204\342O\350=\203\306	\202\314c\206\314b\210*O\350=\203\362[\204\362e\205>\312\335	S{#\205>	S	|\202>e\203	O\311=\205>\312\201l  #\202>h\204O\356=\2037\201m \220\201n \201o L\201p \"!\210\212iq\210C\211j)\221\210\202=\354\201q !\210\306,\202zGK@\232\203YO\204y\354\201r !\210\202y	|\210\201s \201t A\203s\316BK@P!\202vK@\"c\210\331.\207" [beg end minibuffer-completion-table table minibuffer-completion-predicate pred nil string-match "<\\([^\"<>]*\\)>?$" exit PC-is-complete-p complete file-name-directory 0 substitute-in-file-name "[" "]" "[^" "]*" append "\\*.*/" "/[^/]*\\'" "*" 2 PC-expand-many-files t file-name-nondirectory regexp-quote 42 1 32 (36 94 46 42 43 63 91 93 92) -1 "\\\\\\*" "[^/]*" "\\`" "\\|\\*" "" all-completions set-text-properties word delete-backward-char PC-do-completion beep PC-temp-minibuffer-message " [Ambiguous dir name]" help " [No completions]" " [No match]" (help word) "\\(" mapconcat "\\|" "\\)\\'" "\\(\\`\\|/\\)[.][.]?/?\\'" " [Complete, but not unique]" try-completion mapcar list PC-chop-word looking-at " " delete-char "\\*" PC-completion-as-file-name-predicate filename dirname dirlength str incname ambig basestr regex p offset poss helpposs completion-ignore-case case-fold-search mode PC-word-delimiters PC-delims PC-delim-regex PC-ndelims-regex PC-delims-list files pat dir PC-first-char bump compl PC-word-failed-flag p2 completion-ignored-extensions PC-ignored-extensions PC-ignored-regexp this-command last-command skip pt prefix improved i first completion-auto-help standard-output completion-base-size #[(x) "\302	\"\205\f 	\303\225\304OC\207" [skip x string-match 0 nil] 3] buffer-string "*Completions*" display-completion-list sort string-lessp " [Next char not unique]" " [Sole completion]" format "%s"] 7])
(defalias 'PC-is-complete-p #[(str table pred) "<\203\f \304	\"\202$ \305!\203 	\306\232\206$ \307	\"\202$ 	\n\310#\211\205? \n\203> <\2048 \305!\203> \n!\205? )\207" [table str pred res assoc vectorp "nil" intern-soft lambda] 5])
(defalias 'PC-chop-word #[(new old) "\306\211\307\n	T#\211\203 \307\n\fT#\211\204 \2035 \203- \307\n\fT#\211\2035 \f\310TO\2026 \f*\207" [j i PC-delim-regex old new PC-word-failed-flag -1 string-match 0] 4])
(byte-code "\302\300!\204 \303\300	B\303\207" [PC-not-minibuffer current-load-list boundp nil] 2)
#@61 A Lisp version of `temp_minibuffer_message' from minibuf.c.
(defalias 'PC-temp-minibuffer-message #[(message) "\203 \301	!\210\306\307!\210\301\310!\207\311\312!\203 \312	!\207d\212\nb\210	c\210)\313\306\307!\210\nd|\210\f\2057 \314\315\211*\207" [PC-not-minibuffer message point-max inhibit-quit quit-flag unread-command-events sit-for 2 "" fboundp temp-minibuffer-message t nil (7)] 2 (#$ . 14978)])
#@374 Perform completion on Lisp symbol preceding point.
That symbol is compared against the symbols that exist
and any additional characters determined by what is there
are inserted.
If the symbol starts just after an open-parenthesis,
only symbols with function definitions are considered.
Otherwise, all symbols with function definitions, values
or properties are considered.
(defalias 'PC-lisp-complete-symbol #[nil "`\306 \307\216\212\n\203 \310\n!\210\311\312!\210gz\313U\203! \312u\210\202 `*\fSf\314=\2032 \315\2023 \316\317\320\321#.\207" [end buffer-syntax lisp-mode-syntax-table beg obarray minibuffer-completion-table syntax-table ((set-syntax-table buffer-syntax)) set-syntax-table backward-sexp 1 39 40 fboundp #[(sym) "\301!\206 \302!\206 \303!\207" [sym boundp fboundp symbol-plist] 2] t PC-do-completion nil minibuffer-completion-predicate PC-not-minibuffer] 4 (#$ . 15394) nil])
(byte-code "\302\300!\204 \303\300	B\303\207" [PC-many-files-list current-load-list boundp nil] 2)
(defalias 'PC-try-load-many-files #[nil "\306\307\"\205k \310	!\211@\311\nA!\312p!\210\n\204! \313\314!\210\315\213\210\316!\211\204H \317!\320\321!!q\210\322 \210\323\324\"\210\nA\203f \325\306\326	\"\203Y \327\202Z \330\nA\331#\332B\333,\324\207" [buffer-file-name pat files first next buf string-match "\\*" PC-expand-many-files reverse kill-buffer error "No matching files" ((byte-code "\203 \302@!\303	!\210)A\211\204 \302\207" [next buf find-file-noselect switch-to-buffer] 3)) get-file-buffer create-file-buffer abbreviate-file-name file-truename erase-buffer insert-file-contents t mapconcat "\\*.*/" identity file-name-nondirectory ", " PC-after-load-many-files nil filename truename PC-many-files-list find-file-hooks] 5])
(defalias 'PC-after-load-many-files #[nil "\302\303\"\304\305	\"\207" [find-file-hooks PC-many-files-list delq PC-after-load-many-files message "Also loaded %s."] 3])
(defalias 'PC-expand-many-files #[(name) "\212\306\307!q\210\310 \210\311\312P\313\"\210eb\210\314\315!?\205s \316c\210\317\320\321\313#\203/ \322\323!\210\324c\210\202 db\210\322\323!\210\325c\210eb\210\326p!\321\327p!\210\f\232\204W \330\331\332\211\333#\334Q\321\n\203q \335\n@\"\204j \n@	B\nA\211\204] 	*)\207" [name p files completion-ignored-extensions PC-ignored-extensions PC-ignored-regexp generate-new-buffer " *Glob Output*" erase-buffer shell-command "echo " t looking-at ".*No match" "(\"" search-forward " " nil delete-backward-char 1 "\" \"" "\")" read kill-buffer "\\(" mapconcat regexp-quote "\\|" "\\)\\'" string-match] 6])
(defalias 'PC-look-for-include-file #[nil "\306\307\310 \"\205\310 \311\224\311\225O\310 \312\224H\313\211\314p!\210\315\232\203\200 \212\316 @q\210\212\312y\210\317\320!\203B \311\224\311\225{\311\224Sf\202 \317\321!\204T \317\322!\204T \317\323!\203{ \311\224\311\225{\324\f\306\325\"\203m \312\326O\202 \306\327\"\204 \330P\202 \331\332!\210*\306\333\"\204\213 \334P\n\324=\203\305 	\206\227 \335 \211\203\256 \336\337	@!P!\204\256 	A\211\204\234 	\203\274 \337	@!P\202\301 \331\340\"\210)\202\346 \212\316 @q\210)'\336'P!\203\340 'P\202\345 \331\341\"\210)\342!\211\203\364 q\210\202\343!\211q\210\344 \210\345\346\"\210(\313),\346\207" [new-buf path punc name load-path default-directory string-match "[\"<]\\([^\"<>]*\\)[\">]?$" buffer-file-name 1 0 nil kill-buffer "" buffer-list looking-at "[ 	]*#[ 	]*include[ 	]+[<\"]\\(.+\\)[>\"][ 	]*[\n/]" "[ 	]*([ 	]*load[ 	]+\"\\([^\"]+\\)\"" "[ 	]*([ 	]*load-library[ 	]+\"\\([^\"]+\\)\"" "[ 	]*([ 	]*require[ 	]+'\\([^	 )]+\\)[	 )]" 60 "\\.elc$" -1 "\\.el$" ".el" error "Not on an #include line" "\\.[a-zA-Z0-9]+$" ".h" PC-include-file-path file-exists-p file-name-as-directory "No such include file: <%s>" "No such include file: \"%s\"" get-file-buffer create-file-buffer erase-buffer insert-file-contents t dir filename buf] 5])
(defalias 'PC-include-file-path #[nil "\206/ \304\305!\306\211\211\204 \307\310!\210\311\312\"\211\203- 	T\306O\nB\313	O\202 \n+\207" [PC-include-file-path pos path env getenv "INCPATH" nil error "No include file path specified" string-match ":[^:]+$" 0] 4])
#@208 Return all completions for FILE in any directory on SEARCH-PATH.
If optional third argument FULL is non-nil, returned pathnames should be 
absolute rather than relative to some directory on the SEARCH-PATH.
(defalias 'PC-include-file-all-completions #[(file search-path &optional full) "\306\307\"\310	!\203 \311	!\312\313	!\314	!\"\207\314	!\313	!\315\211\203- \306\316\"\315\203W @\203= \202> \f\317!\203P \306\320\312@\"\"\nBA*\202- \321\322\323\n\"\324\"\315\211\203\202 @@\232\204y @BA\211\204g -\207" [search-path file file-lists ndfile subdir dir mapcar #[(dir) "\203 \302!\207	\207" [dir default-directory file-name-as-directory] 2] file-name-absolute-p expand-file-name file-name-all-completions file-name-nondirectory file-name-directory nil #[(dir) "	P\207" [dir subdir] 2] file-directory-p #[(file) "	P\207" [subdir file] 2] sort apply nconc #[(x y) "	\231?\207" [x y] 2] full compressed sorted] 6 (#$ . 19610)])
(defalias 'PC-read-include-file-name-internal #[(string dir action) "\306\307\"\203P \310\224\310\225O\311\224\312O\313\314\315	\316 \"\"\211\204% \312\202N \f\312=\2033 \317\n\312#\202N \f\320=\203A \321\n\312#\202N \f\322=\205N \317\n\312#\320=+\207\f#\207" [string name str2 completion-table action PC-old-read-file-name-internal string-match "<\\([^\"<>]*\\)>?$" 1 0 nil mapcar #[(x) "\301\302\"C\207" [x format "<%s>"] 3] PC-include-file-all-completions PC-include-file-path try-completion t all-completions lambda dir] 6])
(provide 'complete)
