• Sean McGivern's avatar
    Only use backslash escapes in autocomplete when needed · 67b16f7e
    Sean McGivern authored
    Autocompletion for references happens on the frontend. Those references
    are turned into actual references on the backend, but only after
    Markdown processing has happened. That means that if a reference
    contains a character that Markdown might consume, it won't render
    correctly. So we need to do some escaping on the frontend.
    
    We have these potential problem characters:
    https://docs.gitlab.com/ee/user/markdown.html#emphasis
    
    1. ~ - this is ~~strikethrough~~, but only when doubled.
    2. _ - used for _emphasis_, doubled is __bold__.
    3. * - also used for *emphasis*, doubled is **bold** also.
    4. ` - used for `code spans`, any number works.
    
    We don't need to escape `-` any more. When it comes to being inside a
    word:
    
    1. a~~b~~ has strikethrough, so it needs to be escaped everywhere.
    2. a_b_ has no emphasis (see [a]) so it only needs to be escaped at the
       start and end of words.
    3. a*b* has emphasis, so it needs to be escaped everywhere.
    4. a`b` has a code span, so it needs to be escaped everywhere.
    
    Or, in code terms:
    
    1. Always escape ~~, *, and ` when being inserted by autocomplete.
    2. Escape _ when it's either at the beginning or the end of a word.
    
    [a]: https://docs.gitlab.com/ee/user/markdown.html#multiple-underscores-in-words
    67b16f7e
gfm_auto_complete.js 18.7 KB