> I fixed these bugs in crm.el. Thanks. There are still three more bugs. Typing TAB with no more completions moves point into the read-only area. This happens, for example, after evaluating
(completing-read-multiple "Prompt: " '(("hi") ("there"))) and typing `h TAB TAB'. The second bug doesn't allow RET without input string to return an empty string ("") when `require-match' arg is t, like `completing-read' does. The third bug occurs when trying to exit the minibuffer with RET. It signals an error " [An element did not match]" even for a valid completion. This patch should fix all three bugs: Index: lisp/emacs-lisp/crm.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/crm.el,v retrieving revision 1.6 diff -c -r1.6 crm.el *** lisp/emacs-lisp/crm.el 1 Jul 2005 01:10:42 -0000 1.6 --- lisp/emacs-lisp/crm.el 2 Jul 2005 00:05:27 -0000 *************** *** 214,220 **** (progn ;; (setq crm-beginning-of-element (match-beginning 1)) ! (setq crm-end-of-element end-index) ;; string to the left of the current element (setq crm-left-of-element (substring target-string 0 (match-beginning 1))) --- 214,220 ---- (progn ;; (setq crm-beginning-of-element (match-beginning 1)) ! (setq crm-end-of-element (+ end-index prompt-end)) ;; string to the left of the current element (setq crm-left-of-element (substring target-string 0 (match-beginning 1))) *************** *** 482,488 **** (setq result (catch 'crm-exit ! (if (eq (point-min) (point-max)) (throw 'crm-exit t)) ;; TODO: this test is suspect? --- 482,488 ---- (setq result (catch 'crm-exit ! (if (eq (minibuffer-prompt-end) (point-max)) (throw 'crm-exit t)) ;; TODO: this test is suspect? *************** *** 508,514 **** nil (if (equal result "check") (let ((check-strings ! (crm-strings-completed-p (buffer-string)))) ;; check all of minibuffer (if (eq check-strings t) (throw 'exit nil) --- 508,515 ---- nil (if (equal result "check") (let ((check-strings ! (crm-strings-completed-p ! (buffer-substring (minibuffer-prompt-end) (point-max))))) ;; check all of minibuffer (if (eq check-strings t) (throw 'exit nil) -- Juri Linkov http://www.jurta.org/emacs/ _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel