Kevin Pors contributed a changed filetypes.cpp to make the syntax highlighting colors look more like those of GVim and he changed the default set of keywords (primary keywords are builtin types, secondary are statements).
Save the configuration file below in your Geany filetype defintion files config directory, e.g. ~/.config/geany/filedefs/.
# For complete documentation of this file, please see Geany's main documentation [styling] # foreground;background;bold;italic default=default comment=0x0000FF;0xFFFFFF commentline=0x0000FF;0xFFFFFF commentdoc=commentdoc number=0xFF00FF word=0x00805C;0xFFFFFF;true;false word2=0xA51D1D;0xFFFFFF;true;false string=string character=string uuid=0x404080 preprocessor=0x8000FF;0xFFFFFF operator=operator identifier=identifier stringeol=stringeol # @"verbatim" verbatim=0x101030 # (/regex/) regex=0x105090 commentlinedoc=commentdoc,bold commentdockeyword=commentdoc,bold,italic commentdockeyworderror=commentdoc #globalclass=type globalclass=0x505050;0xffffff;true;false # whether arguments of preprocesor commands should be styled (only first argument is used) # 1 to enable, 0 to disable styling_within_preprocessor=0;0;false;false [keywords] # all items must be in one line primary=and and_eq auto bitand bitor bool char class const double enum explicit export extern false float friend inline int long mutable namespace not not_eq or or_eq register short signed static struct template true typedef typename union unsigned using virtual void volatile wchar_t xor xor_eq secondary=asm break catch case continue compl const_cast dynamic_cast do default delete else for goto if new operator public private protected return reinterpret_cast sizeof static_cast switch this throw try typeid while # these are some doxygen keywords (incomplete) docComment=attention author brief bug class code date def enum example exception file fn namespace note param remarks return see since struct throw todo typedef var version warning union [lexer_properties] styling.within.preprocessor=0 lexer.cpp.track.preprocessor=0 preprocessor.symbol.$(file.patterns.cpp)=# preprocessor.start.$(file.patterns.cpp)=if ifdef ifndef preprocessor.middle.$(file.patterns.cpp)=else elif preprocessor.end.$(file.patterns.cpp)=endif [settings] lexer_filetype=C # default extension used when saving files extension=cpp # the following characters are these which a "word" can contains, see documentation #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 # single comments, like # in this file comment_single=// # multiline comments comment_open=/* comment_close=*/ # set to false if a comment character/string should start at column 0 of a line, true uses any # indentation of the line, e.g. setting to true causes the following on pressing CTRL+d #command_example(); # setting to false would generate this # command_example(); # This setting works only for single line comments comment_use_indent=false # context action command (please see Geany's main documentation for details) context_action_cmd= [build_settings] # %f will be replaced by the complete filename # %e will be replaced by the filename without extension # (use only one of it at one time) compiler=g++ -Wall -c "%f" linker=g++ -Wall -o "%e" "%f" run_cmd="./%e"