[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25111:
From: |
Phillip Lord |
Subject: |
bug#25111: |
Date: |
Wed, 07 Dec 2016 16:40:02 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Sun, 4 Dec 2016 20:53:24 -0000
>> From: "Phillip Lord" <phillip.lord@russet.org.uk>
>>
>> The documentation for "modification-hooks" on overlays says:
>>
>> If these functions modify the buffer, they should bind
>> ‘inhibit-modification-hooks’ to ‘t’ around doing so, to avoid
>> confusing the internal mechanism that calls these hooks.
>>
>> But as far as I can see, the only place these gets called
>> "signal_after_change"
>> and "signal_before_change", inhibit-modification-hooks is already specbound
>> to t, so this advice is unnecessary.
>>
>> Also, the documentation for inhibit-modification-hooks says:
>>
>> If you do want modification hooks to be run in a particular
>> piece of code that is itself run from a modification hook, then
>> rebind locally ‘inhibit-modification-hooks’ to ‘nil’.
>>
>> which suggests that, in fact, it is possible to call the modification
>> hooks from inside another call to these functions.
>
> Given these two excerpts, it seems to me that there's no inaccuracies
> in the manual, perhaps we just need to tell both stories in the same
> place or something? Or do you still think there's something incorrect
> in these two fragments?
I think that the first of these is incorrect. There is no need to bind
`inhibit-modification-hooks' to `t'. More over, there may be reasons by
bind `inhibit-modification-hooks' to `nil' (i.e. "If you do want
modification hooks to be run..."). I am unclear whether this will
"confuse the internal mechanism", since I don't know exactly what this
means.
It possible that the documentation should say "Mostly, you should avoid
modifying the buffer on these hooks, any other functionality using these
modification-hooks will not be called."
The reason I ask all of this as a result of a concrete use
case. yasnippet modifies the buffer in these hooks, in turn breaks my
own package, lentic, which uses these hooks to respond to changes.
https://github.com/joaotavora/yasnippet/issues/756
https://github.com/phillord/lentic/issues/51
Phil
- bug#25111:, Phillip Lord, 2016/12/04
- bug#25111:, Eli Zaretskii, 2016/12/05
- Message not available
- bug#25111:,
Phillip Lord <=
- Message not available
- Message not available
- bug#25111:, Eli Zaretskii, 2016/12/08
- bug#25111:, Phillip Lord, 2016/12/09
- bug#25111:, Eli Zaretskii, 2016/12/09
- bug#25111:, Phillip Lord, 2016/12/11
- bug#25111:, Eli Zaretskii, 2016/12/12
bug#25111: How modification-hooks let-bind inhibit-modification-hooks?, Noam Postavsky, 2016/12/05