[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump ti
From: |
Stefan Monnier |
Subject: |
bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer |
Date: |
Fri, 07 Oct 2016 14:10:53 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
>> Not sure what you mean by "fired", but in any case, no: font-lock is not
>> used for that (tho it has been used at some point before
>> compilation-auto-jump was introduced, IIRC). Instead, it's done via
>> syntax-propertize (which can be triggered in all kinds of ways,
>> including font-lock).
>
> This
>
> (defun compilation-mode-font-lock-keywords ()
> "Return expressions to highlight in Compilation mode."
> (append
> '((compilation--ensure-parse))
> compilation-mode-font-lock-keywords))
>
> and the only place in compile.el that mentions syntax-propertize is in a
> comment.
Duh! Indeed, sorry, I mis-remembered. Indeed, after first (ab)using
syntax-propertize I changed it to use the same approach but without
using syntax-propertize.
The point is the same, tho: the parse can be triggered by other things
than font-lock. That's important because font-lock may be turned off.
>> How 'bout something like the following:
>>
>> - Add a new var compilation-pending-auto-jump set buffer-locally to
>> non-nil when compilation-error-properties calls run-with-timer.
>> - in compilation-auto-jump, check this var before doing anything and set
>> it back to nil.
>> - in ggtags, call compilation-auto-jump to make sure this timer is run
>> before yours.
> I think the issue is compilation-error-properties can happen after
> compilation-finish-functions. And calling compilation--ensure-parse in
> ggtags-global-handle-exit doesn't seem to help.
Hmm... calling compilation--ensure-parse *should* help.
More specifically, if you call compilation--ensure-parse up to point-max
from compilation-finish-functions, I can't think of any reason why
compilation-error-properties should be called afterwards. If you can
get a backtrace of when that happens, it would help.
E.g. set a buffer-local var from compilation-finish-functions after
calling compilation--ensure-parse, and then add an assert in
compilation-error-properties to check that that var is not set yes.
Stefan
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, (continued)
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Eli Zaretskii, 2016/10/05
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Stefan Monnier, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Eli Zaretskii, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/06
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Eli Zaretskii, 2016/10/07
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Stefan Monnier, 2016/10/07
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/07
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer,
Stefan Monnier <=
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Leo Liu, 2016/10/08
- bug#24585: 25.1; avoid hack in ggtags.el to run compilation-auto-jump timer, Eli Zaretskii, 2016/10/07