DialogTools. Предлагаю убрать замену xODOA на x20, склеивающую строки.
Такое поведение вредно - оно необратимо и превращает скрипты в кашу. VictorVG предлагает diff edit.cpp.diff.zip
Сформулирую задачу по результатам исследований. Случайно Алексей обнаружил что если в отредактировать через вызов DialogTools строку ввода диалога и вставить в неё переводы строк (Cr, либо CrLf, Lf) то индикация наличия текста за концом первой строки изменилась с символов ASCII:

на символы пробела:

Ошибочные гипотезы проверили, отмели.
Выяснилось что у Алексея патченный вариант dt.dll в которой отключён конвертор переводов строк в пробелы. Нашли и место в коде:
diff --git a/DialogTools/src/edit.cpp b/DialogTools/src/edit.cpp
index f974754..6f1f155 100644
--- a/DialogTools/src/edit.cpp
+++ b/DialogTools/src/edit.cpp
@@ -55,24 +55,6 @@ void DoEdit(HANDLE aDlg)
{
DWORD read;
ReadFile(file,outBuffer,size*sizeof(TCHAR),&read,NULL);
- outBuffer[size]=0;
- for(size_t ii=0;ii<size;++ii)
- {
- if(outBuffer[ii]==13&&outBuffer[ii+1]==10)
- {
- wmemcpy(outBuffer+ii,outBuffer+ii+1,size-ii);
- outBuffer[ii]=0x20;
- size--;
- }
- else if(outBuffer[ii]==13)
- {
- outBuffer[ii]=0x20;
- }
- else if(outBuffer[ii]==10)
- {
- outBuffer[ii]=0x20;
- }
- }
Info.SendDlgMessage(aDlg,DM_SETTEXTPTR,itemID,outBuffer);
HeapFree(GetProcessHeap(),0,outBuffer);
}
правда я помню, что вроде этот конвертор был нужен для выполнения каких-то операций, и если так, то сделать для него свой вызов типа dt multy2singlestring, а в строках ввода диалогаов умолчанию не вызывать ибо там приводит искажению вводимых в плагинах типа RESearch мнострочных команд.