Autocorrect will not replace dashes

I’m at my wits’ end with this one. The behaviour I’m expecting is that if I type – it should be replaced by an em-dash. I would expect this to happen when – is followed by a space or a carriage return. Every other autocorrect option is working fine, but LO will not replace the dashes!

  • correct as you type is definitely checked
  • use replacement table is checked
  • replace dashes is checked
  • language is English (UK) in every setting I can find within the program
  • I have tried deleting and re-adding the replacement table entry, it does nothing
  • I have tried deleting and restoring my user profile

Other substitutions like “correct two initial capitals” and “–> to arrow” work as expected. I was having this problem in LO 6.4.6 so I tried upgrading to 7.0.0, no change. Help?

Thanks, corrected

– is followed by a space or a carriage return

… and there is a space (or beginning of paragraph) before --

And what is your text language? Do you have special text languages for certain paragraphs? E.g it does not work, if I set a paragraph to Latin and it starts to work again, if the next paragraph is English(UK).

Text language is English(UK) throughout. I tried changing it to English(USA) just in case, but I still can’t get it to work.

Do you mean that there HAS to be a space before – for it to convert? That doesn’t make a lot of sense to me. Every other word processor I use will convert something like “What–?” into “What(emdash)?” by default. I’ve checked the word replacement list and there is definitely not a space before or after “–” in the table entry.

@Brightwanderer: you say “corrected”. What? Something in your question you edited or the issue itself?

Opaque pointed out that I had the version numbers wrong and I corrected them, but the comment I replied to is now gone.

Do you mean that there HAS to be a space before – for it to convert?

yes


Are you really talking about E**m**-Dash (Unicode `U+2014`)? My LibreOffice does replace `--` with E**n** Dash (Unicode `U+2013`).

The solution might be to add a replacement entry into Replace table of AutoCorrect Option using:
Replace: .*--.*
With: (if your really mean Em-Dash) – or –
With: (if you in fact mean En Dash)

Note(s):

  • The solution would work, whenever you type -- regardless of having spaces or begin of paragraph
  • I’m not sure about any side effects
  • Difference in length of En and Em dash is small on the this webpage but quite large in Liberation Serif

image description

Okay, I get what the problem actually is now. The default replacement table option is looking for – as a standalone entity, so to do what I’m expecting, I have to create a new entry using wildcards to indicate that it’s “part of” another word. I can confirm after testing that .*-- does what I want.

The fact that it isn’t default behaviour is bizarre, though. The use-case is in interrupted speech, either fictional dialogue or transcribed conversation. It would look something like this:

“You can’t—”

“I assure you I can.”

Em-dash (not en-dash) is standard here. There is never a space in front of it and usually isn’t one after it. In all other word processing software I’ve used, this replacement in this context happens without issue. I’d expect LibreOffice to either have the wildcard version of the entry as one of the defaults, or to include this behaviour under “replace dashes”. Is there somewhere I can submit that as a suggestion?

According to Introduction - Feature Request Feature Requests should go to https://bugs.documentfoundation.org/ - but for me it is unusual/unnatural to have no space.

@anon73440385 thanks for your help!

The “Replace dashes” autocorrect option seems to be badly broken in LO 7.x, at least on Linux. The replacements are no longer triggered by entering a space following the second word in the phrase. However, that they do seem to operate when one presses [Enter] rather the space bar (aaargh). See e.g. this bug report: https://bugs.documentfoundation.org/show_bug.cgi?id=140445

The Unicode [Shift-Ctrl-U]-2013 or -2014 workarounds will (always?) work, though what a lot of typing!

1 Like

This does not appear to be a solution to the initial question but a feature request/bug report. Please, use your more link under the “non-answer” to “repost as a comment”.

The transformation “double hyphen” → “emdash” is not in the replacement table. It is a separate function.

Go to Tools>AutoCorrect>AutoCorrect Options, Options tab.

The controlling setting is labelled Replace dashes.

See if it checked.

To show the community your question has been answered, click the ✓ next to the correct answer, and “upvote” by clicking on the ^ arrow of any helpful answers. These are the mechanisms for communicating the quality of the Q&A on this site. Thanks!

In case you need clarification, edit your question (not an answer which is reserved for solutions) or comment the relevant answer.

As I said in the original post, that setting is already checked.

Solution: add .*-- to the replacement table, this will ensure that all em-dashes in interrupted speech or narrative are converted automatically while typing.