From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings via "Emacs development discussions." Newsgroups: gmane.emacs.devel Subject: Re: A solution to display completion candidates after point in a minibuffer Date: Sun, 04 Oct 2020 16:11:06 +0000 Message-ID: References: <83sgavfzno.fsf@gnu.org> Reply-To: Gregory Heytings Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25773"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Alpine 2.22 (NEB 394 2020-01-19) Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Oct 04 18:12:09 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kP6cK-0006av-DA for ged-emacs-devel@m.gmane-mx.org; Sun, 04 Oct 2020 18:12:08 +0200 Original-Received: from localhost ([::1]:55754 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kP6cJ-0005fv-FL for ged-emacs-devel@m.gmane-mx.org; Sun, 04 Oct 2020 12:12:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57344) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kP6bb-0005BY-1z for emacs-devel@gnu.org; Sun, 04 Oct 2020 12:11:23 -0400 Original-Received: from mx.sdf.org ([205.166.94.24]:57113) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kP6bY-0003ei-Dy; Sun, 04 Oct 2020 12:11:22 -0400 Original-Received: from sdf.org (IDENT:ghe@otaku.sdf.org [205.166.94.8]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id 094GB9vw024382 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO); Sun, 4 Oct 2020 16:11:09 GMT Original-Received: (from ghe@localhost) by sdf.org (8.15.2/8.12.8/Submit) id 094GBTo1024453; Sun, 4 Oct 2020 16:11:29 GMT In-Reply-To: <83sgavfzno.fsf@gnu.org> Received-SPF: pass client-ip=205.166.94.24; envelope-from=ghe@sdf.org; helo=mx.sdf.org X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/04 12:11:13 X-ACL-Warn: Detected OS = ??? X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:257034 Archived-At: >>>> I don't know, but I'm not sure about that. If you (set-window-start >>>> nil 1) unconditionally in window-scroll-functions, this setting will >>>> be obeyed by redisplay, even if point is not visible anymore. >>> >>> Oh, indeed, in that case it would move point instead. >> >> No, that's not what I meant. In that case redisplay does not scroll >> and does not move point. Point simply becomes invisible. > > No, redisplay will never accept a result that point is invisible. If it > ever does display such situations, it's a bug that needs to be fixed. > Never say never... >> It becomes visible again after the next redisplay, a second or two >> later. > > If such a situation exists, please describe how to reproduce it, because > it's a bug we need to fix. Emacs should never display a window where > point is not fully visible. > Here's a recipe: emacs -Q (defun recipe () (interactive) (set-frame-width nil 80) (set-frame-height nil 30) (switch-to-buffer (get-buffer-create "*Recipe*")) (goto-char 1) (let ((i 0)) (while (< i 60) (setq i (1+ i)) (insert (format "L%d\n" i)))) (goto-char 148) (sit-for 0.25) (add-hook 'window-scroll-functions (lambda (&rest args) (set-window-start nil 1))) (forward-line 13)) M-x recipe press C-n You will see the cursor on the first line, after "L1", but in fact point is at that moment not visible anymore, it is still on "L54". A second or two later, point has actually moved, and you will see the cursor blinking on "L14". This works at least with Emacs 23, 24, 25, 26, 27 and 28. The bug is more visible with Emacs 23 and 24, because you don't see the cursor on the first line after pressing C-n, you see a window without any cursor during a second or two. With Emacs 25, 26, 27 and 28 the cursor after "L1" does not correspond to point (and as far as I understand does not correspond to anything).