Somebody could contribute a patch to Lexilla (controlled by a property) that changed `@` behaviour and any other differences.
The optional exception for SWI-Prolog would have to be opt-*in* for the sake of editors that already consume this lexer. I'm even less enthusiastic about that idea because the track record of "multi-lexers" is a lousy one. The implementation of JavaScript template strings remains blocked by the need to [recognize `SCE_C_STRINGRAW`][0], and LexJSON spoils NPM project descriptors by insisting that a colon inside a property name must be a [compact IRI][1], even though
JSON-LD is neither an update nor an extension to JSON. It is a separate specification of a JSON-based schema. Its relation to JSON is the same as, say, the relation of SVG to XML.
https://github.com/ScintillaOrg/lexilla/issues/72#issuecomment-1093150057
If Geany's users want to see their SWI-Prolog files in living colour, find them a SWI-Prolog lexer.
[0]: https://sourceforge.net/p/scintilla/feature-requests/1112/#1052 [1]: https://github.com/rizonesoft/Notepad3/issues/3899#issuecomment-1022493697