Actions
Numbers and Spoken Forms
Unimacro and Vocola
Tracing
Inifiles
Translations
Cooperation with voicecoder
AutoHotkey
Unit testing
Grammar classes
Global dictation
 End of line considerations
Monitorfunctions

End of line linefeed (\n) and or carriage return (\r)

The carriage return (\r, ascii value 13) and linefeed (\n, ascii value 10) characters must be carefully treated. How a window responds can be checked the test module unittestMessagefunctions.py, which is in the unimacro_test subdirectory of Unimacro.

Basically from a window with the getEditText function a list of lines is retrieved, reflecting all the line breaks. At the end of a paragraph most often a \r character is shown. Also an empty file often shows one \r or one \r\n character. For this reason in the module windowsparameters.py the variables linesep and aftertext are set to reflect the different possibilities.

Variable

Values

linesep

\r for RichEdit controls (sofar)

aftertext

\r\n for aligen

\r for wordpad...

 

Getting the buffer in dictObj

In the VoiceDictation class the list of lines are simply joined together in a long string.

Internal regular expressions

When doing operations with regular expressions in Python the line separators should always be \n. So the buffer that is read from the window or from the dictation object should be changed before doing a search operation.

Writing back to the window

It seems that \r characters should be used to separate the lines, for the different, sofar examined, RichEdit controls.

The function insertText (of VoiceDictation) therefore simply deletes all \n characters. So when text is inserted from a commands grammar, use \r for newlines.