summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/crm.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/crm.el')
-rw-r--r--lisp/emacs-lisp/crm.el23
1 files changed, 13 insertions, 10 deletions
diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el
index 572c658d0fc..8e52a42921a 100644
--- a/lisp/emacs-lisp/crm.el
+++ b/lisp/emacs-lisp/crm.el
@@ -20,8 +20,8 @@
;; 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., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
@@ -197,9 +197,10 @@ If an element is found, bind:
respectively,
and return t."
- (let* ((minibuffer-string (buffer-string))
- (end-index (or (string-match "," minibuffer-string (1- (point)))
- (1- (point-max))))
+ (let* ((prompt-end (minibuffer-prompt-end))
+ (minibuffer-string (buffer-substring prompt-end (point-max)))
+ (end-index (or (string-match "," minibuffer-string (- (point) prompt-end))
+ (- (point-max) prompt-end)))
(target-string (substring minibuffer-string 0 end-index))
(index (or (string-match
(concat crm-separator "\\([^" crm-separator "]*\\)$")
@@ -213,9 +214,10 @@ and return t."
(progn
;;
(setq crm-beginning-of-element (match-beginning 1))
- (setq crm-end-of-element end-index)
+ (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)))
+ (setq crm-left-of-element
+ (substring target-string 0 (match-beginning 1)))
;; the current element
(setq crm-current-element (match-string 1 target-string))
;; string to the right of the current element
@@ -287,7 +289,7 @@ The meanings of the return values are:
(if completedp
(progn
- (erase-buffer)
+ (delete-region (minibuffer-prompt-end) (point-max))
(insert crm-left-of-element completion)
;; (if crm-complete-up-to-point
;; (insert crm-separator))
@@ -480,7 +482,7 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
(setq result
(catch 'crm-exit
- (if (eq (point-min) (point-max))
+ (if (eq (minibuffer-prompt-end) (point-max))
(throw 'crm-exit t))
;; TODO: this test is suspect?
@@ -506,7 +508,8 @@ This function is modeled after `minibuffer_complete_and_exit' in src/minibuf.c"
nil
(if (equal result "check")
(let ((check-strings
- (crm-strings-completed-p (buffer-string))))
+ (crm-strings-completed-p
+ (buffer-substring (minibuffer-prompt-end) (point-max)))))
;; check all of minibuffer
(if (eq check-strings t)
(throw 'exit nil)