unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
       [not found] ` <20211114021444.BD421209C6@vcs0.savannah.gnu.org>
@ 2021-11-14 16:05   ` Stefan Monnier
  2021-11-14 16:09     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2021-11-14 16:05 UTC (permalink / raw)
  To: emacs-devel; +Cc: Lars Ingebrigtsen

> +@lisp
> +(insert
> + (propertize "xxxx" 'cursor-intangible t)
> + (propertize "x" 'cursor-intangible t 'rear-nonsticky t))
> +@end lisp

Then again, you can also do:

    (insert
     (propertize "xxxx" 'cursor-intangible t)
     (propertize "x"))

or

    (insert
     (propertize "xxxxx" 'cursor-intangible t 'rear-nonsticky t))

or even

    (insert
     (propertize "xxxxx" 'cursor-intangible t 'rear-nonsticky '(cursor-intangible)))


-- Stefan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 16:05   ` master 370d403: Explain in the manual how to make `cursor-intangible' work Stefan Monnier
@ 2021-11-14 16:09     ` Lars Ingebrigtsen
  2021-11-14 18:08       ` Stefan Monnier
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2021-11-14 16:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Then again, you can also do:
>
>     (insert
>      (propertize "xxxx" 'cursor-intangible t)
>      (propertize "x"))

Sure, but I thought it was more pedagogical with the rear-nonsticky.

> or
>
>     (insert
>      (propertize "xxxxx" 'cursor-intangible t 'rear-nonsticky t))

Nope; doesn't work.

> or even
>
>     (insert
>      (propertize "xxxxx" 'cursor-intangible t 'rear-nonsticky '(cursor-intangible)))

That one either.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 16:09     ` Lars Ingebrigtsen
@ 2021-11-14 18:08       ` Stefan Monnier
  2021-11-14 18:13         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2021-11-14 18:08 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

>> Then again, you can also do:
>>
>>     (insert
>>      (propertize "xxxx" 'cursor-intangible t)
>>      (propertize "x"))
>
> Sure, but I thought it was more pedagogical with the rear-nonsticky.

I don't have a preference, but I feel like the text should try and
explain that there are options and that the example is just
one approach.  At the same time, it seems "out of scope".

I guess what I'm getting it is that we should not have to clarify this
here but should instead point to some other place that explains those
issues in general.

Maybe we should point out that the effect of the property is only
relevant on *positions* between chars, as defined by
`get-pos-property`.

>> or
>>
>>     (insert
>>      (propertize "xxxxx" 'cursor-intangible t 'rear-nonsticky t))
>
> Nope; doesn't work.

Bummer!


        Stefan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 18:08       ` Stefan Monnier
@ 2021-11-14 18:13         ` Lars Ingebrigtsen
  2021-11-14 18:24           ` Stefan Monnier
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2021-11-14 18:13 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I don't have a preference, but I feel like the text should try and
> explain that there are options and that the example is just
> one approach.  At the same time, it seems "out of scope".
>
> I guess what I'm getting it is that we should not have to clarify this
> here but should instead point to some other place that explains those
> issues in general.
>
> Maybe we should point out that the effect of the property is only
> relevant on *positions* between chars, as defined by
> `get-pos-property`.

Have some mercy on the poor, poor programmers.  They just want to insert
some characters into the buffer that the cursor skips over, not gain
deep, lasting insights in the Emacs display machinery.

An example is worth more than three essays on intervals in general.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 18:13         ` Lars Ingebrigtsen
@ 2021-11-14 18:24           ` Stefan Monnier
  2021-11-14 18:39             ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2021-11-14 18:24 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

Lars Ingebrigtsen [2021-11-14 19:13:23] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> I don't have a preference, but I feel like the text should try and
>> explain that there are options and that the example is just
>> one approach.  At the same time, it seems "out of scope".
>>
>> I guess what I'm getting it is that we should not have to clarify this
>> here but should instead point to some other place that explains those
>> issues in general.
>>
>> Maybe we should point out that the effect of the property is only
>> relevant on *positions* between chars, as defined by
>> `get-pos-property`.
>
> Have some mercy on the poor, poor programmers.  They just want to insert
> some characters into the buffer that the cursor skips over, not gain
> deep, lasting insights in the Emacs display machinery.
>
> An example is worth more than three essays on intervals in general.

Note that in your example of 5 X where you want the cursor to be able to
jump from "just before XXXXX" to "just after XXXXX", your 5 X are not
"intangible" since you can jump from before to after (you might call
them "atomic" maybe, but "intangible" doesn't seem quite right).

That's why the code behaves as it does: If you have " XXXX " and want to
make "XXXX" intangible (i.e. make it so the cursor pretends that "XXXX"
isn't there, i.e. it takes two `C-f` to move from beginning to end),
then you place `cursor-intangible` on those "XXXX" and nothing more.
No special "extra char" or stickness involved.


        Stefan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 18:24           ` Stefan Monnier
@ 2021-11-14 18:39             ` Lars Ingebrigtsen
  2021-11-14 22:33               ` Stefan Monnier
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2021-11-14 18:39 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Note that in your example of 5 X where you want the cursor to be able to
> jump from "just before XXXXX" to "just after XXXXX", your 5 X are not
> "intangible" since you can jump from before to after (you might call
> them "atomic" maybe, but "intangible" doesn't seem quite right).

I don't think I was the one who called this `cursor-intangible', was it?
People use it to make the cursor skip in fun ways, but `intangible' is
an odd name for it.

> That's why the code behaves as it does: If you have " XXXX " and want to
> make "XXXX" intangible (i.e. make it so the cursor pretends that "XXXX"
> isn't there, i.e. it takes two `C-f` to move from beginning to end),
> then you place `cursor-intangible` on those "XXXX" and nothing more.
> No special "extra char" or stickness involved.

Yes there is.  See bug#51095 for somebody who's understandably confused
about what it all means.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 18:39             ` Lars Ingebrigtsen
@ 2021-11-14 22:33               ` Stefan Monnier
  2021-11-15  5:51                 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2021-11-14 22:33 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

Lars Ingebrigtsen [2021-11-14 19:39:35] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Note that in your example of 5 X where you want the cursor to be able to
>> jump from "just before XXXXX" to "just after XXXXX", your 5 X are not
>> "intangible" since you can jump from before to after (you might call
>> them "atomic" maybe, but "intangible" doesn't seem quite right).
>
> I don't think I was the one who called this `cursor-intangible', was it?
> People use it to make the cursor skip in fun ways, but `intangible' is
> an odd name for it.

If you read my description carefully, you'll see that the text marked
with `cursor-intangible` is indeed intangible.  It's only when you want
it to be "atomic" that you need to do something funny (like place the
`cursor-intangible` on all-but-one char).  So I think "intangible" is
not a bad choice (tho, indeed, it's a largely accidental/historical
name inherited from the deprecated `intangible` property).

> Yes there is.  See bug#51095 for somebody who's understandably confused
> about what it all means.

Agreed.  But I think your code example just makes it seem like the
current behavior is just wrong, whereas the problem is that it
implements something a bit different from what the OP wanted.
So I think we should better explain our meaning of "intangible" and then
explain how it might relate to a notion of "atomicity" (and how to get
that when you want it).


        Stefan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: master 370d403: Explain in the manual how to make `cursor-intangible' work
  2021-11-14 22:33               ` Stefan Monnier
@ 2021-11-15  5:51                 ` Lars Ingebrigtsen
  0 siblings, 0 replies; 8+ messages in thread
From: Lars Ingebrigtsen @ 2021-11-15  5:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Agreed.  But I think your code example just makes it seem like the
> current behavior is just wrong, whereas the problem is that it
> implements something a bit different from what the OP wanted.

I don't really see how the example makes it seem that the current
behaviour is wrong.  It just demonstrates the (non-obvious) effect that
rear-nonsticky has here.

> So I think we should better explain our meaning of "intangible" and then
> explain how it might relate to a notion of "atomicity" (and how to get
> that when you want it).

Sounds a bit academic to me.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-11-15  5:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20211114021443.12484.87085@vcs0.savannah.gnu.org>
     [not found] ` <20211114021444.BD421209C6@vcs0.savannah.gnu.org>
2021-11-14 16:05   ` master 370d403: Explain in the manual how to make `cursor-intangible' work Stefan Monnier
2021-11-14 16:09     ` Lars Ingebrigtsen
2021-11-14 18:08       ` Stefan Monnier
2021-11-14 18:13         ` Lars Ingebrigtsen
2021-11-14 18:24           ` Stefan Monnier
2021-11-14 18:39             ` Lars Ingebrigtsen
2021-11-14 22:33               ` Stefan Monnier
2021-11-15  5:51                 ` Lars Ingebrigtsen

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).