Text replacement problem in Calendar

I am using Yosemite 10.10.5.

I am using a set of text replacement defined within:

System Preferences > Keyboard > Text

as follows (partial view focused on interesting cases):

Text replacement System Preferences .

The -> and => are working in TextEdit: Text replacement TextEdit

But within Calendar, -> is working and => is failing: Text replacement Calendar success

Text replacement Calendar failing.

A test with a newly created account give the same abnormal behaviour.


What may cause this inconsistent text replacement behaviour?

How may I further analyze or debug this inconsistent behaviour?


Solution 1:

I’ve experienced many issues using Text Replacements that start with certain symbols, like - = $ and many more (including punctuations). This even extends to replacements that start with numbers.

Those replacements themselves may work, but having them saved might block others from working. Such failures may be limited to specific apps, as you’ve noticed.

Here are my notes on what interacts with what…

The following prevent :) from triggering:

  • ...
  • --
  • -_-
  • ->
  • $)
  • 401k
  • 8B
  • 8o

The following prevent ;) from triggering:

  • |(
  • |)
  • 2d
  • 3g
  • >)
  • >(
  • >=

The following didn’t work at all:

  • 1/2
  • 1/3
  • etc.

I've found that only using replacements that start with : ; ( ^ and letters makes the feature work very reliably.

This affects only macOS (up to and including Sierra 10.12.4). I haven't experienced issues with Text Replacements on iOS at all. However since they sync over iCloud I've had to remove all those “bad” strings.

I arrived at this conclusion by painstakingly removing text substitutions and checking if non-working substitutions suddenly started working. Sure enough, each time I removed all those that started with a given character, an entire class of previously non-working ones started working.

My guess is that macOS treats different characters as word boundaries, and that different applications may use their own rules as well. That would break how substitution strings are detected across macOS apps. For instance on iOS you often need to add a space to trigger a replacement, even one that ends with a ). On macOS the substitution typically occurs immediately.