So I’m working on this settings stuff for GNOME 3, and I attempted to compile a new gsettings schema. So I make my XML schema, and run glib-compile-schemas, and it comes back at me:
schemas/com.rm5248.testplugin.gschema.xml: 0-1:unknown keyword. This entire file has been ignored.
Okay… so I look at the file, and everything looks fine. I can’t see anything wrong with it. I go back and forth, trying different things, until I narrow it down to this key:
<key type="s" name="hello-text" > <default>Hello, World!</default> <summary>The text to display</summary> <description>The text to display</description> </key>
Commenting this out makes it work fine. So I look at the documentation for the schemas, and nothing immediately pops out at me, until I see the following:
One possible pitfall in doing schema conversion is that the default values in GSettings schemas are parsed by the GVariant parser. This means that strings need to include quotes in the XML.
So I change the XML to be the following:
<key type="s" name="hello-text" > <default>"Hello, World!"</default> <summary>The text to display</summary> <description>The text to display</description> </key>
What. The. Hell.
Why do string values have to be highlighted? That doesn’t make a lot of sense. There shouldn’t be any reason for that. It is still valid XML, but who does it that way? Moreover, WHY DOESN’T THE ERROR MESSAGE GIVE ME ANY USEFUL INFORMATION? That is possibly the worst error message ever. Okay, it’s been ignored, BUT WHY THE HELL HAS IT BEEN IGNORED?! Is it really that hard to provide good error messages? Also, what the hell is the “0-1”? Is it some sort of bizzare error code or what? There’s nothing to imply that the reason it failed was because it was missing a quote – at least if it gave a line number that would let me clue in to what is going on, but apparently they can’t be bothered to do that.