diff options
| author | Stefan Monnier | 2008-04-30 03:41:39 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-04-30 03:41:39 +0000 |
| commit | 81ff94589d497e73142b795689b558c22f56f3e5 (patch) | |
| tree | c7e8443a41b9d82d8e4ef1150ee171decb4157a6 | |
| parent | 2f0adb0b8cb9f5c476dbce277193f5bf2b232b4b (diff) | |
| download | emacs-81ff94589d497e73142b795689b558c22f56f3e5.tar.gz emacs-81ff94589d497e73142b795689b558c22f56f3e5.zip | |
(completion--do-completion): Move point even if the completion makes no change.
(completion-pcm-try-completion): Fix computation of new point.
| -rw-r--r-- | lisp/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/minibuffer.el | 19 |
2 files changed, 18 insertions, 7 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 29d8e2bf80d..516c4f65462 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2008-04-30 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * minibuffer.el (completion--do-completion): Move point even if the | ||
| 4 | completion makes no change. | ||
| 5 | (completion-pcm-try-completion): Fix computation of new point. | ||
| 6 | |||
| 1 | 2008-04-30 David Hansen <david.hansen@gmx.net> | 7 | 2008-04-30 David Hansen <david.hansen@gmx.net> |
| 2 | 8 | ||
| 3 | * dired.el: Require 'cl. | 9 | * dired.el: Require 'cl. |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index f3c95df3f31..21988d823a2 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -360,8 +360,9 @@ E = after completion we now have an Exact match. | |||
| 360 | ;; Insert in minibuffer the chars we got. | 360 | ;; Insert in minibuffer the chars we got. |
| 361 | (goto-char end) | 361 | (goto-char end) |
| 362 | (insert completion) | 362 | (insert completion) |
| 363 | (delete-region beg end) | 363 | (delete-region beg end)) |
| 364 | (goto-char (+ beg comp-pos))) | 364 | ;; Move point. |
| 365 | (goto-char (+ beg comp-pos)) | ||
| 365 | 366 | ||
| 366 | (if (not (or unchanged completed)) | 367 | (if (not (or unchanged completed)) |
| 367 | ;; The case of the string changed, but that's all. We're not sure | 368 | ;; The case of the string changed, but that's all. We're not sure |
| @@ -1283,13 +1284,17 @@ PATTERN is as returned by `completion-pcm--string->pattern'." | |||
| 1283 | (all (completion-pcm--all-completions pattern table pred))) | 1284 | (all (completion-pcm--all-completions pattern table pred))) |
| 1284 | (when all | 1285 | (when all |
| 1285 | (let* ((mergedpat (completion-pcm--merge-completions all pattern)) | 1286 | (let* ((mergedpat (completion-pcm--merge-completions all pattern)) |
| 1286 | ;; `mergedpat' is in reverse order. | 1287 | ;; `mergedpat' is in reverse order. Place new point (by |
| 1287 | (pointpat (or (memq 'point mergedpat) (memq 'any mergedpat))) | 1288 | ;; order of preference) either at the old point, or at |
| 1288 | ;; New pos from the end. | 1289 | ;; the last place where there's something to choose, or |
| 1290 | ;; at the very end. | ||
| 1291 | (pointpat (or (memq 'point mergedpat) (memq 'any mergedpat) | ||
| 1292 | margedpat)) | ||
| 1293 | ;; New pos from the start. | ||
| 1289 | (newpos (length (completion-pcm--pattern->string pointpat))) | 1294 | (newpos (length (completion-pcm--pattern->string pointpat))) |
| 1290 | ;; Do it afterwards because it changes `pointpat' by sideeffect. | 1295 | ;; Do it afterwards because it changes `pointpat' by sideeffect. |
| 1291 | (merged (completion-pcm--pattern->string (nreverse mergedpat)))) | 1296 | (merged (completion-pcm--pattern->string (nreverse mergedpat)))) |
| 1292 | (cons merged (- (length merged) newpos)))))) | 1297 | (cons merged newpos))))) |
| 1293 | 1298 | ||
| 1294 | 1299 | ||
| 1295 | (provide 'minibuffer) | 1300 | (provide 'minibuffer) |