Re: "expect others like JSLint to listen for renames or language changes"
This isn't the first time that I wish I could easily express that "the code below is based on the current value of doc.language, run it again when that changes" - i.e. write `observing(doc, "language", function (value, previousValue) { ... })`, calling the callback once right away and again later when something changes. In many cases the code would be the same for initialization and updates, meaning users wouldn't have to think much about this at all.