0

Is it possible to write a macro for the problem explained in this discussion?

https://ask.libreoffice.org/t/can-you-auto-delete-the-space-before-an-auto-corrected-word/101757

If the following sequence is found, remove the first space.

<space>bys<space>

and keep only the second one. like this...

bys<space>

In other words, if " ed " is found, then remove the first space and join it with the earlier word. If that word is "work" then the new word will be "worked".

2
  • I don’t think that a regular macro will cope with the task, which should be solved using find " ed " and replace ed , with the “Find next” and “Replace” buttons
    – JohnSUN
    Feb 9 at 9:27
  • After joining the suffix with the earlier word, the new word should be a correct english word for e.g. worked Therefore hunspell tag added to the question. bugs.documentfoundation.org/show_bug.cgi?id=159652#c10
    – shantanuo
    Apr 16 at 9:11

1 Answer 1

1

I visited the original post you referenced. The problem is that the author has a list of suffix that they would like to autocorrect and then join. However, because the words that need to join with suffix is vast, it would not be easy to define all combinations. In addition, it appears that autocorrect can't match starting with a space character. Here is a quick and easy macro that could do the job. Simply add more entries inside the ReplaceList Sub. When done, execute the ReplaceList sub.

Sub ReplaceList
    PolishReplace("bys", "byś")
    ' add more entries behind this
End Sub

Sub PolishReplace(sinFind$, sinRep$)
    REM Usage: 
    REM     PolishReplace("Find string", "Replacement string")
    REM     Will search the "Find string" with at least one space in front
    REM     and replace with the  Replacement string
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    rem ----------------------------------------------------------------------
    dim args1(21) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "SearchItem.StyleFamily"
    args1(0).Value = 2
    args1(1).Name = "SearchItem.CellType"
    args1(1).Value = 0
    args1(2).Name = "SearchItem.RowDirection"
    args1(2).Value = true
    args1(3).Name = "SearchItem.AllTables"
    args1(3).Value = false
    args1(4).Name = "SearchItem.SearchFiltered"
    args1(4).Value = false
    args1(5).Name = "SearchItem.Backward"
    args1(5).Value = false
    args1(6).Name = "SearchItem.Pattern"
    args1(6).Value = false
    args1(7).Name = "SearchItem.Content"
    args1(7).Value = false
    args1(8).Name = "SearchItem.AsianOptions"
    args1(8).Value = false
    args1(9).Name = "SearchItem.AlgorithmType"
    args1(9).Value = 1
    args1(10).Name = "SearchItem.SearchFlags"
    args1(10).Value = 65536
    args1(11).Name = "SearchItem.SearchString"
    args1(11).Value = "[ ]+" & sinFind
    args1(12).Name = "SearchItem.ReplaceString"
    args1(12).Value = sinRep
    args1(13).Name = "SearchItem.Locale"
    args1(13).Value = 255
    args1(14).Name = "SearchItem.ChangedChars"
    args1(14).Value = 2
    args1(15).Name = "SearchItem.DeletedChars"
    args1(15).Value = 2
    args1(16).Name = "SearchItem.InsertedChars"
    args1(16).Value = 2
    args1(17).Name = "SearchItem.TransliterateFlags"
    args1(17).Value = 1280
    args1(18).Name = "SearchItem.Command"
    args1(18).Value = 3
    args1(19).Name = "SearchItem.SearchFormatted"
    args1(19).Value = false
    args1(20).Name = "SearchItem.AlgorithmType2"
    args1(20).Value = 2
    args1(21).Name = "Quiet"
    args1(21).Value = true
    
    dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
End Sub

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.