emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: An idea: combine-change-calls


From: Stefan Monnier
Subject: Re: An idea: combine-change-calls
Date: Sat, 24 Mar 2018 18:18:05 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

> The motivation is bug #30735,

[ Not surprised: I told you CC-mode's change-functions are too costly,
  because they presumes that before&after-change-functions are called at
  a "human" rate (comparable to pre/post-command-hook).
  before&after-change-functions should be handled a bit like POSIX
  signals: do as little work as possible there, and handle them
  later elsewhere.  `comment-region` is not the only command that can
  make many small changes.  ]

> What do people think?

I actually do like the idea of combining such things, tho it's risky:
e.g. if the code within combine-change-calls uses syntax-ppss it might
get wrong results since syntax-ppss-flush-cache is triggered via
before-change-functions.  The same problem would affect
syntax-propertize, of course.

Grepping for `add-hook.*before-change-functions` indicates that similar
problem could appear elsewhere.  Not sure what to do about it other than
to say "don't over-use it, it might bite you".

Also we'd need such a system to check that the bounds
are indeed obeyed.

One more thing: with the sample code you showed, undoing will still be
just as slow since it won't benefit from combine-change-calls.
Maybe combine-change-calls should also combine all those changes on the
undo-list into a big "delete+insert" (of course, it could also try and
keep the undo granularity but mark those undo entries so that they're
undone within their own combine-change-calls).


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]