From 774f74258f500ab53c14e363412660f4a983219b Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Wed, 4 Dec 2024 08:06:31 -1000 Subject: [PATCH] ci: upgrade to check-spelling v0.0.24 (#18261) This upgrades to [check-spelling v0.0.24]. A number of GitHub APIs are being turned off shortly, so we need to upgrade or various uncertain outcomes will occur. There are some minor bugs that I'm aware of and which I've fixed since this release (including a couple I discovered while preparing this PR). There's a new accessibility forbidden pattern: #### Should be `cannot` (or `can't`) See https://www.grammarly.com/blog/cannot-or-can-not/ > Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`. > `Can't` is a contraction of `cannot`, and it's best suited for informal writing. > In formal writing and where contractions are frowned upon, use `cannot`. > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.` - if you encounter such a case, add a pattern for that case to patterns.txt. ``` \b[Cc]an not\b ``` [check-spelling v0.0.24]: https://github.com/check-spelling/check-spelling/releases/tag/v0.0.24 Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- .github/actions/spelling/allow/allow.txt | 5 +- .github/actions/spelling/candidate.patterns | 181 +++++++++--- .github/actions/spelling/excludes.txt | 44 +-- .github/actions/spelling/expect/alphabet.txt | 6 +- .github/actions/spelling/expect/expect.txt | 40 +-- .../actions/spelling/line_forbidden.patterns | 269 ++++++++++++++---- .../actions/spelling/patterns/patterns.txt | 75 ++++- .github/actions/spelling/reject.txt | 2 + .github/workflows/spelling2.yml | 168 +++++------ doc/bot.md | 2 +- doc/cascadia/profiles.schema.json | 4 +- .../spec.md | 30 +- doc/specs/#1595 - Suggestions UI/Snippets.md | 6 +- .../#1595 - Suggestions UI/Suggestions-UI.md | 10 +- doc/specs/#2046 - Command Palette.md | 2 +- ... commands, and synthesized action names.md | 2 +- .../#2871 - Pane Navigation.md | 2 +- .../#5000 - Process Model 2.0.md | 10 +- doc/specs/#532 - Panes and Split Windows.md | 8 +- doc/specs/#605 - Search/spec.md | 90 +++--- .../#2634 - Broadcast Input.md | 2 +- .../#10509 - Mica.md | 2 +- .../#642 - Buffer Exporting and Logging.md | 4 +- doc/specs/drafts/#997 Non-Terminal-Panes.md | 2 +- doc/specs/drafts/576-ProfilesJumplistSpec.md | 3 +- oss/chromium/base/numerics/checked_math.h | 2 +- scratch/ScratchIslandApp/SampleApp/pch.h | 2 +- scratch/ScratchIslandApp/WindowExe/pch.h | 2 +- .../FilteredCommandTests.cpp | 4 +- src/cascadia/LocalTests_TerminalApp/pch.h | 2 +- src/cascadia/Remoting/pch.h | 2 +- src/cascadia/TerminalAzBridge/pch.h | 2 +- src/cascadia/TerminalConnection/pch.h | 2 +- src/cascadia/TerminalControl/ControlCore.cpp | 2 +- .../TerminalControl/SearchBoxControl.cpp | 4 +- src/cascadia/TerminalControl/TermControl.cpp | 6 +- src/cascadia/TerminalControl/pch.h | 2 +- .../ActionsViewModel.cpp | 2 +- .../Resources/en-US/Resources.resw | 4 +- .../DynamicProfileUtils.cpp | 2 +- src/cascadia/UnitTests_Control/pch.h | 4 +- src/cascadia/UnitTests_Remoting/pch.h | 4 +- .../TerminalSettingsTests.cpp | 2 +- src/cascadia/UnitTests_TerminalCore/pch.h | 2 +- src/cascadia/WinRTUtils/pch.h | 2 +- src/cascadia/WindowsTerminal/AppHost.cpp | 2 +- src/cascadia/WindowsTerminal/pch.h | 2 +- src/cascadia/ut_app/precomp.h | 2 +- src/common.build.pre.props | 2 +- src/host/alias.cpp | 2 +- src/host/ft_host/API_DimensionsTests.cpp | 2 +- src/host/ft_host/CJK_DbcsTests.cpp | 2 +- src/host/ut_host/AliasTests.cpp | 2 +- src/host/utils.cpp | 2 +- src/inc/til/color.h | 8 +- src/renderer/wddmcon/precomp.h | 2 +- .../parser/OutputStateMachineEngine.cpp | 2 +- src/types/utils.cpp | 2 +- src/types/viewport.cpp | 4 +- tools/Generate-CodepointWidthsFromUCD.ps1 | 2 +- tools/TestTableWriter/GenerateTests.ps1 | 2 +- 61 files changed, 695 insertions(+), 368 deletions(-) diff --git a/.github/actions/spelling/allow/allow.txt b/.github/actions/spelling/allow/allow.txt index 4e70d3741b8..64bd05d0918 100644 --- a/.github/actions/spelling/allow/allow.txt +++ b/.github/actions/spelling/allow/allow.txt @@ -8,6 +8,7 @@ clickable cmark CMMI colorbrewer +commandlines consvc copyable dalet @@ -27,6 +28,7 @@ gfm ghe gje godbolt +hstrings hyperlinking hyperlinks Kbds @@ -46,8 +48,8 @@ mkmk mnt mru nje -NTMTo notwrapped +NTMTo ogonek overlined perlw @@ -87,6 +89,7 @@ und vsdevcmd westus workarounds +WSLs wtconfig XBox YBox diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns index 80f31f92e4f..5d93035f915 100644 --- a/.github/actions/spelling/candidate.patterns +++ b/.github/actions/spelling/candidate.patterns @@ -8,7 +8,7 @@ ^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b # patch hunk comments -^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .* +^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .* # git index header index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40} @@ -27,13 +27,16 @@ index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40} # data url in quotes ([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1} # data url -data:[-a-zA-Z=;:/0-9+]*,\S* +\bdata:[-a-zA-Z=;:/0-9+]*,\S* + +# https/http/file urls +(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|] # https/http/file urls (?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|] # mailto urls -mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} +mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,} # magnet urls magnet:[?=:\w]+ @@ -153,6 +156,9 @@ themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+. # GHSA GHSA(?:-[0-9a-z]{4}){3} +# GitHub actions +\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+ + # GitLab commit \bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b # GitLab merge requests @@ -211,7 +217,7 @@ accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* # medium link \blink\.medium\.com/[a-zA-Z0-9]+ # medium -\bmedium\.com/\@?[^/\s"]+/[-\w]+ +\bmedium\.com/@?[^/\s"]+/[-\w]+ # microsoft \b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]* @@ -276,7 +282,7 @@ slack://[a-zA-Z0-9?&=]+ [0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b # Twitter markdown -\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) +\[@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) # Twitter hashtag \btwitter\.com/hashtag/[\w?_=&]* # Twitter status @@ -331,7 +337,7 @@ ipfs://[0-9a-zA-Z]{3,} [^"\s]+/gitweb/\S+;h=[0-9a-f]+ # HyperKitty lists -/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/ +/archives/list/[^@/]+@[^/\s"]*/message/[^/\s"]*/ # lists /thread\.html/[^"\s]+ @@ -349,7 +355,7 @@ ipfs://[0-9a-zA-Z]{3,} \bopen\.spotify\.com/embed/playlist/\w+ # Mastodon -\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]* +\bmastodon\.[-a-z.]*/(?:media/|@)[?&=0-9a-zA-Z_]* # scastie \bscastie\.scala-lang\.org/[^/]+/\w+ @@ -391,9 +397,9 @@ ipfs://[0-9a-zA-Z]{3,} (?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m # URL escaped characters -\%[0-9A-F][A-F](?=[A-Za-z]) +%[0-9A-F][A-F](?=[A-Za-z]) # lower URL escaped characters -\%[0-9a-f][a-f](?=[a-z]{2,}) +%[0-9a-f][a-f](?=[a-z]{2,}) # IPv6 #\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b @@ -402,7 +408,7 @@ ipfs://[0-9a-zA-Z]{3,} # Punycode \bxn--[-0-9a-z]+ # sha -sha\d+:[0-9]*[a-f]{3,}[0-9a-f]* +sha\d+:[0-9a-f]*?[a-f]{3,}[0-9a-f]* # sha-... -- uses a fancy capture (\\?['"]|")[0-9a-f]{40,}\g{-1} # hex runs @@ -422,10 +428,13 @@ sha\d+:[0-9]*[a-f]{3,}[0-9a-f]* # pki -----BEGIN.*-----END +# pki (base64) +LS0tLS1CRUdJT.* + # uuid: \b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b # hex digits including css/html color classes: -(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b +(?:[\\0][xX]|\\u|[uU]\+|#x?|%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b # integrity integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} @@ -443,20 +452,47 @@ integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} Name\[[^\]]+\]=.* # IServiceProvider / isAThing -\b(?:I|isA)(?=(?:[A-Z][a-z]{2,})+\b) +(?:\b|_)(?:(?:ns|)I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b)) # crypt (['"])\$2[ayb]\$.{56}\g{-1} +# apache/old crypt +#(['"]|)\$+(?:apr|)1\$+.{8}\$+.{22}\g{-1} + +# sha1 hash +\{SHA\}[-a-zA-Z=;:/0-9+]{3,} + +# machine learning (?) +\b(?i)ml(?=[a-z]{2,}) + +# python +\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,}) + # scrypt / argon \$(?:scrypt|argon\d+[di]*)\$\S+ # go.sum \bh1:\S+ +# scala imports +^import (?:[\w.]|\{\w*?(?:,\s*(?:\w*|\*))+\})+ + # scala modules ("[^"]+"\s*%%?\s*){2,3}"[^"]+" +# container images +image: [-\w./:@]+ + +# Docker images +^\s*FROM\s+\S+:\S+(?:\s+AS\s+\S+|) + +# `docker images` REPOSITORY TAG IMAGE ID CREATED SIZE +\s*\S+/\S+\s+\S+\s+[0-9a-f]{8,}\s+\d+\s+(?:hour|day|week)s ago\s+[\d.]+[KMGT]B + +# Intel intrinsics +_mm_(?!dd)\w+ + # Input to GitHub JSON content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1} @@ -464,34 +500,43 @@ content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1} # you'll want to remove the `(?=.*?")` suffix. # The `(?=.*?")` suffix should limit the false positives rate # printf -#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA]|p)(?=[a-zA-Z]{2,}))(?=[_a-zA-Z]+\b)(?!%)(?=.*?['"]) +#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"]) +# Alternative printf +# %s +%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"]) # Python string prefix / binary prefix # Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings -(?|m([|!/@#,;']).*?\g{-1}) # perl qr regex (?|\(.*?\)|([|!/@#,;']).*?\g{-1}) +# perl run +perl(?:\s+-[a-zA-Z]\w*)+ + +# C network byte conversions +(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\() + # Go regular expressions regexp?\.MustCompile\(`[^`]*`\) @@ -505,14 +550,20 @@ regexp?\.MustCompile\(`[^`]*`\) sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2} # node packages -(["'])\@[^/'" ]+/[^/'" ]+\g{-1} +(["'])@[^/'" ]+/[^/'" ]+\g{-1} # go install go install(?:\s+[a-z]+\.[-@\w/.]+)+ +# pom.xml +<(?:group|artifact)Id>.*?< + # jetbrains schema https://youtrack.jetbrains.com/issue/RSRP-489571 urn:shemas-jetbrains-com +# Debian changelog severity +[-\w]+ \(.*\) (?:\w+|baseline|unstable|experimental); urgency=(?:low|medium|high|emergency|critical)\b + # kubernetes pod status lists # https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase \w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+ @@ -520,9 +571,15 @@ urn:shemas-jetbrains-com # kubectl - pods in CrashLoopBackOff \w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+ +# kubernetes applications +\.apps/[-\w]+ + # kubernetes object suffix -[0-9a-f]{10}-\w{5}\s +# kubernetes crd patterns +^\s*pattern: .*$ + # posthog secrets ([`'"])phc_[^"',]+\g{-1} @@ -534,6 +591,9 @@ urn:shemas-jetbrains-com # xcode api botches customObjectInstantitationMethod +# msvc api botches +PrependWithABINamepsace + # configure flags .* \| --\w{2,}.*?(?=\w+\s\w+) @@ -541,21 +601,34 @@ customObjectInstantitationMethod \.fa-[-a-z0-9]+ # bearer auth -(['"])Bear[e][r] .*?\g{-1} +(['"])[Bb]ear[e][r] .*?\g{-1} + +# bearer auth +\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]+ # basic auth -(['"])Basic [-a-zA-Z=;:/0-9+]{3,}\g{-1} +(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1} # base64 encoded content -#([`'"])[-a-zA-Z=;:/0-9+]+=\g{-1} +#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1} # base64 encoded content in xml/sgml ->[-a-zA-Z=;:/0-9+]+=[-a-zA-Z=;:/0-9+]{3,}== 0.0.22) \\\w{2,}\{ +# American Mathematical Society (AMS) / Doxygen +TeX/AMS + +# File extensions +\*\.[+\w]+, + # eslint "varsIgnorePattern": ".+" +# nolint +nolint:\w+ + # Windows short paths -[/\\][^/\\]{5,6}~\d{1,2}[/\\] +[/\\][^/\\]{5,6}~\d{1,2}(?=[/\\]) + +# cygwin paths +/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+ # in check-spelling@v0.0.22+, printf markers aren't automatically consumed # printf markers #(? Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`. +# > `Can't` is a contraction of `cannot`, and it's best suited for informal writing. +# > In formal writing and where contractions are frowned upon, use `cannot`. +# > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.` +# - if you encounter such a case, add a pattern for that case to patterns.txt. +\b[Cc]an not\b + +# Do not use `(click) here` links +# For more information, see: +# * https://www.w3.org/QA/Tips/noClickHere +# * https://webaim.org/techniques/hypertext/link_text +# * https://granicus.com/blog/why-click-here-links-are-bad/ +# * https://heyoka.medium.com/dont-use-click-here-f32f445d1021 +(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|"'`=(])-(?:D(?=[A-Z])|[WX]|f(?=[ms]))(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) +(?:^|[\t ,>"'`=(])-(?:D(?=[A-Z])|W(?!ork)|X|f(?=[ms]))(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) # hit-count: 60 file-count: 35 # version suffix v# @@ -134,19 +176,38 @@ mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} # to opt in \bto opt in\b +# Questionably acceptable forms of `in to` +# Personally, I prefer `log into`, but people object +# https://www.tprteaching.com/log-into-log-in-to-login/ +\b(?:(?:[Ll]og(?:g(?=[a-z])|)|[Ss]ign)(?:ed|ing)?) in to\b + +# to opt in +\bto opt in\b # acceptable duplicates # ls directory listings -[-bcdlpsw](?:[-r][-w][-Ssx]){3}\s+\d+\s+\S+\s+\S+\s+\d+\s+ +[-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+ # mount \bmount\s+-t\s+(\w+)\s+\g{-1}\b -# C types and repeated CSS values -\s(auto|center|div|Guid|inherit|long|LONG|none|normal|solid|that|thin|transparent|very)(?: \g{-1})+\s -# C struct -\bstruct\s+(\w+)\s+\g{-1}\b +# C/idl types, repeated CSS values, + English ... +\s(auto|buffalo|center|div|Guid|GUID|inherit|long|LONG|none|normal|solid|that|thin|transparent|very)(?: \g{-1})+\s +# C enum and struct +\b(?:enum|struct)\s+(\w+)\s+\g{-1}\b # go templates \s(\w+)\s+\g{-1}\s+\`(?:graphql|inject|json|yaml): # doxygen / javadoc / .net -(?:[\\@](?:brief|groupname|t?param|return|retval)|(?:public|private|\[Parameter(?:\(.+\)|)\])(?:\s+static|\s+override|\s+readonly)*)(?:\s+\{\w+\}|)\s+(\w+)\s+\g{-1}\s +(?:[\\@](?:brief|defgroup|groupname|link|t?param|return|retval)|(?:public|private|\[Parameter(?:\(.+\)|)\])(?:\s+(?:static|override|readonly|required|virtual))*)(?:\s+\{\w+\}|)\s+(\w+)\s+\g{-1}\s + +# macOS file path +(?:Contents\W+|(?!iOS)/)MacOS\b + +# Python package registry has incorrect spelling for macOS / Mac OS X +"Operating System :: MacOS :: MacOS X" + +# "company" in Germany +\bGmbH\b + +# IntelliJ +\bIntelliJ\b # Commit message -- Signed-off-by and friends ^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$ diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt index 2ac1670d534..d98038f96f9 100644 --- a/.github/actions/spelling/reject.txt +++ b/.github/actions/spelling/reject.txt @@ -5,9 +5,11 @@ benefitting occurences? ^dependan.* +^diables?$ ^oer$ Sorce ^[Ss]pae.* +^Teh$ ^untill$ ^untilling$ ^wether.* diff --git a/.github/workflows/spelling2.yml b/.github/workflows/spelling2.yml index 2778a7e9e5d..7675d5d004e 100644 --- a/.github/workflows/spelling2.yml +++ b/.github/workflows/spelling2.yml @@ -34,14 +34,14 @@ name: Spell checking # # For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key -# Sarif reporting +# SARIF reporting # -# Access to Sarif reports is generally restricted (by GitHub) to members of the repository. +# Access to SARIF reports is generally restricted (by GitHub) to members of the repository. # # Requires enabling `security-events: write` # and configuring the action with `use_sarif: 1` # -# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Sarif-output +# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-SARIF-output # Minimal workflow structure: # @@ -60,23 +60,23 @@ name: Spell checking on: push: branches: - - "**" + - "**" tags-ignore: - - "**" + - "**" pull_request_target: branches: - - "**" + - "**" types: - - 'opened' - - 'reopened' - - 'synchronize' + - "opened" + - "reopened" + - "synchronize" issue_comment: types: - - 'created' + - "created" jobs: spelling: - name: Spell checking + name: Check Spelling permissions: contents: read pull-requests: read @@ -91,52 +91,57 @@ jobs: # note: If you use only_check_changed_files, you do not want cancel-in-progress cancel-in-progress: true steps: - - name: check-spelling - id: spelling - uses: check-spelling/check-spelling@v0.0.22 - with: - suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }} - checkout: true - check_file_names: 1 - spell_check_this: microsoft/terminal@main - post_comment: 0 - use_magic_file: 1 - report-timing: 1 - warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check - experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} - use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }} - extra_dictionary_limit: 20 - extra_dictionaries: - cspell:software-terms/dict/softwareTerms.txt - cspell:cpp/src/stdlib-cpp.txt - cspell:lorem-ipsum/dictionary.txt - cspell:cpp/src/stdlib-c.txt - cspell:php/dict/php.txt - cspell:filetypes/filetypes.txt - cspell:java/src/java.txt - cspell:python/src/common/extra.txt - cspell:node/dict/node.txt - cspell:java/src/java-terms.txt - cspell:aws/aws.txt - cspell:typescript/dict/typescript.txt - cspell:dotnet/dict/dotnet.txt - cspell:golang/dict/go.txt - cspell:fullstack/dict/fullstack.txt - cspell:cpp/src/compiler-msvc.txt - cspell:python/src/python/python-lib.txt - cspell:mnemonics/src/mnemonics.txt - cspell:cpp/src/stdlib-cmath.txt - cspell:css/dict/css.txt - cspell:cpp/src/lang-keywords.txt - cspell:django/dict/django.txt - cspell:python/src/python/python.txt - cspell:html/dict/html.txt - cspell:cpp/src/ecosystem.txt - cspell:cpp/src/compiler-clang-attributes.txt - cspell:npm/dict/npm.txt - cspell:r/src/r.txt - cspell:powershell/dict/powershell.txt - cspell:csharp/csharp.txt + - name: check-spelling + id: spelling + uses: check-spelling/check-spelling@v0.0.24 + with: + suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }} + checkout: true + check_file_names: 1 + spell_check_this: microsoft/terminal@main + post_comment: 0 + use_magic_file: 1 + report-timing: 1 + warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }} + check_extra_dictionaries: "" + dictionary_source_prefixes: > + { + "cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20241114/dictionaries/" + } + extra_dictionaries: | + cspell:software-terms/softwareTerms.txt + cspell:cpp/stdlib-cpp.txt + cspell:cpp/stdlib-c.txt + cspell:lorem-ipsum/dictionary.txt + cspell:php/php.txt + cspell:filetypes/filetypes.txt + cspell:java/java.txt + cspell:node/node.txt + cspell:golang/go.txt + cspell:java/java-terms.txt + cspell:mnemonics/mnemonics.txt + cspell:npm/npm.txt + cspell:fullstack/fullstack.txt + cspell:python/python/python-lib.txt + cspell:dotnet/dotnet.txt + cspell:dart/dart.txt + cspell:aws/aws.txt + cspell:python/common/extra.txt + cspell:css/css.txt + cspell:cpp/stdlib-cmath.txt + cspell:typescript/typescript.txt + cspell:cpp/compiler-msvc.txt + cspell:django/django.txt + cspell:html/html.txt + cspell:cpp/lang-keywords.txt + cspell:cpp/ecosystem.txt + cspell:r/r.txt + cspell:cpp/compiler-clang-attributes.txt + cspell:powershell/powershell.txt + cspell:csharp/csharp.txt + cspell:python/python/python.txt comment-push: name: Report (Push) @@ -144,15 +149,16 @@ jobs: runs-on: ubuntu-latest needs: spelling permissions: + actions: read contents: write if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' steps: - - name: comment - uses: check-spelling/check-spelling@v0.0.22 - with: - checkout: true - spell_check_this: microsoft/terminal@main - task: ${{ needs.spelling.outputs.followup }} + - name: comment + uses: check-spelling/check-spelling@v0.0.24 + with: + checkout: true + spell_check_this: microsoft/terminal@main + task: ${{ needs.spelling.outputs.followup }} comment-pr: name: Report (PR) @@ -160,17 +166,18 @@ jobs: runs-on: ubuntu-latest needs: spelling permissions: + actions: read contents: read pull-requests: write if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request') steps: - - name: comment - uses: check-spelling/check-spelling@v0.0.22 - with: - checkout: true - spell_check_this: microsoft/terminal@main - task: ${{ needs.spelling.outputs.followup }} - experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + - name: comment + uses: check-spelling/check-spelling@v0.0.24 + with: + checkout: true + spell_check_this: microsoft/terminal@main + task: ${{ needs.spelling.outputs.followup }} + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} update: name: Update PR @@ -180,18 +187,19 @@ jobs: actions: read runs-on: ubuntu-latest if: ${{ - github.repository_owner != 'microsoft' && - github.event_name == 'issue_comment' && - github.event.issue.pull_request && - contains(github.event.comment.body, '@check-spelling-bot apply') + github.repository_owner != 'microsoft' && + github.event_name == 'issue_comment' && + github.event.issue.pull_request && + contains(github.event.comment.body, '@check-spelling-bot apply') && + contains(github.event.comment.body, 'https://') }} concurrency: group: spelling-update-${{ github.event.issue.number }} cancel-in-progress: false steps: - - name: apply spelling updates - uses: check-spelling/check-spelling@v0.0.22 - with: - experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} - checkout: true - ssh_key: "${{ secrets.CHECK_SPELLING }}" + - name: apply spelling updates + uses: check-spelling/check-spelling@v0.0.24 + with: + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + checkout: true + ssh_key: "${{ secrets.CHECK_SPELLING }}" diff --git a/doc/bot.md b/doc/bot.md index 1a38cedac8c..6da12f15ce3 100644 --- a/doc/bot.md +++ b/doc/bot.md @@ -109,7 +109,7 @@ We'll be using tags, primarily, to help us understand what needs attention, what - Will use Squash merge strategy - Will attempt to delete branch after merge, if possible - Will automatically remove the `AutoMerge` label if changes are pushed by someone *without* Write Access. - - More information on bot-logic that can be controlled with comments is [here](https://github.com/OfficeDev/office-ui-fabric-react/wiki/Advanced-auto-merge) + - See more [information on bot-logic that can be controlled with comments](https://github.com/OfficeDev/office-ui-fabric-react/wiki/Advanced-auto-merge) #### Mark issues with an active PR - If there is an active PR for an issue, label that issue with the `In-PR` label diff --git a/doc/cascadia/profiles.schema.json b/doc/cascadia/profiles.schema.json index 46eea7daed8..a56de7f038c 100644 --- a/doc/cascadia/profiles.schema.json +++ b/doc/cascadia/profiles.schema.json @@ -1917,7 +1917,7 @@ }, "useCommandline": { "default": false, - "description": "When set to `true`, the current commandline the user has typed will pre-populate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. When set to false, the filter will start empty." + "description": "When set to `true`, the current commandline the user has typed will prepopulate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. When set to false, the filter will start empty." } } } @@ -2869,7 +2869,7 @@ "description": "When true, this profile should always open in an elevated context. If the window isn't running as an Administrator, then a new elevated window will be created." }, "environment": { - "description": "Key-value pairs representing environment variables to set. Environment variable names are not case sensitive. You can reference existing environment variable names by enclosing them in literal percent characters (e.g. %PATH%).", + "description": "Key-value pairs representing environment variables to set. Environment variable names are not case-sensitive. You can reference existing environment variable names by enclosing them in literal percent characters (e.g. %PATH%).", "type": "object", "additionalProperties": { "type": "string" diff --git a/doc/specs/#1043 - Set the initial position of the Terminal/spec.md b/doc/specs/#1043 - Set the initial position of the Terminal/spec.md index 97208e3d980..a6dcc7fd7b6 100644 --- a/doc/specs/#1043 - Set the initial position of the Terminal/spec.md +++ b/doc/specs/#1043 - Set the initial position of the Terminal/spec.md @@ -25,12 +25,12 @@ Two new properties should be added in the json settings file: 1. All spaces will be ignored. -2. Both X value and Y values are optional. If anyone of them is missing, or the value is invalid, system default value will be used. Examples: +2. Both X value and Y values are optional. If any one of them is missing, or the value is invalid, system default value will be used. Examples: - ", 1000" equals to (default, 1000) - "1000, " equals to (1000, default) - "," equals to (default, default) - "abc, 1000" equals to (default, 1000) + ", 1000" equals (default, 1000) + "1000, " equals (1000, default) + "," equals (default, default) + "abc, 1000" equals (default, 1000) **launchMode**: string. Determine the launch mode. There are two modes for now @@ -41,10 +41,10 @@ The steps of this process: 1. Set the top-left origin, width and height to CW_USEDEFAULT. 2. Get the dpi of the nearest monitor; Load settings. -3. From settings, find the user-defined initial position and launch mode. +3. From settings, find the user-defined initial position and launch mode. 4. If the user sets custom initial position, calculate the new position considering the current dpi and monitor. If not, use system default value. 5. If the user set launch mode as "maximize", calculate the new height and width. If the user choose "default", use system default size. -6. SetWindowPos with the new position and dimension of the window. +6. SetWindowPos with the new position and dimension of the window. Step 2 to 6 should be done in `AppHost::_HandleCreateWindow`, which is consistent to the current code. @@ -52,11 +52,11 @@ In step 4, we may need to consider the dpi of the current monitor and multi-moni Edge cases: -1. Multiple monitors. The user should be able to set the initial position to any monitors attached. For the monitors on the left side of the major monitor, the initial position values are negative. +1. Multiple monitors. The user should be able to set the initial position to any monitors attached. For the monitors on the left side of the major monitor, the initial position values are negative. 2. If the initial position is larger than the screen resolution and the window top left corner is off-screen, we should let user be able to see and drag the window back on screen. One solution is to set the initial position to the top left corner of the nearest monitor if the top left is off-screen. 3. If the user wants to launch maximized and provides an initial position, we should launch the maximized window on the top left corner of the monitor where the position is located. -4. Launch the Terminal on a monitor with custom dpi. Changing the dpi of the monitor will not affect the initial position of the top left corner. So we do not need to handle this case. -5. Launch the Terminal on a monitor with custom resolution. Changing the resolution will change the available point for the initial position. (2) already covers this case. +4. Launch the Terminal on a monitor with custom dpi. Changing the dpi of the monitor will not affect the initial position of the top left corner. So we do not need to handle this case. +5. Launch the Terminal on a monitor with custom resolution. Changing the resolution will change the available point for the initial position. (2) already covers this case. ## UI/UX Design @@ -69,14 +69,14 @@ The rest of the UI will be the same of the current Terminal experience, except t ### Accessibility -Users can only set the initial position and launch mode in the Json file with keyboard. Thus, this will not affect accessibility. +Users can only set the initial position and launch mode in the Json file with keyboard. Thus, this will not affect accessibility. ### Reliability -We need to make sure that whatever the initial position is set, the user can access the Terminal window. This is guaranteed because if the top left corner position of the Terminal Window is out of screen, we put it on the top left corner of the screen. +We need to make sure that whatever the initial position is set, the user can access the Terminal window. This is guaranteed because if the top left corner position of the Terminal Window is out of screen, we put it on the top left corner of the screen. ### Performance, Power, and Efficiency -More data reading and calculation will be included in Terminal Launch process, which may inversely influence the launch time. However, the impact is trivial. +More data reading and calculation will be included in Terminal Launch process, which may inversely influence the launch time. However, the impact is trivial. ## Potential Issues @@ -88,9 +88,9 @@ For now, this feature only allows the user to set initial position and choose wh 1. Save the position of the Terminal on exit, and restore the position on the next launch. This could be a true/false feature that users could choose to set. -2. We may need to consider multiple Terminal windows scenario. If the user opens multiple Terminal windows, then we need to consider how to save and restore the position. +2. We may need to consider multiple Terminal windows scenario. If the user opens multiple Terminal windows, then we need to consider how to save and restore the position. -3. We may also consider more launch modes. Like full screen mode and minimized mode. +3. We may also consider more launch modes. Like full screen mode and minimized mode. GitHub issue for future follow-ups: https://github.com/microsoft/terminal/issues/766 diff --git a/doc/specs/#1595 - Suggestions UI/Snippets.md b/doc/specs/#1595 - Suggestions UI/Snippets.md index 4fd12702ff2..f80a9cf52f6 100644 --- a/doc/specs/#1595 - Suggestions UI/Snippets.md +++ b/doc/specs/#1595 - Suggestions UI/Snippets.md @@ -447,7 +447,7 @@ Another reason we shouldn't support keys being able to be lazy-bound to local snippets: It's entirely too easy for `malicious.exe` to create a file in `%HomePath%` that creates a snippet for `\u003pwn-your-machine.exe\r` (or similar). Any app can read your settings file, and it is again too easy for that -malicious app to set it's own action `id` to the same as some other well-meaning +malicious app to set its own action `id` to the same as some other well-meaning local snippet's ID which you DO have bound to a key. When we first load the snippets from the `.wt.json` file, we'll want to also ask @@ -563,9 +563,9 @@ their own workflows. * We'd have inputs for the commandline, name, description. * Obviously, it'd be easy to have a "Add new" button (to open that dialog) on the snippets pane. - * We could have `wt save` open that dialog pre-populated, rather than just + * We could have `wt save` open that dialog prepopulated, rather than just saving the command directly. - * We could even also find a way to pre-populate that dialog with the recent + * We could even also find a way to prepopulate that dialog with the recent commands (from shell integration)! * As a potential v2.0 of the snippets file schema, we may look to the `.vscode/tasks.json` schema for inspiration. That file supports much more diff --git a/doc/specs/#1595 - Suggestions UI/Suggestions-UI.md b/doc/specs/#1595 - Suggestions UI/Suggestions-UI.md index b787e7b7bf5..b4bf0409adb 100644 --- a/doc/specs/#1595 - Suggestions UI/Suggestions-UI.md +++ b/doc/specs/#1595 - Suggestions UI/Suggestions-UI.md @@ -240,7 +240,7 @@ Not listed above is [shell-driven autocompletion]. These aren't something that the Terminal can invoke all on its own - these are something the shell would need to invoke themselves. -#### Pre-populate the current commandline context +#### Prepopulate the current commandline context Consider the following scenario. A user has typed `git c` in their shell, and has [shell integration] enabled for their shell. They want to open the @@ -248,7 +248,7 @@ Suggestions UI filtered to their recent history, but starting with what they've already typed. To support this scenario, we'll add an additional property: * `"useCommandline"`: `bool` (**default**: `true`) - * `true`: the current commandline the user has typed will pre-populate the + * `true`: the current commandline the user has typed will prepopulate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. * `false`: the filter will start empty, regardless of what the user has typed. @@ -388,7 +388,7 @@ spec's review. * [ ] Enable the `SuggestionsControl` to open with or without a search box * [ ] Plumb support for shell-driven completions through the core up to the app * [ ] Expose the _current_ commandline from the `TermControl` -* [ ] Add a `useCommandline` property to `suggestions`, to pre-populate the search with the current commandline. +* [ ] Add a `useCommandline` property to `suggestions`, to prepopulate the search with the current commandline. * [ ] Persist recent commands / directories accordingly ### 🏃‍♂️ Run @@ -436,7 +436,7 @@ Here's a sample json schema for the settings discussed here. }, "useCommandline": { "default": false, - "description": "When set to `true`, the current commandline the user has typed will pre-populate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. When set to false, the filter will start empty." + "description": "When set to `true`, the current commandline the user has typed will prepopulate the filter of the Suggestions UI. This requires that the user has enabled shell integration in their shell's config. When set to false, the filter will start empty." }, "nesting": { "default": true, @@ -591,7 +591,7 @@ We'll probably want a way for recent commands to be saved across sessions. That * If they're saved per-profile, maybe a profile can opt-in to loading all the commands? * How does defterm play with this? Do we "layer" by concatenating per-profile commands with `profiles.defaults` ones? * A button in the Settings UI for clearing these commands -* Should fragments be able to pre-populate "recent commands"? +* Should fragments be able to prepopulate "recent commands"? * I'm just gonna say _no_. That would be a better idea for Tasks (aka just a `sendInput` Action that we load from the fragment normally as a Task), or a specific suggestion source for the fragment extension. #### Inline mode diff --git a/doc/specs/#2046 - Command Palette.md b/doc/specs/#2046 - Command Palette.md index 20a6ff01391..200b84a03ec 100644 --- a/doc/specs/#2046 - Command Palette.md +++ b/doc/specs/#2046 - Command Palette.md @@ -698,7 +698,7 @@ This would define three commands, each with a number of nested commands undernea * The second command: - It uses the string literal `"Connect to ssh..."` as it's name - It contains two nested commands: - - Each nested command has it's own literal name + - Each nested command has its own literal name - Activating these commands would cause us to open a new tab with the provided `commandline` instead of the default profile's `commandline` * The third command: diff --git a/doc/specs/#2046 - Unified keybindings and commands, and synthesized action names.md b/doc/specs/#2046 - Unified keybindings and commands, and synthesized action names.md index dffba83d6b6..d88bc14ae6d 100644 --- a/doc/specs/#2046 - Unified keybindings and commands, and synthesized action names.md +++ b/doc/specs/#2046 - Unified keybindings and commands, and synthesized action names.md @@ -10,7 +10,7 @@ issue id: 2046 ## Abstract This document is intended to serve as an addition to the [Command Palette Spec]. -While that spec is complete in it's own right, subsequent discussion revealed +While that spec is complete in its own right, subsequent discussion revealed additional ways to improve the functionality and usability of the command palette. This document builds largely on the topics already introduced in the original spec, so readers should first familiarize themselves with that diff --git a/doc/specs/#2871 - Pane Navigation/#2871 - Pane Navigation.md b/doc/specs/#2871 - Pane Navigation/#2871 - Pane Navigation.md index e4b5ec6a4f1..439ae6a94eb 100644 --- a/doc/specs/#2871 - Pane Navigation/#2871 - Pane Navigation.md +++ b/doc/specs/#2871 - Pane Navigation/#2871 - Pane Navigation.md @@ -253,7 +253,7 @@ After much discussion as a team, we decided that **Proposal D** would be the best option. We felt that there wasn't a need to add any extra configuration to invoke the "pane switcher" as anything different than the "tab switcher". The "pane switcher" should really just exist as a part of the functionality of the -advanced tab switcher, not as it's own thing. +advanced tab switcher, not as its own thing. Additionally, we concurred that the new "direction" value should be `prev`, not `last`, for consistency's sake. diff --git a/doc/specs/#5000 - Process Model 2.0/#5000 - Process Model 2.0.md b/doc/specs/#5000 - Process Model 2.0/#5000 - Process Model 2.0.md index 17ac9d87238..72a672cffab 100644 --- a/doc/specs/#5000 - Process Model 2.0/#5000 - Process Model 2.0.md +++ b/doc/specs/#5000 - Process Model 2.0/#5000 - Process Model 2.0.md @@ -225,7 +225,7 @@ The window process can listen for that event to indicate that the swapchain changed. The window will then query for the content process's PID and create a handle to the content process. The window will query the current value of the content process's `HANDLE` to the swapchain. The window will then duplicate that -`HANDLE` into it's own process space. Now that the window has a handle to the +`HANDLE` into its own process space. Now that the window has a handle to the swapchain, it can use [`ISwapChainPanelNative2::SetSwapChainHandle`] to set the SwapChainPanel to use the same swapchain. @@ -449,7 +449,7 @@ schemes for the commandline parameters. The following is given as an example of how these arguments _might_ be authored and implemented to satisfy some of these scenarios. -Since each window process will have it's own unique ID assigned to it by the +Since each window process will have its own unique ID assigned to it by the monarch, then running a command in a given window with ID `N` should be as easy as something like: @@ -627,7 +627,7 @@ Then we have two paths forward: It should create a new content process to handle this connection. - the content process will need a way of being invoked by passing it handles to the new client. This way, the content process can dupe these handles into - it's own process space, to be able to create the `ITerminalConnection` in + its own process space, to be able to create the `ITerminalConnection` in its own process space. 3. If this new window process is the monarch, then great! There are no other @@ -808,7 +808,7 @@ The Settings UI is something we intend on shipping in the Terminal as a part of also plan on hopefully making the Settings UI appear as its own tab within the Terminal. This would be the first example of having non-terminal content directly in the application. How would we support tearing out the Settings UI -tab into it's own window? +tab into its own window? Options available here include: @@ -967,7 +967,7 @@ of each other. - Summon the nearest window - make the window "drop down" from the top - Summon the MRU window - - It would need to track a the MRU for windows, so pressing the shortcut when + - It would need to track the MRU for windows, so pressing the shortcut when no window is active summons the MRU one.
diff --git a/doc/specs/#532 - Panes and Split Windows.md b/doc/specs/#532 - Panes and Split Windows.md index c7ece7b3596..d6563c0a89e 100644 --- a/doc/specs/#532 - Panes and Split Windows.md +++ b/doc/specs/#532 - Panes and Split Windows.md @@ -46,7 +46,7 @@ application, and each tab has a set of panes that are visible within the context of that tab. Panes are implemented as a binary tree of panes. A Pane can either be a leaf -pane, with it's own terminal control that it displays, or it could be a parent +pane, with its own terminal control that it displays, or it could be a parent pane, where it has two children, each with their own terminal control. When a pane is a parent, its two children are either split vertically or @@ -211,7 +211,7 @@ no means a comprehensive list. ### Why not top-level panes, and nested tabs? -If each pane were to have it's own set of tabs, then each pane would need to +If each pane were to have its own set of tabs, then each pane would need to reserve screen real estate for a row of tabs. As a user continued to split the window, more and more of the screen would be dedicated to just displaying a row of tabs, which isn't really the important part of the application, the terminal @@ -223,10 +223,10 @@ user would need to somehow close the other panes, to be able to make the split the size of the dull window. One con of this design is that if a control is hosted in a pane, the current -design makes it hard to move out of a pane into it's own tab, or into another +design makes it hard to move out of a pane into its own tab, or into another pane. This could be solved a number of ways. There could be keyboard shortcuts for swapping the positions of tabs, or a shortcut for both "zooming" a tab -(temporarily making it the full size) or even popping a pane out to it's own +(temporarily making it the full size) or even popping a pane out to its own tab. Additionally, a right-click menu option could be added to do the aforementioned actions. Discoverability of these two actions is not as high as just dragging a tab from one pane to another; however, it's believed that panes diff --git a/doc/specs/#605 - Search/spec.md b/doc/specs/#605 - Search/spec.md index 03bb36debbc..66a3b6dd540 100644 --- a/doc/specs/#605 - Search/spec.md +++ b/doc/specs/#605 - Search/spec.md @@ -9,81 +9,81 @@ issue id: #605 ## Abstract -This spec is for feature request #605 "Search". It goes over the details of a new feature that allows users to search text in Terminal, within one tab or from all tabs. Expected behavior and design of this feature is included. Besides, future possible follow-up works are also addressed. +This spec is for feature request #605 "Search". It goes over the details of a new feature that allows users to search text in Terminal, within one tab or from all tabs. Expected behavior and design of this feature is included. Besides, future possible follow-up works are also addressed. ## Inspiration -One of the superior features of iTerm2 is it's content search. The search comes in two variants: search from active tab and search from all tabs. In almost any editor, there is an roughly equivalent string search. We also want to realize search experience in Terminal. There will be two variants, search within one tab or from multiple tabs. We will start with one-tab search implementation. +One of the superior features of iTerm2 is it's content search. The search comes in two variants: search from active tab and search from all tabs. In almost any editor, there is an roughly equivalent string search. We also want to realize search experience in Terminal. There will be two variants, search within one tab or from multiple tabs. We will start with one-tab search implementation. ## Solution Design Our ultimate goal is to provide both search within one tab and search from all tabs experiences. But we can start with one-tab search. The search experience should have following features: -1. The search is triggered by KeyBindings. A new setting property named "find" will be enabled in the Json file. The user can set their own key bindings for search. The default is ctrl+shift+f. +1. The search is triggered by KeyBindings. A new setting property named "find" will be enabled in the Json file. The user can set their own key bindings for search. The default is ctrl+shift+f. 2. The user search in a XAML TextBox, which is contained in a custom `SearchBoxControl`. The default position of the search box is the top right corner. -3. We can have multiple search methods. The simplest one is exact text match. Other match methods include case-sensitive exact match and regex match. In the first phase, we will focus on case sensitive/insensitive text exact match. +3. We can have multiple search methods. The simplest one is exact text match. Other match methods include case-sensitive exact match and regex match. In the first phase, we will focus on case-sensitive/insensitive text exact match. 4. If currently there is no active selection, the search starts from the last line of the mutableViewport. If there is an active selection, we start from the previous or the next text of the selected text. We automatically go around if we reach the start point of the search. -5. The user should be able to fully interact with the terminal when the search box is on screen. +5. The user should be able to fully interact with the terminal when the search box is on screen. 6. For accessibility concerns, the user should be able to navigate all the interactive elements on the search box using keyboard tab if the search box is focused. Searchbox could be created and closed with keyboard bindings. Close is usually bound to Esc. -Conhost already has a module for search. It implements case sensitive or insensitive exact text match search, and it provides methods to select the found word. However, we want to make search as a shared component between Terminal and Console host. Now search module is part of Conhost, and its dependencies include BufferOut and some other types in ConHost such as SCREEN_INFORMATION. In order to make Search a shared component, we need to remove its dependency on ConHost types. BufferOut is already a shared component, but we need to make sure there is no other Conhost dependency. +Conhost already has a module for search. It implements case-sensitive or insensitive exact text match search, and it provides methods to select the found word. However, we want to make search as a shared component between Terminal and Console host. Now search module is part of Conhost, and its dependencies include BufferOut and some other types in ConHost such as SCREEN_INFORMATION. In order to make Search a shared component, we need to remove its dependency on ConHost types. BufferOut is already a shared component, but we need to make sure there is no other Conhost dependency. We will create a `SearchBoxControl` Xaml `UserControl` element. When a search process begins, a `SearchBoxControl` object will be created and attached to `TermControl` root grid. In other words, one SearchBox is added for each `TermControl`. The reasons for this design is: -1. Each `TermControl` object is a Terminal Window and has a individual text buffer. In phase 1 we are going to search within the current terminal text buffer. -2. If we put the search box under TerminalApp, then the search can only happen on the current focused Terminal. -3. If the community does not like the current design, we can lift SearchBox to a higher level. +1. Each `TermControl` object is a Terminal Window and has a individual text buffer. In phase 1 we are going to search within the current terminal text buffer. +2. If we put the search box under TerminalApp, then the search can only happen on the current focused Terminal. +3. If the community does not like the current design, we can lift SearchBox to a higher level. ### Search process implementation -1. Once the user press ctrl+shift+f (or user's custom key binding), a new `SearchBoxControl` object will be created and attached as a child of `TermControl`. Focus will move to the TextBox within the `SearchBoxControl`. +1. Once the user press ctrl+shift+f (or user's custom key binding), a new `SearchBoxControl` object will be created and attached as a child of `TermControl`. Focus will move to the TextBox within the `SearchBoxControl`. 2. Search is performed on a XAML TextBox. Once the user presses Enter or click up/down arrow button, we start to search from the last line of the current viewport or the current selection, and try to find the exact text in the text buffer. The nearest searched one will be selected. Then the search start point will be set to the selected text. The next search will start before or after the previous searched text. -3. We re-use the Search module in conhost. It performs the search in a brute-force approach. Starting from every position in the text buffer, the search algorithm compares the span of the searched string with buffer characters, and if the current buffer text matches the whole string, it will return store the position of the text in the buffer and return. The stored position information will be used for selection. -3. The user can choose to search up or down. Search module realizes this, we just need to set a boolean flag. Default is search up. -4. The user can choose to do case sensitive or insensitive match. This also realized by Search module by setting a boolean flag. Default is search case-insensitively. -5. Tab navigation is realized by XAML. We just need to set TabNavigation="Cycle" in `SearchBoxControl`. -6. If the user clicks on the "X" button or press Esc, the search box will disappear and the object will be destructed and detached from the `TermControl` XAML tree. In phase one we do not store any state. -7. We need to guarantee full interaction with the terminal when the search box is open. To achieve this, search box and terminal input should be separated. If the current keyboard focus is on the search box, then keydown events will be handled on "search box level". +3. We re-use the Search module in conhost. It performs the search in a brute-force approach. Starting from every position in the text buffer, the search algorithm compares the span of the searched string with buffer characters, and if the current buffer text matches the whole string, it will return store the position of the text in the buffer and return. The stored position information will be used for selection. +3. The user can choose to search up or down. Search module realizes this, we just need to set a boolean flag. Default is search up. +4. The user can choose to do case-sensitive or insensitive match. This also realized by Search module by setting a boolean flag. Default is search case-insensitively. +5. Tab navigation is realized by XAML. We just need to set TabNavigation="Cycle" in `SearchBoxControl`. +6. If the user clicks on the "X" button or press Esc, the search box will disappear and the object will be destructed and detached from the `TermControl` XAML tree. In phase one we do not store any state. +7. We need to guarantee full interaction with the terminal when the search box is open. To achieve this, search box and terminal input should be separated. If the current keyboard focus is on the search box, then keydown events will be handled on "search box level". ## UI/UX Design ![SearchBox mockup](images/SearchBoxControl.png) Above is the `SearchBoxControl` in dark theme and light theme. - - The two buttons with up/down arrows controls the search direction, Each button will be styled to indicate which search direction is currently selected. - - The button with a "Aa" icon, if pressed, means that we are searching case-sensitivity. - - The current style puts all elements - the `X` button, the text box and the search pattern control buttons on one single line. This ensures that the `SearchBoxControl` won't be too high and block terminal text. This is similar with VSCode. Another possible layout style is to put elements in multiple layers. This will occupy more lines, but the search dialog will narrower. Considering that there is not many elements, we do not need multiple layers. + - The two buttons with up/down arrows controls the search direction, Each button will be styled to indicate which search direction is currently selected. + - The button with a "Aa" icon, if pressed, means that we are searching case-sensitivity. + - The current style puts all elements - the `X` button, the text box and the search pattern control buttons on one single line. This ensures that the `SearchBoxControl` won't be too high and block terminal text. This is similar with VSCode. Another possible layout style is to put elements in multiple layers. This will occupy more lines, but the search dialog will narrower. Considering that there is not many elements, we do not need multiple layers. ![SearchBox mockup, arrow button clicked](images/SearchBoxUpSelected.png) -The search box defaults to be on the top right corner of the Terminal window. If the current tab is split into panes, each pane will have a individual searchbox. +The search box defaults to be on the top right corner of the Terminal window. If the current tab is split into panes, each pane will have a individual searchbox. #### Search process -1. The user presses ctrl+shift+f (or user's custom key binding) to open the search box. Focus will move to the TextBox. -2. Search is performed on a XAML TextBox. Once the user presses Enter or click up/down arrow button, the search starts and searched text will be selected. Next search will be performed beginning from the current selection and go towards up/down. -3. The user can choose to search up or down by selecting up arrow or down arrow buttons. The chosen button will be styled to indicate it is selected. If the user does not click the arrows buttons, the default direction is up. -4. The user can choose to do case sensitive or insensitive match by checking a check box. The default is case insensitive. -5. If the search box is focused, the user can navigate all the elements on the search box using tab. When selected, press Enter equals to click. +1. The user presses ctrl+shift+f (or user's custom key binding) to open the search box. Focus will move to the TextBox. +2. Search is performed on a XAML TextBox. Once the user presses Enter or click up/down arrow button, the search starts and searched text will be selected. Next search will be performed beginning from the current selection and go towards up/down. +3. The user can choose to search up or down by selecting up arrow or down arrow buttons. The chosen button will be styled to indicate it is selected. If the user does not click the arrows buttons, the default direction is up. +4. The user can choose to do case-sensitive or insensitive match by checking a check box. The default is case-insensitive. +5. If the search box is focused, the user can navigate all the elements on the search box using tab. When selected, pressing Enter is equivalent to clicking. 6. If the user click the "X" button or press Esc, the search stopped and the search box disappears and focus will move back to Terminal. 7. Once the search box is closed (exiting search mode), the selection will still be there. This coincides with the current VS Code and cmd experience. To get rid of the selection, the user can just click other area of the window. -8. If the user clicks on the terminal when the search box is open, it will draw focus back to the terminal from the search box. The search box will still stay open. -9. The user can interact with the terminal when the search box is open, which means that the user can scroll the terminal content, or input text when the focus is on the terminal control. -10. If the user switches tabs while the search box is open, the focus will be moved back to the terminal. +8. If the user clicks on the terminal when the search box is open, it will draw focus back to the terminal from the search box. The search box will still stay open. +9. The user can interact with the terminal when the search box is open, which means that the user can scroll the terminal content, or input text when the focus is on the terminal control. +10. If the user switches tabs while the search box is open, the focus will be moved back to the terminal. ## Capabilities -1. The user can search exact matched text in the text buffer of the Terminal Screen. -2. The user can choose to search case sensitively and insensitively. -3. The user can search up or down. -4. Found text will be selected. -5. The search will start from the active selected text (inclusive) if there is one, or the end of the written text. +1. The user can search exact matched text in the text buffer of the Terminal Screen. +2. The user can choose to search case-sensitively and insensitively. +3. The user can search up or down. +4. Found text will be selected. +5. The search will start from the active selected text (inclusive) if there is one, or the end of the written text. 6. The search will automatically go around when it reaches the starting point. -7. The user can use Tab to navigate all the elements in the search box. -8. The user can search in the opposite direction with Shift + Enter +7. The user can use Tab to navigate all the elements in the search box. +8. The user can search in the opposite direction with Shift + Enter ### Accessibility The user should be able to use search by keyboard only. -Once the searchbox is focused, the user can navigate between elements in the search box using Tab. And "click" using Enter. +Once the searchbox is focused, the user can navigate between elements in the search box using Tab. And "click" using Enter. ### Security @@ -91,8 +91,8 @@ This feature should not introduce any new security issues. ### Reliability -1. The key input of Terminal command line and the search box should be separated. Search box should not block interaction with the command line when it is open. -2. The search box should not block too much text. The search box only occupies one line, so it won't have big impact on the readability of the terminal output. +1. The key input of Terminal command line and the search box should be separated. Search box should not block interaction with the command line when it is open. +2. The search box should not block too much text. The search box only occupies one line, so it won't have big impact on the readability of the terminal output. ### Compatibility @@ -100,23 +100,23 @@ This feature won't break existing features of Terminal. ### Performance, Power, and Efficiency -This feature only launches in need. It does not impact the performance of Terminal. +This feature only launches in need. It does not impact the performance of Terminal. ## Potential Issues - + 1. If the terminal window is not wide enough for the search box to be visible, the buttons on the right of the `TextBox` will become invisible, but the `TextBox` is still visible and the window could not be narrower than the `TextBox`. This is similar to the behavior of other editors. Please see the image below: ![SearchBox width not enough](images/SearchBoxControlNoEnoughWidth.png) 2. If the terminal window is not high enough for the search box to be visible, the whole terminal screen, including the `SearchBoxControl` can disappear. This is similar to the behavior of other editors. ## Future considerations -In version 1, we want realize a case sensitive/insensitive exact text match. But we may consider the following features in version 2: +In version 1, we want realize a case-sensitive/insensitive exact text match. But we may consider the following features in version 2: -1. Add "Find" button in dropdown menu to trigger search. This enables the search feature to be operated with mouse only. However, this is not required by Accessibility so we do not cover this in phase one. -2. Search from all tabs. For Version 1 we just want to realize search within one tab. However, the community also requests search from all tabs. This may require a big change to the search algorithm, but it is not seen as a popular use scenario, so we put it future phase. To implement multi-tab search, we can let TerminalPage or App own a `SearchBoxControl` object, and provide the text buffer of the current focused terminal. We need to change the search algorithm. +1. Add "Find" button in dropdown menu to trigger search. This enables the search feature to be operated with mouse only. However, this is not required by Accessibility so we do not cover this in phase one. +2. Search from all tabs. For Version 1 we just want to realize search within one tab. However, the community also requests search from all tabs. This may require a big change to the search algorithm, but it is not seen as a popular use scenario, so we put it future phase. To implement multi-tab search, we can let TerminalPage or App own a `SearchBoxControl` object, and provide the text buffer of the current focused terminal. We need to change the search algorithm. 3. Regular expression match. This is a useful search pattern and is implemented in some editors. However, this use scenario is not used as much as exact text search, thus, we put it in future phase. -4. Search history. Sometimes users would do the same search for several times, thus, storing the search history is useful. This is not realized by VSCode so it would be a good highlighting point in the future. -5. High-light while you type. Emphasizing all the other matches in the buffer with an outline or selection with another color. This provides a clearer view of searched text. But we need to change the search and selection algorithm, so we put it in the future phase. +4. Search history. Sometimes users would do the same search for several times, thus, storing the search history is useful. This is not realized by VSCode so it would be a good highlighting point in the future. +5. High-light while you type. Emphasizing all the other matches in the buffer with an outline or selection with another color. This provides a clearer view of searched text. But we need to change the search and selection algorithm, so we put it in the future phase. 6. Add size handle. Some text editors let the user resize the search box, and there is a size handle on the left side of the search box. This helps user when they search for long text. If the community desires it we may add a similar feature. This open issue tracks the phase features of Search: https://github.com/microsoft/terminal/issues/3920 diff --git a/doc/specs/drafts/#2634 - Broadcast Input/#2634 - Broadcast Input.md b/doc/specs/drafts/#2634 - Broadcast Input/#2634 - Broadcast Input.md index 01689b8f430..c201c0bc33a 100644 --- a/doc/specs/drafts/#2634 - Broadcast Input/#2634 - Broadcast Input.md +++ b/doc/specs/drafts/#2634 - Broadcast Input/#2634 - Broadcast Input.md @@ -346,7 +346,7 @@ asked for these features, then it's inevitable that our users will too 😉 panes, not just key strokes. But which actions would those be? Moving the selection anchors? Copy doesn't really make sense. Paste _does_ though. Maybe the open find dialog / next&prev search match actions? - - This probably would require it's own spec. + - This probably would require its own spec. * [iterm2#6007] - Different stripe color for different broadcast modes - Have one color to indicate when broadcasting in `global` scope, another in `tab` scope, a third in `pane` scope. diff --git a/doc/specs/drafts/#3327 - Application Theming/#10509 - Mica.md b/doc/specs/drafts/#3327 - Application Theming/#10509 - Mica.md index d27092b21bf..18e959e8121 100644 --- a/doc/specs/drafts/#3327 - Application Theming/#10509 - Mica.md +++ b/doc/specs/drafts/#3327 - Application Theming/#10509 - Mica.md @@ -11,7 +11,7 @@ issue id: #10509 ## Abstract This document serves as a companion doc to the [Theming Spec], rather than a -spec on it's own. The context of broader application-level theming support is +spec on its own. The context of broader application-level theming support is necessary to understand the big picture of the designs in this discussion. diff --git a/doc/specs/drafts/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md b/doc/specs/drafts/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md index 5e66e762c87..4073cf45c23 100644 --- a/doc/specs/drafts/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md +++ b/doc/specs/drafts/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md @@ -264,12 +264,12 @@ whatever client application (`cmd`, `powershell`, `bash`, `vim`) that is connected to it. WT doesn't know when the user is typing in commands to the shell, or if the user is just typing in text in `emacs` or something. There's no way for the terminal to know that. It's _typically_ the client application's -responsibility to save it's own command history. `bash` and `powershell` both do +responsibility to save its own command history. `bash` and `powershell` both do a pretty good job of saving this to another file to restore across sessions, while `cmd.exe` doesn't. Windows is a messy world and this model gets a little tricky here. `cmd.exe` -isn't actually managing it's own command history _at all_. `conhost` is doing +isn't actually managing its own command history _at all_. `conhost` is doing that work on behalf of the client applications. Some long time ago someone thought it would be a good idea to have the `readline` functionality baked directly into the console host. Whether that was a good idea or not remains to diff --git a/doc/specs/drafts/#997 Non-Terminal-Panes.md b/doc/specs/drafts/#997 Non-Terminal-Panes.md index 279f451cbc2..7dc2060d289 100644 --- a/doc/specs/drafts/#997 Non-Terminal-Panes.md +++ b/doc/specs/drafts/#997 Non-Terminal-Panes.md @@ -70,7 +70,7 @@ With more possible controls in a pane than just a terminal, it's possible that crashes in those controls could impact the entire Terminal app's reliability. This would largely be out of our control, as we only author the TermControl. -We may want to consider hosting each pane in it's own process, similar to how +We may want to consider hosting each pane in its own process, similar to how moder browsers will host each tab in its own process, to help isolate tabs. This is a bigger discussion than the feature at hand, however. diff --git a/doc/specs/drafts/576-ProfilesJumplistSpec.md b/doc/specs/drafts/576-ProfilesJumplistSpec.md index 2fecf1cb7ad..8cea8dcb844 100644 --- a/doc/specs/drafts/576-ProfilesJumplistSpec.md +++ b/doc/specs/drafts/576-ProfilesJumplistSpec.md @@ -33,7 +33,8 @@ The jumplist has to be created/modified during the life-cycle of the application UWP provides an API to access to the jumplist through the [Windows.UI.StartScreen.JumpList class](https://docs.microsoft.com/en-us/uwp/api/windows.ui.startscreen.jumplist), however from previous attempts [1], the api does not work for the project architecture. Instead, we'll use the COM interface [ICustomDestinationList](https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nn-shobjidl_core-icustomdestinationlist) [2] directly to create the jumplist. Since we are using Win32 apis, the work should be done in the `WindowsTerminal` project. -Using `ICustomDestinationList` is straightforward with a few additions discussed in this section [below](#Implementation-notes). Resources for using the jumplist can be found [here](https://msdn.microsoft.com/en-us/library/windows/desktop/gg281362.aspx) and [here](https://www.codeproject.com/Articles/36561/Windows-7-Goodies-in-C-Jump-Lists). +Using `ICustomDestinationList` is straightforward with a few additions discussed in this section [below](#Implementation-notes). See [Adding Support for Windows 7 Jump Lists & Taskbar Tabs](https://msdn.microsoft.com/en-us/library/windows/desktop/gg281362.aspx) and [Windows 7 Goodies in C++: Jump Lists](https://www.codeproject.com/Articles/36561/Windows-7-Goodies-in-C-Jump-Lists). + The basic overview: 1. Get an instance of the `ICustomDestinationList` COM object diff --git a/oss/chromium/base/numerics/checked_math.h b/oss/chromium/base/numerics/checked_math.h index ede3344f82d..50be2f0ea2d 100644 --- a/oss/chromium/base/numerics/checked_math.h +++ b/oss/chromium/base/numerics/checked_math.h @@ -110,7 +110,7 @@ class CheckedNumeric { } // This friend method is available solely for providing more detailed logging - // in the the tests. Do not implement it in production code, because the + // in the tests. Do not implement it in production code, because the // underlying values may change at any time. template friend U GetNumericValueForTest(const CheckedNumeric& src); diff --git a/scratch/ScratchIslandApp/SampleApp/pch.h b/scratch/ScratchIslandApp/SampleApp/pch.h index dbb486ab751..7033608b26a 100644 --- a/scratch/ScratchIslandApp/SampleApp/pch.h +++ b/scratch/ScratchIslandApp/SampleApp/pch.h @@ -25,7 +25,7 @@ #include -#include +#include #include diff --git a/scratch/ScratchIslandApp/WindowExe/pch.h b/scratch/ScratchIslandApp/WindowExe/pch.h index de08907f83a..5adda512e07 100644 --- a/scratch/ScratchIslandApp/WindowExe/pch.h +++ b/scratch/ScratchIslandApp/WindowExe/pch.h @@ -23,7 +23,7 @@ Module Name: #define NOHELP #define NOCOMM -#include +#include #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) diff --git a/src/cascadia/LocalTests_TerminalApp/FilteredCommandTests.cpp b/src/cascadia/LocalTests_TerminalApp/FilteredCommandTests.cpp index 7a92e2c023c..e96675fd329 100644 --- a/src/cascadia/LocalTests_TerminalApp/FilteredCommandTests.cpp +++ b/src/cascadia/LocalTests_TerminalApp/FilteredCommandTests.cpp @@ -50,7 +50,7 @@ namespace TerminalAppLocalTests VERIFY_IS_FALSE(segments.GetAt(0).IsHighlighted()); } { - Log::Comment(L"Testing command name segmentation with filter equals to the string"); + Log::Comment(L"Testing command name segmentation with filter equal to the string"); const auto filteredCommand = winrt::make_self(paletteItem); filteredCommand->_Filter = L"AAAAAABBBBBBCCC"; auto segments = filteredCommand->_computeHighlightedName().Segments(); @@ -129,7 +129,7 @@ namespace TerminalAppLocalTests VERIFY_ARE_EQUAL(weight, 0); } { - Log::Comment(L"Testing weight of command with filter equals to the string"); + Log::Comment(L"Testing weight of command with filter equal to the string"); const auto filteredCommand = winrt::make_self(paletteItem); filteredCommand->_Filter = L"AAAAAABBBBBBCCC"; filteredCommand->_HighlightedName = filteredCommand->_computeHighlightedName(); diff --git a/src/cascadia/LocalTests_TerminalApp/pch.h b/src/cascadia/LocalTests_TerminalApp/pch.h index b2cf0cae39a..4c5e0ed81eb 100644 --- a/src/cascadia/LocalTests_TerminalApp/pch.h +++ b/src/cascadia/LocalTests_TerminalApp/pch.h @@ -28,7 +28,7 @@ Author(s): #endif #include -#include +#include #include #include diff --git a/src/cascadia/Remoting/pch.h b/src/cascadia/Remoting/pch.h index 4c4bcb1ac96..cde15a85895 100644 --- a/src/cascadia/Remoting/pch.h +++ b/src/cascadia/Remoting/pch.h @@ -15,7 +15,7 @@ #define NOHELP #define NOCOMM -#include +#include #include // Manually include til after we include Windows.Foundation to give it winrt superpowers diff --git a/src/cascadia/TerminalAzBridge/pch.h b/src/cascadia/TerminalAzBridge/pch.h index e07f7c24ed7..5882c56b92c 100644 --- a/src/cascadia/TerminalAzBridge/pch.h +++ b/src/cascadia/TerminalAzBridge/pch.h @@ -22,7 +22,7 @@ Module Name: #define NOMCX #define NOHELP #define NOCOMM -#include +#include #include diff --git a/src/cascadia/TerminalConnection/pch.h b/src/cascadia/TerminalConnection/pch.h index afaa1dd5ca8..3ad67840cfc 100644 --- a/src/cascadia/TerminalConnection/pch.h +++ b/src/cascadia/TerminalConnection/pch.h @@ -18,7 +18,7 @@ #include // Must be included before any WinRT headers. -#include +#include #include #include diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp index d7beb39a504..2c7cbf3e5a2 100644 --- a/src/cascadia/TerminalControl/ControlCore.cpp +++ b/src/cascadia/TerminalControl/ControlCore.cpp @@ -1703,7 +1703,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation // Arguments: // - text: the text to search // - goForward: boolean that represents if the current search direction is forward - // - caseSensitive: boolean that represents if the current search is case sensitive + // - caseSensitive: boolean that represents if the current search is case-sensitive // - resetOnly: If true, only Reset() will be called, if anything. FindNext() will never be called. // Return Value: // - diff --git a/src/cascadia/TerminalControl/SearchBoxControl.cpp b/src/cascadia/TerminalControl/SearchBoxControl.cpp index 7cedfb6699e..6b2c064c0e5 100644 --- a/src/cascadia/TerminalControl/SearchBoxControl.cpp +++ b/src/cascadia/TerminalControl/SearchBoxControl.cpp @@ -225,11 +225,11 @@ namespace winrt::Microsoft::Terminal::Control::implementation } // Method Description: - // - Check if the current search is case sensitive + // - Check if the current search is case-sensitive // Arguments: // - // Return Value: - // - bool: whether the current search is case sensitive (case button is checked ) + // - bool: whether the current search is case-sensitive (case button is checked ) // or not bool SearchBoxControl::CaseSensitive() { diff --git a/src/cascadia/TerminalControl/TermControl.cpp b/src/cascadia/TerminalControl/TermControl.cpp index bc005ba5c15..f2f30f2f608 100644 --- a/src/cascadia/TerminalControl/TermControl.cpp +++ b/src/cascadia/TerminalControl/TermControl.cpp @@ -691,7 +691,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation // Arguments: // - text: the text to search // - goForward: boolean that represents if the current search direction is forward - // - caseSensitive: boolean that represents if the current search is case sensitive + // - caseSensitive: boolean that represents if the current search is case-sensitive // Return Value: // - void TermControl::_Search(const winrt::hstring& text, @@ -711,7 +711,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation // Arguments: // - text: the text to search // - goForward: indicates whether the search should be performed forward (if set to true) or backward - // - caseSensitive: boolean that represents if the current search is case sensitive + // - caseSensitive: boolean that represents if the current search is case-sensitive // Return Value: // - void TermControl::_SearchChanged(const winrt::hstring& text, @@ -4186,7 +4186,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation SelectionContextMenu().Hide(); // CreateSearchBoxControl will actually create the search box and - // pre-populate the box with the currently selected text. + // prepopulate the box with the currently selected text. CreateSearchBoxControl(); } diff --git a/src/cascadia/TerminalControl/pch.h b/src/cascadia/TerminalControl/pch.h index 8658e105d16..0fc3aa21604 100644 --- a/src/cascadia/TerminalControl/pch.h +++ b/src/cascadia/TerminalControl/pch.h @@ -25,7 +25,7 @@ #include -#include +#include #include #include #include diff --git a/src/cascadia/TerminalSettingsEditor/ActionsViewModel.cpp b/src/cascadia/TerminalSettingsEditor/ActionsViewModel.cpp index 70e8f3891f0..2c1860d1f70 100644 --- a/src/cascadia/TerminalSettingsEditor/ActionsViewModel.cpp +++ b/src/cascadia/TerminalSettingsEditor/ActionsViewModel.cpp @@ -72,7 +72,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation if (_IsInEditMode) { // if we're in edit mode, - // - pre-populate the text box with the current keys + // - prepopulate the text box with the current keys // - reset the combo box with the current action ProposedKeys(_CurrentKeys); ProposedAction(box_value(_CurrentAction)); diff --git a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw index 662fd27eb5b..b4b298559ab 100644 --- a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw +++ b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw @@ -1766,7 +1766,7 @@ Create Appearance - Name for a control which creates an the unfocused appearance settings for this profile. Text must match that of "Profile_AddAppearanceButton.Text". + Name for a control which creates the unfocused appearance settings for this profile. Text must match that of "Profile_AddAppearanceButton.Text". Create an unfocused appearance for this profile. This will be the appearance of the profile when it is inactive. @@ -1774,7 +1774,7 @@ Delete Appearance - Name for a control which deletes an the unfocused appearance settings for this profile. + Name for a control which deletes the unfocused appearance settings for this profile. Delete the unfocused appearance for this profile. diff --git a/src/cascadia/TerminalSettingsModel/DynamicProfileUtils.cpp b/src/cascadia/TerminalSettingsModel/DynamicProfileUtils.cpp index 0df405a5a14..737e8c2bf53 100644 --- a/src/cascadia/TerminalSettingsModel/DynamicProfileUtils.cpp +++ b/src/cascadia/TerminalSettingsModel/DynamicProfileUtils.cpp @@ -9,7 +9,7 @@ static constexpr std::wstring_view PACKAGED_PROFILE_ICON_PATH{ L"ms-appx:///Prof static constexpr std::wstring_view PACKAGED_PROFILE_ICON_EXTENSION{ L".png" }; // Method Description: -// - Helper function for creating a skeleton default profile with a pre-populated +// - Helper function for creating a skeleton default profile with a prepopulated // guid and name. // Arguments: // - name: the name of the new profile. diff --git a/src/cascadia/UnitTests_Control/pch.h b/src/cascadia/UnitTests_Control/pch.h index 4833c11df00..ebe5f60b26b 100644 --- a/src/cascadia/UnitTests_Control/pch.h +++ b/src/cascadia/UnitTests_Control/pch.h @@ -13,7 +13,7 @@ Licensed under the MIT license. #define NOHELP #define NOCOMM -#include +#include #include // Manually include til after we include Windows.Foundation to give it winrt superpowers @@ -29,7 +29,7 @@ Licensed under the MIT license. #endif #include -#include +#include #include #include diff --git a/src/cascadia/UnitTests_Remoting/pch.h b/src/cascadia/UnitTests_Remoting/pch.h index 523f6305c3b..790b55e314f 100644 --- a/src/cascadia/UnitTests_Remoting/pch.h +++ b/src/cascadia/UnitTests_Remoting/pch.h @@ -13,7 +13,7 @@ Licensed under the MIT license. #define NOHELP #define NOCOMM -#include +#include #include // Manually include til after we include Windows.Foundation to give it winrt superpowers @@ -29,7 +29,7 @@ Licensed under the MIT license. #endif #include -#include +#include #include #include diff --git a/src/cascadia/UnitTests_SettingsModel/TerminalSettingsTests.cpp b/src/cascadia/UnitTests_SettingsModel/TerminalSettingsTests.cpp index 6733603c06e..e50ae9c8315 100644 --- a/src/cascadia/UnitTests_SettingsModel/TerminalSettingsTests.cpp +++ b/src/cascadia/UnitTests_SettingsModel/TerminalSettingsTests.cpp @@ -217,7 +217,7 @@ namespace SettingsModelUnitTests static constexpr std::array testCases{ // Base test. TestCase{ L"cmd.exe", 0 }, - // SearchPathW() normalization + case insensitive matching. + // SearchPathW() normalization + case-insensitive matching. TestCase{ L"cmd.exe /a", 1 }, TestCase{ L"%SystemRoot%\\System32\\cmd.exe /A", 1 }, // Test that we don't pick the equally long but different "/A /B" variant. diff --git a/src/cascadia/UnitTests_TerminalCore/pch.h b/src/cascadia/UnitTests_TerminalCore/pch.h index f92891dd1dc..c00178443cb 100644 --- a/src/cascadia/UnitTests_TerminalCore/pch.h +++ b/src/cascadia/UnitTests_TerminalCore/pch.h @@ -48,7 +48,7 @@ Author(s): #endif #include -#include +#include #include #include diff --git a/src/cascadia/WinRTUtils/pch.h b/src/cascadia/WinRTUtils/pch.h index 6c51b929601..73e3f4b7204 100644 --- a/src/cascadia/WinRTUtils/pch.h +++ b/src/cascadia/WinRTUtils/pch.h @@ -23,7 +23,7 @@ #include -#include +#include #include diff --git a/src/cascadia/WindowsTerminal/AppHost.cpp b/src/cascadia/WindowsTerminal/AppHost.cpp index 42c033f3b0c..a689869b82f 100644 --- a/src/cascadia/WindowsTerminal/AppHost.cpp +++ b/src/cascadia/WindowsTerminal/AppHost.cpp @@ -528,7 +528,7 @@ void AppHost::AppTitleChanged(const winrt::Windows::Foundation::IInspectable& /* _windowManager.UpdateActiveTabTitle(newTitle, _peasant); } -// The terminal page is responsible for persisting it's own state, but it does +// The terminal page is responsible for persisting its own state, but it does // need to ask us where exactly on the screen the window is. void AppHost::_HandleRequestLaunchPosition(const winrt::Windows::Foundation::IInspectable& /*sender*/, winrt::TerminalApp::LaunchPositionRequest args) diff --git a/src/cascadia/WindowsTerminal/pch.h b/src/cascadia/WindowsTerminal/pch.h index fae9d5fb50f..c847e7f9c27 100644 --- a/src/cascadia/WindowsTerminal/pch.h +++ b/src/cascadia/WindowsTerminal/pch.h @@ -23,7 +23,7 @@ Module Name: #define NOHELP #define NOCOMM -#include +#include #include #include diff --git a/src/cascadia/ut_app/precomp.h b/src/cascadia/ut_app/precomp.h index 2be253f695c..f1fc47fdffd 100644 --- a/src/cascadia/ut_app/precomp.h +++ b/src/cascadia/ut_app/precomp.h @@ -38,7 +38,7 @@ Author(s): // need to be added to the LocalTests. // These however are okay, for some _basic_ winrt things: -#include +#include #include #include #include diff --git a/src/common.build.pre.props b/src/common.build.pre.props index c927ac41c93..4e2346eb05b 100644 --- a/src/common.build.pre.props +++ b/src/common.build.pre.props @@ -275,7 +275,7 @@ windows true - + arm64 --x-feature=terminal diff --git a/src/host/alias.cpp b/src/host/alias.cpp index a658e2218d6..69be175e437 100644 --- a/src/host/alias.cpp +++ b/src/host/alias.cpp @@ -244,7 +244,7 @@ std::unordered_mapfun one | test nine < two.txt%all$$the$$things one two three four five six seven eight nine ten eleven twelve%at>>once.log%" diff --git a/src/host/utils.cpp b/src/host/utils.cpp index 0a3162e1f57..d5ac1fc90d4 100644 --- a/src/host/utils.cpp +++ b/src/host/utils.cpp @@ -90,7 +90,7 @@ void _LoadString(const UINT id, std::wstring& out) // - wLangId - Language ID of resources that we should retrieve. UINT s_LoadStringEx(_In_ HINSTANCE hModule, _In_ UINT wID, _Out_writes_(cchBufferMax) LPWSTR lpBuffer, _In_ UINT cchBufferMax, _In_ WORD wLangId) { - // Make sure the parms are valid. + // Make sure the params are valid. if (lpBuffer == nullptr) { return 0; diff --git a/src/inc/til/color.h b/src/inc/til/color.h index 85ec527d023..e1c0039f504 100644 --- a/src/inc/til/color.h +++ b/src/inc/til/color.h @@ -78,7 +78,7 @@ namespace til // Terminal Implementation Library. Also: "Today I Learned" #endif // Method Description: - // - Converting constructor for any other color structure type containing integral R, G, B, A (case sensitive.) + // - Converting constructor for any other color structure type containing integral R, G, B, A (case-sensitive.) // Notes: // - This and all below conversions make use of std::enable_if and a default parameter to disambiguate themselves. // enable_if will result in an if the constraint within it is not met, which will make this @@ -93,7 +93,7 @@ namespace til // Terminal Implementation Library. Also: "Today I Learned" } // Method Description: - // - Converting constructor for any other color structure type containing integral r, g, b, a (case sensitive.) + // - Converting constructor for any other color structure type containing integral r, g, b, a (case-sensitive.) template constexpr color(const TOther& other, std::enable_if_t().r)> && std::is_integral_v().a)>, int> /*sentinel*/ = 0) : r{ static_cast(other.r) }, @@ -104,7 +104,7 @@ namespace til // Terminal Implementation Library. Also: "Today I Learned" } // Method Description: - // - Converting constructor for any other color structure type containing floating-point R, G, B, A (case sensitive.) + // - Converting constructor for any other color structure type containing floating-point R, G, B, A (case-sensitive.) template constexpr color(const TOther& other, std::enable_if_t().R)> && std::is_floating_point_v().A)>, float> /*sentinel*/ = 1.0f) : r{ static_cast(other.R * 255.0f) }, @@ -115,7 +115,7 @@ namespace til // Terminal Implementation Library. Also: "Today I Learned" } // Method Description: - // - Converting constructor for any other color structure type containing floating-point r, g, b, a (case sensitive.) + // - Converting constructor for any other color structure type containing floating-point r, g, b, a (case-sensitive.) template constexpr color(const TOther& other, std::enable_if_t().r)> && std::is_floating_point_v().a)>, float> /*sentinel*/ = 1.0f) : r{ static_cast(other.r * 255.0f) }, diff --git a/src/renderer/wddmcon/precomp.h b/src/renderer/wddmcon/precomp.h index 7484cce9b3e..94f98733987 100644 --- a/src/renderer/wddmcon/precomp.h +++ b/src/renderer/wddmcon/precomp.h @@ -19,7 +19,7 @@ #include #else #include -#include +#include #endif #include diff --git a/src/terminal/parser/OutputStateMachineEngine.cpp b/src/terminal/parser/OutputStateMachineEngine.cpp index 7f9563e3635..c8a1367a260 100644 --- a/src/terminal/parser/OutputStateMachineEngine.cpp +++ b/src/terminal/parser/OutputStateMachineEngine.cpp @@ -994,7 +994,7 @@ bool OutputStateMachineEngine::_ParseHyperlink(const std::wstring_view string, // - OSC 10, 11, 12 ; spec ST // spec: The colors are specified by name or RGB specification as per XParseColor // -// It's possible to have multiple "spec", which by design equals to a series of OSC command +// It's possible to have multiple "spec", which by design equals a series of OSC command // with accumulated Ps. For example "OSC 10;color1;color2" is effectively an "OSC 10;color1" // and an "OSC 11;color2". // diff --git a/src/types/utils.cpp b/src/types/utils.cpp index 66c98a728da..4ca6a465563 100644 --- a/src/types/utils.cpp +++ b/src/types/utils.cpp @@ -194,7 +194,7 @@ try { auto prefix = std::wstring(string.substr(0, 4)); - // The "rgb:" indicator should be case insensitive. To prevent possible issues under + // The "rgb:" indicator should be case-insensitive. To prevent possible issues under // different locales, transform only ASCII range latin characters. std::transform(prefix.begin(), prefix.end(), prefix.begin(), [](const auto x) { return x >= L'A' && x <= L'Z' ? static_cast(std::towlower(x)) : x; diff --git a/src/types/viewport.cpp b/src/types/viewport.cpp index 018212c2165..30c5307dd14 100644 --- a/src/types/viewport.cpp +++ b/src/types/viewport.cpp @@ -466,7 +466,7 @@ Viewport Viewport::ToOrigin() const noexcept // Arguments: // - other: the viewport to convert to this coordinate space // Return Value: -// - the input viewport in a the coordinate space with origin at (this.top, this.left) +// - the input viewport in the coordinate space with origin at (this.top, this.left) [[nodiscard]] Viewport Viewport::ConvertToOrigin(const Viewport& other) const noexcept { auto returnVal = other; @@ -483,7 +483,7 @@ Viewport Viewport::ToOrigin() const noexcept // Arguments: // - other: the viewport to convert out of this coordinate space // Return Value: -// - the input viewport in a the coordinate space with origin at (0, 0) +// - the input viewport in the coordinate space with origin at (0, 0) [[nodiscard]] Viewport Viewport::ConvertFromOrigin(const Viewport& other) const noexcept { auto returnVal = other; diff --git a/tools/Generate-CodepointWidthsFromUCD.ps1 b/tools/Generate-CodepointWidthsFromUCD.ps1 index beee858abc6..6998f914f63 100644 --- a/tools/Generate-CodepointWidthsFromUCD.ps1 +++ b/tools/Generate-CodepointWidthsFromUCD.ps1 @@ -5,7 +5,7 @@ # (we use the null coalescing operator) ################################################################################ -# This script generates the an array suitable for replacing the body of +# This script generates an array suitable for replacing the body of # src/types/CodepointWidthDetector.cpp from a Unicode UCD XML document[1] # compliant with UAX#42[2]. # diff --git a/tools/TestTableWriter/GenerateTests.ps1 b/tools/TestTableWriter/GenerateTests.ps1 index d0c674d628d..95006d6c189 100644 --- a/tools/TestTableWriter/GenerateTests.ps1 +++ b/tools/TestTableWriter/GenerateTests.ps1 @@ -2,7 +2,7 @@ # Licensed under the MIT license. ################################################################################ -# This script generates the an array of UiaTextRange tests suitable for replacing the body of +# This script generates an array of UiaTextRange tests suitable for replacing the body of # src\interactivity\win32\ut_interactivity_win32\UiaTextRangeTests.cpp TEST_METHOD(GeneratedMovementTests) # # See tools\TestTableWriter\README.md for more details on how to use this script.