Talvez seja legal conhecer essa extensão:Alternative dialog Find & Replace for Writer
Vamos ver se eu entendi corretamente o que você quer.
Pelo que eu entendi você tem um texto como o que fica quando copiamos e colamos de um PDF, com um parágrafo para cada linha e nas linhas onde não termina por ponto você quer que a quebra de parágrafo seja eliminada e que fique somente uma linha. Mas nas linhas onde finalizar por ponto é para manter a quebra.
Se for isso o código abaixo deverá resolver.
Function LimpaQuebrasLinhas()
Dim oReplace, oSearch, oResult as Object
Dim oViewCursor, oCursor as Object
Dim oDocument, oDispatcher as Object
' Primeiro tira todos os parágrafos corretos mas com espaço no final
oReplace = ThisComponent.createReplaceDescriptor()
oReplace.setSearchString( "\. $" )
oReplace.setReplaceString( "." )
oReplace.SearchRegularExpression = True
ThisComponent.replaceAll( oReplace )
' Depois tira todas as marcas de parágrafo que a linha terminha por espaço
' Configura o cursor para chegar na posição dos espços no fim de parágrafo
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oCursor = oViewCursor.getText().createTextCursorByRange(oViewCursor)
oViewCursor.gotoStart(False)
oSearch = ThisComponent.createSearchDescriptor()
oSearch.SearchString = " $" ' busca primeiro parágrafos corretos mas que terminam em espaços
oSearch.SearchRegularExpression = True
' Definição dos argumentos do Dispatcher
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Count"
args1(0).Value = 1
args1(1).Name = "Select"
args1(1).Value = true
'Executa enquanto a busca retornar resultado
Do
oResult = ThisComponent.findFirst(oSearch) ' encontra a ocorrência
if isNull(oResult) Then Exit Do ' se for nula sai
oViewCursor.gotoRange(oResult, False) ' move o cursor para o resultado
' colocar o cursor de texto na posição do cursor de visão
oCursor = oViewCursor.getText().createTextCursorByRange(oViewCursor)
oCursor.String = " " ' escreve um espaço sobre o espaço selecionado
oDocument = ThisComponent.CurrentController.Frame
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' Estende a seleção em um caractere para pegar a marca de parágrafo
oDispatcher.executeDispatch(oDocument, ".uno:GoRight", "", 0, args1())
oDispatcher.executeDispatch(oDocument, ".uno:Delete", "", 0, Array()) ' deleta a seleção
Loop Until isNull(oResult)
oViewCursor.gotoStart(False) ' move o cursor para o início
End Function
Espero ter ajudado.
Abraço,
Kadu Leite