Subject: Re: bug#39558: 26.3; icomplete and display *Completions* in child frame

From: Andrii Kolomoiets <[email-masked]>
Date: Wed, 12 Feb 2020 11:15:18 +0200

Eli Zaretskii <[email-masked]> writes:

>> 1. emacs -Q
>> 2. evaluate
>> (customize-set-variable
>>  'display-buffer-alist
>>  '(("\\*Completions\\*" display-buffer-in-child-frame)))
>> 3. M-x icomplete-mode
>> 4. M-x f<TAB>
>> 
>> Error in post-command-hook (icomplete-post-command-hook): (wrong-type-argument number-or-marker-p nil)
>
> I cannot reproduce this, so maybe this is Darwin-specific.

You are right.

There are this code in lisp/term/ns-win.el:581:
(add-hook 'after-make-frame-functions 'select-frame)

Evaluating it allow you to catch that error in
icomplete-post-command-hook under X as well.

To avoid original issue under Darwin:

(setq after-make-frame-functions nil)
(customize-set-variable
 'display-buffer-alist
 '(("\\*Completions\\*" display-buffer-in-child-frame
    (child-frame-parameters . ((minibuffer . nil))))))

(The `(minibuffer . nil)' frame parameter is required if we want to leave
focus on original frame. IDK why `(no-focus-on-map . t)' doesn't help
here.)