Page MenuHomePhabricator

Deactivate the remarkup autosuggest once text can't match "[[" or "((" rules
ClosedPublic

Authored by epriestley on Apr 1 2019, 9:18 PM.
Tags
None
Referenced Files
F15533777: D20365.id48590.diff
Wed, Apr 23, 9:59 PM
F15490385: D20365.id48585.diff
Fri, Apr 11, 4:52 PM
F15489666: D20365.id48590.diff
Fri, Apr 11, 11:10 AM
F15486371: D20365.id.diff
Thu, Apr 10, 6:42 AM
F15483576: D20365.diff
Wed, Apr 9, 1:11 PM
F15415370: D20365.id.diff
Mar 20 2025, 5:38 AM
F15389721: D20365.diff
Mar 15 2025, 5:35 AM
F15385373: D20365.id48585.diff
Mar 14 2025, 10:25 PM
Subscribers
None

Details

Summary

See PHI1185, which reports a performance issue with "(" in remarkup in certain contexts.

I can't reproduce the performance issue, but I can reproduce the autosuggester incorrectly remaining active and swallowing return characters.

When the user types ( or [, we wait for a prefix for the (( (Phurl) or [[ (Phriction) rules. We currently continue looking for that prefix until a character is entered that explicitly interrupts the search.

For example, typing (xxx<return> does not insert a return character, because we're stuck on matching the prefix.

Instead, as soon as the user has entered text that we know won't ever match the prefix, deactivate the autocomplete. We can slightly cheat through this by just looking for at least one character of text, since all prefixes are exactly one character long. If we eventually have some kind of ~~@(xyz) rule we might need to add a more complicated piece of rejection logic.

Test Plan

Typed (xxx<return>, got a return. Used (( and [[ autosuggest rules normally. Used JX.log() to sanity check that nothing too crazy seems to be happening.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable