Skip to content

Latest commit

 

History

History
174 lines (131 loc) · 4.87 KB

CONTRIBUTE.md

File metadata and controls

174 lines (131 loc) · 4.87 KB

vscode-spell-checker

Build & Test Actions Status Integration Tests Actions Status Lint Actions Status

A simple source code spell checker for multiple programming languages.

For the readme on the plugin: README.

Contributions

Building the extension

  1. npm install -g yarn
  2. yarn install
  3. yarn build
  4. Launch vscode: code Spell Checker.code-workspace
  5. Run the extension from vscode:
    1. Debug Tab
    2. Choose Client: Launch Extension (Spell Checker Root) configuration.
    3. F5

* Requires Node >= 14

Debugging the Client

  1. Launch vscode: code packages/client
  2. Run the extension from vscode: F5

Debugging the Server

  1. Launch vscode for the server: code packages/_server
  2. Launch the client as specified above.
  3. Attach to the server: F5 or Debug -> Attach Server

Sometimes the ports get stuck. You can see if they are being used with:

netstat -anp tcp | grep 60048

Use the following command to find the process id (PID):

lsof -i tcp:60048

If anything shows up, then the port is still locked.

Packages

  • client - the actual extension running in VS Code.
  • _server - the extension server that processes spell checker requests
  • _settingsViewer - a webapp that provides a visual interface to the configuration files.
  • _integrationTests - a test suite that launches the extension in VS Code.

Adding configurations

  1. Edit SpellCheckerSettings in server/src/config/cspellConfig.ts to add your configuration field, e.g.
    /**
      * Configuration description.
      * @scope resource
      * @default "option2"
      * @enumDescriptions [
      *  "Option 1 Description",
      *  "Option 2 Description"]
      */
     myEnumConfig?: 'option1' | 'option2';
  2. Edit client/src/settings/configFields.ts by adding a new entry to ConfigFields:
    export const ConfigFields: CSpellUserSettingsFields = {
        ...
        myEnumConfig: 'myEnumConfig'
    }
  3. Run
    yarn run build-package-schema
    yarn workspace server run build
    It'll update the package.json with the new configurations.
  4. Use the configurations with:
    const yourConfigValue = getSettingFromVSConfig(ConfigFields.myEnumConfig, document);

Dictionaries / Word List

Improvements to existing word lists and new word lists are welcome.

All dictionaries have been migrated to cspell-dicts.

Format for Dictionary Word lists

The simplest format is one word per line.

apple
banana
orange
grape
pineapple

For programming languages, a word list might look like this:

ZipArchive::addGlob
ZipArchive::addPattern
ZipArchive::close
ZipArchive::deleteIndex
ZipArchive::deleteName
ZipArchive::extractTo

The word list complier will convert camelCase and snake_case words into a simple word list. This is both for speed and predictability.

ZipArchive::deleteIndex

becomes:

zip
archive
delete
index

Spaces between words in the word list have a special meaning.

New Delhi
New York
Los Angeles

becomes in the compiled dictionary:

new delhi
new
delhi
new york
york
los angeles
los
angeles

Spaces in the compiled dictionary have a special meaning. They tell the suggestion algorithm to suggest: 'newYork', 'new_york', 'new york', etc. for 'newyork'.

Locals

The default language is English: "cSpell.language": "en"

CSpell currently has English locals: en-US and en-GB.

Example words differences: behaviour (en-GB) vs behavior (en-US)