Today's peeve is Software.
Microsoft Word is the load-bearing beam upon which a good deal of my daily activities are based. I don't think it's the best program ever written, but I do think by and large it's Good Enough. This past week, however, I ran into something which very nearly broke my covenant with it.
Word has a custom dictionary feature, which allows you to load dictionaries into the application on what I believe to be a per-user basis. What I'm finding, however, is that custom dictionaries for long-form writing — e.g., for novels — work best when they're attached to the document you're working on. E.g., as a way to have fancy made-up words or exotic proper names not marked as spelling errors, and even to have the proper spellings of those names suggested when you get them wrong yourself. Fine, except Word offers no way to attach a dictionary to a particular document. None.
Okay, sez I, I'll write a macro that will attach the appropriate dictionary when I load the document in question, and set that as the default dictionary. This is so that words added to the dictionary go into that one by default, and not the main dictionary, so I don't end up contaminating that with my silly Science Fiction Spellings.
Except ... I can't do that either. Turns out Word's macro scripting doesn't expose that functionality through its API. I can add a custom dictionary with the scripting, but I can't set it to be the default custom dictionary, into which new words will automatically be placed. I have to do that manually. Also, using the "ignore word" function as a workaround doesn't really work around, because — get this — ignoring a misspelled word in a document is apparently not persistent across sessions with that document!
Unfortunately for Word, I am by nature one of the most bullheaded people you're likely to meet. Present me with a problem and I will ram my head against it until either the problem gives way or I have an interestingly-shaped head.
So I tinkered a bit and decided, instead of using the APIs Microsoft has only given me half of, I'll just send keystrokes via a macro to detach one dictionary and attach another whenever a given toolbar button is pressed. Presto magnifico! That works, although it has a few limitations:
- If you have more than one document open at a time, the dictionary changes apply to all the open documents.
- If you have more than one custom dictionary in use — say, for multiple long-form projects — the macro doesn't readily distinguish between them. It's best to only keep one custom dictionary loaded at a time.
It's still better than nothing, and miles better than attempting to dump my entire workflow for a different program, which I really don't care to do. I've looked into other word processing apps, and the sad truth is that Word gets me far closer to where I need to be, and in the form I need it to be in, than anything else I've dealt with. It's less a case of Word doing it well than everyone else doing it so badly, but the competition really hasn't impressed me.
It's also disappointing that the program would only have so much of its behavior wired up and exposed through its API set, but I've since learned that's par for the course. I'm used to software being, by and large, a disappointing affair.
A friend of mine, on hearing this whole story, described my needs as being "incredibly specific." Perhaps they are, but let's face it — would it have been killingly difficult to add something to approximate this functionality? And once people found out that it existed, would it really remain that specific a need? Or is that me just looking for an excuse to justify those two hours I spent reading Word VBA documentation with my eyes peeling and glazing over?