Dmitry Gutov <dgu...@yandex.ru> writes: > On 20.01.2017 03:52, npost...@users.sourceforge.net wrote: > >> My feeling is that inhibit-modification-hooks should usually be buffer >> local anyway. > > Maybe you're right. > > inhibit-read-only, bound nearby, seems to be in the same situation. > >>> If we are not, why not make inhibit-modification-hooks always >>> buffer-local instead? >> >> It would have to be in addition to, because even after doing >> (make-variable-buffer-local 'var), (let ((var 'foo))...) still makes a >> global binding. `make-variable-buffer-local' only has effect for >> `setq', which I think will hardly ever happen for >> `inhibit-modification-hooks'. > > You're right, and that sounds a little too complicated for my taste. > > So, personally, I'd try to fix the particular instance > first. Switching buffers inside with-silent-modifications is not a > very common usage, I think. > > Maybe org-src should itself let-bind the aforementioned variable(s) > where it visits other buffers.
Yeah, that works, and is my proposal for emacs-25, but I'm still leaning towards solving this more broadly in with-silent-modifications, probably also add a mention about this to the inhibit-modification-hooks docstring. I think doing the same to inhibit-read-only isn't worth the trouble because if it happens to be let-bound to t in a buffer where it wasn't "supposed" to be, the worst that happens is that an error *isn't* thrown.