@techee, It looks like the primary keyword set in your last commit left out the VisualProlog type specifiers [1] (or ["Domains"][0], as the spec calls them). Compare the appearance of `unsigned` in my [earlier screen capture][2] with the one below (in the [Himbeere colorscheme](https://github.com/geany/geany-themes)):
![geany_himbeere_visualprolog_hl](https://user-images.githubusercontent.com/59004801/165013360-9ab0265f-1bbf-4...)
I'm confident that SWI-Prolog users will be completely happy 👍🏼
![geany_himbeere_swi-pl-hl](https://user-images.githubusercontent.com/59004801/165013510-0c2ea3ca-7ac2-4...)
They're getting more lexical categories than even the VS Code extension recognizes. Notice, however, that `append` and `multifile` are styled by VS Code but not Geany:
![vscode_swi-pl_hl](https://user-images.githubusercontent.com/59004801/165013570-7bb85e59-3d2f-4...)
Neither is as complete as [prolog.vim](https://github.com/yochem/prolog.vim), but I think we have to accept that regex-capable parsers like Vim and Textmate grammars are simply better than Scintilla's match-every-character-of-one-lexeme-at-a-time model:
![prolog vim_swi-pl_hl](https://user-images.githubusercontent.com/59004801/165013653-8a8608a3-2254-4...)
---
[1]: See https://github.com/rdipardo/geany/commit/3baa85baa25cd36b4d0e437fe7cd7383a82... The complete list is quite brief:
any binary binaryNonAtomic boolean char compareResult factDB handle integer64 integerNative null pointer real real32 string8 symbol unsigned unsigned64 unsignedNative
[0]: https://wiki.visual-prolog.com/index.php?title=Language_Reference/Built-in_e... [2]: https://user-images.githubusercontent.com/59004801/163895249-93885a44-09dd-4...