summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2017-11-11 10:25:20 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2017-11-11 10:25:20 -0500
commitd63c9a96f51fd4d723dc66a6cc0a8a0a04c8ce6c (patch)
tree411462f806a0c3fe5ac5d2b7a437e5ea64892bd9 /lisp
parent7657a867095f9edbb43c22f979f06dbe880059b7 (diff)
downloademacs-d63c9a96f51fd4d723dc66a6cc0a8a0a04c8ce6c.tar.gz
* lisp/minibuffer.el: Install a workaround for bug#16274
* lisp/minibuffer.el (completion--nth-completion): Avoid signaling an error when `md` is applied to another table.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/minibuffer.el11
1 files changed, 9 insertions, 2 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 26861de87b0..a4a8f5cb282 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -896,8 +896,15 @@ This overrides the defaults specified in `completion-category-defaults'."
;; than from completion-extra-properties) because it may apply only to some
;; part of the string (e.g. substitute-in-file-name).
(let ((requote
- (when (completion-metadata-get metadata 'completion--unquote-requote)
- (cl-assert (functionp table))
+ (when (and
+ (completion-metadata-get metadata 'completion--unquote-requote)
+ ;; Sometimes a table's metadata is used on another
+ ;; table (typically that other table is just a list taken
+ ;; from the output of `all-completions' or something equivalent,
+ ;; for progressive refinement). See bug#28898 and bug#16274.
+ ;; FIXME: Rather than do nothing, we should somehow call
+ ;; the original table, in that case!
+ (functionp table))
(let ((new (funcall table string point 'completion--unquote)))
(setq string (pop new))
(setq table (pop new))