unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Andrew Kurn <kurn@sfu.ca>
Cc: 10072@debbugs.gnu.org
Subject: bug#10072: 23.3; invisible text
Date: Sun, 20 Nov 2011 15:30:13 -0500	[thread overview]
Message-ID: <jwvbos6k29o.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <20111120102459.GB12774@sfu.ca> (Andrew Kurn's message of "Sun, 20 Nov 2011 02:24:59 -0800")

> Let me propose this wording:
> -----------
>   However, if a command ends with point inside invisible text, the main editing
> loop moves point further forward or further backward (in the same direction
> that the command already moved it) until that condition is no longer true.
> The positions immediately before and immediately after invisible text are
> considered inside the invisible text if a char inserted at that position would
> inherit the @code{invisible} property.


> Thus, if the command moved point back into an invisible range
> (with the usual stickiness), Emacs moves
> point back to the beginning of that range.
> If the command moved point forward into an invisible range, Emacs moves point
> forward to the first visible character that follows the invisible text
> and then forward one more character.
> ---------

Thanks.  I installed the text below instead (which is closer to what
really happens).

> As an opinion, I add that it would be more intuitive if it worked
> differently -- the way described in the original example -- but
> I can live with this once it is clearly explained.  (The problem
> is, of course, that ^X= should always name a visible character,
> and the one that the cursor is over.)

The use of a block cursor that covers the "next visible char" indeed
tends to make people assume that point is right before that visible
char, but if you use a different cursor this is much less true.

In any case the driving factor is to try and avoid the case where
self-insert-command inserts invisible text, which is also
very confusing.  Another advantage of the current behavior is that it
lets the author choose where to place point, by setting
stickiness appropriately, so you can get Emacs to indeed place the
cursor right in front of the next visible char.

>> The code that moves point out of invisible chunks of text does not
>> always work, indeed, because it is only applied to the current
>> buffer (or maybe the selected-window?) after a command.
> Yes, I see.  This might need clarification in the text also.

Fundamentally it's a bug, and I generally don't like to document bugs.


        Stefan





  reply	other threads:[~2011-11-20 20:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-18 19:14 bug#10072: 23.3; invisible text Andrew Kurn
2011-11-20  4:57 ` Stefan Monnier
2011-11-20 10:24   ` Andrew Kurn
2011-11-20 20:30     ` Stefan Monnier [this message]
2011-11-21  0:03       ` Andrew Kurn
2011-11-21  0:27         ` Drew Adams
2011-11-21 11:12           ` Andrew Kurn
2011-11-21  2:27         ` Stefan Monnier
2011-11-21 11:37           ` Andrew Kurn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvbos6k29o.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=10072@debbugs.gnu.org \
    --cc=kurn@sfu.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).