Giter VIP home page Giter VIP logo

check-spelling's Introduction

@check-spelling/check-spelling GitHub Action

Overview

Everyone makes typos. This includes people writing documentation and comments, but it also includes programmers naming variables, functions, APIs, classes, and filenames.

Often, programmers will use InitialCapitalization, camelCase, ALL_CAPS, or IDLCase when naming their things. When they do this, it makes it much harder for naive spelling tools to recognize misspellings, and as such, with a really high false-positive rate, people don't tend to enable spell checking at all.

This repository's tools are capable of tolerating all of those variations. Specifically, w understands enough about how programmers name things that it can split the above conventions into word-like things for checking against a dictionary.

GitHub Action

Check Spelling

Quick Setup

Just copy the spell-check-this .github/workflows/spelling.yml into your .github/workflows in your project.

Configuration

See the documentation for Configuration information.

Events

When check-spelling runs and encounters something that isn't ideal, it may output a message including an event code, at the end of the message (unrecognized-spelling).

You should be able to look up the code in https://docs.check-spelling.dev/Event-descriptions. For unrecognized-spelling, that's: https://docs.check-spelling.dev/Event-descriptions#unrecognized-spelling.

Multilingual

As of v0.0.22, you can use non English dictionaries with the help of Hunspell.

Wiki

There is a wiki containing evolving information. It's open to public editing (and is occasionally defaced/spammed).

Sample output

Comment as seen in a PR

github action comment

Comment as seen in a commit

github action annotation

GitHub Action Run log

github action log

Running locally

Yes you can!

Running locally with Act

  1. Install Act
  2. act

⚠️ This may break at times as act may be missing support for newer GitHub Actions features.

Prerelease

I do test development on a prerelease branch.

Features and the behavior of this branch are not guaranteed to be stable as they're under semi-active development.

License

MIT

check-spelling's People

Contributors

jsoref avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

check-spelling's Issues

Allow hiding of PR comments

It would be great if the PR comments can be hidden/marked as resolved.

This would make PR history mire clean and easier to follow.

Affected repository: Microsoft/PowerToys

Note: I don't have the permission to delete the comments.

Add description to allow.txt

Thanks for the project, while using it on updatecli/updatecli.
I faced a situation where I needed to add custom words in the allow.txt and I realize that I would be useful to be able to document them for the future myself.

Strange partial word failures

This is 100% probably me doing something dumb with a rule, but I'm quite confused at this point. In this PR I removed a catch-all regex that was introduced, and now I'm getting odd partial word failures that aren't showing up in the PR itself:

mondoohq/cnspec#341

Any idea why these funky partial words are getting added? Apologies in advance if this is something super 🤦

occurring 'non-alpha-in-dictionary' warning for comments in expect.txt

Hello, thank you for developing good tools like this!

I have trouble adding comments in setting expect.txt.
I read below about comment in expect.txt.

comments in expect
You can use # followed by text to add a comment at the end of a line. Note that some automatic pruning may not properly handle this.
https://github.com/check-spelling/check-spelling/wiki/Configuration#comments-in-expect

But now I see warning 'non-alpha-in-dictionary' for comments in expect.txt.
I guess it is occurred by below codes and it will get better to fix regular expression.

