From b0006f4af24f2efb124bfdb2459999c7868a0d78 Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Tue, 31 Aug 2021 10:58:32 -0500 Subject: [PATCH 1/5] Write the entire exporting & logging spec --- .../#642 - Buffer Exporting and Logging.md | 380 ++++++++++++++++++ .../ConEmu-logging-settings.png | Bin 0 -> 74280 bytes .../PuTTY-logging-settings.png | Bin 0 -> 14035 bytes .../SecureCRT-logging-settings.png | Bin 0 -> 58924 bytes .../securecrt-context-menu.png | Bin 0 -> 42835 bytes 5 files changed, 380 insertions(+) create mode 100644 doc/specs/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md create mode 100644 doc/specs/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png create mode 100644 doc/specs/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png create mode 100644 doc/specs/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png create mode 100644 doc/specs/#642 - Buffer Exporting and Logging/securecrt-context-menu.png diff --git a/doc/specs/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md b/doc/specs/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md new file mode 100644 index 00000000000..3723610d03e --- /dev/null +++ b/doc/specs/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md @@ -0,0 +1,380 @@ +--- +author: Mike Griese @zadjii-msft +created on: 2021-08-31 +last updated: 2021-08-31 +issue id: #642 +--- + +# Buffer Exporting and Logging + +## Abstract + +A common user need is the ability to export the history of a terminal session to +a file, for later inspection or validation. This is something that could be +triggered manually. Many terminal emulators provide the ability to automatically +log the output of a session to a file, so the history is always captured. This +spec will address improvements to the Windows Terminal to enable these kinds of +exporting and logging scenarios. + +## Background + +### Inspiration + +Below are screenshots from the settings pages of three different terminal +emulators with similar features - PuTTY, SecureCRT, and ConEmu: + +![PuTTY settings](PuTTY-logging-settings.png) + +_figure 1: PuTTY settings_ + +![SecureCRT settings](SecureCRT-logging-settings.png) + +_figure 2: SecureCRT settings_ + +![ConEmu settings](ConEmu-logging-settings.png) + +_figure 3: ConEmu settings_ + +These applications all offer some settings in common. Primarily, the important +feature is the ability to specify a path to a log file which contains some +special string formatting. This allows the user to log to different files based +on the time & date of the session, or based on the session name. + +### User Stories + +* **Story A**: The user is able to use a context menu entry on the tab to export + the contents of the buffer to a file, which they are prompted for. + - This is explicitly what was requested in [#642] +* **Story B**: The user can bind an action to export the contents of the buffer + to a file, which they are prompted for. + - Very similar to **A**, but via the command palette or a keybinding. +* **Story C**: The user can export to an explicit file via an action + - similar to **B**, but allowing for declaring the path to a file rather than + prompting at runtime. +* **Story D**: The user can choose to append to a file when exporting, rather + than overwritting. +* **Story E**: The user can specify a format string in the path to the file to + export to, which the Terminal will automatically replace with variables like + the time, date, and profile name. +* **Story F**: When opening a specific profile, the user can automatically log + to a file +* **Story G**: The user can execute an action to start or stop logging to a + given file. + + +## Solution Design + +I'm proposing the following actions and profile settings + +* New Action: `exportBuffer()`. + - Export the contents of the buffer to a file. + - `path` (string, defaults to `""`): When empty, prompt the user for a name of + a file to export to, using a file picker. This path accepts special + formatting strings that will be substituted with certain variables + (discussed [below](#path-formatting)). + - `append` (boolean, defaults to `false`): When `false`, the file's contents + will be overwritten. When `true`, the buffer contents will be appended to + the end of the file. +* New Profile Settings object: `logSettings` + - This is an object that describes a set of behavior for logging a profile. + - `path`: Same as the `path` in the `ExportBufferArgs` above + - `append`: Same as the `append` in the `ExportBufferArgs` above + - `captureAllOutput`: (boolean, defaults to `false`) When true, don't log only + printable characters, also log non-printable escape characters written to + the Terminal. + - `captureInput`: (boolean, defaults to `false`) Additionally log input to the + Terminal to the file. Input will be formatted as the traditional VT + sequences, rather than the full `win32-input` encoding. + - `newFileEveryDay`: (boolean, defaults to `false`) This requires the `day` to + be an element of the path format string. When logging with this setting, + opens a new file at midnight and starts writing that one. + +* New Profile setting: `logAutomatically` (boolean, default `false`). When true, + terminals with this profile will begin logging automatically. +* New Action: `toggleLogging()`. + - Start or stop logging to the configured file. If the terminal is already + logging with different settings than in this action, then stop logging + regardless (don't just start logging to the new file) + - This action accepts all the same args the profile's `logSettings` object. + - If _any_ args are provided, use those args. If _none_ are provided, then use + the logging settings present in the profile (if there are any). + - If there's not path provided (either in the args to the action or in the + profile), prompt the user to pick a file to log to. + +### Examples +```json +{ + "actions": [ + { "keys": "f1", "command": "exportBuffer" }, + { "keys": "f2", "command": { "action": "exportBuffer", "path": "c:\\logs\\${year}-${month}-${date}\\{profile}.txt" } }, + + { "keys": "f3", "command": "toggleLogging" }, + { "keys": "f4", "command": { "action": "toggleLogging", "path": "c:\\logs\\${profile}.log", "append": true } }, + ], + "profiles": [ + { + "name": "foo", + "logging": { + "path": "c:\\foo.txt", + "append": true + }, + "automaticallyLog": false + }, + { + "name": "bar", + "logging": { + "path": "c:\\logs\\${date}\\bar.txt", + "append": false + }, + "automaticallyLog": true + } + ] +} +``` + +Revisiting our original stories: + +* **Story A**: This is already implemented in [#11062] +* **Story B**: This is the action bound to f1. +* **Story C**: This is the action bound to f2. +* **Story D**: This is the `append` property in the actions, profile settings. +* **Story E**: An example of this is in the action bound to f2, + f4, and in the profile "bar"'s logging settings. +* **Story F**: The profile "bar" is configured to automatically log when opened. +* **Story G**: This is the action bound to f4. + +In addition, +* When opening the profile "foo", it will not automatically log to a file. + - Pressing f3 will begin logging to `c:\foo.txt` + - Pressing f4 will begin logging to `c:\logs\foo.log` + +### Path formatting + +[TODO!]: # TODO! + +For discussion: What syntax do we want? +* PuTTY uses `&Y`, `&M`, `&D`, `&T`, `&H`, `&P` for year, month, day, time, host + and port respectively. +* SecureCRT uses: + - `%H` – hostname + - `%S` – session name + - `%Y` – four-digit year + - `%M` – two-digit month + - `%D` – two-digit day of the month + - `%h` – two-digit hour + - `%m` – two-digit minute + - `%s` – two-digit seconds + - `%t` – three-digit milliseconds + - `%%` – percent (%) + - `%envvar%` – environment variable (for instance `%USERNAME%`) + +We have some precedent for formatting with `${braces}`, a la the iterable +command in the Command Palette (e.g `${profile.name}`). Additionally, [#9287] +implements support for environment variables in the Terminal with the +`${env:VARIABLE}` syntax. + +What variables do we want exposed, and how do we want users to be able to format +them? + +This doc was initially authored assuming we'd go with a `${braces}` syntax, like: + - `${profile}` – profile name + - `${year}` – four-digit year + - `${month}` – two-digit month + - `${day}` – two-digit day of the month + - `${hour}` – two-digit hour + - `${minute}` – two-digit minute + - `${second}` – two-digit second + - `${ms}` – three-digit milliseconds + - `${env:variable}` – environment variable (for instance `${env:USERPROFILE}`) + (inspired by [#9287]) + +### Exporting vs Logging +As far as specific implementation details goes, exporting is the easier work to +do. [#11062] already wires up the `TerminalApp` to retrieve the buffer contents +from the `TermControl`, so writing them at request is easy. + +Logging is harder. We don't want the `TermControl` telling the `TerminalApp` +layer about every piece of output logged. Especially in the post-[#5000] world +where that's a cross-process hop. Instead, we'll want the `ControlCore` / +`ControlInteractivity` to do _logging_ themselves. + +### Logging Mechanics + +#### When do we log? + +[TODO!]: # TODO! + +When do we decide to actually log? Take for example typing in a `pwsh` or +`bash` prompt. Imagine the user types +asdf, then hits +BkspBksp, such that the prompt is just `as`. What should +the log contain? `asdf^h ^h^h ^h`[[1]](#footnote-1)? `as`? + +My worry with logging the backspaces is that conpty is sometimes a bit noisier +than it needs to be with using `^H` as a cursor positioning sequence. Should we +only log lines when the cursor newlines or otherwise moves from the line it is +currently on? + +I'll need to look at what PuTTY emits for the "Printable output" option. + +#### What happens when we _start_ logging? + +If the user has a terminal that did not start with logging enabled, but then +started logging with `toggleLogging`, what should we log? All future output? Or +should we log the current buffer contents as well? + +I'm inclined to lean towards simply "all future output", and ignore any current +buffer content. If the user rally wants to log the current buffer contents _and_ +start logging, they can use a `multipleActions` action ([#11045]) to +`exportBuffer` to a file, then `toggleLogging` to that same file with +`"append":true`. + +## Potential Issues + + + + + + + + + + + +
Compatibility + +Since this functionality is entirely new, nothing here should negatively affect +existing functionality. + +
Performance, Power, and Efficiency + +When logging, it's expected there will be a measurable performance hit. We can +try to mitigate this by only writing to the file on a background thread, +separate from the connection or rendering thread. Since auto-logging will only +take place in the content process, we're not worried about the file writing +occuring on the UI thread. + +
+ +Also frequently requested is the ability to log timestamps of when commands are +executed. I don't think that this is a valuable feature for the Terminal to +implement ourselves. Windows Terminal is fundamentally just a _terminal +emulator_, it doesn't really know what's going on behind the scenes with +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 +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 +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 +be seen - it's certainly made things like `python.exe`'s REPL easier to +implement, since they don't need to maintain their own history buffer, but it +makes it hard to de-tangle behavior like this from the console itself. + +I'm not sure how it would be possible to add a keybinding to the Windows +Terminal that would be able to save the console's _command_ history. Especially +considering the Terminal might _not_ be connected to a console host session at +all. If the Windows Terminal were directly running a `wsl` instance (something +that's not possible today, but something we've considered adding in the future), +then there wouldn't be a `conhost` in the process tree at all, and now +requesting the command history from the console wouldn't work _mysteriously_. + +Furthermore, shells can always be configured to emit timestamps in their prompts +themselves. Since the Terminal has no knowledge of when a command is actually +entered, but the _shell_ does, it makes the most sense to configure the user's +_shell_ to emit that information. The Terminal will then dutifully log that +output along with everything else. + +## Implementation Plan + +Below is a rough outline of how I'd go about implementing these features. Each +lop-level checkbox could be its own PR, following from [#11062]. + +### Buffer exporting + +* [ ] Add an `exportBuffer()` action that opens the file picker +* [ ] Add a string `path` parameter to `exportBuffer()` that allows the user to + press a key and immediately export the buffer to a whole path + - default to `""`, which indicates "open the file picker" +* [ ] add a boolean `append` (default to `false`) parameter to `exportBuffer`. + When true, export to the file given by appending, not overwriting the file +* [ ] Enable string formatting in the `path` parameter. + - What format do we want? `yyyy-mm-dd`? `%Y-%m-%D`? `&Y-&m-&D`? `${year}-${month}-${day}`? + - What are all the variables we want? + - Year, month, day, hour, minute - those are easy + - `WT_SESSION`, for a uuid for eash session maybe? + - Profile name perhaps? Commandline? +* [ ] more... + +### Automatic logging + +* [ ] `toggleLogging()` Action for start/stop logging, with `path`, `append` + properties (like `exportBuffer()`) + - `ToggleLoggingArgs` contains a single member `LoggingSettings`, which + contains `path` and `append` properties. This will make sense below. +* [ ] add `LoggingSettings` property for "log all output" (default would just be + "log printable output") +* [ ] add `LoggingSettings` property for "log input" (Though, we'd probably want + to log it as normal VT encoded, not as `win32-input` encoded) +* [ ] Per-profile setting for `logSettings`, which can contain an entire + `LoggingSettings` (like the `ToggleLoggingArgs`). When `toggleLogging` with no + args, try to use the profile's `loggingSettings` instead. +* [ ] Per-profile setting for `automaticallyLog`, which would log by default + when the profile is opened +* [ ] `LoggingSettings` property for "New file every day", which only works when + the `{day}` is in the path string. When auto-logging with this setting, opens + a new file at midnight and starts writing that one. + + +### Future Considerations + +* When logging begins, the Terminal could display a toast for "Logging to + {filename}", and a similar one for "Stopped logging to {filename}". +* There's no good way of displaying a UI element to indicate that a pane is + currently logging to a file. I don't believe PuTTY displays any sort of + indicator. SecureCRT only displays a checkbox within the context menus of the + application itself. + ![securecrt context menu](securecrt-context-menu.png) + + Maybe when logging to a file, we could replace the "Export Text" context menu + entry with "Stop Logging" +* We could maybe add a setting to disable logging from the alt buffer. This + might help make this setting more valuable for users who are using full-screen + applications like `vim`. Since those applications redraw the entire viewport + contents frequently, the log might be unnecessarily noisy. Disabling logging + while in the alt buffer would show that the user opened vim, and then they did + some things after vim exited. +* Logging all output will be VERY helpful to us in the future for trying to + recreate bugs on our end that users can repro but we can't! + +## Resources + +PuTTY Logging documentation: https://tartarus.org/~simon/putty-snapshots/htmldoc/Chapter4.html#config-logfilename +ConEmu Logging documentation: https://conemu.github.io/en/AnsiLogFiles.html + +### Footnotes + +[1]: Remember that `^H` is non-desructive, so the +sequence `asdf^h ^h^h ^h` is can be read as: + * print "asdf" + * move the cursor back one + * print a space (overwriting 'f') + * move the cursor back one (now it's on the space where 'f' was) + * move the cursor back one + * print a space (overwriting 'd') + * move the cursor back one (now it's on the space where 'd' was) + +[#642]: https://github.com/microsoft/terminal/issues/642 +[#5000]: https://github.com/microsoft/terminal/issues/5000 +[#9287]: https://github.com/microsoft/terminal/pull/9287 +[#11045]: https://github.com/microsoft/terminal/pull/11045 +[#11062]: https://github.com/microsoft/terminal/pull/11062 diff --git a/doc/specs/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png b/doc/specs/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..016dfa1fb22b2285ce2801f2eac4bb853a2f7d88 GIT binary patch literal 74280 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 )v0sw*5M*W0hX5EaFIPe? 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't`)fpl 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

    {Q)`Mh+cbZg57rNs0aIiEf-!Zvj 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 PH3S(61xTrw{*V6!9MAwG literal 0 HcmV?d00001 diff --git a/doc/specs/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png b/doc/specs/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6d058bea373e25cf6dcf65784840a2f5a7153c82 GIT binary patch literal 58924 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

    NbLef$=d4duGw@hvuvAGn8nTZGJ^M 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 Date: Tue, 31 Aug 2021 10:58:32 -0500 Subject: [PATCH 2/5] Migrate spelling-0.0.21 changes from main --- .github/actions/spelling/README.md | 15 + .github/actions/spelling/advice.md | 34 +- .github/actions/spelling/allow/allow.txt | 42 +- .github/actions/spelling/allow/apis.txt | 60 +- .github/actions/spelling/allow/math.txt | 8 + .github/actions/spelling/allow/microsoft.txt | 12 + .github/actions/spelling/allow/names.txt | 12 + .github/actions/spelling/candidate.patterns | 523 ++++++++++ .github/actions/spelling/excludes.txt | 48 +- .github/actions/spelling/expect/alphabet.txt | 8 - .github/actions/spelling/expect/expect.txt | 918 ++++-------------- .github/actions/spelling/expect/web.txt | 11 - .../actions/spelling/line_forbidden.patterns | 62 ++ .../actions/spelling/patterns/patterns.txt | 86 +- .github/actions/spelling/reject.txt | 28 +- .github/workflows/spelling2.yml | 132 ++- 16 files changed, 1181 insertions(+), 818 deletions(-) create mode 100644 .github/actions/spelling/README.md create mode 100644 .github/actions/spelling/candidate.patterns create mode 100644 .github/actions/spelling/line_forbidden.patterns diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md new file mode 100644 index 00000000000..4c40f7f02ac --- /dev/null +++ b/.github/actions/spelling/README.md @@ -0,0 +1,15 @@ +# check-spelling/check-spelling configuration + +File | Purpose | Format | Info +-|-|-|- +[allow/*.txt](allow/) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) +[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) +[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) +[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) + +Note: you can replace any of these files with a directory by the same name (minus the suffix) +and then include multiple files inside that directory (with that suffix) to merge multiple files together. diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md index 885b1a6978d..d82df49ee22 100644 --- a/.github/actions/spelling/advice.md +++ b/.github/actions/spelling/advice.md @@ -1,4 +1,4 @@ - +

    :pencil2: Contributor please read this @@ -6,7 +6,7 @@ By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later. -:warning: The command is written for posix shells. You can copy the contents of each `perl` command excluding the outer `'` marks and dropping any `'"`/`"'` quotation mark pairs into a file and then run `perl file.pl` from the root of the repository to run the code. Alternatively, you can manually insert the items... +:warning: The command is written for posix shells. If it doesn't work for you, you can manually _add_ (one word per line) / _remove_ items to `expect.txt` and the `excludes.txt` files. If the listed items are: @@ -20,31 +20,29 @@ 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: -
    :clamp: If you see a bunch of garbage -If it relates to a ... -
    well-formed pattern +
    If the flagged items are :exploding_head: false positives -See if there's a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it. +If items relate to a ... +* binary file (or some other file you wouldn't want to check at all). -If not, try writing one and adding it to a `patterns/{file}.txt`. + Please add a file path to the `excludes.txt` file matching the containing file. -Patterns are Perl 5 Regular Expressions - you can [test]( -https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. + File paths are Perl 5 Regular Expressions - you can [test]( +https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. -Note that patterns can't match multiline strings. -
    -
    binary-ish string + `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md]( +../tree/HEAD/README.md) (on whichever branch you're using). -Please add a file path to the `excludes.txt` file instead of just accepting the garbage. +* well-formed pattern. -File paths are Perl 5 Regular Expressions - you can [test]( -https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. + If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it, + try adding it to the `patterns.txt` file. -`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md]( -../tree/HEAD/README.md) (on whichever branch you're using). -
    + Patterns are Perl 5 Regular Expressions - you can [test]( +https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. + Note that patterns can't match multiline strings.
    diff --git a/.github/actions/spelling/allow/allow.txt b/.github/actions/spelling/allow/allow.txt index eb9b2e27771..eaa0a471190 100644 --- a/.github/actions/spelling/allow/allow.txt +++ b/.github/actions/spelling/allow/allow.txt @@ -1,47 +1,75 @@ +admins +allcolors +Apc apc +breadcrumb +breadcrumbs +bsd calt ccmp -cybersecurity -Apc +changelog clickable clig +CMMI copyable +cybersecurity dalet -dcs Dcs +dcs dialytika dje downside downsides dze dzhe +EDDB +EDDC Enum'd Fitt formattings +FTCS ftp fvar +gantt +gcc geeksforgeeks ghe +github gje +godbolt hostname hostnames +https hyperlink hyperlinking hyperlinks +iconify img +inlined It'd kje +libfuzzer +libuv liga lje +Llast +llvm +Lmid locl +lol lorem +Lorigin maxed +minimalistic mkmk +mnt mru nje +noreply ogonek ok'd overlined +pipeline postmodern ptys qof @@ -56,17 +84,25 @@ runtimes shcha slnt Sos +ssh +timeline +timelines timestamped TLDR tokenizes tonos +toolset tshe +ubuntu uiatextrange UIs und unregister versioned +vsdevcmd We'd wildcards +XBox +YBox yeru zhe diff --git a/.github/actions/spelling/allow/apis.txt b/.github/actions/spelling/allow/apis.txt index 64d16180143..e0cc7550095 100644 --- a/.github/actions/spelling/allow/apis.txt +++ b/.github/actions/spelling/allow/apis.txt @@ -1,30 +1,44 @@ ACCEPTFILES ACCESSDENIED +acl +aclapi alignas alignof APPLYTOSUBMENUS +appxrecipe bitfield bitfields BUILDBRANCH BUILDMSG BUILDNUMBER +BYCOMMAND BYPOSITION charconv CLASSNOTAVAILABLE +CLOSEAPP cmdletbinding COLORPROPERTY colspan COMDLG +commandlinetoargv comparand cstdint CXICON CYICON +Dacl dataobject dcomp DERR dlldata +DNE DONTADDTORECENT +DWMSBT +DWMWA +DWMWA DWORDLONG +endfor +ENDSESSION +enumset environstrings EXPCMDFLAGS EXPCMDSTATE @@ -37,12 +51,16 @@ fullkbd futex GETDESKWALLPAPER GETHIGHCONTRAST +GETMOUSEHOVERTIME Hashtable HIGHCONTRASTON HIGHCONTRASTW hotkeys href hrgn +HTCLOSE +hwinsta +HWINSTA IActivation IApp IAppearance @@ -59,18 +77,22 @@ IDirect IExplorer IFACEMETHOD IFile +IGraphics IInheritable IMap +IMonarch IObject iosfwd IPackage IPeasant +ISetup isspace IStorage istream IStringable ITab ITaskbar +itow IUri IVirtual KEYSELECT @@ -79,17 +101,27 @@ llabs llu localtime lround +Lsa +lsass LSHIFT +LTGRAY +MAINWINDOW +memchr +memicmp MENUCOMMAND MENUDATA MENUINFO -memicmp -mptt +MENUITEMINFOW +mmeapi +MOUSELEAVE mov +mptt msappx MULTIPLEUSE NCHITTEST NCLBUTTONDBLCLK +NCMOUSELEAVE +NCMOUSEMOVE NCRBUTTONDBLCLK NIF NIN @@ -107,26 +139,36 @@ oaidl ocidl ODR offsetof +ofstream +onefuzz osver OSVERSIONINFOEXW otms OUTLINETEXTMETRICW overridable +PACL PAGESCROLL +PATINVERT +PEXPLICIT PICKFOLDERS pmr +ptstr +QUERYENDSESSION rcx REGCLS RETURNCMD rfind +ROOTOWNER roundf RSHIFT +SACL schandle semver serializer SETVERSION SHELLEXECUTEINFOW shobjidl +SHOWHIDE SHOWMINIMIZED SHOWTIP SINGLEUSE @@ -147,23 +189,37 @@ Stubless Subheader Subpage syscall +SYSTEMBACKDROP +TABROW TASKBARCREATED TBPF THEMECHANGED tlg +TME tmp +tmpdir tolower toupper +TRACKMOUSEEVENT TTask TVal UChar +UFIELD +ULARGE +UOI UPDATEINIFILE userenv +USEROBJECTFLAGS +Viewbox +virtualalloc wcsstr wcstoui winmain +winsta +winstamin wmemcmp wpc +WSF wsregex wwinmain xchg diff --git a/.github/actions/spelling/allow/math.txt b/.github/actions/spelling/allow/math.txt index 1482aedaba0..bf8960f0089 100644 --- a/.github/actions/spelling/allow/math.txt +++ b/.github/actions/spelling/allow/math.txt @@ -1,3 +1,11 @@ +atan +CPrime +HBar +HPrime isnan +LPrime +LStep powf +RSub sqrtf +ULP diff --git a/.github/actions/spelling/allow/microsoft.txt b/.github/actions/spelling/allow/microsoft.txt index 87d7a3d8c52..1f4a28664f2 100644 --- a/.github/actions/spelling/allow/microsoft.txt +++ b/.github/actions/spelling/allow/microsoft.txt @@ -1,5 +1,6 @@ ACLs ADMINS +advapi altform altforms appendwttlogging @@ -15,8 +16,10 @@ CPLs cpptools cppvsdbg CPRs +cryptbase DACL DACLs +defaultlib diffs disposables dotnetfeed @@ -24,7 +27,11 @@ DTDs DWINRT enablewttlogging Intelli +IVisual +libucrt +libucrtd LKG +LOCKFILE Lxss mfcribbon microsoft @@ -32,8 +39,10 @@ microsoftonline MSAA msixbundle MSVC +MSVCP muxc netcore +Onefuzz osgvsowi PFILETIME pgc @@ -44,6 +53,7 @@ powershell propkey pscustomobject QWORD +regedit robocopy SACLs sdkddkver @@ -57,6 +67,8 @@ systemroot taskkill tasklist tdbuildteamid +ucrt +ucrtd unvirtualized VCRT vcruntime diff --git a/.github/actions/spelling/allow/names.txt b/.github/actions/spelling/allow/names.txt index 27ba53635ef..1c6ef9a373c 100644 --- a/.github/actions/spelling/allow/names.txt +++ b/.github/actions/spelling/allow/names.txt @@ -1,14 +1,18 @@ Anup austdi +arkthur Ballmer bhoj Bhojwani +Bluloco carlos dhowett Diviness dsafa duhowett +DXP ekg +eryksun ethanschoonover Firefox Gatta @@ -20,6 +24,7 @@ Hernan Howett Illhardt iquilezles +italo jantari jerrysh Kaiyu @@ -33,7 +38,9 @@ leonmsft Lepilleur lhecker lukesampson +Macbook Manandhar +masserano mbadolato Mehrain menger @@ -53,6 +60,7 @@ oldnewthing opengl osgwiki pabhojwa +panos paulcam pauldotknopf PGP @@ -61,12 +69,16 @@ Rincewind rprichard Schoonover shadertoy +Shomnipotence +simioni Somuah sonph sonpham stakx +talo thereses Walisch +WDX Wellons Wirt Wojciech diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns new file mode 100644 index 00000000000..4b40e728ee3 --- /dev/null +++ b/.github/actions/spelling/candidate.patterns @@ -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 +(['"]|")[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 +(?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-)/ diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt index 81bfde27718..bc509a5669e 100644 --- a/.github/actions/spelling/excludes.txt +++ b/.github/actions/spelling/excludes.txt @@ -1,28 +1,39 @@ +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes (?:(?i)\.png$) +(?:^|/)(?i)COPYRIGHT +(?:^|/)(?i)LICEN[CS]E +(?:^|/)3rdparty/ (?:^|/)dirs$ (?:^|/)go\.mod$ (?:^|/)go\.sum$ -(?:^|/)package-lock\.json$ +(?:^|/)package(?:-lock|)\.json$ (?:^|/)sources(?:|\.dep)$ -SUMS$ +(?:^|/)vendor/ +\.a$ \.ai$ +\.avi$ \.bmp$ +\.bz2$ \.cer$ \.class$ \.crl$ \.crt$ \.csr$ \.dll$ +\.docx?$ +\.drawio$ \.DS_Store$ \.eot$ \.eps$ \.exe$ \.gif$ +\.gitattributes$ \.graffle$ \.gz$ \.icns$ \.ico$ \.jar$ +\.jks$ \.jpeg$ \.jpg$ \.key$ @@ -30,28 +41,53 @@ SUMS$ \.lock$ \.map$ \.min\.. +\.mod$ \.mp3$ \.mp4$ +\.o$ +\.ocf$ \.otf$ \.pbxproj$ \.pdf$ \.pem$ +\.png$ \.psd$ +\.pyc$ \.runsettings$ +\.s$ \.sig$ \.so$ \.svg$ \.svgz$ +\.svgz?$ \.tar$ \.tgz$ +\.tiff?$ \.ttf$ \.vsdx$ +\.wav$ +\.webm$ +\.webp$ \.woff +\.woff2?$ \.xcf$ \.xls +\.xlsx?$ \.xpm$ \.yml$ \.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/ ^consolegit2gitfilters\.json$ ^dep/ ^doc/reference/master-sequence-list.csv$ @@ -61,12 +97,14 @@ SUMS$ ^src/host/runft\.bat$ ^src/host/runut\.bat$ ^src/interactivity/onecore/BgfxEngine\. +^src/renderer/atlas/ ^src/renderer/wddmcon/WddmConRenderer\. ^src/terminal/adapter/ut_adapter/run\.bat$ ^src/terminal/parser/delfuzzpayload\.bat$ ^src/terminal/parser/ft_fuzzer/run\.bat$ ^src/terminal/parser/ft_fuzzer/VTCommandFuzzer\.cpp$ ^src/terminal/parser/ft_fuzzwrapper/run\.bat$ +^src/terminal/parser/ut_parser/Base64Test.cpp$ ^src/terminal/parser/ut_parser/run\.bat$ ^src/tools/integrity/packageuwp/ConsoleUWP\.appxSources$ ^src/tools/lnkd/lnkd\.bat$ @@ -74,6 +112,6 @@ SUMS$ ^src/tools/texttests/fira\.txt$ ^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$ ^src/types/ut_types/UtilsTests.cpp$ -^\.github/actions/spelling/ -^\.gitignore$ -^\XamlStyler.json$ +^tools/ReleaseEngineering/ServicingPipeline.ps1$ +ignore$ +SUMS$ diff --git a/.github/actions/spelling/expect/alphabet.txt b/.github/actions/spelling/expect/alphabet.txt index 47663b0d075..23933713a40 100644 --- a/.github/actions/spelling/expect/alphabet.txt +++ b/.github/actions/spelling/expect/alphabet.txt @@ -5,26 +5,19 @@ AAAAAABBBBBBCCC AAAAABBBBBBCCC abcd abcd -abcde -abcdef -ABCDEFG -ABCDEFGH ABCDEFGHIJ abcdefghijk ABCDEFGHIJKLMNO abcdefghijklmnop ABCDEFGHIJKLMNOPQRST -abcdefghijklmnopqrstuvwxyz ABCG ABE abf BBBBB BBBBBBBB -BBBBBBBBBBBBBBDDDD BBBBBCCC BBBBCCCCC BBGGRR -CCE EFG EFGh QQQQQQQQQQABCDEFGHIJ @@ -33,7 +26,6 @@ QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQQ QQQQQQQQQQABCDEFGHIJPQRSTQQQQQQQQQQ qrstuvwxyz qwerty -QWERTYUIOP qwertyuiopasdfg YYYYYYYDDDDDDDDDDD ZAAZZ diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt index 8ed94f9d496..8f8f4828d0a 100644 --- a/.github/actions/spelling/expect/expect.txt +++ b/.github/actions/spelling/expect/expect.txt @@ -1,21 +1,19 @@ +aabbcc ABANDONFONT +abbcc +ABCDEFGHIJKLMNOPQRSTUVWXY abgr abi +ABORTIFHUNG ACCESSTOKEN -acec -acf acidev ACIOSS ACover actctx ACTCTXW activatable -ACTIVEBORDER -ACTIVECAPTION -adaa ADDALIAS ADDREF -addressof ADDSTRING ADDTOOL AEnd @@ -27,50 +25,39 @@ ahz AImpl AInplace ALIGNRIGHT -alloc allocing +allocs alpc ALTERNATENAME ALTF ALTNUMPAD ALWAYSTIP amd -ansicode ansicpg ANSISYS ANSISYSRC ANSISYSSC -antialias antialiasing ANull anycpu -AOn APARTMENTTHREADED APCs -api APIENTRY -apimswincoresynchl apiset APPBARDATA -appconsult -APPICON +appcontainer appium -applet appletname +applets applicationmodel APPLMODAL appmodel -apps APPWINDOW APrep apsect APSTUDIO archeologists -architected argb -argc -args -argv ARRAYSIZE ARROWKEYS asan @@ -80,22 +67,15 @@ ASDF asdfghjkl ASetting ASingle -asm -asmv asmx -aspx -astextplain -AStomps ASYNCWINDOWPOS atch ATest -attr ATTRCOLOR aumid Authenticode AUTOBUDDY AUTOCHECKBOX -autogenerated autohide AUTOHSCROLL automagically @@ -104,37 +84,30 @@ AUTORADIOBUTTON autoscrolling Autowrap AVerify -AVI AVX awch -azuredevopspodcast azzle -backend backgrounded Backgrounder backgrounding -backport +backported backstory barbaz Batang -baz Bazz BBDM bbwe bcount -bcrypt bcx bcz BEFOREPARENT beginthread -bgcolor bgfx bgidx Bgk BGR -BGRA +bgra BHID -biblioscape bigobj binplace binplaced @@ -143,15 +116,12 @@ bitcrazed bitflag bitmask BITOPERATION -bitsavers -bitset +bitsets BKCOLOR BKGND Bksp -blog Blt BLUESCROLL -bmp BODGY BOLDFONT BOOLIFY @@ -161,49 +131,40 @@ Borland BOTTOMLEFT BOTTOMRIGHT boutput +boxheader BPBF bpp BPPF branchconfig brandings -BRK Browsable -bsearch Bspace bstr BTNFACE -buf bufferout buffersize buflen -bugfix buildtransitive BUILDURI burriter BValue -byref -bytearray bytebuffer cac cacafire -callee capslock CARETBLINKINGENABLED CARRIAGERETURN cascadia -cassert castsi catid cazamor CBash -cbegin cbiex CBN CBoolean cbt cbuffer CCCBB -ccf cch CCHAR cci @@ -214,17 +175,11 @@ CComp CConsole CConversion CCRT -cctype -CDATA cdd -cdecl CDeclaration CEdit CELLSIZE -cend -cerr cfae -Cfg cfie cfiex cfte @@ -232,48 +187,33 @@ CFuzz cgscrn chafa changelist +chaof charinfo -charlespetzold -charset CHARSETINFO -chcp -checkbox -checkboxes chh -Childitem chk -chrono CHT Cic -cjk -ckuehl -cla +CLA Clcompile CLE cleartype CLICKACTIVE clickdown -climits clipbrd CLIPCHILDREN CLIPSIBLINGS -cliutils -clocale closetest cloudconsole cls CLSCTX -clsid +clsids CLUSTERMAP -cmath cmatrix cmder CMDEXT -Cmdlet -cmdline cmh CMOUSEBUTTONS -cmp cmpeq cmt cmw @@ -281,54 +221,45 @@ cmyk CNL cnt CNTRL -codebase Codeflow codepage codepath -codepoint -codeproject -coffgroup -coffgrp +codepoints coinit COLLECTIONURI colorizing -colororacle -colorref -colorscheme +COLORMATRIX +COLORREFs +colorschemes colorspaces colorspec colortable colortbl +colortest colortool COLR combaseapi -combobox comctl COMDAT commandline commctrl commdlg COMMITID -compat componentization conapi conareainfo conattrs conbufferout -concat concfg conclnt conddkrefs condrv conechokey conemu -config configurability conhost -conhostv conime conimeinfo -conint conintegrity conintegrityuwp coninteractivitybase @@ -354,105 +285,76 @@ consolehost CONSOLEIME consoleinternal Consoleroot -Consolescreen CONSOLESETFOREGROUND consoletaeftemplates -CONSOLEV +consoleuwp Consolewait CONSOLEWINDOWOWNER consrv -constexpr constexprable constness contentfiles conterm -CONTEXTMENU contsf contypes convarea conwinuserrefs -coord coordnew COPYCOLOR CORESYSTEM cotaskmem countof -cout CPG cpinfo CPINFOEX CPLINFO cplusplus -cpp CPPCORECHECK cppcorecheckrules -cppm cpprest cpprestsdk cppwinrt CProc cpx -crbegin CREATESCREENBUFFER CREATESTRUCT CREATESTRUCTW -creativecommons cred -cref -crend +crisman CRLFs crloew Crt CRTLIBS csbi csbiex -csharp CSHORT -CSIDL Cspace -csproj -Csr csrmsg CSRSS csrutil -css -cstdarg -cstddef -cstdio -cstdlib -cstr -cstring cstyle -csv CSwitch CTerminal CText -ctime ctl ctlseqs -Ctlv -ctor CTRLEVENT +CTRLFREQUENCY CTRLKEYSHORTCUTS -Ctx +CTRLVOLUME Ctxt -ctype CUF cupxy -curated CURRENTFONT currentmode CURRENTPAGE CURSORCOLOR CURSORSIZE CURSORTYPE +CUsers CUU Cwa cwch -cwchar -cwctype -cwd -cxcy CXFRAME CXFULLSCREEN CXHSCROLL @@ -462,10 +364,8 @@ CXSIZE CXSMICON CXVIRTUALSCREEN CXVSCROLL -cxx CYFRAME CYFULLSCREEN -cygwin CYHSCROLL CYMIN CYPADDEDBORDER @@ -476,9 +376,6 @@ CYVIRTUALSCREEN CYVSCROLL dai DATABLOCK -DATAVIEW -DATAW -datetime DBatch dbcs DBCSCHAR @@ -491,12 +388,10 @@ DBGOUTPUT dbh dblclk DBlob -dbproj -DBUILD DColor DCOLORVALUE dcommon -DCompile +dcompile dcompiler DComposition dde @@ -505,38 +400,44 @@ DDevice DEADCHAR dealloc Debian -debolden debugtype +DECAC DECALN DECANM +DECARM DECAUPSS DECAWM +DECBKM +DECCARA DECCKM DECCOLM +DECCRA +DECCTR DECDHL decdld -DECDLD DECDWL DECEKBD +DECERA +DECFRA DECID DECKPAM DECKPM DECKPNM DECLRMM -decls -declspec -decltype -declval DECNKM DECNRCM DECOM -deconstructed DECPCTERM +DECPS +DECRARA DECRC DECREQTPARM DECRLM DECRQM -DECRST +DECRQSS +DECRQTSR +decrst +DECSACE DECSASD DECSC DECSCA @@ -545,18 +446,17 @@ DECSCPP DECSCUSR DECSED DECSEL +DECSERA DECSET DECSLPP DECSLRM DECSMKR DECSR -decstandar DECSTBM DECSTR DECSWL DECTCEM -Dedupe -deduplicated +DECXCPR DEFAPP DEFAULTBACKGROUND DEFAULTFOREGROUND @@ -572,39 +472,23 @@ defing DEFPUSHBUTTON defterm DELAYLOAD -deletable DELETEONRELEASE -delims Delt demoable depersist deprioritized -deps -deque -deref -deserialization -deserialize -deserialized -deserializer -deserializing +deserializers desktopwindowxamlsource -dest DESTINATIONNAME -devblogs devicecode -devicefamily -devops Dext DFactory DFF -DFMT dhandler dialogbox -diffing -DINLINE directio DIRECTX -Dirs +DISABLEDELAYEDEXPANSION DISABLENOSCROLL DISPLAYATTRIBUTE DISPLAYATTRIBUTEPROPERTY @@ -612,183 +496,146 @@ DISPLAYCHANGE distro dlg DLGC -dll -dllexport DLLGETVERSIONPROC -dllimport dllinit dllmain DLLVERSIONINFO DLOAD DLOOK dmp -DOCTYPE -docx DONTCARE doskey dotnet -doubleclick -downlevel -dpg -dpi +DPG DPIAPI DPICHANGE DPICHANGED +DPIs dpix dpiy +dpnx DRAWFRAME DRAWITEM DRAWITEMSTRUCT drcs -dropdown -DROPDOWNLIST DROPFILES drv +DSBCAPS +DSBLOCK +DSBPLAY +DSBUFFERDESC +DSBVOLUME dsm -dst +dsound +DSSCL DSwap DTest -dtor DTTERM DUMMYUNIONNAME -DUNICODE -DUNIT dup'ed dvi dwl DWLP dwm dwmapi -dword +DWORDs dwrite -dwriteglyphrundescriptionclustermap dxgi dxgidwm +dxguid dxinterop +dxsm dxttbmp -eachother -eae -eaf +Dyreen EASTEUROPE ECH echokey ecount ECpp +ect Edgium EDITKEYS EDITTEXT EDITUPDATE edputil -edu Efast EHsc +EINS EJO ELEMENTNOTAVAILABLE elems -elif -elseif emacs -emplate EMPTYBOX enabledelayedexpansion -endian -endif -endl -endlocal endptr endregion -ENQ -enqueuing -entrypoint +ENTIREBUFFER +entrypoints ENU -enum ENUMLOGFONT ENUMLOGFONTEX enumranges -envvar -eol +eplace EPres +EQU ERASEBKGND -errno -errorlevel -ETB etcoreapp ETW -ETX EUDC EVENTID eventing everytime evflags evt -ewdelete -exe execd -executables executionengine exemain EXETYPE +exeuwp exewin exitwin expectedinput -expr EXPUNGECOMMANDHISTORY EXSTYLE EXTENDEDEDITKEY EXTKEY EXTTEXTOUT -fabricbot facename FACENODE FACESIZE -failfast FAILIFTHERE -fallthrough -FARPROC fastlink -fcb fcharset -fclose -fcntl -fdc -FDD -fdopen fdw fesb FFDE FFrom +fgbg FGCOLOR -fgetc -fgetwc FGHIJ fgidx +FGs FILEDESCRIPTION -fileno -filepath FILESUBTYPE FILESYSPATH -filesystem -FILETYPE fileurl FILEW FILLATTR FILLCONSOLEOUTPUT FILTERONPASTE -finalizer FINDCASE FINDDLG FINDDOWN -FINDSTR FINDSTRINGEXACT FINDUP FIter FIXEDCONVERTED +FIXEDFILEINFO Flg flyout fmodern fmtarg fmtid -FNV FOLDERID FONTCHANGE fontdlg @@ -797,8 +644,7 @@ FONTENUMPROC FONTFACE FONTFAMILY FONTHEIGHT -FONTINFO -fontlist +fontinfo FONTOK FONTSIZE FONTSTRING @@ -808,28 +654,20 @@ FONTWEIGHT FONTWIDTH FONTWINDOW fooo -forceinline FORCEOFFFEEDBACK FORCEONFEEDBACK -FORCEV -foreach -fprintf framebuffer FRAMECHANGED fre -freopen -frontend +frontends fsanitize Fscreen FSCTL FSINFOCLASS -fsproj -fstream fte Ftm -fullscreen +Fullscreens fullwidth -func FUNCTIONCALL fuzzer fuzzmain @@ -841,11 +679,10 @@ fwlink GAUSSIAN gci gcx -gcy gdi gdip gdirenderer -GENPROFILE +Geddy geopol GETALIAS GETALIASES @@ -855,7 +692,6 @@ GETALIASEXESLENGTH GETAUTOHIDEBAREX GETCARETWIDTH getch -getchar GETCLIENTAREAANIMATION GETCOMMANDHISTORY GETCOMMANDHISTORYLENGTH @@ -880,7 +716,6 @@ GETKEYBOARDLAYOUTNAME GETKEYSTATE GETLARGESTWINDOWSIZE GETLBTEXT -getline GETMINMAXINFO GETMOUSEINFO GETMOUSEVANISH @@ -890,8 +725,6 @@ GETOBJECT GETPOS GETSELECTIONINFO getset -GETSTATE -GETTEXT GETTEXTLEN GETTITLE GETWAITTOKILLSERVICETIMEOUT @@ -899,39 +732,33 @@ GETWAITTOKILLTIMEOUT GETWHEELSCROLLCHARACTERS GETWHEELSCROLLCHARS GETWHEELSCROLLLINES -getwriter GFEh Gfun gfx +GGI GHIJK GHIJKL GHIJKLM gitfilters -github -gitlab +gitmodules gle -globals +GLOBALFOCUS GLYPHENTRY -gmail GMEM GNUC Goldmine gonce -Google goutput -GPUs -grayscale GREENSCROLL Grehan -grep Greyscale gridline groupbox gset gsl GTP +GTR guc -gui guidatom GValue GWL @@ -939,11 +766,8 @@ GWLP gwsz HABCDEF Hackathon -halfwidth HALTCOND HANGEUL -hardcoded -hardcodes hashalg HASSTRINGS hbitmap @@ -958,20 +782,16 @@ hdr HDROP hdrstop HEIGHTSCROLL -hfile hfont hfontresource hglobal hhh -HHmm hhook hhx HIBYTE -HICON +hicon HIDEWINDOW -HIGHLIGHTTEXT hinst -HINSTANCE Hirots HISTORYBUFS HISTORYNODUP @@ -984,41 +804,31 @@ hkl HKLM hlocal hlsl -HMENU hmod hmodule hmon -HMONITOR -horiz HORZ hostable hostlib -Hostx HPA -HPAINTBUFFER HPCON hpj -hpp HPR -HPROPSHEETPAGE HProvider HREDRAW hresult -HRSRC +hrottled hscroll hsl hstr hstring -hsv HTBOTTOMLEFT HTBOTTOMRIGHT HTCAPTION HTCLIENT HTLEFT -htm HTMAXBUTTON HTMINBUTTON -html HTMLTo HTRIGHT HTTOP @@ -1029,36 +839,17 @@ HVP hwheel hwnd HWNDPARENT -hxx -IAccessibility -IAction -IApi -IApplication -IBase -ICache -icacls iccex -icch -IChar -ico -IComponent +icket ICONERROR Iconified ICONINFORMATION IConsole ICONSTOP -IControl ICONWARNING -ICore -IData IDCANCEL IDD -IDesktop -IDevice -IDictionary IDISHWND -IDispatch -IDisposable idl idllib IDOK @@ -1066,35 +857,18 @@ IDR idth idx IDXGI -IDynamic IEnd IEnum -IEnumerable -ies -ietf IFACEMETHODIMP -ifdef ification -ifndef -IFont -ifstream IGNOREEND -IHigh +IGNORELANGUAGE IHosted iid -IInitialize -IInput -IInspectable -IInteract -IInteractivity IIo -IList -imagemagick -Imatch ime Imm -IMouse -impl +IMPEXP inbox inclusivity INCONTEXT @@ -1102,105 +876,59 @@ INFOEX inheritcursor inheritdoc inheritfrom -ini INITCOMMONCONTROLSEX INITDIALOG initguid INITMENU inkscape -inl INLINEPREFIX inlines -INotify -inout -inplace inproc Inputkeyinfo INPUTPROCESSORPROFILE inputrc Inputreadhandledata INSERTMODE -installationpath -intellisense INTERACTIVITYBASE INTERCEPTCOPYPASTE INTERNALNAME -interop -interoperability inthread -intptr -intrin intsafe INVALIDARG INVALIDATERECT -inwap -IObservable ioctl -iomanip -iostream -iot ipch -ipconfig -IPersist ipp IProperty IPSINK ipsp -IRaw -IRead -IReference -IRender -IRenderer -IScheme -ISelection IShell -issuecomment -IState -IStoryboard -isupper ISwap -iswdigit -iswspace -ISystem iterm itermcolors ITerminal -IText itf Ith itoa IUI -IUia IUnknown ivalid -IValue -IVector -IWait -iwch -IWeb -IWin -IWindow -IXaml +IWIC IXMP -ixx +IXP jconcpp JOBOBJECT JOBOBJECTINFOCLASS jpe -jpeg -jpg JPN -json -jsonc jsoncpp +Jsons jsprovider jumplist KAttrs kawa -kayla Kazu kazum -kbd kcub kcud kcuf @@ -1208,13 +936,11 @@ kcuu kernelbase kernelbasestaging KEYBDINPUT -keybinding keychord keydown keyevent KEYFIRST KEYLAST -keymap Keymapping keyscan keystate @@ -1227,26 +953,26 @@ KLF KLMNO KLMNOPQRST KLMNOPQRSTQQQQQ +KOK +KPRIORITY KVM langid LANGUAGELIST lasterror lastexitcode LAYOUTRTL +lbl LBN -LBound LBUTTON LBUTTONDBLCLK LBUTTONDOWN LBUTTONUP lcb +lci LCONTROL LCTRL lcx LEFTALIGN -LEFTSHIFT -len -lhs libpopcnt libsancov libtickit @@ -1256,17 +982,11 @@ LINESELECTION LINEWRAP LINKERRCAP LINKERROR -linkid -linkpath linputfile -Linq -linux -listbox listproperties listptr listptrsize lld -LLVM llx LMENU LMNOP @@ -1278,39 +998,28 @@ LOADONCALL loadu LOBYTE localappdata -localhost locsrc -locstudio Loewen LOGFONT LOGFONTA LOGFONTW logissue -lowercased loword lparam -lparen -LPBYTE LPCCH lpch -LPCHARSETINFO -LPCOLORREF LPCPLINFO LPCREATESTRUCT lpcs -LPCSTR LPCTSTR -LPCWSTR lpdata LPDBLIST lpdis LPDRAWITEMSTRUCT lpdw -LPDWORD lpelfe lpfn LPFNADDPROPSHEETPAGE -LPINT lpl LPMEASUREITEMSTRUCT LPMINMAXINFO @@ -1320,43 +1029,38 @@ LPNEWCPLINFOA LPNEWCPLINFOW LPNMHDR lpntme -LPPOINT LPPROC LPPROPSHEETPAGE LPPSHNOTIFY lprc -LPRECT lpstr lpsz LPTSTR LPTTFONTLIST lpv -LPVOID LPW LPWCH +lpwfx LPWINDOWPOS lpwpos lpwstr LRESULT -lru lsb lsconfig -lsproj lss lstatus lstrcmp lstrcmpi LTEXT LTLTLTLTL -ltype LUID +luma lval LVB LVERTICAL LWA LWIN lwkmvj -mailto majorly makeappx MAKEINTRESOURCE @@ -1365,15 +1069,13 @@ MAKELANGID MAKELONG MAKELPARAM MAKELRESULT -malloc -manpage MAPBITMAP MAPVIRTUALKEY MAPVK MAXDIMENSTRING maxing -MAXLENGTH MAXSHORT +maxval maxversiontested MAXWORD maybenull @@ -1387,107 +1089,75 @@ MDs MEASUREITEM megamix memallocator -memcmp -memcpy -memmove -memset MENUCHAR MENUCONTROL MENUDROPALIGNMENT -MENUITEM MENUITEMINFO MENUSELECT -Mersenne messageext -metadata metaproj midl mii MIIM milli -mimetype mincore mindbogglingly -mingw minimizeall minkernel MINMAXINFO minwin minwindef Mip -mkdir MMBB mmcc MMCPL -MMdd mmsystem MNC MNOPQ MNOPQR MODALFRAME -modelproj MODERNCORE MONITORINFO MONITORINFOEXW MONITORINFOF -monospaced -monostate MOUSEACTIVATE MOUSEFIRST MOUSEHWHEEL MOUSEMOVE -mousewheel movemask MOVESTART msb -msbuild -mscorlib msctf msctls msdata -msdn msft MSGCMDLINEF MSGF MSGFILTER MSGFLG MSGMARKMODE -MSGS MSGSCROLLMODE MSGSELECTMODE msiexec MSIL msix msrc -msvcrt MSVCRTD -MSVS msys -msysgit MTSM -mui -Mul -multiline munged munges murmurhash -mutex -mutexes muxes myapplet mydir -myignite MYMAX Mypair Myval NAMELENGTH nameof -namespace -namespaced namestream -nano natvis -nbsp NCCALCSIZE NCCREATE NCLBUTTONDOWN @@ -1499,16 +1169,12 @@ NCRBUTTONDOWN NCRBUTTONUP NCXBUTTONDOWN NCXBUTTONUP -NDEBUG -ned NEL -NEQ netcoreapp netstandard NEWCPLINFO NEWCPLINFOA NEWCPLINFOW -newcursor Newdelete NEWINQUIRE NEWINQURE @@ -1518,22 +1184,16 @@ NEWTEXTMETRICEX Newtonsoft NEXTLINE nfe -nlength -Nls NLSMODE nnn NOACTIVATE NOAPPLYNOW NOCLIP -NOCOLOR NOCOMM NOCONTEXTHELP NOCOPYBITS -nodiscard NODUP -noexcept -NOHELP -noinline +noexcepts NOINTEGRALHEIGHT NOINTERFACE NOLINKINFO @@ -1549,13 +1209,13 @@ NONINFRINGEMENT NONPREROTATED nonspace NOOWNERZORDER +Nop NOPAINT NOPQRST noprofile NOREDRAW NOREMOVE NOREPOSITION -noreturn NORMALDISPLAY NOSCRATCH NOSEARCH @@ -1564,22 +1224,17 @@ NOSENDCHANGING NOSIZE NOSNAPSHOT NOTHOUSANDS -nothrow NOTICKS +NOTIMEOUTIFNOTHUNG NOTIMPL -notin -NOTNULL NOTOPMOST NOTRACK NOTSUPPORTED nouicompat nounihan NOUPDATE -NOWAIT NOYIELD NOZORDER -NPM -npos nrcs NSTATUS ntapi @@ -1591,6 +1246,7 @@ ntdll ntifs ntlpcapi ntm +nto ntrtl ntstatus ntsubauth @@ -1601,30 +1257,25 @@ ntuser NTVDM ntverp NTWIN -nuget +nugetversions nullability nullness nullonfailure -nullopt -nullptr +nullopts NULs numlock numpad NUMSCROLL nupkg -nuspec NVIDIA -NVR OACR -oauth objbase -ocf ocolor odl -oem oemcp OEMFONT OEMFORMAT +OEMs offboarded OLEAUT OLECHAR @@ -1637,6 +1288,7 @@ onecoreuapuuid onecoreuuid ONECOREWINDOWS onehalf +oneseq ONLCR openbash opencode @@ -1646,9 +1298,7 @@ openconsoleproxy OPENIF OPENLINK openps -opensource openvt -openxmlformats ORIGINALFILENAME osc OSCBG @@ -1659,22 +1309,17 @@ OSCSCB OSCSCC OSCWT OSDEPENDSROOT -osfhandle OSG OSGENG osign oss -ostream -ostringstream +otepad ouicompat OUnter outdir -outfile -Outof OUTOFCONTEXT -OUTOFMEMORY -outout Outptr +outstr OVERLAPPEDWINDOW OWNDC OWNERDRAWFIXED @@ -1688,23 +1333,20 @@ PAINTPARAMS PAINTSTRUCT PALPC pankaj -params parentable parms passthrough PATCOPY pathcch PATTERNID -PBOOL -PBYTE pcat pcb pcch PCCHAR PCCONSOLE PCD +pcg pch -PCHAR PCIDLIST PCIS PCLIENT @@ -1726,18 +1368,13 @@ PCWCH PCWCHAR PCWSTR pda -pdb -pdbonly +Pdbs pdbstr -pdf -pdp pdtobj pdw -PDWORD pdx peb PEMAGIC -PENDTASKMSG pfa PFACENODE pfed @@ -1750,17 +1387,14 @@ PFONTENUMDATA PFS pgd pgdn -pgorepro -pgort -PGU +PGONu pguid pgup -PHANDLE phhook phwnd -pid pidl PIDLIST +pids pii pinvoke pipename @@ -1769,14 +1403,12 @@ pixelheight PIXELSLIST PJOBOBJECT pkey -placeholders platforming playsound -plist +ploc +ploca +plocm PLOGICAL -plugin -PMv -png pnm PNMLINK pntm @@ -1785,24 +1417,20 @@ POBJECT Podcast POINTSLIST POLYTEXTW -popd -POPF poppack -popup POPUPATTR +popups PORFLG positionals -posix POSTCHARBREAKS POSX POSXSCROLL POSYSCROLL -ppci +PPEB ppf ppguid ppidl pplx -PPORT PPROC PPROCESS ppropvar @@ -1813,19 +1441,12 @@ ppsz ppv ppwch PQRST -pragma prc prealigned -prebuilt -precendence -precomp prect prefast -prefilled prefs preinstalled -PRELOAD -PREMULTIPLIED prepopulated presorted PREVENTPINNING @@ -1834,14 +1455,11 @@ PREVIEWWINDOW PREVLINE prg pri -printf prioritization processenv processhost PROCESSINFOCLASS procs -Progman -proj PROPERTYID PROPERTYKEY PROPERTYVAL @@ -1855,7 +1473,6 @@ propvar propvariant propvarutil psa -psd PSECURITY pseudocode pseudoconsole @@ -1863,13 +1480,10 @@ pseudoterminal psh pshn PSHNOTIFY -PSHORT pshpack PSINGLE psl psldl -psm -PSMALL PSNRET PSobject psp @@ -1878,45 +1492,36 @@ psr PSTR psz ptch -ptr -ptrdiff +ptrs ptsz PTYIn PUCHAR -PULONG PUNICODE -pushd -putchar -putwchar -PVOID pwch -PWCHAR PWDDMCONSOLECONTEXT -PWORD pws -pwsh pwstr pwsz pythonw +Qaabbcc qos QRSTU -qsort -queryable +QUERYOPEN QUESTIONMARK quickedit +QUZ QWER +Qxxxxxxxxxxxxxxx qzmp RAII RALT rasterbar rasterfont rasterization -rawinput RAWPATH raytracers razzlerc rbar -rbegin RBUTTON RBUTTONDBLCLK RBUTTONDOWN @@ -1932,43 +1537,28 @@ RCOCW RCONTROL RCOW rcv -rdbuf -RDONLY -rdpartysource readback READCONSOLE READCONSOLEOUTPUT READCONSOLEOUTPUTSTRING -Readline -readme READMODE -readonly -READWRITE -realloc +reallocs reamapping rects redef redefinable Redir -redirector redist -redistributable REDSCROLL -refactor -refactoring REFCLSID -refcount -referencesource REFGUID REFIID REFPROPERTYKEY -regex REGISTEROS REGISTERVDM regkey REGSTR reingest -Relayout RELBINPATH remoting renamer @@ -1979,23 +1569,20 @@ reparenting replatformed Replymessage repositorypath +Requiresx rescap Resequence RESETCONTENT resheader -resizable resmimetype -restrictedcapabilities resw resx -retval rfa -rfc +rfid rftp -rgb -rgba RGBCOLOR rgbi +rgbs rgci rgfae rgfte @@ -2008,48 +1595,45 @@ rgs rgui rgw rgwch -rhs RIGHTALIGN RIGHTBUTTON riid Rike RIPMSG RIS -RMENU roadmap robomac -roundtrip -rparen +rosetta +roundtrips RRF RRRGGGBB rsas rtcore RTEXT -rtf RTFTo -Rtl RTLREADING +Rtn RTTI ruleset runas -runasradio RUNDLL runformat runft RUNFULLSCREEN +runfuzz runsettings -runtests +runtest runtimeclass runuia runut runxamlformat -rvalue RVERTICAL +rvpa RWIN rxvt safearray -SAFECAST safemath +sapi sba SBCS SBCSDBCS @@ -2060,18 +1644,15 @@ scancode scanline schemename SCL -scm SCRBUF SCRBUFSIZE screenbuffer SCREENBUFFERINFO screeninfo -screenshot +screenshots scriptload -Scrollable scrollback -scrollbar -Scroller +scrollbars SCROLLFORWARD SCROLLINFO scrolllock @@ -2081,18 +1662,14 @@ SCROLLSCREENBUFFER scursor sddl sdeleted -sdk SDKDDK -searchbox securityappcontainer segfault SELCHANGE SELECTALL -selectany SELECTEDFONT SELECTSTRING Selfhosters -SERIALIZERS SERVERDLL SETACTIVE SETBUDDYINT @@ -2103,7 +1680,6 @@ SETCURSOR SETCURSORINFO SETCURSORPOSITION SETDISPLAYMODE -setfill SETFOCUS SETFONT SETFOREGROUND @@ -2114,28 +1690,24 @@ setintegritylevel SETITEMDATA SETITEMHEIGHT SETKEYSHORTCUTS -setlocal -setlocale SETMENUCLOSE -setmode SETNUMBEROFCOMMANDS SETOS SETPALETTE -SETPOS SETRANGE SETSCREENBUFFERSIZE SETSEL SETTEXTATTRIBUTE SETTINGCHANGE -SETTITLE -setw Setwindow SETWINDOWINFO +SFGAO +SFGAOF sfi SFINAE +SFolder SFUI sgr -SHANDLE SHCo shcore shellapi @@ -2143,7 +1715,6 @@ shellex shellscalingapi SHFILEINFO SHGFI -SHGFP SHIFTJIS Shl shlguid @@ -2151,13 +1722,13 @@ shlobj shlwapi SHORTPATH SHOWCURSOR +SHOWDEFAULT SHOWMAXIMIZED SHOWMINNOACTIVE +SHOWNA SHOWNOACTIVATE SHOWNORMAL SHOWWINDOW -SHRT -sid sidebyside SIF SIGDN @@ -2166,7 +1737,6 @@ SINGLETHREADED siup sixel SIZEBOX -sizeof SIZESCROLL SKIPFONT SKIPOWNPROCESS @@ -2187,29 +1757,19 @@ Solutiondir somefile SOURCEBRANCH sourced -SOURCESDIRECTORY -SPACEBAR spammy spand -sprintf -sqlproj -srand -src SRCCODEPAGE SRCCOPY SRCINVERT srcsrv SRCSRVTRG srctool -sre srect srv srvinit srvpipe -ssh -sstream -stackoverflow -standalone +ssa STARTF STARTUPINFO STARTUPINFOEX @@ -2221,57 +1781,37 @@ STARTWPARMSW Statusline stdafx STDAPI -stdcall +stdc stdcpp -stderr -stdexcept -stdin -stdio STDMETHODCALLTYPE STDMETHODIMP -stdout -stgm +STGM stl -stoi -stol -stoul stoutapot Stri -strikethrough -stringstream +Stringable STRINGTABLE -strlen strrev strsafe -strtok -structs +STUBHEAD STUVWX -STX stylecop SUA subcompartment -subfolder +subfolders subkey SUBLANG -sublicensable -submenu subresource -subspan -substr subsystemconsole subsystemwindows suiteless -svg swapchain swapchainpanel swappable SWMR SWP -swprintf SYMED -symlink SYNCPAINT -sys syscalls SYSCHAR SYSCOMMAND @@ -2291,8 +1831,6 @@ TARG targetentrypoint TARGETLIBS TARGETNAME -targetnametoken -targetsize targetver taskbar tbar @@ -2307,23 +1845,20 @@ TCI tcome tcommandline tcommands +Tdd TDelegated TDP TEAMPROJECT tearoff Teb -techcommunity -technet tellp -telnet -telnetd -templated teraflop terminalcore +terminalinput +terminalrenderdata TERMINALSCROLLING terminfo TEs -testapp testbuildplatform testcon testd @@ -2332,7 +1867,6 @@ testenv testlab testlist testmd -testmddefinition testmode testname testnameprefix @@ -2347,7 +1881,6 @@ texel TExpected textattribute TEXTATTRIBUTEID -textbox textboxes textbuffer TEXTINCLUDE @@ -2355,100 +1888,82 @@ textinfo TEXTMETRIC TEXTMETRICW textmode +texttests TFCAT tfoo TFunction tga -threadpool THUMBPOSITION THUMBTRACK TIcon -tif tilunittests -Timeline titlebar TITLEISLINKNAME TJson TLambda +TLDP TLEN Tlgdata TMAE TMPF TMult tmultiple -tmux -todo +TODOs tofrom tokenhelpers -tokenized -tokenizing toolbars TOOLINFO -Toolset -tooltip +TOOLWINDOW TOPDOWNDIB TOPLEFT -toplevel TOPRIGHT TOpt tosign touchpad -towlower -towupper Tpp Tpqrst tprivapi tracelog tracelogging traceloggingprovider +traceviewpp trackbar TRACKCOMPOSITION trackpad -transcoder transitioning Trd TREX triaged triaging TRIANGLESTRIP +Tribool TRIMZEROHEADINGS -truetype trx tsattrs tsf +tsgr TStr TSTRFORMAT TSub TTBITMAP -ttf TTFONT TTFONTLIST tthe tthis TTM TTo -TVPP +tvpp Txtev typechecked -typechecking -typedef -typeid -typeinfo typelib -typename -typeof typeparam TYUI UAC uap uapadmin UAX -ubuntu ucd -ucdxml uch -UCHAR -ucs udk UDM uer @@ -2457,41 +1972,30 @@ uia UIACCESS uiacore uiautomationcore -Uid uielem UIELEMENTENABLEDONLY -uint -uintptr +UINTs ulcch -ulong +umul +umulh Unadvise unattend -uncomment UNCPRIORITY -undef -Unescape unexpand -Unfocus unhighlighting unhosted -unicode -UNICODESTRING UNICODETEXT UNICRT -uninit uninitialize -uninstall +Unintense Uniscribe -unittest unittesting -universaltest +unittests unk unknwn unmark UNORM unparseable -unpause -Unregister unregistering untests untextured @@ -2500,12 +2004,6 @@ UPDATEDISPLAY UPDOWN UPKEY UPSS -upvote -uri -url -urlencoded -Urxvt -USASCII usebackq USECALLBACK USECOLOR @@ -2519,43 +2017,29 @@ USEPOSITION userbase USERDATA userdpiapi -username Userp userprivapi -userprofile USERSRV USESHOWWINDOW USESIZE USESTDHANDLES -ushort +usp USRDLL -utf -utils utr -uuid -uuidof -uuidv UVWX UVWXY -UWA +uwa uwp uxtheme -vals Vanara vararg -vbproj vclib -Vcount vcpkg vcprintf -vcproj -vcvarsall vcxitems -vcxproj vec vectorized VERCTRL -versioning VERTBAR VFT vga @@ -2564,30 +2048,28 @@ viewkind viewports Virt VIRTTERM -Virtualizing vkey VKKEYSCAN VMs VPA -VPATH VPR VProc VRaw VREDRAW vsc +vsconfig vscprintf VSCROLL +vsdevshell vsinfo -vsnprintf vso vspath -vsprintf VSTAMP vstest VSTS VSTT -vstudio vswhere +vtapi vtapp VTE VTID @@ -2604,59 +2086,43 @@ vttest VWX waaay waitable -waivable WANSUNG WANTARROWS WANTTAB wapproj -wav +WAVEFORMATEX wbuilder wch -wchar +wchars WCIA WCIW -WClass -wcout -wcschr -wcscmp -wcscpy WCSHELPER wcsicmp -wcslen wcsnicmp -wcsrchr wcsrev -wcstod -wcstoul wddm wddmcon -wddmconrenderer WDDMCONSOLECONTEXT wdm webpage -website -websocket +websites +websockets wekyb -WEOF wex wextest wextestclass -wfdopen WFill wfopen -wfstream WHelper -whitelisting +wic WIDTHSCROLL Widthx -wiki -wikia -wikipedia wil WImpl WINAPI winbase winbasep +wincodec wincon winconp winconpty @@ -2666,14 +2132,12 @@ wincontypes WINCORE windbg WINDEF -WINDIR windll WINDOWALPHA Windowbuffer windowdpiapi WINDOWEDGE windowext -WINDOWFRAME windowime WINDOWINFO windowio @@ -2687,12 +2151,12 @@ windowrect windowsapp windowsinternalstring WINDOWSIZE +windowsshell +windowsterminal windowsx -WINDOWTEXT windowtheme WINDOWTITLE winevent -winfx wingdi winget WINIDE @@ -2712,10 +2176,8 @@ winuser winuserp WINVER wistd -wixproj -wline -wlinestream wmain +wmemory WMSZ wnd WNDALLOC @@ -2728,9 +2190,6 @@ WNull wnwb workarea workaround -workflow -workitem -wostream WOutside WOWARM WOWx @@ -2740,29 +2199,24 @@ wpf WPR WPrep WPresent -wprintf wprp wprpi wregex -WResult writeback writechar WRITECONSOLE WRITECONSOLEINPUT WRITECONSOLEOUTPUT WRITECONSOLEOUTPUTSTRING +wrkstr wrl wrp WRunoff WScript wsl WSLENV -wsmatch -WSpace -wss wstr -wstring -wstringstream +wstrings wsz wtd WTest @@ -2777,13 +2231,14 @@ wtypes Wubi WUX WVerify -wwaproj WWith wxh +wyhash +wymix +wyr xact -xaml Xamlmeta -xargs +xamls xaz xbf xbutton @@ -2801,48 +2256,41 @@ xes xff XFile XFORM -xIcon +xin +xinchaof +xinxinchaof XManifest XMath XMFLOAT -xml -xmlns -xor xorg -XPosition XResource -xsd xsi -xsize xstyler XSubstantial xtended -xterm XTest XTPOPSGR XTPUSHSGR xtr +XTWINOPS xunit xutr -xvalue XVIRTUALSCREEN XWalk -Xzn +xwwyzz +xxyyzz yact -YAML YCast YCENTER YCount YDPI -yIcon -yml YOffset -YPosition -YSize YSubstantial YVIRTUALSCREEN YWalk +Zabcdefghijklmnopqrstuvwxyz ZCmd ZCtrl -zsh zxcvbnm +ZYXWVU +ZYXWVUTd diff --git a/.github/actions/spelling/expect/web.txt b/.github/actions/spelling/expect/web.txt index 3072b0075b4..52c1cfd1f0f 100644 --- a/.github/actions/spelling/expect/web.txt +++ b/.github/actions/spelling/expect/web.txt @@ -1,17 +1,6 @@ -http -www -ecma -rapidtables WCAG -freedesktop -ycombinator -robertelder -kovidgoyal -leonerd -fixterms winui appshellintegration mdtauk -cppreference gfycat Guake diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns new file mode 100644 index 00000000000..31ad2ddcd26 --- /dev/null +++ b/.github/actions/spelling/line_forbidden.patterns @@ -0,0 +1,62 @@ +# 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 +\bGithub\b + +# s.b. GitLab +\bGitlab\b + +# s.b. JavaScript +\bJavascript\b + +# s.b. Microsoft +\bMicroSoft\b + +# s.b. another +\ban[- ]other\b + +# s.b. greater than +\bgreater then\b + +# s.b. into +#\sin to\s + +# s.b. opt-in +\sopt in\s + +# s.b. less than +\bless then\b + +# s.b. otherwise +\bother[- ]wise\b + +# s.b. nonexistent +\bnon existing\b +\b[Nn]o[nt][- ]existent\b + +# s.b. preexisting +[Pp]re[- ]existing + +# s.b. preempt +[Pp]re[- ]empt\b + +# s.b. preemptively +[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 +\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s diff --git a/.github/actions/spelling/patterns/patterns.txt b/.github/actions/spelling/patterns/patterns.txt index 882243396d6..a0e1931f36f 100644 --- a/.github/actions/spelling/patterns/patterns.txt +++ b/.github/actions/spelling/patterns/patterns.txt @@ -1,11 +1,6 @@ -https://(?:(?:[-a-zA-Z0-9?&=]*\.|)microsoft\.com)/[-a-zA-Z0-9?&=_#\/.]* -https://aka\.ms/[-a-zA-Z0-9?&=\/_]* -https://www\.itscj\.ipsj\.or\.jp/iso-ir/[-0-9]+\.pdf -https://www\.vt100\.net/docs/[-a-zA-Z0-9#_\/.]* -https://www.w3.org/[-a-zA-Z0-9?&=\/_#]* -https://(?:(?:www\.|)youtube\.com|youtu.be)/[-a-zA-Z0-9?&=]* -https://(?:[a-z-]+\.|)github(?:usercontent|)\.com/[-a-zA-Z0-9?%&=_\/.]* -https://www.xfree86.org/[-a-zA-Z0-9?&=\/_#]* +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns + +https?://\S+ [Pp]ublicKeyToken="?[0-9a-fA-F]{16}"? (?:[{"]|UniqueIdentifier>)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|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 +# ls directory listings +[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+ +# C/idl types + English ... +\s(Guid|long|LONG|that) \g{-1}\s + +# javadoc / .net +(?:[\\@](?: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\s+(\w+)\s+\g{-1}\s + +# ignore long runs of a single character: +\b([A-Za-z])\g{-1}{3,}\b diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt index e2763f35a82..301719de47e 100644 --- a/.github/actions/spelling/reject.txt +++ b/.github/actions/spelling/reject.txt @@ -1,22 +1,12 @@ ^attache$ ^attacher$ ^attachers$ -^spae$ -^spaebook$ -^spaecraft$ -^spaed$ -^spaedom$ -^spaeing$ -^spaeings$ -^spae-man$ -^spaeman$ -^spaer$ -^Spaerobee$ -^spaes$ -^spaewife$ -^spaewoman$ -^spaework$ -^spaewright$ -^wether$ -^wethers$ -^wetherteg$ +benefitting +occurences? +^dependan.* +^oer$ +Sorce +^[Ss]pae.* +^untill$ +^untilling$ +^wether.* diff --git a/.github/workflows/spelling2.yml b/.github/workflows/spelling2.yml index a44931267ee..446b24343ed 100644 --- a/.github/workflows/spelling2.yml +++ b/.github/workflows/spelling2.yml @@ -1,20 +1,134 @@ # spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p 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: - pull_request_target: push: + branches: + - "**" + tags-ignore: + - "**" + pull_request_target: + branches: + - "**" + tags-ignore: + - "**" + types: + - 'opened' + - 'reopened' + - 'synchronize' + issue_comment: + types: + - 'created' jobs: spelling: name: Spell checking + permissions: + contents: read + pull-requests: read + actions: read + outputs: + followup: ${{ steps.spelling.outputs.followup }} + runs-on: ubuntu-latest + if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'" + concurrency: + group: spelling-${{ github.event.pull_request.number || github.ref }} + # 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.21 + with: + suppress_push_for_open_pull_request: 1 + checkout: true + check_file_names: 1 + spell_check_this: check-spelling/spell-check-this@prerelease + 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-push: + name: Report (Push) + # If your workflow isn't running on push, you can remove this job + runs-on: ubuntu-latest + needs: spelling + permissions: + contents: write + if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' + 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 }} + + 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: checkout-merge - if: "contains(github.event_name, 'pull_request')" - uses: actions/checkout@v2 + - name: comment + uses: check-spelling/check-spelling@v0.0.21 with: - ref: refs/pull/${{github.event.pull_request.number}}/merge - - name: checkout - if: "!contains(github.event_name, 'pull_request')" - uses: actions/checkout@v2 - - uses: check-spelling/check-spelling@v0.0.19 + checkout: true + spell_check_this: check-spelling/spell-check-this@prerelease + task: ${{ needs.spelling.outputs.followup }} From 0dd9cbdacd301101ed59da2ed6e423739535a0ab Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Mon, 12 Dec 2022 16:52:18 -0600 Subject: [PATCH 3/5] I'm officially moving this to the `drafts/` folder to clear out the PR backlog. We're not making any progress on this immediately. --- .../#642 - Buffer Exporting and Logging.md | 0 .../ConEmu-logging-settings.png | Bin .../PuTTY-logging-settings.png | Bin .../SecureCRT-logging-settings.png | Bin .../securecrt-context-menu.png | Bin 5 files changed, 0 insertions(+), 0 deletions(-) rename doc/specs/{ => drafts}/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md (100%) rename doc/specs/{ => drafts}/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png (100%) rename doc/specs/{ => drafts}/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png (100%) rename doc/specs/{ => drafts}/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png (100%) rename doc/specs/{ => drafts}/#642 - Buffer Exporting and Logging/securecrt-context-menu.png (100%) diff --git a/doc/specs/#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 similarity index 100% rename from doc/specs/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md rename to doc/specs/drafts/#642 - Buffer Exporting and Logging/#642 - Buffer Exporting and Logging.md diff --git a/doc/specs/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png b/doc/specs/drafts/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png similarity index 100% rename from doc/specs/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png rename to doc/specs/drafts/#642 - Buffer Exporting and Logging/ConEmu-logging-settings.png diff --git a/doc/specs/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png b/doc/specs/drafts/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png similarity index 100% rename from doc/specs/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png rename to doc/specs/drafts/#642 - Buffer Exporting and Logging/PuTTY-logging-settings.png diff --git a/doc/specs/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png b/doc/specs/drafts/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png similarity index 100% rename from doc/specs/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png rename to doc/specs/drafts/#642 - Buffer Exporting and Logging/SecureCRT-logging-settings.png diff --git a/doc/specs/#642 - Buffer Exporting and Logging/securecrt-context-menu.png b/doc/specs/drafts/#642 - Buffer Exporting and Logging/securecrt-context-menu.png similarity index 100% rename from doc/specs/#642 - Buffer Exporting and Logging/securecrt-context-menu.png rename to doc/specs/drafts/#642 - Buffer Exporting and Logging/securecrt-context-menu.png From 457e3c47e61f6252aa03acecc49db319b2e5b2ac Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Mon, 12 Dec 2022 16:57:52 -0600 Subject: [PATCH 4/5] many typos --- .../#642 - Buffer Exporting and Logging.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) 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 3723610d03e..a8912fb3ea0 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 @@ -206,9 +206,9 @@ where that's a cross-process hop. Instead, we'll want the `ControlCore` / When do we decide to actually log? Take for example typing in a `pwsh` or `bash` prompt. Imagine the user types -asdf, then hits -BkspBksp, such that the prompt is just `as`. What should -the log contain? `asdf^h ^h^h ^h`[[1]](#footnote-1)? `as`? +what, then hits +BkspBksp, such that the prompt is just `wh`. What should +the log contain? `what^h ^h^h ^h`[[1]](#footnote-1)? `wh`? My worry with logging the backspaces is that conpty is sometimes a bit noisier than it needs to be with using `^H` as a cursor positioning sequence. Should we @@ -250,7 +250,7 @@ When logging, it's expected there will be a measurable performance hit. We can try to mitigate this by only writing to the file on a background thread, separate from the connection or rendering thread. Since auto-logging will only take place in the content process, we're not worried about the file writing -occuring on the UI thread. +occurring on the UI thread. @@ -308,7 +308,7 @@ lop-level checkbox could be its own PR, following from [#11062]. - What format do we want? `yyyy-mm-dd`? `%Y-%m-%D`? `&Y-&m-&D`? `${year}-${month}-${day}`? - What are all the variables we want? - Year, month, day, hour, minute - those are easy - - `WT_SESSION`, for a uuid for eash session maybe? + - `WT_SESSION`, for a uuid for each session maybe? - Profile name perhaps? Commandline? * [ ] more... @@ -343,7 +343,7 @@ lop-level checkbox could be its own PR, following from [#11062]. currently logging to a file. I don't believe PuTTY displays any sort of indicator. SecureCRT only displays a checkbox within the context menus of the application itself. - ![securecrt context menu](securecrt-context-menu.png) + ![SecureCRT context menu](SecureCRT-context-menu.png) Maybe when logging to a file, we could replace the "Export Text" context menu entry with "Stop Logging" @@ -363,15 +363,15 @@ ConEmu Logging documentation: https://conemu.github.io/en/AnsiLogFiles.html ### Footnotes -
    [1]: Remember that `^H` is non-desructive, so the -sequence `asdf^h ^h^h ^h` is can be read as: - * print "asdf" +[1]: Remember that `^H` is non-destructive, so the +sequence `what^h ^h^h ^h` is can be read as: + * print "what" * move the cursor back one - * print a space (overwriting 'f') - * move the cursor back one (now it's on the space where 'f' was) + * print a space (overwriting 't') + * move the cursor back one (now it's on the space where 't' was) * move the cursor back one - * print a space (overwriting 'd') - * move the cursor back one (now it's on the space where 'd' was) + * print a space (overwriting 'a') + * move the cursor back one (now it's on the space where 'a' was) [#642]: https://github.com/microsoft/terminal/issues/642 [#5000]: https://github.com/microsoft/terminal/issues/5000 From c9ec26615cfc7564da6bbfe26a92970e46384988 Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Tue, 13 Dec 2022 10:32:04 -0600 Subject: [PATCH 5/5] the bane of my existence --- .../#642 - Buffer Exporting and Logging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a8912fb3ea0..5e66e762c87 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 @@ -52,7 +52,7 @@ on the time & date of the session, or based on the session name. - similar to **B**, but allowing for declaring the path to a file rather than prompting at runtime. * **Story D**: The user can choose to append to a file when exporting, rather - than overwritting. + than overwriting. * **Story E**: The user can specify a format string in the path to the file to export to, which the Terminal will automatically replace with variables like the time, date, and profile name.