(message "%s" matches)
nil)
(setq highlight (ecomplete-highlight-match-line matches line))
- (let ((local-map (make-sparse-keymap))
- selected)
- (define-key local-map (kbd "RET")
- (lambda () (setq selected (nth line (split-string matches "\n")))))
- (define-key local-map (kbd "M-n")
- (lambda () (setq line (min (1+ line) max-lines))))
- (define-key local-map (kbd "M-p")
- (lambda () (setq line (max (1- line) 0))))
- (let ((overriding-local-map local-map))
- (while (and (null selected)
- (setq command (read-key-sequence highlight))
- (lookup-key local-map command))
- (apply (key-binding command) nil)
- (setq highlight (ecomplete-highlight-match-line matches line))))
- (if selected
- (message selected)
- (message "Abort"))
- selected)))))
+ (while (not (memq (setq command (read-event highlight)) '(? return)))
+ (cond
+ ((eq command ?\M-n)
+ (setq line (min (1+ line) max-lines)))
+ ((eq command ?\M-p)
+ (setq line (max (1- line) 0))))
+ (setq highlight (ecomplete-highlight-match-line matches line)))
+ (when (eq command 'return)
+ (nth line (split-string matches "\n")))))))
(defun ecomplete-highlight-match-line (matches line)
(with-temp-buffer