In looking at your code, I suspect that the void setup() you are declaring the function, but you are missing the semicolon. Also, you should not need to prototype loop or setup. Remove the void setup that is just above the setup function.
expected initializer before ... is the pathetic way the IDE tells you that the number of { does not equal the number of }, or you are missing a semicolon
if you highlight the { in void setup, the IDE shows you its mate } just below
if you highlight the last } the IDE can not show you its mate, because there is no mate to it.
It is NOT the IDE, it is the compiler. And it is NOT pathetic, it is the same error you will get from any c/c++ compiler. It makes perfect sense, and is very clear, if you take the time to understand the language, and how it is defined. Besides, the error message give the EXACT line number, and character position at which it flagged the error. How much more specific can it possibly get?