Subject: Re: bug#64696: 30.0.50; indent-to inherits preceding text properties, including 'invisible

From: Eli Zaretskii <[email-masked]>
Date: Wed, 19 Jul 2023 16:07:41 +0300

> From: Ihor Radchenko <[email-masked]>
> Cc: [email-masked], [email-masked]
> Date: Wed, 19 Jul 2023 08:30:28 +0000
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> However, I do not fully understand what happens if we try to indent
> >> fully hidden text (like inside Org's folds). See my previous bug
> >> reports: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56837 and
> >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=58791
> >
> > Invisible text is skipped by current-column.
> 
> I am not sure if I understand what you mean by "skipped".

"Skipped" means that the invisible text is not counted as occupying
columns on display.  It is skipped without incrementing the column
count.  See this part of scan_for_column:

  /* Scan forward to the target position.  */
  while (scan < end)
    {
      int c;

      /* Occasionally we may need to skip invisible text.  */
      while (scan == next_boundary)
	{
	  ptrdiff_t old_scan = scan;
	  /* This updates NEXT_BOUNDARY to the next place
	     where we might need to skip more invisible text.  */
	  scan = skip_invisible (scan, &next_boundary, end, Qnil);

And note that I was only talking about current-column (and
move-to-column, which AFAIR behaves the same).

> Consider the following file in outline-mode:
> [...]

Please make it easier for me to follow the questions you are asking
and provide helpful responses by (a) making the recipes as simple as
possible, and (b) by describing them in full detail.  "Folded",
"unfolded heading", "applied invisible text property", etc. -- all
those might be crystal clear to you, but they aren't so to me, and
require me to guess (and err) what exactly did you do and how.

Please understand: I have very limited time to invest in answering
questions about how the Emacs internals work and why.  I have too
little free time and too much to do, day in and day out, just to keep
this project moving.  So please have mercy on me, and help me answer
your questions (a lot of them lately, btw), in a useful manner,
without spending an inordinate amount of time.  Each such question
usually requires looking up stuff in the code, describing it to you in
enough detail for you to understand, sometimes stepping through the
code in a debugger to make sure the code really works like I think it
does, etc.  Add to this the need to understand what you mean by all
those undisclosed details, and the burden becomes unbearable.

Please!