# reject `m_data` as VxWorks defined it and that breaks things if it's used elsewhere
# see [fprime](https://github.com/nasa/fprime/commit/d589f0a25c59ea9a800d851ea84c2f5df02fb529)
# and [Qt](https://github.com/qtproject/qt-solutions/blame/fb7bc42bfcc578ff3fa3b9ca21a41e96eb37c1c7/qtscriptclassic/src/qscriptbuffer_p.h#L46)
# \bm_data\b

# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
# to use this:
#\bfit\(

# s.b. anymore
\bany more[,.]

# s.b. GitHub
(?<![&*.]|// |\btype )\bGithub\b(?![{)])

# s.b. GitLab
(?<![&*.]|// |\btype )\bGitlab\b(?![{)])

# s.b. JavaScript
\bJavascript\b

# s.b. macOS or Mac OS X or ...
\bMacOS\b

# s.b. Microsoft
\bMicroSoft\b

# s.b. TypeScript
\bTypescript\b

# s.b. another
\ban[- ]other\b

# s.b. deprecation warning
\b[Dd]epreciation [Ww]arnings?\b

# s.b. greater than
\bgreater then\b

# s.b. in front of
\bin from of\b

# s.b. into
# when not phrasal and when `in order to` would be wrong:
# https://thewritepractice.com/into-vs-in-to/
#\sin to\s(?!if\b)

# s.b. is obsolete
\bis obsolescent\b

# s.b. it's or its
\bits['’]

# s.b. opt-in
#(?<!\sfor)\sopt in\s

# s.b. less than
\bless then\b

# s.b. one of
\bon of\b

# s.b. otherwise
\bother[- ]wise\b

# s.b. or (more|less)
\bore (?:more|less)\b

# s.b. nonexistent
\bnon existing\b
\b[Nn]o[nt][- ]existent\b

# s.b. brief / details/ param / return / retval
(?:^\s*|(?:\*|//|/*)\s+`)[\\@](?:breif|(?:detail|detials)|(?:params(?!\.)|prama?)|ret(?:uns?)|retvl)\b

# s.b. preexisting
[Pp]re[- ]existing

# s.b. preempt
[Pp]re[- ]empt\b

# s.b. preemptively
[Pp]re[- ]emptively

# s.b. recently changed or recent changes
[Rr]ecent changed

# s.b. reentrancy
[Rr]e[- ]entrancy

# s.b. reentrant
[Rr]e[- ]entrant

# s.b. understand
\bunder stand\b

# s.b. workarounds
#\bwork[- ]arounds\b

# s.b. workaround
(?:(?:[Aa]|[Tt]he|ugly)\swork[- ]around\b|\swork[- ]around\s+for)

# s.b. (coarse|fine)-grained
\b(?:coarse|fine) grained\b

# s.b. neither/nor -- or reword
#\bnot\b[^.?!"/(]+\bnor\b

# probably a double negative
# s.b. neither/nor (plus rewording the beginning)
\bnot\b[^.?!"/]*\bneither\b[^.?!"/(]*\bnor\b

# In English, it is generally wrong to have the same word twice in a row without punctuation.
# Duplicated words are generally mistakes.
# There are a few exceptions where it is acceptable (e.g. "that that").
# If the highlighted doubled word pair is in a code snippet, you can write a pattern to mask it.
# If the highlighted doubled word pair is in prose, have someone read the English before you dismiss this error.
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
