
(setq prompt-keymap (make-keylist) prompt-esc-keymap (make-keylist) prompt-buffer-list nil)

(bind-keys prompt-keymap "esc" (quote (setq next-keymap-path (quote (prompt-esc-keymap esc-keymap)))) "tab" (quote prompt-complete-word) "return" (quote prompt-enter-line) "ctrl-g" (quote (throw (quote prompt) nil)))

(bind-keys prompt-esc-keymap "?" (quote prompt-print-word-completions))

(defun prompt2 (prompt-comp-func &optional prompt-title prompt-start word-regexps) 55102 (lisp-code "DI0I1I2I3ü€—L MF$û€†\tF H‡KF&‡HˆJ\nH±‰ü€Å‰ŠS&‹‰ŒSF&û€ÎŽ&‹F&Hqü€Ý‘\tû€â‘’\tH“H”qü€ù•I²–”û€þ‘—\tH‘˜\tH™F\"Hš›œ\t\t\tHžF&ŸH ¡sF!H¢‡\nF&‡H£\tþÀ¤¥\t\nF#G±HH¦\tHKF$HE" [prompt-buffer prompt-line-pos prompt-completions-pos result prompt-buffer-list make-buffer "*prompt*" buffer-list set-buffer-special word-regexps 0 word-regexp 1 word-not-regexp "." "^|$" prompt-title insert "Enter string:" split-line prompt-start format "\n%s\n\n" "\n\n\n" "::Completions::\n" cursor-pos goto line-end prev-line 3 (prompt-keymap global-keymap) keymap-path (lisp-code "" [recursive-edit] 1) (quote prompt) delq posp copy-area line-start clear-buffer] 5))

(defun prompt-enter-line nil (lisp-code "dü€û€t" [prompt cursor-pos prompt-completions-pos line-end] 3))

(defun prompt-complete-word nil (lisp-code "DI0I1I2I3\tÿ€“†!‡ˆ\n ‰Š\n\"TF#H‹bü€ÄŒHŽ\nH‘\tû’bü€ç“”L\tHŽ\nH•\tûJüŒŒH–\tH“”—\n\tH˜J™ûIE" [word word-pos comp-list num-found word-start left-char line-start copy-area cursor-pos funcall prompt-comp-func 0 beep delete-area prompt-completions-pos file-end title "No completions." 1 goto replace-string "Unique completion." prompt-print-completions make-completion-string format "%d completions."] 6))

(defun prompt-print-completions (comp-list &optional insert-pos) (lisp-code "D\t2\nH†\nH‡nþ€®ˆI²K‰‡LH‡MF&‡Hû€‘E" [dup-pos prompt-completions-pos ipos delete-area file-end insert "\n" comp-list format "%s\n"] 4))

(defun prompt-print-word-completions nil (lisp-code "\tÿ€Ž†‡\n\n\t" [prompt-print-completions funcall prompt-comp-func copy-area word-start left-char line-start cursor-pos] 6))

(defun prompt-complete-symbol (word) (lisp-code "\n\t\n" [mapcar symbol-name apropos concat 94 word] 6))

(defun prompt-complete-function (word) (lisp-code "\n†\n\n" [mapcar symbol-name apropos concat 94 word fboundp] 6))

(defun prompt-complete-variable (word) (lisp-code "\n†\n\n" [mapcar symbol-name apropos concat 94 word boundp] 6))

(defun prompt-complete-buffer (word) (lisp-code "\n\n" [delete-if-not (lambda (b) (lisp-code "\n" [string-head-eq b word] 3)) mapcar buffer-name buffer-list] 5))

(defun prompt-complete-filename (word) (lisp-code "D\t2\t4\t6†‡ˆ‰Š†\n\nE" [path-name word path base-name file directory-files files mapcar (lambda (x &aux y) (lisp-code "\nF$\tþ€‘\nF$H" [file-directory-p concat path x y 47] 4)) delete-if-not (lambda (f) (lisp-code "\n" [string-head-eq f file] 3))] 5))

(defun prompt-for-file (&optional prompt start-name) (lisp-code "qÿ€ˆF H" [prompt "Enter filename:" prompt2 prompt-complete-filename start-name] 4))

(defun prompt-for-buffer (&optional prompt start) (lisp-code "³þ€Š\tF Hqÿ€“F\"H" [start buffer-name prompt "Enter buffer name:" prompt2 prompt-complete-buffer] 4))

(defun prompt-for-symbol (&optional prompt start) (lisp-code "yþ€ˆl]þ€\tF Hqÿ€™F\"H†‡\t" [start symbol-name prompt "Enter name of symbol:" intern prompt2 prompt-complete-symbol symbol-word-regexps] 6))

(defun lisp-prompt (prompt &optional start) (lisp-code "" [prompt2 prompt-complete-symbol prompt start symbol-word-regexps] 5))

(defun prompt-for-function (&optional prompt start) (lisp-code "yþ€ˆl]þ€\tF Hqÿ€™F\"H†‡\t" [start symbol-name prompt "Enter name of function:" intern prompt2 prompt-complete-function symbol-word-regexps] 6))

(defun prompt-for-variable (&optional prompt start) (lisp-code "yþ€ˆl]þ€\tF Hqÿ€™F\"H†‡\t" [start symbol-name prompt "Enter name of variable:" intern prompt2 prompt-complete-variable symbol-word-regexps] 6))

(defun prompt-complete-from-list (word) (lisp-code "DI12þ€ L\nþ€—LKF!HMF\"Hû€…HE" [prompt-list dst src string-head-eq word] 3))

(defun prompt-from-list (prompt-list prompt &optional start) (lisp-code "" [prompt2 prompt-complete-from-list prompt start] 4))
