I think that pull request #99 should eventually be better than mine, but it requires more discussions as well as sufficient test codes.
When I merged PR 99 with the test part of PR 95, the test failed.
It means, although the result was still acceptable for me, the expectation is not the same.
On the other hand, my pull request #95 is more conservative. It'll introduce no backward incompatibilities (at least I intend so).
Indeed, pull request #99 has quite a different scope than this pull request (it only happens to fix the same bug by chance.) You're right that it is not backwards compatible but let's discuss the details there, not here.
In order to get an 1.2 release out of the door in the next few days, I'm OK with merging this PR and eventually having pull request #99 in a subsequent release (which, just to make it explicit, involves reverting most of this PR.)
(Edit: Let me clear up what I meant with "most of this PR." the hunks applied to sphinx/directives/other.py. The rest is tests, which can be kept just fine.)