> * Ensure clangd is on the path > * Start editing a scratch file like this in C++ mode: > > int main() { > const char * s = ""; > } > > * Start Eglot (M-x eglot RET) > * Enable TeX input method (C-u C-\ TeX RET) > * Start typing the superscript alphabet into the string (^ a ^ b ^ c ^ d ...) > > How far you get before the warning pops up seems to depend on timing. To make it reliable, here's what you need to do after enabling the TeX input method: type "quickly"; foo^ wait a couple seconds and you should get the » Warning (emacs): Missing/incorrect calls to ‘before/after-change-functions’!! Details logged to ‘track-changes--error-log’ The problem is that Quail inserts an underlined `^` in the buffer to show you the part of the input that's already been typed and it does so stealthily (i.e. within `with-silent-modifications`), which implies that the `before/after-change-functions` have not been called, and as a consequence the size of the buffer is not the one that track-changes expects (and the content of the buffer doesn't corresponds to what Eglot will send to the LSP server based on the changes it has witnessed, which can cause errors since Eglot has to send buffer positions and those may not mean the same any more for the LSP server). I suggest the patch below (the second hunk is unrelated, I just bumped into it while tracking this bug). Stefan