check_dictionary() {
file="$1"
expected_chars="[a-zA-Z']"
unexpected_chars="[^a-zA-Z']"
(perl -pi -e '
chomp;
my $messy = 0;
my $orig = $_;
if (s/\n|\r|\x0b|\f|\x85|\x2028|\x2029/a/g) {
$messy = 1;
}
if ('"/^${expected_chars}*(${unexpected_chars}+)/"') {
print STDERR "$ARGV: line $., columns $-[1]-$+[1], Warning - ignoring entry because it contains non alpha characters (non-alpha-in-dictionary)\n";
$_ = "";

I think changing below fix this,

unexpected_chars="[^a-zA-Z']"
to
unexpected_chars="[^a-zA-Z'#]"

and

/^${expected_chars}*(${unexpected_chars}+)/
to
/^${expected_chars}+(${unexpected_chars}+)/

Best Regards,

Review input 'GITHUB_TOKEN'

Since that input GITHUB_TOKEN default value is github.token , there's no need to make it required.

Important: An action can access the GITHUB_TOKEN through the github.token context even if the workflow does not explicitly pass the GITHUB_TOKEN to the action. As a good security practice, you should always make sure that actions only have the minimum access they require by limiting the permissions granted to the GITHUB_TOKEN. For more information, see "Permissions for the GITHUB_TOKEN."

source: Using the GITHUB_TOKEN in a workflow


Please, consider changing it's name to token or repo-token, as seen in actions/setup-python and actions/labeler, because it's functionality are similar, thus helping create a standard across the actions available in the GitHub Marketplace - Actions.

Error: The operation was canceled.

I'm encountering a strange error that I am currently unable to dissect. Here's the action log from our GitHub workflow run:

Tue, 11 Jul 2023 10:57:33 GMT Run Lombiq/GitHub-Actions/.github/actions/spelling@dev
Tue, 11 Jul 2023 10:57:33 GMT Run "/home/runner/work/_actions/Lombiq/GitHub-Actions/dev/.github/actions/spelling" >> $Env:GITHUB_PATH
Tue, 11 Jul 2023 10:57:34 GMT Run Set-GitHubOutput -Key 'configuration-path-exists' -Value (Test-Path (Join-Path "$Env:GITHUB_WORKSPACE" '.github/actions/spelling'))
Tue, 11 Jul 2023 10:57:36 GMT Run $targetPath = Join-Path "$Env:GITHUB_WORKSPACE" '.github/actions/spelling' 'advice.md'
Tue, 11 Jul 2023 10:57:37 GMT Run $mergeParameters = @{
Tue, 11 Jul 2023 10:57:38 GMT Run $mergeParameters = @{
Tue, 11 Jul 2023 10:57:39 GMT Run $mergeParameters = @{
Tue, 11 Jul 2023 10:57:41 GMT Run $defaultPrefixes = @{
Tue, 11 Jul 2023 10:57:42 GMT Run $defaultDictionaries = ConvertFrom-MultiLineStringToStringArray -Lines 'cspell:filetypes/filetypes.txt
Tue, 11 Jul 2023 10:57:43 GMT Run check-spelling/check-spelling@d7cd2973c513e84354f9d6cf50a6417a628a78ce
Tue, 11 Jul 2023 10:57:43 GMT Run stdbuf -i0 -o0 -e0 "/home/runner/work/_actions/check-spelling/check-spelling/d7cd2973c513e84354f9d6cf50a6417a628a78ce/unknown-words.sh"
Tue, 11 Jul 2023 10:57:44 GMT Found ok status for version 0.0.21: 'OK'
Tue, 11 Jul 2023 10:57:45 GMT Retrieving expect from .github/actions/spelling/expect/redacted.txt
Tue, 11 Jul 2023 10:57:45 GMT .github/actions/spelling/expect/powerbi.txt
Tue, 11 Jul 2023 10:57:45 GMT Retrieving excludes from .github/actions/spelling/excludes.txt
Tue, 11 Jul 2023 10:57:45 GMT Downloaded https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-20200211/dict.txt (to /home/runner/work/_actions/check-spelling/check-spelling/d7cd2973c513e84354f9d6cf50a6417a628a78ce/words)
Tue, 11 Jul 2023 10:57:45 GMT (...Extra dictionaries...)
Tue, 11 Jul 2023 10:57:47 GMT (...Check extra dictionaries...)
Tue, 11 Jul 2023 10:57:52 GMT Retrieving allow from .github/actions/spelling/allow.txt
Tue, 11 Jul 2023 10:57:52 GMT Retrieving line_forbidden from .github/actions/spelling/line_forbidden.patterns
Tue, 11 Jul 2023 10:57:52 GMT Retrieving patterns from .github/actions/spelling/patterns.txt
Tue, 11 Jul 2023 10:57:52 GMT Retrieving advice from .github/actions/spelling/advice.md
Tue, 11 Jul 2023 10:57:52 GMT Checking spelling...
Tue, 11 Jul 2023 10:57:52 GMT (...Spell check files...)
Tue, 11 Jul 2023 10:57:52 GMT Checking 531 files
Tue, 11 Jul 2023 10:57:52 GMT (...Spell check...)
Tue, 11 Jul 2023 10:59:46 GMT Error: The operation was canceled.

No errors are logged.

Please provide some guidance on how to investigate this problem at this stage.

Replace `github.action_path` with `env.GITHUB_ACTION_PATH`

Due to the bug of GitHub Action Runner (actions/runner#716), github.action_path context value is not evaluated into valid path in containers on self-hosted runners. The corresponding environment variable GITHUB_ACTION_PATH always contains valid path even actions running on self-hosted runners, so a PR replaces github.action_path context into GITHUB_ACTION_PATH environment variable should help to fix that issues

Reduce configuration burden

Check Spelling was recently onboarded to github.com/aws/karpenter. This a great addition, but it comes with a concern of complexity and maintainability. The PR includes 622 lines of code to enable the checker: https://github.com/aws/karpenter/pull/1057/files. Ideally it would be ~100 lines of code to onboard.

In general, I'd like to be able to onboard to check spelling w/ something as simple as:

  • a wide set of defaults that don't need to be checked in and are owned by the check-spelling code
  • a configurable allow list of words (to override defaults as necessary for my project)
  • a configurable block list of words (to override defaults as necessary for my project)
  • a simple, well defaulted GH step to both run on pull requests and add comments (included in my ci.yaml workflow)

This could potentially look like:

.github/workflows/spelling.yml
.github/workflows/spelling/allow.txt
.github/workflows/spelling/reject.txt

I'd also prefer to not include the README in my .workflows folder, and instead rely on going to https://github.com/check-spelling/check-spelling.

Khaled

elif [ $(jq length $pull_request_json) -gt 0 ]; then
(
open_pr_number=$(jq -r '.[0].number' $pull_request_json)
echo "Found [open PR #$open_pr_number]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/$open_pr_number) - check-spelling should run there."
echo
echo '::warning ::WARNING: This workflow is intentionally terminating early with a success code -- it has not checked for misspellings.'
echo '::warning ::You should treat this workflow run as if it were SKIPPED state and instead look for a `pull_request_target` workflow for `check-spelling` in the PR.'

Disable bot comments on PR

It would be nice if there is a flag to disable the bot from commenting on a PR. IMO the bot comments are redundant, since the information can be accessed from the logs directly.

If you are willing to accept this feature request, then i am more than happy to implement it.

How does one ignore the I prefix when check spelling

It is a convention in some programming languages to prefix an interface with I, like IServiceProvider. Today spell check does not recognize such naming convention and thinks IService is an unknown word. The patterns.txt does not work here because we want to also detect spelling problems if Service is misspelled.

Allow cascading (merged) configuration

To aid DRY when check-spelling is used in multiple repositories of an organization with the goal of having pieces of the configuration common and in one place, I'd like to propose the ability to cascade (merge) configuration files.

This already seems to be possible for allow.txt. However, you need to copy the excludes.txt and patterns.txt files to each consumer project, AFAIK it's not possible to use them from something like a reusable workflow but extend on top of them.

Related: #41

Show position of misspelling

It would be a nice feature to have a table/list in which file/line the misspelling is found.

I suggest to hide it in summary tag. 😉

Add a pattern to exclude URL's

I'm trying to add a pattern to exclude URL's addresses from spell checking, but with no success.

# URL address
(https?|ftp)://(-\.)?([^\s/?\.#-]+\.?)+(/[^\s]*)?

In my opinion, this pattern should exist by default.

Spell check this regular expression check is too strict

I'm writing a reusable workflow, and trying to utilize the config parameter to create a reusable collection of files (excludes.txt, patterns.txt). I could not make it work with github.action_path, is there a way to use github.action_path?

I also tried to set the config parameter to multiple different folders, and only folders starting with .github are working for me. How does this parameter work?

Using v0.0.20

Getting "cp: cannot create regular file '.git/': Not a directory" Error

@jsoref - I have configured the spell-checker as follows:

on: [pull_request]
name: Check spelling
jobs:
  spellChecker:
    runs-on: ubuntu-latest
    steps:
      - name: Check spelling
        uses: check-spelling/[email protected]
      - uses: actions/[email protected]
        with:
          fetch-depth: 2
      - uses: ./
        with:
          bucket: .github/actions
          project: spelling
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

I am getting the following error.

cp: cannot create regular file '.git/': Not a directory

How can I get this resolved?

Improve Readme

From reading the readme, there are things still not clear. Would be good to specify:

  • Required variables
  • example usage, in various cases (when using GitHub, a local folder, etc)
  • the minimum required files. right now is really unclear all the files that you need to setup to get the action going.

It also would be nice if the action had defaults for all, and you didn't need to add any file to get started, and only add the files when you need to customize.

How to create a reusable check-spelling action complete with configuration files

I'm trying to create a wrapper to check-spelling/check-spelling , with the intention of simplifying the inputs and outputs, while also providing a set of words valid in the Valispace software context.

It resides in valispace/actions/check-spelling, along with the Configuration: Files.

The main workflow has :

- uses: valispace/actions/check-spelling@master
  with:
    event_aliases: '{ "schedule": "push" }'
    only_check_changed_files: '0'

The action is :

runs:
  using: composite
  steps:
    - id: spelling
      uses: check-spelling/[email protected]
      with:
        event_aliases: '${{ inputs.event_aliases }}'
        only_check_changed_files: '${{ inputs.only_check_changed_files }}'
        post_comment: '0'
        config: '.'
        extra_dictionaries:
          cspell:en_GB/src/wordsEnGb.txt
          cspell:en_GB/src/additional_words.txt
          cspell:en_US/src/en_US.txt
          cspell:en_US/src/additional_words.txt
          cspell:en_US/src/contractions-and-possessives.txt
          cspell:en_US/src/hyphenated-words.txt
          cspell:pt_PT/Portuguese-European.txt
          cspell:software-terms/src/software-terms.txt
          cspell:software-terms/src/software-tools.txt
          cspell:software-terms/src/network-protocols.txt
          cspell:software-terms/src/network-os.txt
          cspell:cryptocurrencies/cryptocurrencies.txt
          cspell:public-licenses/src/generated/public-licenses.txt
          cspell:public-licenses/src/additional-licenses.txt
          cspell:lorem-ipsum/dictionary.txt
          cspell:mnemonics/src/mnemonics.txt
          cspell:companies/src/companies.txt
          cspell:aws/aws.txt
          cspell:docker/src/docker-words.txt
          cspell:bash/bash-words.txt
          cspell:fullstack/fullstack.txt
          cspell:django/django.txt
          cspell:django/requirements.txt
          cspell:node/additional_words.txt
          cspell:node/node.txt
          cspell:node/src/node-old.txt
          cspell:npm/npm.txt
          cspell:python/src/python/python.txt
          cspell:python/src/python/python-lib.txt
          cspell:python/src/common/extra.txt
          cspell:python/src/additional_words.txt
          cspell:typescript/typescript.txt
          cspell:html/html.txt
          cspell:html-symbol-entities/entities.txt
          cspell:css/css.txt
          cspell:fonts/fonts.txt
          cspell:filetypes/filetypes.txt

This configuration does not read the Configuration: Files!

I've tried in the valispace/actions/check-spelling action :

  • changing setting config to './check-spelling'
  • replacing setting config with just spell_check_this: 'valispace/actions/check-spelling@master'
  • create symbolic links from valispace/actions/check-spelling/.github/actions/spelling to valispace/actions/check-spelling for the Configuration: Files

None of this worked.

How can I make this work? 🧐


👉 In logs it seems that check-spelling/check-spelling is only capturing valispace/actions from setting spell_check_this: 'valispace/actions/check-spelling@master'.

spelling

for a spelling error at a preview to submit legacy projects to make

Content masked by `patterns.txt` shouldn't count to minified ratio

This Markdown file, a Readme, has a long line at the top (containing NuGet shields; this needs to be one line as enforced by MD linting). check-spelling (v0.0.21) ignores this file with the following warning:

Skipping src/Modules/Lombiq.Hosting.Tenants/Readme.md because average line width (1047.33333333333) exceeds the threshold (1000). (minified-file)

However, it's not a minified file and should rather be checked.

So, I'd suggest one or more of the following options:

  • If a line is ignored by patterns.txt, then that ignore also takes effect for this modification check. I.e. if I ignore the long line, the rest of the file should be checked still.
  • Exclude .md files from the minification check.
  • Provide a more granular configuration instead of just blanket disable_checks: minified-file, like a pattern for file extensions to be excluded from this check.

Error: jq: error (at /tmp/tmp.cGzaIQjE6g.json:4): Cannot index string with string "user"

With release 0.0.21 I'm getting Error: jq: error (at /tmp/tmp.cGzaIQjE6g.json:4): Cannot index string with string "user".

There's just an annotation in job summary, because the step outcome is success.

Here's the step log :

Run check-spelling/[email protected]
  with:
    event_aliases: {"workflow_call":"push"}
    config: .github/actions/check-spelling
    only_check_changed_files: 0
    post_comment: 0
    extra_dictionaries: cspell:en_GB/src/wordsEnGb.txt cspell:en_GB/src/additional_words.txt cspell:en_US/src/en_US.txt cspell:en_US/src/additional_words.txt cspell:en_US/src/contractions-and-possessives.txt cspell:en_US/src/hyphenated-words.txt cspell:pt_PT/Portuguese-European.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/network-os.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:public-licenses/src/additional-licenses.txt cspell:lorem-ipsum/dictionary.txt cspell:mnemonics/src/mnemonics.txt cspell:companies/src/companies.txt cspell:aws/aws.txt cspell:docker/src/docker-words.txt cspell:bash/bash-words.txt cspell:fullstack/fullstack.txt cspell:django/django.txt cspell:django/requirements.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:python/src/python/python.txt cspell:python/src/python/python-lib.txt cspell:python/src/common/extra.txt cspell:python/src/additional_words.txt cspell:typescript/typescript.txt cspell:html/html.txt cspell:html-symbol-entities/entities.txt cspell:css/css.txt cspell:fonts/fonts.txt cspell:filetypes/filetypes.txt
    GITHUB_TOKEN: ***
    experimental_path: .
    dictionary_url: https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-$DICTIONARY_VERSION/dict.txt
    dictionary_version: 20200211
    experimental_apply_changes_via_bot: 0
    experimental_parallel_jobs: 2
    dictionary_source_prefixes: {"cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20220816/dictionaries/"}
    check_extra_dictionaries: cspell:ada/ada.txt cspell:aws/aws.txt cspell:bash/bash-words.txt cspell:clojure/src/clojure.txt cspell:companies/src/companies.txt cspell:cpp/src/compiler-clang-attributes.txt cspell:cpp/src/compiler-gcc.txt cspell:cpp/src/compiler-msvc.txt cspell:cpp/src/cpp.txt cspell:cpp/src/ecosystem.txt cspell:cpp/src/lang-jargon.txt cspell:cpp/src/lang-keywords.txt cspell:cpp/src/people.txt cspell:cpp/src/stdlib-c.txt cspell:cpp/src/stdlib-cerrno.txt cspell:cpp/src/stdlib-cmath.txt cspell:cpp/src/stdlib-cpp.txt cspell:cpp/src/template-strings.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:csharp/csharp.txt cspell:css/css.txt cspell:dart/src/dart.txt cspell:django/django.txt cspell:django/requirements.txt cspell:docker/src/docker-words.txt cspell:dotnet/dotnet.txt cspell:elixir/elixir.txt cspell:filetypes/filetypes.txt cspell:fonts/fonts.txt cspell:fullstack/fullstack.txt cspell:golang/go.txt cspell:haskell/haskell.txt cspell:html-symbol-entities/entities.txt cspell:html/html.txt cspell:java/java.txt cspell:latex/latex.txt cspell:latex/samples/sample-words.txt cspell:lorem-ipsum/dictionary.txt cspell:lua/lua.txt cspell:mnemonics/src/mnemonics.txt cspell:monkeyc/src/monkeyc_keywords.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:php/php.txt cspell:powershell/powershell.txt cspell:public-licenses/src/additional-licenses.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:python/src/additional_words.txt cspell:python/src/common/extra.txt cspell:python/src/python/python-lib.txt cspell:python/src/python/python.txt cspell:r/src/r.txt cspell:ruby/ruby.txt cspell:rust/rust.txt cspell:scala/scala.txt cspell:software-terms/src/network-os.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:sql/src/sql.txt cspell:sql/src/tsql.txt cspell:swift/src/swift.txt cspell:typescript/typescript.txt cspell:win32/src/win32.txt
    extra_dictionary_limit: 5
    shortest_word: 3
    largest_file: 1048576
    unknown_word_limit: 5
    warnings: bad-regex,binary-file,deprecated-feature,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration
    notices: candidate-pattern
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.9.16/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib
Run stdbuf -i0 -o0 -e0 "/home/runner/work/_actions/check-spelling/check-spelling/v0.0.21/unknown-words.sh"
  stdbuf -i0 -o0 -e0 "/home/runner/work/_actions/check-spelling/check-spelling/v0.0.21/unknown-words.sh"
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.9.16/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib
    INPUTS: {
    "event_aliases": "{\"workflow_call\":\"push\"}",
    "config": ".github/actions/check-spelling",
    "only_check_changed_files": "0",
    "post_comment": "0",
    "extra_dictionaries": "cspell:en_GB/src/wordsEnGb.txt cspell:en_GB/src/additional_words.txt cspell:en_US/src/en_US.txt cspell:en_US/src/additional_words.txt cspell:en_US/src/contractions-and-possessives.txt cspell:en_US/src/hyphenated-words.txt cspell:pt_PT/Portuguese-European.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/network-os.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:public-licenses/src/additional-licenses.txt cspell:lorem-ipsum/dictionary.txt cspell:mnemonics/src/mnemonics.txt cspell:companies/src/companies.txt cspell:aws/aws.txt cspell:docker/src/docker-words.txt cspell:bash/bash-words.txt cspell:fullstack/fullstack.txt cspell:django/django.txt cspell:django/requirements.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:python/src/python/python.txt cspell:python/src/python/python-lib.txt cspell:python/src/common/extra.txt cspell:python/src/additional_words.txt cspell:typescript/typescript.txt cspell:html/html.txt cspell:html-symbol-entities/entities.txt cspell:css/css.txt cspell:fonts/fonts.txt cspell:filetypes/filetypes.txt",
    "GITHUB_TOKEN": "***",
    "bucket": "",
    "project": "",
    "experimental_path": ".",
    "dictionary_url": "https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-$DICTIONARY_VERSION/dict.txt",
    "dictionary_version": "20200211",
    "debug": "",
    "experimental_apply_changes_via_bot": "0",
    "experimental_parallel_jobs": "2",
    "capture_output_unknown_words": "",
    "capture_output_stale_words": "",
    "capture_output_skipped_files": "",
    "dictionary_source_prefixes": "{\"cspell\": \"https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20220816/dictionaries/\"}",
    "check_extra_dictionaries": "cspell:ada/ada.txt cspell:aws/aws.txt cspell:bash/bash-words.txt cspell:clojure/src/clojure.txt cspell:companies/src/companies.txt cspell:cpp/src/compiler-clang-attributes.txt cspell:cpp/src/compiler-gcc.txt cspell:cpp/src/compiler-msvc.txt cspell:cpp/src/cpp.txt cspell:cpp/src/ecosystem.txt cspell:cpp/src/lang-jargon.txt cspell:cpp/src/lang-keywords.txt cspell:cpp/src/people.txt cspell:cpp/src/stdlib-c.txt cspell:cpp/src/stdlib-cerrno.txt cspell:cpp/src/stdlib-cmath.txt cspell:cpp/src/stdlib-cpp.txt cspell:cpp/src/template-strings.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:csharp/csharp.txt cspell:css/css.txt cspell:dart/src/dart.txt cspell:django/django.txt cspell:django/requirements.txt cspell:docker/src/docker-words.txt cspell:dotnet/dotnet.txt cspell:elixir/elixir.txt cspell:filetypes/filetypes.txt cspell:fonts/fonts.txt cspell:fullstack/fullstack.txt cspell:golang/go.txt cspell:haskell/haskell.txt cspell:html-symbol-entities/entities.txt cspell:html/html.txt cspell:java/java.txt cspell:latex/latex.txt cspell:latex/samples/sample-words.txt cspell:lorem-ipsum/dictionary.txt cspell:lua/lua.txt cspell:mnemonics/src/mnemonics.txt cspell:monkeyc/src/monkeyc_keywords.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:php/php.txt cspell:powershell/powershell.txt cspell:public-licenses/src/additional-licenses.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:python/src/additional_words.txt cspell:python/src/common/extra.txt cspell:python/src/python/python-lib.txt cspell:python/src/python/python.txt cspell:r/src/r.txt cspell:ruby/ruby.txt cspell:rust/rust.txt cspell:scala/scala.txt cspell:software-terms/src/network-os.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:sql/src/sql.txt cspell:sql/src/tsql.txt cspell:swift/src/swift.txt cspell:typescript/typescript.txt cspell:win32/src/win32.txt",
    "extra_dictionary_limit": "5",
    "shortest_word": "3",
    "longest_word": "",
    "experimental_commit_note": "",
    "suppress_push_for_open_pull_request": "",
    "report_title_suffix": "",
    "custom_task": "",
    "internal_state_directory": "",
    "check_file_names": "",
    "check_commit_messages": "",
    "anonymize_secpoll_source": "",
    "ignore_security_advisory": "",
    "largest_file": "1048576",
    "unknown_word_limit": "5",
    "warnings": "bad-regex,binary-file,deprecated-feature,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration",
    "notices": "candidate-pattern",
    "quit_without_error": "",
    "spell_check_this": "",
    "ssh_key": "",
    "checkout": "",
    "task": "",
    "disable_checks": "",
    "alternate_engine": "",
    "alternate_engine_key": "",
    "use_sarif": "",
    "use_magic_file": "",
    "caller_container": ""
  }
    DEBUG: 
    spellchecker: /home/runner/work/_actions/check-spelling/check-spelling/v0.0.21
    GH_ACTION_REPOSITORY: check-spelling/check-spelling
    GH_ACTION_REF: v0.0.21
Found ok status for version 0.0.21: 'OK'
Retrieving expect from .github/actions/check-spelling/expect/expect.txt
Retrieving excludes from .github/actions/check-spelling/excludes/excludes.txt
Downloaded https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-20200211/dict.txt (to /home/runner/work/_actions/check-spelling/check-spelling/v0.0.21/words)
(...Extra dictionaries...)
(...Check extra dictionaries...)
Retrieving allow from .github/actions/check-spelling/allow/allow.txt
Retrieving reject from .github/actions/check-spelling/reject/reject.txt
Retrieving line_forbidden from .github/actions/check-spelling/line_forbidden.patterns
Retrieving patterns from .github/actions/check-spelling/patterns/patterns.txt
Retrieving advice from .github/actions/check-spelling/advice.md
Checking spelling...
(...Spell check files...)
Checking 133 files
(...Spell check...)
Warning: backend/valiengine/parser/helpers/alt_grammar.txt:1:1 ... 1, Warning - Skipping `backend/valiengine/parser/helpers/alt_grammar.txt` because average line width (3996) exceeds the threshold (1000). (minified-file)
(...Compare expect with new output...)
(...New output...)
(...No misspellings...)
From https://github.com/valispace/valiengine
 * branch            HEAD       -> FETCH_HEAD

# @check-spelling-bot Report
See the [:open_file_folder: files](351/files/) view or the [:scroll:action log](https://github.com/valispace/valiengine/actions/runs/4376378607/jobs/7658401343#step:5:1)  for details.

No new words with misspellings found

There are currently 122 expected items.

<details><summary>Previously acknowledged words that are now absent
</summary>adamkdean addopts asgiref brpart corsheaders direnv einfo EXPRUNIT flightduration inlinevar ipynb libxmlsec modelist mypackage norecursedirs numprocesses prereleasemetadata prereleasetype prun pypackages regexes sast sonarqube sonarsource styfle svn testpaths typecheck typevar UNITTOEXPR updateonbuild vectorize vectorized viewset xdist xunit 
:arrow_right:
</details>

<details><summary>Some files were automatically ignored</summary>

These sample patterns would exclude them:

^\Qbackend/valiengine/parser/helpers/alt_grammar.txt\E$

You should consider adding them to:

.github/actions/check-spelling/excludes/excludes.txt


File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use `patterns.txt` to exclude portions, add items to the dictionary (e.g. by adding them to `allow.txt`), or fix typos.
</details>

<details><summary>Warnings (1)</summary>

See the [:open_file_folder: files](351/files/) view or the [:scroll:action log](https://github.com/valispace/valiengine/actions/runs/4376378607/jobs/7658401343#step:5:1) for details.

[:information_source: Warnings](https://github.com/check-spelling/check-spelling/wiki/Event-descriptions) | Count
-|-
[:information_source: minified-file](https://github.com/check-spelling/check-spelling/wiki/Event-descriptions#minified-file) | 1

See [:information_source: Event descriptions](https://github.com/check-spelling/check-spelling/wiki/Event-descriptions) for more information.

</details>
Error: jq: error (at /tmp/tmp.cGzaIQjE6g.json:4): Cannot index string with string "user"

Screenshot (26)

Screenshot (27)

Name the files for what they act on

It would be easier to me to keep track of which file does what it the filename included the thing it operated on and what sort of entry it expects"

  • allow -> allow_words
  • reject -> remove_words
  • patterns -> exclude_word_patterns
  • expect -> allow_words
  • excludes -> exclude_file_patterns
  • only -> allow_file_patterns

And, it reads like allow and expect do the same thing.

You might already be doing this, because the action seems to looks for more specific filenames than the ones you advertise, so maybe you only need to update the read-me.

Checkout submodules

Is there an option, or could one be added to checkout submodules too when using the action?

Forbid Word-ish items

I have setup reject.txt and allow.txt as below. I want to identify the words in reject.txt as misspelling, no matter these words are in the dictionary or not.

How do I know if the reject list is being used or not? It seem to me nothing have happened after all.

Reject.txt
e-share
e-Share
E-Share
E-share
eShare
eshare
Eshare

allow.txt
EShare

Check commit messages for typos

Support ignoring multi-line blocks (e.g. code snippets in markdown files)

I'm trying to add in exclusion for backticked code snippets so the contents don't get spell checked.

I've tried both \x60{1,3}[\s\S]+?\x60{1,3} and \[\n.]+?`` and variations thereof, but can't seem to get the action to ignore the snippets.

For example:


Section 4 - Encryption

Here is a sample encrypton function:

def encrypt(message: str):
    # Do the encryption...
    return encrypted_message

The encrypt function takes one parameter...

`suppress_push_for_open_pull_request` triggers warning if there are no open pull requests with `Error: jq: error (at <stdin>:1): Cannot iterate over null (null)`

With release 0.0.21 I'm getting Error: jq: error (at <stdin>:1): Cannot iterate over null (null) , because the repo has no open pull requests.

Here's the step log :

Run check-spelling/[email protected]
  with:
    event_aliases: {"workflow_call":"push"}
    config: .github/actions/check-spelling
    only_check_changed_files: 0
    post_comment: 0
    extra_dictionaries: cspell:en_GB/src/wordsEnGb.txt cspell:en_GB/src/additional_words.txt cspell:en_US/src/en_US.txt cspell:en_US/src/additional_words.txt cspell:en_US/src/contractions-and-possessives.txt cspell:en_US/src/hyphenated-words.txt cspell:pt_PT/Portuguese-European.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/network-os.txt cspell:cryptocu>rrencies/cryptocurrencies.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:public-licenses/src/additional-licenses.txt cspell:lorem-ipsum/dictionary.txt cspell:mnemonics/src/mnemonics.txt cspell:companies/src/companies.txt cspell:aws/aws.txt cspell:docker/src/docker-words.txt cspell:bash/bash-words.txt cspell:fullstack/fullstack.txt cspell:django/django.txt cspell:django/requirements.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:python/src/python/python.txt cspell:python/src/python/python-lib.txt cspell:python/src/common/extra.txt cspell:python/src/additional_words.txt cspell:typescript/typescript.txt cspell:html/html.txt cspell:html-symbol-entities/entities.txt cspell:css/css.txt cspell:fonts/fonts.txt cspell:filetypes/filetypes.txt
    GITHUB_TOKEN: ***
    experimental_path: .
    dictionary_url: https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-$DICTIONARY_VERSION/dict.txt
    dictionary_version: 20200211
    experimental_apply_changes_via_bot: 0
    experimental_parallel_jobs: 2
    dictionary_source_prefixes: {"cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20220816/dictionaries/"}
    check_extra_dictionaries: cspell:ada/ada.txt cspell:aws/aws.txt cspell:bash/bash-words.txt cspell:clojure/src/clojure.txt cspell:companies/src/companies.txt cspell:cpp/src/compiler-clang-attributes.txt cspell:cpp/src/compiler-gcc.txt cspell:cpp/src/compiler-msvc.txt cspell:cpp/src/cpp.txt cspell:cpp/src/ecosystem.txt cspell:cpp/src/lang-jargon.txt cspell:cpp/src/lang-keywords.txt cspell:cpp/src/people.txt cspell:cpp/src/stdlib-c.txt cspell:cpp/src/stdlib-cerrno.txt cspell:cpp/src/stdlib-cmath.txt cspell:cpp/src/stdlib-cpp.txt cspell:cpp/src/template-strings.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:csharp/csharp.txt cspell:css/css.txt cspell:dart/src/dart.txt cspell:django/django.txt cspell:django/requirements.txt cspell:docker/src/docker-words.txt cspell:dotnet/dotnet.txt cspell:elixir/elixir.txt cspell:filetypes/filetypes.txt cspell:fonts/fonts.txt cspell:fullstack/fullstack.txt cspell:golang/go.txt cspell:haskell/haskell.txt cspell:html-symbol-entities/entities.txt cspell:html/html.txt cspell:java/java.txt cspell:latex/latex.txt cspell:latex/samples/sample-words.txt cspell:lorem-ipsum/dictionary.txt cspell:lua/lua.txt cspell:mnemonics/src/mnemonics.txt cspell:monkeyc/src/monkeyc_keywords.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:php/php.txt cspell:powershell/powershell.txt cspell:public-licenses/src/additional-licenses.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:python/src/additional_words.txt cspell:python/src/common/extra.txt cspell:python/src/python/python-lib.txt cspell:python/src/python/python.txt cspell:r/src/r.txt cspell:ruby/ruby.txt cspell:rust/rust.txt cspell:scala/scala.txt cspell:software-terms/src/network-os.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:sql/src/sql.txt cspell:sql/src/tsql.txt cspell:swift/src/swift.txt cspell:typescript/typescript.txt cspell:win32/src/win32.txt
    extra_dictionary_limit: 5
    shortest_word: 3
    largest_file: 1048576
    unknown_word_limit: 5
    warnings: bad-regex,binary-file,deprecated-feature,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration
    notices: candidate-pattern
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.9.16/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib
Run stdbuf -i0 -o0 -e0 "/home/runner/work/_actions/check-spelling/check-spelling/v0.0.21/unknown-words.sh"
  stdbuf -i0 -o0 -e0 "/home/runner/work/_actions/check-spelling/check-spelling/v0.0.21/unknown-words.sh"
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.9.16/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.16/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib
    INPUTS: {
    "event_aliases": "{\"workflow_call\":\"push\"}",
    "config": ".github/actions/check-spelling",
    "only_check_changed_files": "0",
    "post_comment": "0",
    "extra_dictionaries": "cspell:en_GB/src/wordsEnGb.txt cspell:en_GB/src/additional_words.txt cspell:en_US/src/en_US.txt cspell:en_US/src/additional_words.txt cspell:en_US/src/contractions-and-possessives.txt cspell:en_US/src/hyphenated-words.txt cspell:pt_PT/Portuguese-European.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/network-os.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:public-licenses/src/additional-licenses.txt cspell:lorem-ipsum/dictionary.txt cspell:mnemonics/src/mnemonics.txt cspell:companies/src/companies.txt cspell:aws/aws.txt cspell:docker/src/docker-words.txt cspell:bash/bash-words.txt cspell:fullstack/fullstack.txt cspell:django/django.txt cspell:django/requirements.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:python/src/python/python.txt cspell:python/src/python/python-lib.txt cspell:python/src/common/extra.txt cspell:python/src/additional_words.txt cspell:typescript/typescript.txt cspell:html/html.txt cspell:html-symbol-entities/entities.txt cspell:css/css.txt cspell:fonts/fonts.txt cspell:filetypes/filetypes.txt",
    "GITHUB_TOKEN": "***",
    "bucket": "",
    "project": "",
    "experimental_path": ".",
    "dictionary_url": "https://raw.githubusercontent.com/check-spelling/check-spelling/dictionary-$DICTIONARY_VERSION/dict.txt",
    "dictionary_version": "20200211",
    "debug": "",
    "experimental_apply_changes_via_bot": "0",
    "experimental_parallel_jobs": "2",
    "capture_output_unknown_words": "",
    "capture_output_stale_words": "",
    "capture_output_skipped_files": "",
    "dictionary_source_prefixes": "{\"cspell\": \"https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20220816/dictionaries/\"}",
    "check_extra_dictionaries": "cspell:ada/ada.txt cspell:aws/aws.txt cspell:bash/bash-words.txt cspell:clojure/src/clojure.txt cspell:companies/src/companies.txt cspell:cpp/src/compiler-clang-attributes.txt cspell:cpp/src/compiler-gcc.txt cspell:cpp/src/compiler-msvc.txt cspell:cpp/src/cpp.txt cspell:cpp/src/ecosystem.txt cspell:cpp/src/lang-jargon.txt cspell:cpp/src/lang-keywords.txt cspell:cpp/src/people.txt cspell:cpp/src/stdlib-c.txt cspell:cpp/src/stdlib-cerrno.txt cspell:cpp/src/stdlib-cmath.txt cspell:cpp/src/stdlib-cpp.txt cspell:cpp/src/template-strings.txt cspell:cryptocurrencies/cryptocurrencies.txt cspell:csharp/csharp.txt cspell:css/css.txt cspell:dart/src/dart.txt cspell:django/django.txt cspell:django/requirements.txt cspell:docker/src/docker-words.txt cspell:dotnet/dotnet.txt cspell:elixir/elixir.txt cspell:filetypes/filetypes.txt cspell:fonts/fonts.txt cspell:fullstack/fullstack.txt cspell:golang/go.txt cspell:haskell/haskell.txt cspell:html-symbol-entities/entities.txt cspell:html/html.txt cspell:java/java.txt cspell:latex/latex.txt cspell:latex/samples/sample-words.txt cspell:lorem-ipsum/dictionary.txt cspell:lua/lua.txt cspell:mnemonics/src/mnemonics.txt cspell:monkeyc/src/monkeyc_keywords.txt cspell:node/additional_words.txt cspell:node/node.txt cspell:node/src/node-old.txt cspell:npm/npm.txt cspell:php/php.txt cspell:powershell/powershell.txt cspell:public-licenses/src/additional-licenses.txt cspell:public-licenses/src/generated/public-licenses.txt cspell:python/src/additional_words.txt cspell:python/src/common/extra.txt cspell:python/src/python/python-lib.txt cspell:python/src/python/python.txt cspell:r/src/r.txt cspell:ruby/ruby.txt cspell:rust/rust.txt cspell:scala/scala.txt cspell:software-terms/src/network-os.txt cspell:software-terms/src/network-protocols.txt cspell:software-terms/src/software-terms.txt cspell:software-terms/src/software-tools.txt cspell:sql/src/sql.txt cspell:sql/src/tsql.txt cspell:swift/src/swift.txt cspell:typescript/typescript.txt cspell:win32/src/win32.txt",
    "extra_dictionary_limit": "5",
    "shortest_word": "3",
    "longest_word": "",
    "experimental_commit_note": "",
    "suppress_push_for_open_pull_request": "",
    "report_title_suffix": "",
    "custom_task": "",
    "internal_state_directory": "",
    "check_file_names": "",
    "check_commit_messages": "",
    "anonymize_secpoll_source": "",
    "ignore_security_advisory": "",
    "largest_file": "1048576",
    "unknown_word_limit": "5",
    "warnings": "bad-regex,binary-file,deprecated-feature,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration",
    "notices": "candidate-pattern",
    "quit_without_error": "",
    "spell_check_this": "",
    "ssh_key": "",
    "checkout": "",
    "task": "",
    "disable_checks": "",
    "alternate_engine": "",
    "alternate_engine_key": "",
    "use_sarif": "",
    "use_magic_file": "",
    "caller_container": ""
  }
    DEBUG: 
    spellchecker: /home/runner/work/_actions/check-spelling/check-spelling/v0.0.21
    GH_ACTION_REPOSITORY: check-spelling/check-spelling
    GH_ACTION_REF: v0.0.21
Found ok status for version 0.0.21: 'OK'
Found ok status for version 0.0.21: 'OK'
(...Retrieving open pull requests...)
Error: jq: error (at <stdin>:1): Cannot iterate over null (null)
(...Considering ...)

image

`\n` seems to be interpreted as newline, and words containing it cause error

Version: 0.0.21, commit d7cd297

I've just added some documentation to one of our projects which contains these lines:

e.g. _%AppData%\npm\etc\npmrc_.
rmdir -r "$env:ProgramFiles\nodejs"

After that, the check-spelling action started to complain about odejs and pmrc being unrecognized words. Looks very much like the remainders of the lines above after splitting! Here's a link to the failing GHA run.

I would categorize this as a bug. Is there a way to work around this?

PR comments don't always get collapsed if spelling errors are fixed

Based on what I've seen Check Spelling doing, and #23 I'd expect the comments under a PR to get minimized like this, if in a later commit the spelling errors were corrected:

image

This sometimes happens but sometimes not. As of yet, I can't correlate it with anything.

E.g. this comment is properly collapsed and was added at 10:48 PM UTC on 4 January. This comment under the same PR isn't, and it was created at 2:37 PM UTC on 5 January. Between these only this commit happened to the config but that shouldn't cause it. Also, this uncollapsed comment was added on 3 January, so it's not related to some changes we made in the config.

Ignore filename in markdown

Hello world
![](/assets/img/content/id/2e65c657cf609fca24893278cdcb2159.gif)
This is a test

![](/assets/img/content/id/2e65c657cf609fcaeqwe78cdcb2159.png)adding text

Adding another image

![](/assets/img/content/id/2e65c657cf609f24432434423b2159.jpg)

![](/assets/img/content/id/2e65c657cf609f24432434423b2159.jpeg)

![](/assets/img/content/id/2e65c657cf609fcaeqwe78cdcb2159.txt)

![A picture containing electronics, calculator, black Description automatically generated](media/7c9033e3be8a85b5c4133d0a9df2ae61.png)

![Graphical user interface, application, website Description automatically
generated](media/36eaa61a3645a4dca5a93e6b35a2497e.png)

![Graphical user interface, application, website Description automatically
generated](media/36gaqe61a3645a4dca5a93e6b35a2497e.png)

![Graphical user interface, application, website Description automatically
generated](/media/36gaqe61a3645a4dca5a93e6b35a2497e.png)

Unrecognized words, please review:

  • cdcb
  • eaa
  • fca
  • fcaeqwe
  • gaqe
  • jpeg

How do I ignore the filename in markdown? I have include regular expression in pattern.txt, do I miss anything?

(\w+\.(?:\w{2,4}))

Different order of words in expect.txt yields different results. Expected?

We're spell-checking a large solution of ours and have a long list of words in expect.txt.

Today I had to add both lintrc and Lintrc to that file because I use those words as placeholders for all *lintrc files.

To my surprise, the following order resulted in an error:

# more
Lintrc
lintrc
# more

I tried to invert the order, and that succeeded:

# more
lintrc
Lintrc
# more

This looks like a bug to me, and a subtle one. What's your take?

Document how to exclude a comment

Things where there's one line where I need a bunch of stuff there that'll trip it up. Something like:
// #nospellcheck my comment etc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.