Update to check-spelling v0.0.21 (#14455)

Upgrades check-spelling to v0.0.21

The command to apply changes should now work on Windows (it requires
Perl, but I believe that's more or less present most of the time, and it
should walk you through the rest of the required tools).

There are a bunch of new features, the most important here are probably
being able to update the metadata from Windows. (If it doesn't work,
please @ me).

Also, candidate.patterns will automatically suggest patterns. You can
see them in patterns.txt, e.g.:

```
# Automatically suggested patterns
# hit-count: 3831 file-count: 582
# IServiceProvider
\bI(?=(?:[A-Z][a-z]{2,})+\b)
```

The metadata bits (the hit count/file count) don't have to be retained
(I hope they'll be useful in deciding whether/or not to add a pattern,
i.e. "how applicable is it?"), the comment hinting at what the pattern
does is probably worth retaining.

We've been using more or less this version for a while internally
(including talk-to-bot, and, I do have a pattern that could be used to
let people use that in forks, but, I'm going to skip that for now).

This weekend, I did some cleanup for `act` (to run check-spelling
locally), and some minor polish.

You can see the runs I made in
https://github.com/check-spelling/terminal/actions
This commit is contained in:
Josh Soref 2022-11-28 14:35:07 -05:00 committed by GitHub
parent 8f346a7158
commit a7ab17571b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 872 additions and 708 deletions

View File

@ -6,6 +6,7 @@ File | Purpose | Format | Info
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) [excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
[patterns/*.txt](patterns/) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) [patterns/*.txt](patterns/) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) [line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[expect/*.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) [expect/*.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)

View File

@ -21,7 +21,7 @@ See the `README.md` in each directory for more information.
:microscope: You can test your commits **without** *appending* to a PR by creating a new branch with that extra change and pushing it to your fork. The [check-spelling](https://github.com/marketplace/actions/check-spelling) action will run in response to your **push** -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink: :microscope: You can test your commits **without** *appending* to a PR by creating a new branch with that extra change and pushing it to your fork. The [check-spelling](https://github.com/marketplace/actions/check-spelling) action will run in response to your **push** -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink:
<details><summary>:clamp: If the flagged items are false positives</summary> <details><summary>If the flagged items are :exploding_head: false positives</summary>
If items relate to a ... If items relate to a ...
* binary file (or some other file you wouldn't want to check at all). * binary file (or some other file you wouldn't want to check at all).

View File

@ -1,7 +1,7 @@
admins admins
allcolors allcolors
apc
Apc Apc
apc
breadcrumb breadcrumb
breadcrumbs breadcrumbs
bsd bsd
@ -14,8 +14,8 @@ CMMI
copyable copyable
cybersecurity cybersecurity
dalet dalet
dcs
Dcs Dcs
dcs
dialytika dialytika
dje dje
downside downside
@ -34,10 +34,12 @@ gantt
gcc gcc
geeksforgeeks geeksforgeeks
ghe ghe
github
gje gje
godbolt godbolt
hostname hostname
hostnames hostnames
https
hyperlink hyperlink
hyperlinking hyperlinking
hyperlinks hyperlinks
@ -82,6 +84,7 @@ runtimes
shcha shcha
slnt slnt
Sos Sos
ssh
timeline timeline
timelines timelines
timestamped timestamped
@ -90,6 +93,7 @@ tokenizes
tonos tonos
toolset toolset
tshe tshe
ubuntu
uiatextrange uiatextrange
UIs UIs
und und

View File

@ -0,0 +1,523 @@
# marker to ignore all code on line
^.*/\* #no-spell-check-line \*/.*$
# marker for ignoring a comment to the end of the line
// #no-spell-check.*$
# patch hunk comments
^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
# git index header
index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
# cid urls
(['"])cid:.*?\g{-1}
# data url in parens
\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
# 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*
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# magnet urls
magnet:[?=:\w]+
# magnet urls
"magnet:[^"]+"
# obs:
"obs:[^"]*"
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
# In this examples content, I'm using a number of different ways to match things to show various approaches
# asciinema
\basciinema\.org/a/[0-9a-zA-Z]+
# apple
\bdeveloper\.apple\.com/[-\w?=/]+
# Apple music
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
# appveyor api
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
# appveyor project
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
# Amazon
# Amazon
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
# AWS S3
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
# AWS execute-api
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
# AWS ELB
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
# AWS SNS
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
# AWS VPC
vpc-\w+
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
# YouTube url
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
# YouTube music
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
# YouTube tag
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
# YouTube image
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
# Google Accounts
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
# Google Analytics
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
# Google APIs
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
# Google Storage
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
# Google Calendar
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
\w+\@group\.calendar\.google\.com\b
# Google DataStudio
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
# The leading `/` here is as opposed to the `\b` above
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
# Google Docs
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
# Google Drive
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
# Google Groups
\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
# Google Maps
\bmaps\.google\.com/maps\?[\w&;=]*
# Google themes
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
# Google CDN
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
# Goo.gl
/goo\.gl/[a-zA-Z0-9]+
# Google Chrome Store
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
# Google Books
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
# Google Fonts
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
# Google Forms
\bforms\.gle/\w+
# Google Scholar
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
# Google Colab Research Drive
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
# GitHub SHAs (api)
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
# GitHub SHAs (markdown)
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
# GitHub SHAs
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
# GitHub wiki
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
# githubusercontent
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
# githubassets
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
# gist github
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
# git.io
\bgit\.io/[0-9a-zA-Z]+
# GitHub JSON
"node_id": "[-a-zA-Z=;:/0-9+]*"
# Contributor
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
# GHSA
GHSA(?:-[0-9a-z]{4}){3}
# GitLab commit
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
# GitLab merge requests
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
# GitLab uploads
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
# GitLab commits
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
# binanace
accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
# bitbucket diff
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
# bitbucket repositories commits
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
# bitbucket commits
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
# bit.ly
\bbit\.ly/\w+
# bitrise
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
# bootstrapcdn.com
\bbootstrapcdn\.com/[-./\w]+
# cdn.cloudflare.com
\bcdnjs\.cloudflare\.com/[./\w]+
# circleci
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
# gitter
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
# gravatar
\bgravatar\.com/avatar/[0-9a-f]+
# ibm
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
# imgur
\bimgur\.com/[^.]+
# Internet Archive
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
# discord
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
# Disqus
\bdisqus\.com/[-\w/%.()!?&=_]*
# medium link
\blink\.medium\.com/[a-zA-Z0-9]+
# medium
\bmedium\.com/\@?[^/\s"]+/[-\w]+
# microsoft
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
# powerbi
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
# vs devops
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
# microsoft store
\bmicrosoft\.com/store/apps/\w+
# mvnrepository.com
\bmvnrepository\.com/[-0-9a-z./]+
# now.sh
/[0-9a-z-.]+\.now\.sh\b
# oracle
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
# chromatic.com
/\S+.chromatic.com\S*[")]
# codacy
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
# compai
\bcompai\.pub/v1/png/[0-9a-f]+
# mailgun api
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
# mailgun
\b[0-9a-z]+.mailgun.org
# /message-id/
/message-id/[-\w@./%]+
# Reddit
\breddit\.com/r/[/\w_]*
# requestb.in
\brequestb\.in/[0-9a-z]+
# sched
\b[a-z0-9]+\.sched\.com\b
# Slack url
slack://[a-zA-Z0-9?&=]+
# Slack
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
# Slack edge
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
# Slack images
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
# shields.io
\bshields\.io/[-\w/%?=&.:+;,]*
# stackexchange -- https://stackexchange.com/feeds/sites
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
# Sentry
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
# Twitter markdown
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
# Twitter hashtag
\btwitter\.com/hashtag/[\w?_=&]*
# Twitter status
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
# Twitter profile images
\btwimg\.com/profile_images/[_\w./]*
# Twitter media
\btwimg\.com/media/[-_\w./?=]*
# Twitter link shortened
\bt\.co/\w+
# facebook
\bfburl\.com/[0-9a-z_]+
# facebook CDN
\bfbcdn\.net/[\w/.,]*
# facebook watch
\bfb\.watch/[0-9A-Za-z]+
# dropbox
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
# ipfs protocol
ipfs://[0-9a-z]*
# ipfs url
/ipfs/[0-9a-z]*
# w3
\bw3\.org/[-0-9a-zA-Z/#.]+
# loom
\bloom\.com/embed/[0-9a-f]+
# regex101
\bregex101\.com/r/[^/\s"]+/\d+
# figma
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
# freecodecamp.org
\bfreecodecamp\.org/[-\w/.]+
# image.tmdb.org
\bimage\.tmdb\.org/[/\w.]+
# mermaid
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
# Wikipedia
\ben\.wikipedia\.org/wiki/[-\w%.#]+
# gitweb
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
# HyperKitty lists
/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
# lists
/thread\.html/[^"\s]+
# list-management
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
# kubectl.kubernetes.io/last-applied-configuration
"kubectl.kubernetes.io/last-applied-configuration": ".*"
# pgp
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
# Spotify
\bopen\.spotify\.com/embed/playlist/\w+
# Mastodon
\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
# scastie
\bscastie\.scala-lang\.org/[^/]+/\w+
# images.unsplash.com
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
# pastebin
\bpastebin\.com/[\w/]+
# heroku
\b\w+\.heroku\.com/source/archive/\w+
# quip
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
# badgen.net
\bbadgen\.net/badge/[^")\]'\s]+
# statuspage.io
\w+\.statuspage\.io\b
# media.giphy.com
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
# tinyurl
\btinyurl\.com/\w+
# getopts
\bgetopts\s+(?:"[^"]+"|'[^']+')
# ANSI color codes
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
# URL escaped characters
\%[0-9A-F][A-F]
# IPv6
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
# c99 hex digits (not the full format, just one I've seen)
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
# Punycode
\bxn--[-0-9a-z]+
# sha
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
# sha-... -- uses a fancy capture
(['"]|&quot;)[0-9a-f]{40,}\g{-1}
# hex runs
\b[0-9a-fA-F]{16,}\b
# hex in url queries
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
# ssh
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
# PGP
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
# GPG keys
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
# Well known gpg keys
.well-known/openpgpkey/[\w./]+
# 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}|u\d+)\b
# integrity
integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
# https://www.gnu.org/software/groff/manual/groff.html
# man troff content
\\f[BCIPR]
# '
\\\(aq
# .desktop mime types
^MimeTypes?=.*$
# .desktop localized entries
^[A-Z][a-z]+\[[a-z]+\]=.*$
# Localized .desktop content
Name\[[^\]]+\]=.*
# IServiceProvider
\bI(?=(?:[A-Z][a-z]{2,})+\b)
# crypt
"\$2[ayb]\$.{56}"
# scrypt / argon
\$(?:scrypt|argon\d+[di]*)\$\S+
# Input to GitHub JSON
content: "[-a-zA-Z=;:/0-9+]*="
# Python stringprefix / binaryprefix
# 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
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
# Regular expressions for (P|p)assword
\([A-Z]\|[a-z]\)[a-z]+
# JavaScript regular expressions
# javascript test regex
/.*/[gim]*\.test\(
# javascript match regex
\.match\(/[^/\s"]*/[gim]*\s*
# javascript match regex
\.match\(/\\[b].*?/[gim]*\s*\)(?:;|$)
# javascript regex
^\s*/\\[b].*/[gim]*\s*(?:\)(?:;|$)|,$)
# javascript replace regex
\.replace\(/[^/\s"]*/[gim]*\s*,
# Go regular expressions
regexp?\.MustCompile\(`[^`]*`\)
# sed regular expressions
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
# go install
go install(?:\s+[a-z]+\.[-@\w/.]+)+
# 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+
# kubectl - pods in CrashLoopBackOff
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
# kubernetes object suffix
-[0-9a-f]{10}-\w{5}\s
# posthog secrets
posthog\.init\((['"])phc_[^"',]+\g{-1},
# xcode
# xcodeproject scenes
(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}"
# xcode api botches
customObjectInstantitationMethod
# font awesome classes
\.fa-[-a-z0-9]+
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
## You could manually change `(?i)X...` to use `[Xx]...`
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
# Lorem
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
# Non-English
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
# French
# This corpus only had capital letters, but you probably want lowercase ones as well.
\b[LN]'+[a-z]{2,}\b
# latex
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
\\(?:necessary|r(?:eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
# ignore long runs of a single character:
\b([A-Za-z])\g{-1}{3,}\b
# Note that the next example is no longer necessary if you are using
# to match a string starting with a `#`, use a character-class:
[#]backwards
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# Compiler flags (Scala)
(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# Compiler flags
#(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# Compiler flags (linker)
,-B
# curl arguments
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
# set arguments
\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
# tar arguments
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
# macOS temp folders
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/

View File

@ -2,14 +2,14 @@
(?:(?i)\.png$) (?:(?i)\.png$)
(?:^|/)(?i)COPYRIGHT (?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E (?:^|/)(?i)LICEN[CS]E
(?:^|/)3rdparty/
(?:^|/)dirs$ (?:^|/)dirs$
(?:^|/)go\.mod$ (?:^|/)go\.mod$
(?:^|/)go\.sum$ (?:^|/)go\.sum$
(?:^|/)package(?:-lock|)\.json$ (?:^|/)package(?:-lock|)\.json$
(?:^|/)sources(?:|\.dep)$ (?:^|/)sources(?:|\.dep)$
(?:^|/)vendor/ (?:^|/)vendor/
ignore$ \.a$
SUMS$
\.ai$ \.ai$
\.avi$ \.avi$
\.bmp$ \.bmp$
@ -20,6 +20,8 @@ SUMS$
\.crt$ \.crt$
\.csr$ \.csr$
\.dll$ \.dll$
\.docx?$
\.drawio$
\.DS_Store$ \.DS_Store$
\.eot$ \.eot$
\.eps$ \.eps$
@ -31,6 +33,7 @@ SUMS$
\.icns$ \.icns$
\.ico$ \.ico$
\.jar$ \.jar$
\.jks$
\.jpeg$ \.jpeg$
\.jpg$ \.jpg$
\.key$ \.key$
@ -41,6 +44,7 @@ SUMS$
\.mod$ \.mod$
\.mp3$ \.mp3$
\.mp4$ \.mp4$
\.o$
\.ocf$ \.ocf$
\.otf$ \.otf$
\.pbxproj$ \.pbxproj$
@ -48,22 +52,41 @@ SUMS$
\.pem$ \.pem$
\.png$ \.png$
\.psd$ \.psd$
\.pyc$
\.runsettings$ \.runsettings$
\.s$
\.sig$ \.sig$
\.so$ \.so$
\.svg$ \.svg$
\.svgz$ \.svgz$
\.svgz?$
\.tar$ \.tar$
\.tgz$ \.tgz$
\.tiff?$
\.ttf$ \.ttf$
\.vsdx$ \.vsdx$
\.wav$ \.wav$
\.webm$
\.webp$
\.woff \.woff
\.woff2?$
\.xcf$ \.xcf$
\.xls \.xls
\.xlsx?$
\.xpm$ \.xpm$
\.yml$ \.yml$
\.zip$ \.zip$
^\.github/actions/spelling/
^\.github/fabricbot.json$
^\.gitignore$
^\Q.git-blame-ignore-revs\E$
^\Q.github/workflows/spelling.yml\E$
^\Qdoc/reference/windows-terminal-logo.ans\E$
^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$
^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$
^\Qsrc/host/ft_host/chafa.txt\E$
^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$
^\XamlStyler.json$
^build/config/ ^build/config/
^consolegit2gitfilters\.json$ ^consolegit2gitfilters\.json$
^dep/ ^dep/
@ -90,12 +113,5 @@ SUMS$
^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$ ^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$
^src/types/ut_types/UtilsTests.cpp$ ^src/types/ut_types/UtilsTests.cpp$
^tools/ReleaseEngineering/ServicingPipeline.ps1$ ^tools/ReleaseEngineering/ServicingPipeline.ps1$
^\.github/actions/spelling/ ignore$
^\.github/fabricbot.json$ SUMS$
^\.gitignore$
^\Q.github/workflows/spelling.yml\E$
^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$
^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$
^\Qsrc/host/ft_host/chafa.txt\E$
^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$
^\XamlStyler.json$

View File

@ -5,26 +5,19 @@ AAAAAABBBBBBCCC
AAAAABBBBBBCCC AAAAABBBBBBCCC
abcd abcd
abcd abcd
abcde
abcdef
ABCDEFG
ABCDEFGH
ABCDEFGHIJ ABCDEFGHIJ
abcdefghijk abcdefghijk
ABCDEFGHIJKLMNO ABCDEFGHIJKLMNO
abcdefghijklmnop abcdefghijklmnop
ABCDEFGHIJKLMNOPQRST ABCDEFGHIJKLMNOPQRST
abcdefghijklmnopqrstuvwxyz
ABCG ABCG
ABE ABE
abf abf
BBBBB BBBBB
BBBBBBBB BBBBBBBB
BBBBBBBBBBBBBBDDDD
BBBBBCCC BBBBBCCC
BBBBCCCCC BBBBCCCCC
BBGGRR BBGGRR
CCE
EFG EFG
EFGh EFGh
QQQQQQQQQQABCDEFGHIJ QQQQQQQQQQABCDEFGHIJ

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,3 @@
http
www
WCAG WCAG
winui winui
appshellintegration appshellintegration

View File

@ -1,3 +1,11 @@
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
# \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. GitHub # s.b. GitHub
\bGithub\b \bGithub\b
@ -16,6 +24,12 @@
# s.b. greater than # s.b. greater than
\bgreater then\b \bgreater then\b
# s.b. into
#\sin to\s
# s.b. opt-in
\sopt in\s
# s.b. less than # s.b. less than
\bless then\b \bless then\b
@ -27,10 +41,22 @@
\b[Nn]o[nt][- ]existent\b \b[Nn]o[nt][- ]existent\b
# s.b. preexisting # s.b. preexisting
[Pp]re-existing [Pp]re[- ]existing
# s.b. preempt
[Pp]re[- ]empt\b
# s.b. preemptively # s.b. preemptively
[Pp]re-emptively [Pp]re[- ]emptively
# s.b. reentrancy
[Rr]e[- ]entrancy
# s.b. reentrant
[Rr]e[- ]entrant
# s.b. workaround(s)
#\bwork[- ]arounds?\b
# Reject duplicate words # Reject duplicate words
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s \s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s

View File

@ -27,13 +27,68 @@ ROY\sG\.\sBIV
# Python stringprefix / binaryprefix # Python stringprefix / binaryprefix
\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)' \b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'
# Automatically suggested patterns
# hit-count: 3831 file-count: 582
# IServiceProvider
\bI(?=(?:[A-Z][a-z]{2,})+\b)
# hit-count: 71 file-count: 35
# Compiler flags
(?:^|[\t ,"'`=(])-[D](?=[A-Z]{2,}|[A-Z][a-z])
(?:^|[\t ,"'`=(])-[X](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
# hit-count: 41 file-count: 28
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# hit-count: 20 file-count: 9
# hex runs
\b[0-9a-fA-F]{16,}\b
# hit-count: 10 file-count: 7
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hit-count: 4 file-count: 4
# mailto urls
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
# hit-count: 4 file-count: 1
# ANSI color codes
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
# hit-count: 2 file-count: 1
# latex
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
# hit-count: 1 file-count: 1
# 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}|u\d+)\b
# hit-count: 1 file-count: 1
# Non-English
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
# hit-count: 1 file-count: 1
# French
# This corpus only had capital letters, but you probably want lowercase ones as well.
\b[LN]'+[a-z]{2,}\b
# acceptable duplicates # acceptable duplicates
# ls directory listings # ls directory listings
[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+ [-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+
# C/idl types + English ... # C/idl types + English ...
\s(Guid|long|LONG|that) \g{-1}\s \s(Guid|long|LONG|that) \g{-1}\s
# javadoc / .net # javadoc / .net
(?:\@(?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s (?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
# Commit message -- Signed-off-by and friends
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
# Autogenerated revert commit message
^This reverts commit [0-9a-f]{40}\.$
# vtmode # vtmode
--vtmode\s+(\w+)\s+\g{-1}\s --vtmode\s+(\w+)\s+\g{-1}\s

View File

@ -1,31 +1,12 @@
benefitting
occurences?
Sorce
^attache$ ^attache$
^attacher$ ^attacher$
^attachers$ ^attachers$
benefitting
occurences?
^dependan.* ^dependan.*
^oer$ ^oer$
^spae$ Sorce
^spae-man$ ^[Ss]pae.*
^spaebook$
^spaecraft$
^spaed$
^spaedom$
^spaeing$
^spaeings$
^spaeman$
^spaer$
^Spaerobee$
^spaes$
^spaewife$
^spaewoman$
^spaework$
^spaewright$
^untill$ ^untill$
^untilling$ ^untilling$
^wether$
^wether.* ^wether.*
^wethers$
^wetherteg$
^[Ss]pae.*

View File

@ -1,10 +1,57 @@
# spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p # spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p
name: Spell checking name: Spell checking
# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
# (in odd cases, it might actually run just to collapse a commment, but that's fairly rare)
# it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
# it needs `pull-requests: write` in order to manipulate those comments.
# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
# This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
# This job runs in response to an issue_comment and will push a new commit
# to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
# Tells the action to support and generate messages that enable it
# to make a commit to update the spelling metadata.
#
# `with.ssh_key`
# In order to trigger workflows when the commit is made, you can provide a
# secret (typically, a write-enabled github deploy key).
#
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
on: on:
pull_request_target:
push: push:
branches: ["**"] branches:
tags-ignore: ["**"] - "**"
tags-ignore:
- "**"
pull_request_target:
branches:
- "**"
tags-ignore:
- "**"
types:
- 'opened'
- 'reopened'
- 'synchronize'
issue_comment:
types:
- 'created'
jobs: jobs:
spelling: spelling:
@ -24,23 +71,64 @@ jobs:
steps: steps:
- name: check-spelling - name: check-spelling
id: spelling id: spelling
uses: check-spelling/check-spelling@v0.0.20 uses: check-spelling/check-spelling@v0.0.21
with: with:
suppress_push_for_open_pull_request: 1 suppress_push_for_open_pull_request: 1
checkout: true checkout: true
check_file_names: 1
spell_check_this: check-spelling/spell-check-this@prerelease
post_comment: 0 post_comment: 0
use_magic_file: 1
extra_dictionary_limit: 10
extra_dictionaries:
cspell:software-terms/src/software-terms.txt
cspell:python/src/python/python-lib.txt
cspell:node/node.txt
cspell:cpp/src/stdlib-c.txt
cspell:cpp/src/stdlib-cpp.txt
cspell:fullstack/fullstack.txt
cspell:filetypes/filetypes.txt
cspell:html/html.txt
cspell:cpp/src/compiler-msvc.txt
cspell:python/src/common/extra.txt
cspell:powershell/powershell.txt
cspell:aws/aws.txt
cspell:cpp/src/lang-keywords.txt
cspell:npm/npm.txt
cspell:dotnet/dotnet.txt
cspell:python/src/python/python.txt
cspell:css/css.txt
cspell:cpp/src/stdlib-cmath.txt
check_extra_dictionaries: ''
comment: comment-push:
name: Report name: Report (Push)
# If your workflow isn't running on push, you can remove this job
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: spelling needs: spelling
permissions: permissions:
contents: write contents: write
pull-requests: write if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name != 'push'
steps: steps:
- name: comment - name: comment
uses: check-spelling/check-spelling@v0.0.20 uses: check-spelling/check-spelling@v0.0.21
with: with:
checkout: true checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
comment-pr:
name: Report (PR)
# If you workflow isn't running on pull_request*, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
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.21
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }} task: ${{ needs.spelling.outputs.followup }}

View File

@ -14,16 +14,16 @@
<!-- Mandatory. Name of the NuGet package which will contain PGO databases for consumption by build system. --> <!-- Mandatory. Name of the NuGet package which will contain PGO databases for consumption by build system. -->
<PGOPackageName>Microsoft.Internal.Windows.Terminal.PGODatabase</PGOPackageName> <PGOPackageName>Microsoft.Internal.Windows.Terminal.PGODatabase</PGOPackageName>
<!-- Mandatory. Major version number of the PGO database which should match the version of the product. This can be hardcoded or obtained from other sources in build system. --> <!-- Mandatory. Major version number of the PGO database which should match the version of the product. This can be hard-coded or obtained from other sources in build system. -->
<PGOPackageVersionMajor>$(VersionMajor)</PGOPackageVersionMajor> <PGOPackageVersionMajor>$(VersionMajor)</PGOPackageVersionMajor>
<!-- Mandatory. Minor version number of the PGO database which should match the version of the product. This can be hardcoded or obtained from other sources in build system. --> <!-- Mandatory. Minor version number of the PGO database which should match the version of the product. This can be hard-coded or obtained from other sources in build system. -->
<PGOPackageVersionMinor>$(VersionMinor)</PGOPackageVersionMinor> <PGOPackageVersionMinor>$(VersionMinor)</PGOPackageVersionMinor>
<!-- Mandatory, defaults to 0. Patch version number of the PGO database which should match the version of the product. This can be hardcoded or obtained from other sources in build system. --> <!-- Mandatory, defaults to 0. Patch version number of the PGO database which should match the version of the product. This can be hard-coded or obtained from other sources in build system. -->
<PGOPackageVersionPatch>0</PGOPackageVersionPatch> <PGOPackageVersionPatch>0</PGOPackageVersionPatch>
<!-- Optional, defaults to empty. Prerelease version number of the PGO database which should match the version of the product. This can be hardcoded or obtained from other sources in build system. --> <!-- Optional, defaults to empty. Prerelease version number of the PGO database which should match the version of the product. This can be hard-coded or obtained from other sources in build system. -->
<PGOPackageVersionPrerelease></PGOPackageVersionPrerelease> <PGOPackageVersionPrerelease></PGOPackageVersionPrerelease>
<!-- Mandatory. Path to nuget.config file for the project. Path is relative to where the props file will be. --> <!-- Mandatory. Path to nuget.config file for the project. Path is relative to where the props file will be. -->

View File

@ -59,7 +59,7 @@ To modify settings specific to the current application, invoke the `Properties`
When console applications are launched, the Windows Console Host determines which settings to use by overlaying settings from the above locations. When console applications are launched, the Windows Console Host determines which settings to use by overlaying settings from the above locations.
1. Initialize settings based on hardcoded defaults 1. Initialize settings based on hard-coded defaults
2. Overlay settings specified by the user's configured defaults 2. Overlay settings specified by the user's configured defaults
3. Overlay application-specific settings from either the registry or the shortcut file, depending on how the application was launched 3. Overlay application-specific settings from either the registry or the shortcut file, depending on how the application was launched

View File

@ -201,7 +201,7 @@ Concerns:
### Accessibility ### Accessibility
Accessibility applications are the most likely to resort to a method of spelunking the process tree or window handles to attempt to find content to read out. Presuming they have hardcoded rules for console-type applications, these algorithms could be surprised by the substitution of another terminal environment. Accessibility applications are the most likely to resort to a method of spelunking the process tree or window handles to attempt to find content to read out. Presuming they have hard-coded rules for console-type applications, these algorithms could be surprised by the substitution of another terminal environment.
The major players here that I am considering are NVDA, JAWS, and Narrator. As far as I am aware, all of these applications attempt to drive their interactivity through UI Automation where possible. And we have worked with all of these applications in the past in improving their support for both `conhost.exe` and the Windows Terminal product. I have relatively high confidence that we will be able to work with them again to help update these assistive products to understand the new UI delegation, if necessary. The major players here that I am considering are NVDA, JAWS, and Narrator. As far as I am aware, all of these applications attempt to drive their interactivity through UI Automation where possible. And we have worked with all of these applications in the past in improving their support for both `conhost.exe` and the Windows Terminal product. I have relatively high confidence that we will be able to work with them again to help update these assistive products to understand the new UI delegation, if necessary.

View File

@ -76,7 +76,7 @@ These are in accordance with ConHost's keyboard selection model.
This idea was abandoned due to several reasons: This idea was abandoned due to several reasons:
1. Keyboard selection should be a standard way to interact with a terminal across all consumers (i.e. WPF control, etc.) 1. Keyboard selection should be a standard way to interact with a terminal across all consumers (i.e. WPF control, etc.)
2. There isn't really another set of key bindings that makes sense for this. We already hardcoded <kbd>ESC</kbd> as a way to clear the selection. This is just an extension of that. 2. There isn't really another set of key bindings that makes sense for this. We already hard-coded <kbd>ESC</kbd> as a way to clear the selection. This is just an extension of that.
3. Adding 12 conditionally effective key bindings takes the spot of 12 potential non-conditional key bindings. It would be nice if a different key binding could be set when the selection is not active, but that makes the settings design much more complicated. 3. Adding 12 conditionally effective key bindings takes the spot of 12 potential non-conditional key bindings. It would be nice if a different key binding could be set when the selection is not active, but that makes the settings design much more complicated.
4. 12 new items in the command palette is also pretty excessive. 4. 12 new items in the command palette is also pretty excessive.
5. If proven wrong when this is in WT Preview, we can revisit this and make them customizable then. It's better to add the ability to customize it later than take it away. 5. If proven wrong when this is in WT Preview, we can revisit this and make them customizable then. It's better to add the ability to customize it later than take it away.

View File

@ -115,7 +115,7 @@ greater detail below:
### Default Settings ### Default Settings
We'll have a static version of the "Default" file **hardcoded within the We'll have a static version of the "Default" file **hard-coded within the
application package**. This `defaults.json` file will live within the application package**. This `defaults.json` file will live within the
application's package, which will prevent users from being able to edit it. application's package, which will prevent users from being able to edit it.
@ -128,19 +128,19 @@ won't actually be generated, but because it's shipped with our app, it'll be
overridden each time the app is updated. "Auto-generated" should be good enough overridden each time the app is updated. "Auto-generated" should be good enough
to indicate to users that it should not be modified. to indicate to users that it should not be modified.
Because the `defaults.json` file is hardcoded within our application, we can use Because the `defaults.json` file is hard-coded within our application, we can use
its text directly, without loading the file from disk. This should help save its text directly, without loading the file from disk. This should help save
some startup time, as we'll only need to load the user settings from disk. some startup time, as we'll only need to load the user settings from disk.
When we make changes to the default settings, or we make changes to the settings When we make changes to the default settings, or we make changes to the settings
schema, we should make sure that we update the hardcoded `defaults.json` with schema, we should make sure that we update the hard-coded `defaults.json` with
the new values. That way, the `defaults.json` file will always have the complete the new values. That way, the `defaults.json` file will always have the complete
set of settings in it. set of settings in it.
### Layering settings ### Layering settings
When we load the settings, we'll do it in three stages. First, we'll deserialize When we load the settings, we'll do it in three stages. First, we'll deserialize
the default settings that we've hardcoded. We'll then generate any profiles that the default settings that we've hard-coded. We'll then generate any profiles that
might come from dynamic profile sources. Then, we'll intelligently layer the might come from dynamic profile sources. Then, we'll intelligently layer the
user's setting upon those we've already loaded. If a user wants to make changes user's setting upon those we've already loaded. If a user wants to make changes
to some objects, like the default profiles, we'll need to make sure to load from to some objects, like the default profiles, we'll need to make sure to load from

View File

@ -158,7 +158,7 @@ For `settings.json`, `_globals` will only hold the values set in `settings.json`
This process becomes a bit more complex for `Profile` because it can fallback in the following order: This process becomes a bit more complex for `Profile` because it can fallback in the following order:
1. `settings.json` profile 1. `settings.json` profile
2. `settings.json` `profiles.defaults` 2. `settings.json` `profiles.defaults`
3. (if a dynamic profile) the hardcoded value in the dynamic profile generator 3. (if a dynamic profile) the hard-coded value in the dynamic profile generator
4. `defaults.json` profile 4. `defaults.json` profile
`CascadiaSettings` must do the following... `CascadiaSettings` must do the following...
@ -280,7 +280,7 @@ TerminalApp will construct and reference a `CascadiaSettings settings` as follow
and layers the settings.json data on top of it. and layers the settings.json data on top of it.
- check for errors/warnings, and handle them appropriately - check for errors/warnings, and handle them appropriately
This will be different from the current model which has the settings.json path hardcoded, and is simplified This will be different from the current model which has the settings.json path hard-coded, and is simplified
to a `LoadAll()` call wrapped in error handlers. to a `LoadAll()` call wrapped in error handlers.
**NOTE:** This model allows us to layer even more settings files on top of the existing Terminal Settings **NOTE:** This model allows us to layer even more settings files on top of the existing Terminal Settings

View File

@ -158,7 +158,7 @@
<!-- <!--
By default, the PRI file will contain resource paths beginning with the By default, the PRI file will contain resource paths beginning with the
project name. Since we enabled XBF embedding, this *also* includes App.xbf. project name. Since we enabled XBF embedding, this *also* includes App.xbf.
Well, App.xbf is hardcoded by the framework to be found at the resource ROOT. Well, App.xbf is hard-coded by the framework to be found at the resource ROOT.
To make that happen, we have to disable the prepending of the project name To make that happen, we have to disable the prepending of the project name
to the App xaml files. to the App xaml files.
--> -->

View File

@ -404,7 +404,7 @@
<!-- <!--
By default, the PRI file will contain resource paths beginning with the By default, the PRI file will contain resource paths beginning with the
project name. Since we enabled XBF embedding, this *also* includes App.xbf. project name. Since we enabled XBF embedding, this *also* includes App.xbf.
Well, App.xbf is hardcoded by the framework to be found at the resource ROOT. Well, App.xbf is hard-coded by the framework to be found at the resource ROOT.
To make that happen, we have to disable the prepending of the project name To make that happen, we have to disable the prepending of the project name
to the App xaml files. to the App xaml files.
--> -->

View File

@ -116,14 +116,14 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
// is always "Use system language" ("und"). // is always "Use system language" ("und").
tags.emplace_back(systemLanguageTag); tags.emplace_back(systemLanguageTag);
// Add our hardcoded languages after the system definition. // Add our hard-coded languages after the system definition.
for (const auto& v : appLanguageTags) for (const auto& v : appLanguageTags)
{ {
tags.push_back(v); tags.push_back(v);
} }
} }
// NOTE: The size of tags is always >0, due to tags[0] being hardcoded to "und". // NOTE: The size of tags is always >0, due to tags[0] being hard-coded to "und".
const auto tagsBegin = ++tags.begin(); const auto tagsBegin = ++tags.begin();
const auto tagsEnd = tags.end(); const auto tagsEnd = tags.end();

View File

@ -380,7 +380,7 @@
</data> </data>
<data name="Globals_LaunchParameters.Header" xml:space="preserve"> <data name="Globals_LaunchParameters.Header" xml:space="preserve">
<value>Launch parameters</value> <value>Launch parameters</value>
<comment>Header for a set of settings that determine how terminal launches. These settings include the launch mode, launch position and whether the teminal should center itself on launch.</comment> <comment>Header for a set of settings that determine how terminal launches. These settings include the launch mode, launch position and whether the terminal should center itself on launch.</comment>
</data> </data>
<data name="Globals_LaunchParameters.HelpText" xml:space="preserve"> <data name="Globals_LaunchParameters.HelpText" xml:space="preserve">
<value>Settings that control how the terminal launches</value> <value>Settings that control how the terminal launches</value>

View File

@ -940,7 +940,7 @@ Model::CascadiaSettings CascadiaSettings::LoadUniversal()
// Function Description: // Function Description:
// - Creates a new CascadiaSettings object initialized with settings from the // - Creates a new CascadiaSettings object initialized with settings from the
// hardcoded defaults.json. // hard-coded defaults.json.
// Arguments: // Arguments:
// - <none> // - <none>
// Return Value: // Return Value:

View File

@ -1509,7 +1509,7 @@ void IslandWindow::_globalActivateWindow(const uint32_t dropdownDuration,
else else
{ {
// Try first to send a message to the current foreground window. If it's not responding, it may // Try first to send a message to the current foreground window. If it's not responding, it may
// be waiting on us to finsh launching. Passing SMTO_NOTIMEOUTIFNOTHUNG means that we get the same // be waiting on us to finish launching. Passing SMTO_NOTIMEOUTIFNOTHUNG means that we get the same
// behavior as before--that is, waiting for the message loop--but we've done an early return if // behavior as before--that is, waiting for the message loop--but we've done an early return if
// it turns out that it was hung. // it turns out that it was hung.
// SendMessageTimeoutW returns nonzero if it succeeds. // SendMessageTimeoutW returns nonzero if it succeeds.

View File

@ -62,7 +62,7 @@
<!-- Overrides for common build settings --> <!-- Overrides for common build settings -->
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<!-- C++/WinRT hardcodes pch.h --> <!-- C++/WinRT hard-codes pch.h -->
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>

View File

@ -79,7 +79,7 @@ Settings::Settings() :
} }
// Routine Description: // Routine Description:
// - Applies hardcoded default settings that are in line with what is defined // - Applies hard-coded default settings that are in line with what is defined
// in our Windows edition manifest (living in win32k-settings.man). // in our Windows edition manifest (living in win32k-settings.man).
// - NOTE: This exists in case we cannot access the registry on desktop platforms. // - NOTE: This exists in case we cannot access the registry on desktop platforms.
// We will use this to provide better defaults than the constructor values which // We will use this to provide better defaults than the constructor values which

View File

@ -151,7 +151,7 @@ static bool s_IsOnDesktop()
// 4. Hardcoded default settings // 4. Hardcoded default settings
// To establish this hierarchy, we will need to load the settings and apply them in reverse order. // To establish this hierarchy, we will need to load the settings and apply them in reverse order.
// 4. Initializing Settings will establish hardcoded defaults. // 4. Initializing Settings will establish hard-coded defaults.
// Set to reference of global console information since that's the only place we need to hold the settings. // Set to reference of global console information since that's the only place we need to hold the settings.
auto& settings = ServiceLocator::LocateGlobals().getConsoleInformation(); auto& settings = ServiceLocator::LocateGlobals().getConsoleInformation();
const auto& launchArgs = ServiceLocator::LocateGlobals().launchArgs; const auto& launchArgs = ServiceLocator::LocateGlobals().launchArgs;

View File

@ -7330,7 +7330,7 @@ void ScreenBufferTests::RectangularAreaOperations()
activeAttr.SetIntense(true); activeAttr.SetIntense(true);
si.SetAttributes(activeAttr); si.SetAttributes(activeAttr);
// The area we're targetting in all the operations below is 27;3 to 54;6. // The area we're targeting in all the operations below is 27;3 to 54;6.
// But VT coordinates use origin 1;1 so we need to subtract 1, and til::rect // But VT coordinates use origin 1;1 so we need to subtract 1, and til::rect
// expects exclusive coordinates, so the bottom/right also need to add 1. // expects exclusive coordinates, so the bottom/right also need to add 1.
const auto targetArea = til::rect{ 27 - 1, viewport.Top() + 3 - 1, 54, viewport.Top() + 6 }; const auto targetArea = til::rect{ 27 - 1, viewport.Top() + 3 - 1, 54, viewport.Top() + 6 };

View File

@ -6,7 +6,7 @@
#include "ColorControl.h" #include "ColorControl.h"
// The property sheet will never load on OneCore, so we do // The property sheet will never load on OneCore, so we do
// not need to redirect users to the OneCore safe versionf // not need to redirect users to the OneCore safe version
// of these functions. // of these functions.
#undef VkKeyScanW #undef VkKeyScanW
#undef MapVirtualKeyW #undef MapVirtualKeyW

View File

@ -879,7 +879,7 @@ static bool IsSizePresentInList(const __in SHORT sSizeDesired, __in_ecount(nTTPo
return fSizePresent; return fSizePresent;
} }
// Given a face name, determine if the size provided is custom (i.e. not on the hardcoded list of sizes). Note that the // Given a face name, determine if the size provided is custom (i.e. not on the hard-coded list of sizes). Note that the
// list of sizes we use varies depending on the codepage being used // list of sizes we use varies depending on the codepage being used
bool IsFontSizeCustom(__in PCWSTR pszFaceName, const __in SHORT sSize) bool IsFontSizeCustom(__in PCWSTR pszFaceName, const __in SHORT sSize)
{ {
@ -902,7 +902,7 @@ static bool IsCurrentFontSizeCustom()
return IsFontSizeCustom(gpStateInfo->FaceName, gpStateInfo->FontSize.Y); return IsFontSizeCustom(gpStateInfo->FaceName, gpStateInfo->FontSize.Y);
} }
// Given a size, iterate through all TT fonts and load them in the provided size (only used for custom (non-hardcoded) // Given a size, iterate through all TT fonts and load them in the provided size (only used for custom (non-hard-coded)
// font sizes) // font sizes)
void CreateSizeForAllTTFonts(const __in SHORT sSize) void CreateSizeForAllTTFonts(const __in SHORT sSize)
{ {
@ -1036,7 +1036,7 @@ EnumerateFonts(
pFN->dwFlag |= EF_ENUMERATED; pFN->dwFlag |= EF_ENUMERATED;
} }
// Now check to see if the currently selected font is using a custom size not in the hardcoded list (TTPoints or // Now check to see if the currently selected font is using a custom size not in the hard-coded list (TTPoints or
// TTPointsDbcs depending on locale). If so, make sure we populate all of our fonts at that size. // TTPointsDbcs depending on locale). If so, make sure we populate all of our fonts at that size.
if (IsCurrentFontSizeCustom()) if (IsCurrentFontSizeCustom())
{ {

View File

@ -165,7 +165,7 @@ try
packages.push_back({ ConhostDelegationPair }); packages.push_back({ ConhostDelegationPair });
// Get consoles and terminals. // Get consoles and terminals.
// If we fail to look up any, we should still have ONE come back to us as the hardcoded default console host. // If we fail to look up any, we should still have ONE come back to us as the hard-coded default console host.
// The errors aren't really useful except for debugging, so log only. // The errors aren't really useful except for debugging, so log only.
std::vector<DelegationBase> consoles; std::vector<DelegationBase> consoles;
LOG_IF_FAILED(_lookupCatalog(DELEGATION_CONSOLE_EXTENSION_NAME, consoles)); LOG_IF_FAILED(_lookupCatalog(DELEGATION_CONSOLE_EXTENSION_NAME, consoles));

View File

@ -159,7 +159,7 @@ void DxFontInfo::SetFromEngine(const std::wstring_view familyName,
CATCH_LOG(); CATCH_LOG();
// Alright, if our quick shot at trimming didn't work either... // Alright, if our quick shot at trimming didn't work either...
// move onto looking up a font from our hardcoded list of fonts // move onto looking up a font from our hard-coded list of fonts
// that should really always be available. // that should really always be available.
if (!face) if (!face)
{ {

View File

@ -66,7 +66,7 @@ namespace Microsoft::Console::Render
// The stretch of the font is the spacing between each letter // The stretch of the font is the spacing between each letter
DWRITE_FONT_STRETCH _stretch; DWRITE_FONT_STRETCH _stretch;
// Indicates whether we couldn't match the user request and had to choose from a hardcoded default list. // Indicates whether we couldn't match the user request and had to choose from a hard-coded default list.
bool _didFallback; bool _didFallback;
}; };
} }

View File

@ -846,7 +846,7 @@ void AdaptDispatch::_ChangeRectOrStreamAttributes(const til::rect& changeArea, c
// If the stream extent is more than one line we require three passes. The // If the stream extent is more than one line we require three passes. The
// top line is altered from the left offset up to the end of the line. The // top line is altered from the left offset up to the end of the line. The
// bottom line is altered from the start up to the right offset. All the // bottom line is altered from the start up to the right offset. All the
// lines inbetween have their entire length altered. The right coordinate // lines in-between have their entire length altered. The right coordinate
// must be greater than the left, otherwise the operation is ignored. // must be greater than the left, otherwise the operation is ignored.
else if (lineCount > 1 && changeRect.right > changeRect.left) else if (lineCount > 1 && changeRect.right > changeRect.left)
{ {
@ -858,7 +858,7 @@ void AdaptDispatch::_ChangeRectOrStreamAttributes(const til::rect& changeArea, c
} }
// Routine Description: // Routine Description:
// - Helper method to caculate the applicable buffer coordinates for use with // - Helper method to calculate the applicable buffer coordinates for use with
// the various rectangular area operations. // the various rectangular area operations.
// Arguments: // Arguments:
// - top - The first row of the area. // - top - The first row of the area.
@ -999,7 +999,7 @@ bool AdaptDispatch::ReverseAttributesRectangularArea(const VTInt top, const VTIn
} }
// Routine Description: // Routine Description:
// - DECCRA - Copys a rectangular area from one part of the buffer to another. // - DECCRA - Copies a rectangular area from one part of the buffer to another.
// Arguments: // Arguments:
// - top - The first row of the source area. // - top - The first row of the source area.
// - left - The first column of the source area. // - left - The first column of the source area.
@ -1203,7 +1203,7 @@ bool AdaptDispatch::DeviceAttributes()
// Routine Description: // Routine Description:
// - DA2 - Reports the terminal type, firmware version, and hardware options. // - DA2 - Reports the terminal type, firmware version, and hardware options.
// For now we're following the XTerm practice of using 0 to represent a VT100 // For now we're following the XTerm practice of using 0 to represent a VT100
// terminal, the version is hardcoded as 10 (1.0), and the hardware option // terminal, the version is hard-coded as 10 (1.0), and the hardware option
// is set to 1 (indicating a PC Keyboard). // is set to 1 (indicating a PC Keyboard).
// Arguments: // Arguments:
// - <none> // - <none>
@ -1217,7 +1217,7 @@ bool AdaptDispatch::SecondaryDeviceAttributes()
// Routine Description: // Routine Description:
// - DA3 - Reports the terminal unit identification code. Terminal emulators // - DA3 - Reports the terminal unit identification code. Terminal emulators
// typically return a hardcoded value, the most common being all zeros. // typically return a hard-coded value, the most common being all zeros.
// Arguments: // Arguments:
// - <none> // - <none>
// Return Value: // Return Value:
@ -1245,7 +1245,7 @@ bool AdaptDispatch::Vt52DeviceAttributes()
// Routine Description: // Routine Description:
// - DECREQTPARM - This sequence was originally used on the VT100 terminal to // - DECREQTPARM - This sequence was originally used on the VT100 terminal to
// report the serial communication parameters (baud rate, data bits, parity, // report the serial communication parameters (baud rate, data bits, parity,
// etc.). On modern terminal emulators, the response is simply hardcoded. // etc.). On modern terminal emulators, the response is simply hard-coded.
// Arguments: // Arguments:
// - permission - This would originally have determined whether the terminal // - permission - This would originally have determined whether the terminal
// was allowed to send unsolicited reports or not. // was allowed to send unsolicited reports or not.
@ -1255,7 +1255,7 @@ bool AdaptDispatch::RequestTerminalParameters(const DispatchTypes::ReportingPerm
{ {
// We don't care whether unsolicited reports are allowed or not, but the // We don't care whether unsolicited reports are allowed or not, but the
// requested permission does determine the value of the first response // requested permission does determine the value of the first response
// parameter. The remaining parameters are just hardcoded to indicate a // parameter. The remaining parameters are just hard-coded to indicate a
// 38400 baud connection, which matches the XTerm response. The full // 38400 baud connection, which matches the XTerm response. The full
// parameter sequence is as follows: // parameter sequence is as follows:
// - response type: 2 or 3 (unsolicited or solicited) // - response type: 2 or 3 (unsolicited or solicited)
@ -1323,7 +1323,7 @@ void AdaptDispatch::_CursorPositionReport(const bool extendedReport)
if (extendedReport) if (extendedReport)
{ {
// An extended report should also include the page number, but for now // An extended report should also include the page number, but for now
// we hardcode it to 1, since we don't yet support paging (GH#13892). // we hard-code it to 1, since we don't yet support paging (GH#13892).
const auto pageNumber = 1; const auto pageNumber = 1;
const auto response = wil::str_printf<std::wstring>(L"\x1b[?%d;%d;%dR", cursorPosition.Y, cursorPosition.X, pageNumber); const auto response = wil::str_printf<std::wstring>(L"\x1b[?%d;%d;%dR", cursorPosition.Y, cursorPosition.X, pageNumber);
_api.ReturnResponse(response); _api.ReturnResponse(response);
@ -3095,7 +3095,7 @@ ITermDispatch::StringHandler AdaptDispatch::DownloadDRCS(const VTInt fontNumber,
} }
// If we're a conpty, we create a special passthrough handler that will // If we're a conpty, we create a special passthrough handler that will
// forward the DECDLD sequence to the conpty terminal with a hardcoded ID. // forward the DECDLD sequence to the conpty terminal with a hard-coded ID.
// That ID is also pre-mapped into the G1 table, so the VT engine can just // That ID is also pre-mapped into the G1 table, so the VT engine can just
// switch to G1 when it needs to output any DRCS characters. But note that // switch to G1 when it needs to output any DRCS characters. But note that
// we still need to process the DECDLD sequence locally, so the character // we still need to process the DECDLD sequence locally, so the character
@ -3140,7 +3140,7 @@ ITermDispatch::StringHandler AdaptDispatch::DownloadDRCS(const VTInt fontNumber,
// Routine Description: // Routine Description:
// - Helper method to create a string handler that can be used to pass through // - Helper method to create a string handler that can be used to pass through
// DECDLD sequences when in conpty mode. This patches the original sequence // DECDLD sequences when in conpty mode. This patches the original sequence
// with a hardcoded character set ID, and pre-maps that ID into the G1 table. // with a hard-coded character set ID, and pre-maps that ID into the G1 table.
// Arguments: // Arguments:
// - <none> // - <none>
// Return value: // Return value:
@ -3155,7 +3155,7 @@ ITermDispatch::StringHandler AdaptDispatch::_CreateDrcsPassthroughHandler(const
// The character set ID is contained in the first characters of the // The character set ID is contained in the first characters of the
// sequence, so we just ignore that initial content until we receive // sequence, so we just ignore that initial content until we receive
// a "final" character (i.e. in range 30 to 7E). At that point we // a "final" character (i.e. in range 30 to 7E). At that point we
// pass through a hardcoded ID of "@". // pass through a hard-coded ID of "@".
if (!gotId) if (!gotId)
{ {
if (ch >= 0x30 && ch <= 0x7E) if (ch >= 0x30 && ch <= 0x7E)