I'm merging this for now because it improves the situation a fair bit
Great, I've been using the 1.38 patch without problems, this definitely improves usability a lot.
Here are some points about the language semantics to discuss in the future:
About modules, the specification mentions that -module(Module) declaration should be before any function definition (aka top of the file) and the module name is to be same as the file name minus the extension .erl
Can an Erlang file not declare a module?
Erlang .erl files are always modules and must always declare -module(Module).
Function definitions are defined inside .erl files only (the legal way).
Include files (.hrl) which are rendered with the same geany parser, on the other hand, dont specify -module(MODULENAME). These preprocessed files are not a module though, they are as hygienic as C header files.
Macros and types can be defined in a module (.erl) or in an include file (.hrl) but they dont actually live in module scope or header scope or anything like that. They go to global scope.