GNU bug report logs -
#70077
An easier way to track buffer changes
Previous Next
Full log
View this message in rfc822 format
>> Maybe `describe-type` should lists the slots first and the docstring
>> underneath rather than other way around?
>
> That'd also be good. Then the doc string should say something like
>
> Object holding a description of a buffer state.
> It has the following Allocated Slots:
>
> Name Type Default
> ———— ———— ———————
> beg t (point-max)
> end t (point-min)
> before t nil
> next t nil
>
> BEG..END is the area that was changed and BEFORE is its previous
> content[...]
OK, I'll switch the two, thanks.
> (Btw, those "t" under "Type" are also somewhat mysterious. What do
> they signify?)
`C-h o t RET` says:
t’s value is t
Not documented as a variable.
Probably introduced at or before Emacs version 16.
t is also a type.
t is a type (of kind ‘built-in-class’).
Children ‘sequence’, ‘atom’.
Abstract supertype of everything.
This is a built-in type.
[back]
We could put buttons in the "Type" column, but I'm not sure it'd be
better or worse (I'm worried about turning everything into a button).
>> >> +(cl-defun track-changes-register ( signal &key nobefore disjoint immediate)
>> >> + "Register a new tracker and return a new tracker ID.
>> > Please mention SIGNAL in the first line of the doc string.
>> Hmm... having trouble making that fit on a single line.
> Register a new tracker whose change-tracking function is SIGNAL.
> Return the ID of the new tracker.
Thanks.
>> >> +By default SIGNAL is called as soon as convenient after a change, which is
>> > ^^^^^^^^^^^^^^^^^^^^^
>> > "as soon as it's convenient", I presume?
>> Other than the extra " it's", what is the difference?
> Nothing. I indeed thing "it's" is missing there.
My local native-English representative says that "both work fine"
(somewhat dismissively, I must add).
> My point is that by referencing funcall-later you can avoid the need
> to explain what is already explained in that function's doc string.
OK.
>> >> +In order to prevent the upcoming change from being combined with the previous
>> >> +changes, SIGNAL needs to call `track-changes-fetch' before it returns."
>> >
>> > This seems to contradict what the doc string says previously: that
>> > SIGNAL should NOT call track-changes-fetch.
>>
>> I don't kow where you see the docstring saying that.
>> The closest I can find is:
>>
>> When IMMEDIATE is non-nil, the SIGNAL should preferably not always call
>> `track-changes-fetch', since that would defeat the purpose of this library.
>>
>> Note the "When IMMEDIATE is non-nil", "preferably", and "not always",
>> and the fact that the reason is not that something will break but that
>> some other solution would probably work better.
>
> Then maybe the sentence on which I commented should say
>
> Except when IMMEDIATE is non-nil, if SIGNAL needs to prevent the
> upcoming change from being combined with the previous ones, it
> should call `track-changes-fetch' before it returns.
But that wouldn't say what I want to say. It'd want to call
`track-changes-fetch' before it returns even if IMMEDIATE is non-nil.
It just probably wouldn't want to do that for all calls to the signal.
E.g. only for those calls where the second argument is non-nil
(i.e. the disjointness signals).
> In general, when I want to create a clean slate, I don't care too much
> about the dirt I remove. Why is it important to signal errors because
> a state I am dumping had some errors?
I don't understand why you think it will signal an error?
More to the point, it should signal an error only if I made a mistake in
`track-changes.el` or if you messed with the internals.
Note also that this function is itself internal.
>> >> +;;;; Extra candidates for the API.
>> >> +;; This could be a good alternative to using a temp-buffer like I used in
>> > ^^^^^^
>> > "I"?
>> Yes, that refers to the code I wrote.
> We don't usually leave such style in long-term comments and
> documentation.
`grep " I " lisp/**/*.el` suggests otherwise.
Stefan
This bug report was last modified 1 year and 99 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.