Proofing Tool API (spelling, grammar, punctuation, hyphenation)

Proofing Tool API (spelling, grammar, punctuation, hyphenation)



 Jan 05 2022

We develop high quality grammar based proofing tools (including grammar checkers), and we have a mostly functional Office.js add-in, but the APIs are so fragmented and anemic that it is extremely hard or even impossible to do what we want.


A unified proofing tool API would be amazing, but barring that we need the individual APIs' to achieve feature parity and overall improved.


We need at least:

- Temporary wavy underlines or highlighting to mark ranges where errors are (also requested here). Really important they are temporary - we don't want to create highlights that get saved with the document.

- That those ranges are clickable and emit a trigger so we know which error they want to look at.

- Navigate the user's view to the next/previous error when they're done with current.

- Track paragraphs precisely, so we know where an error belongs in the document after getting the result from our analyzer.

- Lock the document so the user cannot manually insert text while proofing is ongoing.

- Alternatively to locking, be able to set a trigger to know exactly when and where a modification happens, to invalidate the errors in that paragraph (also requested here).


For Word, we have implemented this in a sidebar. We can sort of highlight errors in the document by changing the user's selection, but that can only highlight 1 error at a time and it overrides their selection and it isn't clickable. Outlook can't do it at all, as selection isn't available in that application.


And speaking of Outlook, that really needs an API boost. You can only get or set the whole email body, and if you want formatting then you get the whole HTML markup. We don't need or want this markup - it's just superfluous and greatly hinders parsing. Plus when you get the whole body, you get the WHOLE body including replied-to text and no way to reliably distinguish that it is replied-to, but obviously such text should not be seen or modified by our tools unless explicitly invoked on a selection of it.


And none of the applications support as-you-type events, so implementing reliable as-you-type proofing is just impossible.


A unified proofing tool API would eliminate all these differences. A very similar API would be useful for translation.


(old Uservoice post, and similar for Google)