From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: Box cursor at EoL Date: Thu, 06 Oct 2022 15:34:17 -0400 Message-ID: References: <25405.40924.299467.425535@tux.local> Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36900"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:ip8s9hYlyp8E4bJwQKPBH4wpM4Y= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Oct 06 21:35:21 2022 Return-path: Envelope-to: geh-help-gnu-emacs@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 1ogWeO-0009T4-Fc for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 06 Oct 2022 21:35:20 +0200 Original-Received: from localhost ([::1]:53326 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ogWeN-0001Xf-EU for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 06 Oct 2022 15:35:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:47176) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ogWdX-0001Uh-Ri for help-gnu-emacs@gnu.org; Thu, 06 Oct 2022 15:34:31 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:42048) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ogWdU-0004lW-SJ for help-gnu-emacs@gnu.org; Thu, 06 Oct 2022 15:34:26 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1ogWdT-0007yQ-PJ for help-gnu-emacs@gnu.org; Thu, 06 Oct 2022 21:34:23 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:139739 Archived-At: > (defun change-cursor-at-end-of-line () > "Change shape of cursor to value of `cursor-type-at-eol' at end of line. > > When the cursor is moved away from end of line, its shape returns > to its default value. This gives a cue about trailing whitespace > that is even less in your face than `whitespace-newline-mode'. > > Add this to `post-command-hook' to enable the feature." > (while-no-input > (if (eolp) > (setq cursor-type cursor-type-at-eol) > (setq cursor-type (default-value 'cursor-type)) > ))) I suspect the `while-no-input` makes no difference here. And the next three lines can be simplified to: (setq cursor-type (if (eolp) cursor-type-at-eol (default-value 'cursor-type))) > ;; Oddly this doesn't seem to always work with Emacs 27.1. Never > ;; noticed any problem with 26.3. > (add-hook 'post-command-hook 'change-cursor-at-end-of-line) Nowadays you could also use the `pre-redisplay-function` hook which could have some advantages, but in any case the limit of the above approach is that it can't correctly account for all the cases where the buffer is displayed in several windows, with some windows' cursor at EOL and others not :-( Stefan