harper/packages/vscode-plugin/package.json
Elijah Potter 073f60638b
Some checks failed
Binaries / harper-ls - Windows-x86_64 (push) Has been cancelled
Build Web / build-web (push) Has been cancelled
Binaries / harper-cli - macOS-aarch64 (push) Has been cancelled
Binaries / harper-cli - Linux-aarch64-GNU (push) Has been cancelled
Binaries / harper-cli - Linux-aarch64-musl (push) Has been cancelled
Binaries / harper-cli - macOS-x86_64 (push) Has been cancelled
Binaries / harper-cli - Linux-x86_64-GNU (push) Has been cancelled
Binaries / harper-cli - Linux-x86_64-musl (push) Has been cancelled
Binaries / harper-cli - Windows-x86_64 (push) Has been cancelled
Binaries / harper-ls - macOS-aarch64 (push) Has been cancelled
Binaries / harper-ls - Linux-aarch64-GNU (push) Has been cancelled
Binaries / harper-ls - Linux-aarch64-musl (push) Has been cancelled
Binaries / harper-ls - macOS-x86_64 (push) Has been cancelled
Binaries / harper-ls - Linux-x86_64-GNU (push) Has been cancelled
Binaries / harper-ls - Linux-x86_64-musl (push) Has been cancelled
Just Checks / just test-vscode (push) Has been cancelled
WordPress Plugin / wp-plugin (push) Has been cancelled
VS Code Plugin / alpine-arm64 (push) Has been cancelled
VS Code Plugin / alpine-x64 (push) Has been cancelled
Chrome Plugin / chrome-plugin (push) Has been cancelled
Just Checks / just check-js (push) Has been cancelled
VS Code Plugin / darwin-x64 (push) Has been cancelled
Just Checks / just check-rust (push) Has been cancelled
Just Checks / just test-chrome-plugin (push) Has been cancelled
Just Checks / just test-firefox-plugin (push) Has been cancelled
Just Checks / just test-harperjs (push) Has been cancelled
Just Checks / just test-obsidian (push) Has been cancelled
Just Checks / just test-rust (push) Has been cancelled
VS Code Plugin / darwin-arm64 (push) Has been cancelled
VS Code Plugin / linux-arm64 (push) Has been cancelled
VS Code Plugin / linux-armhf (push) Has been cancelled
VS Code Plugin / linux-x64 (push) Has been cancelled
VS Code Plugin / win32-arm64 (push) Has been cancelled
VS Code Plugin / win32-x64 (push) Has been cancelled
Release 1.3.0
harper-brill@1.3.0
harper-comments@1.3.0
harper-core@1.3.0
harper-html@1.3.0
harper-ink@1.3.0
harper-jjdescription@1.3.0
harper-literate-haskell@1.3.0
harper-ls@1.3.0
harper-pos-utils@1.3.0
harper-python@1.3.0
harper-stats@1.3.0
harper-tree-sitter@1.3.0
harper-typst@1.3.0

Generated by cargo-workspaces
2025-12-22 14:38:51 -07:00

3170 lines
109 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "harper",
"displayName": "Harper - Grammar / Spell Checking",
"description": "The grammar checker for developers",
"version": "1.3.0",
"private": true,
"author": "Elijah Potter",
"publisher": "elijah-potter",
"license": "Apache-2.0",
"icon": "icon.png",
"galleryBanner": {
"color": "#F2F2F2",
"theme": "light"
},
"repository": {
"type": "git",
"url": "https://github.com/automattic/harper"
},
"bugs": {
"url": "https://github.com/automattic/harper/issues"
},
"engines": {
"vscode": "^1.96.2"
},
"categories": [
"Other"
],
"keywords": [
"grammar",
"spellcheck",
"writing"
],
"activationEvents": [
"onLanguage:c",
"onLanguage:clojure",
"onLanguage:cmake",
"onLanguage:cpp",
"onLanguage:csharp",
"onLanguage:dart",
"onLanguage:git-commit",
"onLanguage:go",
"onLanguage:haskell",
"onLanguage:html",
"onLanguage:ink",
"onLanguage:java",
"onLanguage:javascript",
"onLanguage:javascriptreact",
"onLanguage:jj-commit",
"onLanguage:kotlin",
"onLanguage:literate haskell",
"onLanguage:lua",
"onLanguage:markdown",
"onLanguage:nix",
"onLanguage:org",
"onLanguage:php",
"onLanguage:plaintext",
"onLanguage:python",
"onLanguage:ruby",
"onLanguage:rust",
"onLanguage:scala",
"onLanguage:shellscript",
"onLanguage:solidity",
"onLanguage:swift",
"onLanguage:toml",
"onLanguage:typescript",
"onLanguage:typescriptreact",
"onLanguage:typst"
],
"main": "./build/extension.js",
"contributes": {
"icons": {
"harper-logo": {
"description": "Harper logo",
"default": {
"fontPath": "media/harper.woff",
"fontCharacter": "\\e900"
}
}
},
"commands": [
{
"command": "harper.languageserver.restart",
"title": "Harper: Restart Language Server",
"description": "Restart harper-ls"
}
],
"configuration": {
"type": "object",
"title": "Harper",
"properties": {
"harper.path": {
"scope": "resource",
"type": "string",
"description": "Optional path to a harper-ls executable to use."
},
"harper.codeActions.ForceStable": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Make code actions appear in \"stable\" positions by placing code actions that should always be available, like adding misspelled words in the dictionary, first."
},
"harper.dialect": {
"scope": "resource",
"type": "string",
"enum": [
"British",
"American",
"Canadian",
"Australian"
],
"default": "American",
"description": "Set which dialect of English Harper should expect."
},
"harper.diagnosticSeverity": {
"scope": "resource",
"type": "string",
"enum": [
"error",
"hint",
"information",
"warning"
],
"default": "information",
"description": "How severe do you want diagnostics to appear in the editor?"
},
"harper.excludePatterns": {
"scope": "resource",
"type": "array",
"description": "A set of globs to ignore. If a file matches any of the globs, it will not be linted."
},
"harper.fileDictPath": {
"scope": "resource",
"type": "string",
"description": "Optional path to a file dictionary directory to use."
},
"harper.isolateEnglish": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Only lint English text in documents that are a mixture of English and another language."
},
"harper.markdown.IgnoreLinkTitle": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Skip linting link titles."
},
"harper.maxFileLength": {
"scope": "resource",
"type": "number",
"default": 120000,
"description": "Maximum length of file to be linted (in bytes). If a file is larger than this, it will not be linted."
},
"harper.userDictPath": {
"scope": "resource",
"type": "string",
"description": "Optional path to a user dictionary file to use."
},
"harper.workspaceDictPath": {
"scope": "resource",
"type": "string",
"description": "Optional path to a workspace-local dictionary file to use."
},
"harper.linters.ACoupleMore": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `a couple of more` to `a couple more`."
},
"harper.linters.ALongTime": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `along time` to `a long time`."
},
"harper.linters.APart": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds and corrects common mistakes between 'a part' and 'apart'"
},
"harper.linters.AWhile": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Enforces `awhile` after verbs and `a while` everywhere else."
},
"harper.linters.AdNauseam": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `as nauseam` to `ad nauseam`."
},
"harper.linters.Addicting": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces `addicting` with `addictive` when used as an adjective."
},
"harper.linters.AdjectiveDoubleDegree": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds adjectives that are used as double degrees (e.g. `more prettier`)."
},
"harper.linters.AdjectiveOfA": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for sequences of words of the form `adjective of a`."
},
"harper.linters.Ado": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `adieu` to `ado`."
},
"harper.linters.AfterAWhile": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the missing article in `after while`, forming `after a while`."
},
"harper.linters.AfterLater": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for the word `later` following `after [a period of time]`."
},
"harper.linters.AheadAnd": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `an` to `and` after `ahead`."
},
"harper.linters.AllIntentsAndPurposes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds and corrects common wrong forms of the phrase 'for all intents and purposes' / 'to all intents and purposes'."
},
"harper.linters.AllOfASudden": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Guides this expression toward the standard `all of a sudden`."
},
"harper.linters.AllowTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags erroneous usage of `allow to` without a subject."
},
"harper.linters.Alongside": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the spaced form `along side` with `alongside`."
},
"harper.linters.AlzheimersDisease": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the common misnomer `old-timers' disease`, ensuring the correct medical term `Alzheimers disease` is used."
},
"harper.linters.AmInTheMorning": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds redundant am/pm indicators used together with time periods such as 'in the morning' or 'at night'."
},
"harper.linters.AmazonNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the various products of Amazon.com, make sure to treat them as a proper noun."
},
"harper.linters.Americas": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to North, Central, and South America, make sure to treat them as a proper noun."
},
"harper.linters.AmountsFor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `amounts for` to either `amounts to` or `accounts for`"
},
"harper.linters.AnA": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "A rule that looks for incorrect indefinite articles. For example, `this is an mule` would be flagged as incorrect."
},
"harper.linters.AnAnother": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `an another` and `a another`."
},
"harper.linters.AndIn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the incorrect phrase `an in` to `and in` for proper conjunction usage."
},
"harper.linters.AndTheLike": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects mistakes in `and the like` and `or the like`."
},
"harper.linters.AnotherAn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `another an` to `another`."
},
"harper.linters.AnotherOnes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `another ones`."
},
"harper.linters.AnotherThingComing": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Though `another think coming` is the original phrase, `another thing coming` is now more common."
},
"harper.linters.AnotherThings": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `another things`."
},
"harper.linters.AnotherThinkComing": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Though `another thing coming` is now more common, `another think coming` is the original phrase."
},
"harper.linters.Anybody": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `anybody`."
},
"harper.linters.Anyhow": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `anyhow`."
},
"harper.linters.Anywhere": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `anywhere`."
},
"harper.linters.ApartFrom": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags the misspelling `apart form` and suggests `apart from`."
},
"harper.linters.AppleNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Apple products and services, make sure to treat them as proper nouns."
},
"harper.linters.AsFarAsIKnow": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.AsFarBackAs": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects nonstandard `as early back as` to `as far back as`."
},
"harper.linters.AsIfThough": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects redundant `as if though`."
},
"harper.linters.AsItHappens": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `as it so happens` to `as it happens`."
},
"harper.linters.AsLongAs": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `aslong as` to `as long as`."
},
"harper.linters.AsOfLate": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `as of lately` to `as of late`."
},
"harper.linters.AsSoonAsPossible": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.AskNoPreposition": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Identifies sequences like `ask to us` or `tell to him` and recommends removing the superfluous “to”."
},
"harper.linters.AtFaceValue": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `on face value` to the more usual `at face value`."
},
"harper.linters.AtTheEndOfTheDay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `in the end of the day` to `at the end of the day`."
},
"harper.linters.Australia": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the states of Australia, make sure to treat them as a proper noun."
},
"harper.linters.AvoidAndAlso": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Reduces redundancy by replacing `and also` with `and`."
},
"harper.linters.AvoidCurses": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags offensive language and offers various ways to censor or replace with euphemisms."
},
"harper.linters.AwaitFor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests using either `await` or `wait for` but not both, as they express the same meaning."
},
"harper.linters.AzureNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Azure cloud services, make sure to treat them as proper nouns."
},
"harper.linters.BackInTheDay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This linter flags instances of the nonstandard phrase `back in the days`. The correct, more accepted form is `back in the day`"
},
"harper.linters.Backplane": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `backplane`."
},
"harper.linters.BadRap": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `bed rap` to the proper idiom `bad rap`."
},
"harper.linters.BanTogether": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects and corrects the common error of using `ban together` instead of the idiom `band together`, which means to unite or join forces."
},
"harper.linters.BareInMind": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the phrase `bear in mind` is used correctly instead of `bare in mind`."
},
"harper.linters.BatedBreath": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `baited breath` to the correct `bated breath`."
},
"harper.linters.BeAllowed": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the passive form uses `be allowed` after future negatives."
},
"harper.linters.BeRightBack": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.BeckAndCall": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes `back and call` to `beck and call`."
},
"harper.linters.BeenThere": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the misspelling `bee there` to the proper phrase `been there`."
},
"harper.linters.Beforehand": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "`Beforehand` functions as a fixed adverb meaning in advance; writing it as two words or with a hyphen is nonstandard and can jar readers."
},
"harper.linters.BesideThePoint": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `besides the point` to `beside the point`."
},
"harper.linters.BestOfAllTime": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for nonstandard `of all times` in superlatives instead of singular `time`"
},
"harper.linters.BestRegards": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "In valedictions, `best` expresses your highest regard—avoid the typo `beat regards`."
},
"harper.linters.BlanketStatement": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects common errors in the phrase `blanket statement`."
},
"harper.linters.BoringWords": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "This rule looks for particularly boring or overused words. Using varied language is an easy way to keep a reader's attention."
},
"harper.linters.Bought": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the incorrect past-tense spelling `bough` with `bought` after subject pronouns."
},
"harper.linters.BrandBrandish": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for `brandish` wrongly used when `brand` is intended."
},
"harper.linters.Brutality": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests the more standard and common synonym `brutality`."
},
"harper.linters.BuiltIn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "English convention treats `built-in` as a single, attributive adjective—meaning something integrated from the outset—whereas other forms like `in built` are nonstandard and can feel awkward to readers."
},
"harper.linters.ByAccident": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Incorrect preposition: `by accident` is the idiomatic expression."
},
"harper.linters.ByTheWay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.CanBeSeen": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `can be seem` to the proper phrase `can be seen`."
},
"harper.linters.Canada": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the provinces of Canada, make sure to treat them as a proper noun."
},
"harper.linters.Cant": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests correcting `cant` to `can't`."
},
"harper.linters.CapitalizePersonalPronouns": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Forgetting to capitalize personal pronouns, like \"I\" or \"I'm\" is one of the most common errors. This rule helps with that."
},
"harper.linters.CaseInPoint": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `case and point` to `case in point`."
},
"harper.linters.CaseSensitive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `case-sensitive` is correctly hyphenated."
},
"harper.linters.CautionaryTale": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects confusion between `tale` (story) and `tail` (appendage) in common phrases."
},
"harper.linters.ChampAtTheBit": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `chomp at the bit` to the idiom `champ at the bit`, which has an equestrian origin referring to the way an anxious horse grinds its teeth against the metal part of the bridle."
},
"harper.linters.ChangeTack": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Locates errors in the idioms `to change tack` and `change of tack` to convey the correct meaning of altering one's course or strategy."
},
"harper.linters.ChineseCommunistParty": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the political party, make sure to treat them as a proper noun."
},
"harper.linters.ChockFull": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags common soundalikes of \"chock-full\" and makes sure they're hyphenated."
},
"harper.linters.ClientOrServerSide": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects extraneous apostrophe in `client's side` and `server's side`."
},
"harper.linters.CommaFixes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fix common comma errors such as no space after, erroneous space before, etc., Asian commas instead of English commas, etc."
},
"harper.linters.CompaniesProductsAndTrademarks": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of companies, products, and trademarks."
},
"harper.linters.CompoundNouns": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects compound nouns split by a space and suggests merging them when both parts form a valid noun."
},
"harper.linters.CompoundSubjectI": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Promotes `I` in compound subjects headed by a possessive determiner."
},
"harper.linters.CondenseAllThe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests removing `of` in `all of the` for a more concise phrase."
},
"harper.linters.Confident": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This linter detects instances where the noun `confidant` is incorrectly used in place of the adjective `confident`. `Confidant` refers to a trusted person, whereas `confident` describes certainty or self-assurance. The rule suggests replacing `confidant` with `confident` when used in an adjectival context."
},
"harper.linters.ConfirmThat": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `conform` typos to `confirm`."
},
"harper.linters.Copyright": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `copywrite` to `copyright`. `Copywrite` refers to writing copy, while `copyright` is the legal right to creative works."
},
"harper.linters.CorrectNumberSuffix": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When making quick edits, it is common for authors to change the value of a number without changing its suffix. This rule looks for these cases, for example: `2st`."
},
"harper.linters.Countries": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Countries, make sure to treat it as a proper noun."
},
"harper.linters.CoursingThroughVeins": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "In English idioms, “to course” means to flow rapidly—so avoid the eggcorn `cursing through veins.`"
},
"harper.linters.CriteriaPhenomena": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The words “criteria” and “phenomena” are the plurals of “criterion” and “phenomenon”, respectively. They are often incorrectly used as singular."
},
"harper.linters.CureFor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags `cure against` and prefers the standard `cure for` pairing."
},
"harper.linters.CurrencyPlacement": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The location of currency symbols varies by country. The rule looks for and corrects improper positioning."
},
"harper.linters.DampSquib": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `damp squid` to `damp squib`, ensuring the intended meaning of a failed or underwhelming outcome."
},
"harper.linters.Dashes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Writers often type `--` or `---` expecting their editor to convert them into proper dashes. Replace these sequences with the correct characters: use an en dash () for ranges or connections and an em dash (—) for a break in thought."
},
"harper.linters.DayAndAge": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `day in age` to `day and age`, which properly means the current era or time period."
},
"harper.linters.DayOneNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of Day One and Day One Premium as brand names."
},
"harper.linters.DefiniteArticle": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The name of the word `the` is `definite article`."
},
"harper.linters.DegreesKelvin": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects use of `degrees kelvin` to `kelvins`."
},
"harper.linters.DegreesKelvinSymbol": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects use of `°K` to `K`."
},
"harper.linters.Desktop": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `desktop`."
},
"harper.linters.DespiteOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the misuse of `despite of` and suggests the proper alternatives `despite` or `in spite of`."
},
"harper.linters.Devops": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `devops`."
},
"harper.linters.Didnt": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `dint` to `didn't` after subject pronouns."
},
"harper.linters.DigestiveTract": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `digestive track` to `digestive tract`."
},
"harper.linters.DiscourseMarkers": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags sentences that begin with a discourse marker but omit the required following comma."
},
"harper.linters.Discuss": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Removes unnecessary `about` after `discuss`."
},
"harper.linters.DisjointPrefixes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for words with their prefixes written with a space or hyphen between instead of joined."
},
"harper.linters.DoNotWant": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "In English, negation still requires the complete verb form (“want”), so avoid truncating it to “wan.”"
},
"harper.linters.DoesOrDose": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Tries to correct typos of `dose` to `does`."
},
"harper.linters.DontCan": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `don't can` to `can't` or `cannot`."
},
"harper.linters.DotInitialisms": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures common initialisms (like \"i.e.\") are properly dot-separated."
},
"harper.linters.DoubleClick": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages hyphenating `double-click` and its inflections."
},
"harper.linters.DoubleModal": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Two modal verbs in a row are rarely grammatical; remove one of them."
},
"harper.linters.EachAndEveryOne": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `each and everyone` to `each and every one`."
},
"harper.linters.EggYolk": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `egg yoke`, replacing it with the standard culinary term `egg yolk`."
},
"harper.linters.EllipsisLength": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Make sure you have the correct number of dots in your ellipsis."
},
"harper.linters.ElsePossessive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects missing apostrophes in phrases like `someone elses book` and suggests the correct possessive form `elses`."
},
"harper.linters.EludedTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `eluded to` to `alluded to` in contexts referring to indirect references."
},
"harper.linters.EnMasse": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects variants like `on mass` or `in mass` and suggests `en masse`."
},
"harper.linters.EnRoute": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects variants like `on route` or `in route` and suggests `en route`."
},
"harper.linters.EverEvery": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Tries to correct typos of `every` instead of `ever`."
},
"harper.linters.EverPresent": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the missing hyphen in `ever present` to the compound adjective `ever-present`."
},
"harper.linters.EverSince": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `every since` to `ever since`."
},
"harper.linters.EveryOnceAndAgain": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `every once and again` to `every once in a while` or `once again`."
},
"harper.linters.EveryTime": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `everytime` to `every time`."
},
"harper.linters.Everybody": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `everybody`."
},
"harper.linters.Everyday": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule tries to sort out confusing the adjective `everyday` and the adverb `every day`."
},
"harper.linters.Everyone": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `everyone`."
},
"harper.linters.Everywhere": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `everywhere`."
},
"harper.linters.Excellent": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Provides a stronger word choice by replacing `very good` with `excellent` for clarity and emphasis."
},
"harper.linters.ExpandArgument": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviation `arg` to the full word `argument` for clarity."
},
"harper.linters.ExpandBecause": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the informal abbreviation `cuz` to the full word `because` for formality."
},
"harper.linters.ExpandDependencies": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviation `deps` to the full word `dependencies` for clarity."
},
"harper.linters.ExpandMemoryShorthands": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands memory-related abbreviations (`B`, `kB`, `MB`, `GB`, `TB`, `PB`, `KiB`, `MiB`, `GiB`, `TiB`, `PiB`, etc.) to their full forms (`byte`, `kilobyte`, `megabyte`, `gigabyte`, `terabyte`, `petabyte`, `kibibyte`, `mebibyte`, `gibibyte`, `tebibyte`, `pebibyte`, etc.)."
},
"harper.linters.ExpandMinimum": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviation `min` to the full word `minimum` for clarity."
},
"harper.linters.ExpandStandardInputAndOutput": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviations `stdin`, `stdout`, and `stderr` to the full words `standard input`, etc. for clarity."
},
"harper.linters.ExpandTimeShorthands": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands time-related abbreviations (`hr`, `hrs`, `min`, `mins`, `sec`, `secs`, `ms`, `msec`, `msecs`) to their full forms (`hour`, `hours`, `minute`, `minutes`, `second`, `seconds`, `millisecond`, `milliseconds`)."
},
"harper.linters.ExpandWith": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviation `w/` to the full word `with` for clarity."
},
"harper.linters.ExpandWithout": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands the abbreviation `w/o` to the full word `without` for clarity."
},
"harper.linters.Expat": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the mistake of writing `expat` as two words."
},
"harper.linters.Expatriate": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the misinterpretation of `expatriate`, ensuring the correct term is used for individuals residing abroad."
},
"harper.linters.ExplainLikeImFive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.ExplanationMark": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `explanation mark/point` to `exclamation mark/point`."
},
"harper.linters.ExtendOrExtent": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `extend` to `extent` when the context is a noun."
},
"harper.linters.FaceFirst": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `face first` is correctly hyphenated as `face-first` when used before `into`."
},
"harper.linters.FairBit": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects malapropisms of `a fair bit`."
},
"harper.linters.FarAndFewBetween": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `far and few between` to the standard idiom `few and far between`."
},
"harper.linters.FarBeIt": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags misuse of `far be it` and suggests using `from` when it is followed by `for`"
},
"harper.linters.FascinatedBy": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct prepositions are used with `fascinated` (e.g., `fascinated by` or `fascinated with`)."
},
"harper.linters.FastPaste": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects incorrect usage of `fast paste` or `fast-paste` and suggests `fast-paced` as the correct phrase."
},
"harper.linters.FatalOutcome": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces `fatal outcome` with the more direct term `death` for conciseness."
},
"harper.linters.FeelFell": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects some expressions using `fell` where `feel` is correct."
},
"harper.linters.FetalPosition": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct use of `fetal position`, avoiding confusion with `feeble position`, which is not a standard phrase."
},
"harper.linters.FewUnitsOfTimeAgo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects some expressions using `few` where `a few` is correct."
},
"harper.linters.FillerWords": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Removes filler words."
},
"harper.linters.FindFine": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the common typo where writers write `find` when they mean `fine`."
},
"harper.linters.FirstAidKit": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects when “kid” after “aid”, “starter”, “travel”, or “tool” should be “kit” (a set of supplies)."
},
"harper.linters.FootTheBill": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `flip the bill` to `foot the bill`."
},
"harper.linters.ForALongTime": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Eliminates the incorrect merging in `for along time`."
},
"harper.linters.ForAWhile": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the missing article in `for while`, forming `for a while`."
},
"harper.linters.ForNoun": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the archaic or mistaken `fro` to `for` when followed by a noun."
},
"harper.linters.ForWhatItsWorth": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.ForYourInformation": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.FreePredicate": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Helps swap in `free` when a linking verb is followed by the noun `fee`."
},
"harper.linters.FreeRein": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct use of `free rein`, avoiding confusion with `free reign`, which incorrectly suggests authority rather than freedom of action."
},
"harper.linters.Freezing": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages vivid writing by suggesting `freezing` instead of weaker expressions like `very cold.`"
},
"harper.linters.FriendOfMe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects wrong pronoun usage in constructions like `a friend of me`."
},
"harper.linters.FromTheGetGo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `from the get-go` is correctly hyphenated, preserving the idioms meaning of from the very beginning."
},
"harper.linters.Furthermore": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `furthermore`."
},
"harper.linters.GetRidOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects common misspellings of the idiom `get rid of`."
},
"harper.linters.GildedAge": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "If referring to the period of economic prosperity, the correct term is `Gilded Age`."
},
"harper.linters.GoSoFarAsTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags 'go so far to' when it should be 'go so far as to' to express going beyond expectations"
},
"harper.linters.GoingTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `gong to` to the intended phrase `going to`."
},
"harper.linters.GoogleNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Google products and services, make sure to treat them as proper nouns."
},
"harper.linters.GuineaBissau": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for the correct official name of the African country."
},
"harper.linters.HadOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags the unnecessary use of `of` after `had` and suggests the correct forms."
},
"harper.linters.HalfAnHour": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the eggcorn `half an our` to the accepted `half an hour`."
},
"harper.linters.Haphazard": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `half hazard` to `haphazard`, which properly means lacking organization or being random."
},
"harper.linters.HavePassed": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests `past` for `passed` in case a verb was intended."
},
"harper.linters.HavePronoun": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags questions that begin with `has` followed by a pronoun that requires `have`, such as `Has we …` or `Has I …`, and suggests the correct auxiliary."
},
"harper.linters.HaveTakeALook": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects either `have a look` or `take a look` to the other, depending on the dialect."
},
"harper.linters.Hedging": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags hedging language (e.g. `I would argue that`, `..., so to speak`, `to a certain degree`)."
},
"harper.linters.HelloGreeting": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages greeting someone with `hello` instead of the homophone `halo`."
},
"harper.linters.Henceforth": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `henceforth`."
},
"harper.linters.Hereby": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "`Here by` in some contexts should be `hereby`"
},
"harper.linters.Holidays": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to holidays, make sure to treat them as a proper noun."
},
"harper.linters.HolyWar": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects misspellings of `holy war`."
},
"harper.linters.HomeInOn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `hone in on` to `home in on`."
},
"harper.linters.HopHope": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Handles common errors involving `hop` and `hope`. Ensures `hop` is used correctly in phrases like `hop on a bus` while correcting mistaken uses of `hope` in contexts where `hop` is expected."
},
"harper.linters.HowItLooksLike": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `how ... looks like` to `how ... looks` or `what ... looks like`."
},
"harper.linters.HowTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the omission of `to` in constructions like `how clone / how install` and suggests `how to …`."
},
"harper.linters.However": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `however`."
},
"harper.linters.HumanBeings": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Eliminates the incorrect possessive/plural usage like `human's beings` or `humans beings`."
},
"harper.linters.HumanLife": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `human live` to `human life`."
},
"harper.linters.HungerPang": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `hunger pain` to `hunger pang`."
},
"harper.linters.HyphenateNumberDay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures a hyphen is used in `X-day` when it is part of a compound adjective, such as `4-day work week`."
},
"harper.linters.IAm": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the incorrect spacing in `I a m` to properly form `I am`."
},
"harper.linters.IAmAgreement": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `I are` to `I am`."
},
"harper.linters.IDo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `I does` to `I do`."
},
"harper.linters.IDontKnow": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.IfIRecallCorrectly": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.IfWouldve": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `if I would've done` etc. to `if I had done` etc."
},
"harper.linters.IfYouKnowYouKnow": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.InAWhile": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the missing article in `in while`, forming `in a while`."
},
"harper.linters.InAnyWay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects ungrammatical `in anyway` to `in any way`."
},
"harper.linters.InCaseYouMissedIt": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.InDetail": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects unidiomatic plural `in details` to `in detail`."
},
"harper.linters.InLieuOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the misspelling `in lue of` to `in lieu of`."
},
"harper.linters.InMyHumbleOpinion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.InMyOpinion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.InNeedOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `in need for` to `in need of`."
},
"harper.linters.InOfItself": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects nonstandard `in of itself` to standard `in itself` or `in and of itself`."
},
"harper.linters.InOnTheCards": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects either `in the cards` or `on the cards` to the other, depending on the dialect."
},
"harper.linters.InOneFellSwoop": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `in one foul swoop` to `in one fell swoop`, preserving the phrases original meaning of sudden and complete action."
},
"harper.linters.InRealLife": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.InThe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects and corrects a spacing error where `in the` is mistakenly written as `int he`. Proper spacing is essential for readability and grammatical correctness in common phrases."
},
"harper.linters.InflectedVerbAfterTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for `to verb` where `verb` is not in the infinitive form."
},
"harper.linters.Insensitive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests the more standard and common synonym `insensitive`."
},
"harper.linters.Insofar": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `insofar`."
},
"harper.linters.Instead": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `instead`."
},
"harper.linters.InsteadOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the archaic or mistaken separation `in stead of` to `instead of` in everyday usage."
},
"harper.linters.Insurmountable": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests the more standard and common synonym `insurmountable`."
},
"harper.linters.Intact": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Prevents the erroneous spacing in `in tact`; `intact` is the single correct word."
},
"harper.linters.InterestedIn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct preposition is used with the word `interested` (e.g. `interested in`)."
},
"harper.linters.InvestIn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "`Invest` is traditionally followed by 'in,' not `into.`"
},
"harper.linters.IsKnownFor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Typo: `known` is the correct past participle."
},
"harper.linters.ItCan": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the misspelling `It cam` to the proper phrase `It can`."
},
"harper.linters.ItLooksLikeThat": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `it looks like that` to just `it looks like`."
},
"harper.linters.ItsContraction": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects places where the possessive `its` should be the contraction `it's`, including before verbs/clauses and before proper nouns after opinion verbs."
},
"harper.linters.ItsPossessive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "In English, possessive pronouns never take an apostrophe. Use `its` to show ownership (e.g. “its texture”) and avoid confusing it with `it's`, which always means “it is” or “it has.”"
},
"harper.linters.Itself": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `itself`."
},
"harper.linters.IveGotTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the slip `I've go to` to the idiomatic `I've got to`."
},
"harper.linters.JawDropping": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `jar-dropping` to `jaw-dropping`, ensuring the intended meaning of something that causes amazement."
},
"harper.linters.JealousOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages the standard preposition after `jealous`."
},
"harper.linters.JetpackNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of Jetpack-related terms."
},
"harper.linters.JohnsHopkins": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Recommends the proper spelling `Johns Hopkins`."
},
"harper.linters.JustDeserts": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `just deserts` is used correctly, preserving its meaning of receiving an appropriate outcome for one's actions."
},
"harper.linters.KindOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `kinda of` to `kind of`."
},
"harper.linters.KindRegards": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `kid regards` to `kind regards`."
},
"harper.linters.Koreas": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the nations, make sure to treat them as a proper noun."
},
"harper.linters.Laptop": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `laptop`."
},
"harper.linters.LastButNotLeast": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects common errors in the phrase `last but not least`."
},
"harper.linters.LastDitch": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects wrong variations of the idiomatic adjective `last-ditch`."
},
"harper.linters.LastNight": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags `yesterday night` and suggests the standard phrasing `last night`."
},
"harper.linters.LeftRightHand": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `left hand` and `right hand` are hyphenated when used as adjectives before a noun, such as in `left-hand side` or `right-hand corner`."
},
"harper.linters.LessWorse": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests alternatives to `less/least worse/worst` for more standard, clearer comparisons."
},
"harper.linters.LetAlone": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `let along` to `let alone`."
},
"harper.linters.LetToDo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects extraneous `to` after `let`."
},
"harper.linters.LetsConfusion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "It's often hard to determine where the subject should go with the word `let`. This rule attempts to find common errors with redundancy and contractions that may lead to confusion for readers."
},
"harper.linters.LikeAsIf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects redundant `like as if` to `like` or `as if`."
},
"harper.linters.LikeThePlague": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `like a plague` to `like the plague`."
},
"harper.linters.Likewise": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `likewise`."
},
"harper.linters.LitotesDirectPositive": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Offers direct-positive alternatives when double negatives might feel heavy."
},
"harper.linters.LongSentences": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for run-on sentences, which can make your work harder to grok."
},
"harper.linters.LookingForwardTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule identifies instances where the phrase `looking forward to` is followed by a base form verb instead of the required gerund (verb + `-ing` form)."
},
"harper.linters.LowHangingFruit": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects nonstandard variants of `low-hanging fruit`."
},
"harper.linters.MakeDoWith": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `make due` to `make do` when followed by `with`."
},
"harper.linters.MakeItSeem": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `make it seems` to `make it seem`."
},
"harper.linters.MakeSense": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `make senses` to `make sense`."
},
"harper.linters.Malaysia": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the states of Malaysia and their capitals, make sure to treat them as a proper noun."
},
"harper.linters.ManagerialReins": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `managerial reigns` to the idiomatic `managerial reins`."
},
"harper.linters.MassNouns": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects mass nouns used as countable nouns."
},
"harper.linters.MergeWords": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Accidentally inserting a space inside a word is common. This rule looks for valid words that are split by whitespace."
},
"harper.linters.MetaNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Meta products and services, make sure to treat them as proper nouns."
},
"harper.linters.MicrosoftNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to Microsoft products and services, make sure to treat them as proper nouns."
},
"harper.linters.Middleware": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `middleware`."
},
"harper.linters.MissingPreposition": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Locates potentially missing prepositions."
},
"harper.linters.MissingTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags verbs and adjectives like `need`, `want`, or `ready` that are missing `to` before an infinitive."
},
"harper.linters.Misspell": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `misspell` and its inflected forms are written as a single word."
},
"harper.linters.Misunderstand": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `misunderstand`."
},
"harper.linters.Misunderstood": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `misunderstood`."
},
"harper.linters.Misuse": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `misuse`."
},
"harper.linters.Misused": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `misused`."
},
"harper.linters.MixedBag": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `mixed bad` to `mixed bag`."
},
"harper.linters.ModalBeAdjective": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for `be` missing between a modal verb and adjective."
},
"harper.linters.ModalOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects `of` mistakenly used with `would`, `could`, `should`, etc."
},
"harper.linters.ModalSeem": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects modal verbs followed by `seen` before adjectives and suggests `seem` or `be`."
},
"harper.linters.Months": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects months written with a lowercase first letter."
},
"harper.linters.Monumentous": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Advises using `momentous` or `monumental` instead of `monumentous` for serious usage."
},
"harper.linters.MootPoint": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `mute` to `moot` in the phrase `moot point`."
},
"harper.linters.MoreBetter": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds redundant paring of `more` or `most` with adjectives already in the comparative or superlative form."
},
"harper.linters.MostNumber": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `most number` and `most amount`"
},
"harper.linters.MostOfTheTimes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `a lot of the times` and `most of the times` to use singular `time`."
},
"harper.linters.Multicore": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `multicore`."
},
"harper.linters.Multimedia": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `multimedia`."
},
"harper.linters.MultipleSequentialPronouns": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When editing work to change point of view (i.e. first-person or third-person) it is common to add pronouns while neglecting to remove old ones. This rule catches cases where you have multiple disparate pronouns in sequence."
},
"harper.linters.Multithreading": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `multithreading`."
},
"harper.linters.MyHouse": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the typo `mu house` to `my house`."
},
"harper.linters.Myself": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `myself`."
},
"harper.linters.NailOnTheHead": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces hat/had/hit/hid in the idiom `nail on the head` with `head`."
},
"harper.linters.NationalCapitals": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to national capitals, make sure to treat it as a proper noun."
},
"harper.linters.NeedHelp": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `ned help` to the correct `need help`."
},
"harper.linters.NeedToNoun": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags `need to` when it is immediately followed by a noun, which usually means the infinitive verb is missing."
},
"harper.linters.NerveRacking": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects common misspellings and missing hyphen in `nerve-racking`."
},
"harper.linters.NervousWreck": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests using `nervous wreck` when referring to a person's emotional state."
},
"harper.linters.NeverMind": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.NoFrenchSpaces": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Stops users from accidentally inserting French spaces."
},
"harper.linters.NoMatchFor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "No match for"
},
"harper.linters.NoOxfordComma": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "The Oxford comma is one of the more controversial rules in common use today. Enabling this lint checks that there is no comma before `and`, `or` or `nor` when listing out more than two ideas."
},
"harper.linters.Nobody": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `nobody`."
},
"harper.linters.NominalWants": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures you use the correct `want` / `wants` after a nominal."
},
"harper.linters.Nonetheless": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `nonetheless`."
},
"harper.linters.NotIn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces `no in` with `not in`."
},
"harper.linters.NotTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `no to` to `not to`, ensuring proper negation."
},
"harper.linters.NotablePlaces": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of notable places that are significant regional centers, travel destinations, or have international importance."
},
"harper.linters.Nothing": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `nothing`."
},
"harper.linters.Notwithstanding": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `notwithstanding`."
},
"harper.linters.NounVerbConfusion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Handles common confusions between related nouns and verbs (e.g., 'advice/advise', 'breath/breathe')"
},
"harper.linters.Nowhere": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `nowhere`."
},
"harper.linters.NumberSuffixCapitalization": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "You should never capitalize number suffixes."
},
"harper.linters.OceansAndSeas": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to the world's oceans and seas, ensure they are treated as proper nouns."
},
"harper.linters.OfCourse": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the common mistake `off course` and suggests the correct form `of course`."
},
"harper.linters.OffTheCuff": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `off-the-cuff` is correctly hyphenated."
},
"harper.linters.OhMyGod": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.OldWivesTale": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `old wise tale` to `old wives' tale`, preserving the phrases meaning as an unfounded traditional belief."
},
"harper.linters.OldestInTheBook": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the idiom `oldest X in the books`, which should use singular `book`."
},
"harper.linters.OnFloor": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule identifies incorrect uses of the prepositions `in` or `at` when referring to locations inside a building and recommends using `on the floor` instead."
},
"harper.linters.OnSecondThought": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the nonstandard `on second though` with the common idiom `on second thought` to indicate reconsideration."
},
"harper.linters.OnTheSpurOfTheMoment": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct use of `on the spur of the moment`, avoiding nonstandard variations."
},
"harper.linters.OnTopOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `ontop of` to `on top of`."
},
"harper.linters.OnceInAWhile": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects two common malapropisms of `once in a while`."
},
"harper.linters.OnceOrTwice": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the mistaken phrase `once a twice` and suggests `once or twice`."
},
"harper.linters.OneAndTheSame": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This linter flags instances of the nonstandard phrase `one in the same`. The correct, more accepted form is `one and the same`"
},
"harper.linters.OpenCompounds": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects compound words that should be written as two words."
},
"harper.linters.OpenTheLight": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects using `open` instead of `turn on` or `switch on`"
},
"harper.linters.OperatingSystem": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `operating system` is used correctly instead of `operative system`."
},
"harper.linters.OrthographicConsistency": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures word casing matches the dictionary's canonical orthography."
},
"harper.linters.OughtToBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the mistaken `out to be` and suggests `ought to be`, while ignoring legitimate phrasal-verb uses such as `turn out to be` and `make it out to be`."
},
"harper.linters.OutOfDate": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures that the phrase `out of date` is written with a hyphen as `out-of-date` when used as a compound adjective."
},
"harper.linters.Overall": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `overall`."
},
"harper.linters.Overclocking": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `overclocking`."
},
"harper.linters.Overload": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `overload`."
},
"harper.linters.Overnight": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `overnight`."
},
"harper.linters.OxfordComma": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The Oxford comma is one of the more controversial rules in common use today. Enabling this lint checks that there is a comma before `and`, `or`, or `nor` when listing out more than two ideas."
},
"harper.linters.Oxymorons": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags oxymoronic phrases (e.g. `amateur expert`, `increasingly less`, etc.)."
},
"harper.linters.PartsOfSpeech": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects pluralizing the wrong noun in `part of speech`."
},
"harper.linters.PassersBy": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `passerbys` and `passer-bys` to `passersby` or `passers-by`."
},
"harper.linters.PeaceOfMind": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `piece of mind` to `peace of mind`."
},
"harper.linters.PerSe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects common misspellings of `per se`."
},
"harper.linters.PhrasalVerbAsCompoundNoun": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for phrasal verbs written as compound nouns."
},
"harper.linters.Piggyback": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `piggy bag` to `piggyback`, which is the proper term for riding on someones back or using an existing system."
},
"harper.linters.PiqueInterest": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects incorrect usage of `peak` or `peek` when the intended word is `pique`, as in the phrase `you've peaked my interest`."
},
"harper.linters.PleaseTakeALook": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.PocketCastsNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of Pocket Casts and Pocket Casts Plus as brand names."
},
"harper.linters.PointsOfView": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects pluralizing the wrong noun in `point of view`."
},
"harper.linters.PortAuPrince": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for the correct official name of the capital of Haiti."
},
"harper.linters.PortoNovo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for the correct official name of the capital of Benin."
},
"harper.linters.PossessiveNoun": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Use an apostrophe and `s` to form a nouns possessive."
},
"harper.linters.PossessiveYour": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The possessive form of `you` is more likely before nouns."
},
"harper.linters.Postpone": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `postpone`."
},
"harper.linters.PrayingMantis": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `preying mantis` to `praying mantis`, ensuring accurate reference to the insects characteristic pose."
},
"harper.linters.ProgressiveNeedsBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the ungrammatical patterns `<pronoun> have …ing` (e.g., `I have …ing`) and `<pronoun>'ve …ing` (e.g., `I've …ing`) and suggests either the present progressive (e.g., `I'm/We're/You're/They're …`) or the present perfect progressive (e.g., `I/We/You/They have been …` or `I've/We've/You've/They've been …`)."
},
"harper.linters.PronounAre": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Spots the letter `r` used in place of `are` or `you're` after plural first- or second-person pronouns."
},
"harper.linters.PronounContraction": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Choosing when to contract pronouns is a challenging art. This rule looks for faults."
},
"harper.linters.PronounInflectionBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks subjectverb agreement for the verb `be`. Third-person singular pronouns (`he`, `she`, `it`) require the singular form `is`, while the plural pronoun `they` takes `are`. The linter flags mismatches such as `He are` or `They is` and offers the correct concord."
},
"harper.linters.PronounKnew": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects when “new” following a pronoun (optionally with an adverb) is a typo for the past tense “knew.”"
},
"harper.linters.Proofread": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `proofread`."
},
"harper.linters.ProperNouns": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of proper nouns."
},
"harper.linters.QuantifierNeedsOf": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects missing `of` after the quantifier “a couple” when it precedes a plural noun"
},
"harper.linters.QuantifierNumeralConflict": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects quantifier-numeral conflicts"
},
"harper.linters.QuiteMany": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `quite many` to `quite a few`, which is the more natural and idiomatic phrase in standard English. `Quite many` is considered nonstandard usage."
},
"harper.linters.QuiteQuiet": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Helps distinguish between quiet (making little noise) and quite (meaning rather)."
},
"harper.linters.QuoteSpacing": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks that quotation marks are preceded or succeeded by whitespace."
},
"harper.linters.RapidFire": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks to ensure writers hyphenate `rapid-fire`."
},
"harper.linters.RealTrouper": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the correct use of `real trouper`, distinguishing it from `trooper`, which refers to a soldier or police officer."
},
"harper.linters.Really": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.RedundantAcronyms": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Identifies redundant acronyms where the last word repeats the last letter's meaning (e.g., `ATM machine` → `ATM` or `automated teller machine`)."
},
"harper.linters.RedundantAdditiveAdverbs": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects redundant additive adverbs."
},
"harper.linters.RedundantIIRC": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags redundant use of 'if' or 'correctly' with `IIRC`, since `IIRC` already stands for 'if I recall correctly'."
},
"harper.linters.RedundantSuperlatives": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Simplifies redundant double positives like `most optimal` to the base form."
},
"harper.linters.RedundantThat": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "There is rarely a situation where `that that` cannot be condensed into a single token."
},
"harper.linters.Regardless": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `regardless`."
},
"harper.linters.Regionalisms": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Regionalisms"
},
"harper.linters.RepeatedWords": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for repetitions of words that are not homographs."
},
"harper.linters.Respond": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags uses of the noun `response` where the verb `respond` is needed after an auxiliary."
},
"harper.linters.RifeWith": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `ripe with` to `rife with`, preserving the phrases meaning of being filled with something, often undesirable."
},
"harper.linters.RightClick": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Hyphenates right-click style mouse commands."
},
"harper.linters.RiseTheQuestion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `rise the question` to `raise the question`."
},
"harper.linters.RoadMap": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects when `roadmap` is used instead of `road map`, prompting the correct spacing."
},
"harper.linters.RollerSkated": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages hyphenating the past tense of `roller-skate`."
},
"harper.linters.RulesOfThumb": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects pluralizing the wrong noun in `rule of thumb`."
},
"harper.linters.SafeToSave": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects `safe` (adjective) when `save` (verb) is intended after modal verbs like `could` or `should`."
},
"harper.linters.SameAs": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the incorrect phrase `same then` to the standard `same as`."
},
"harper.linters.SaveToSafe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `save to <verb>` to `safe to <verb>` after a form of `be`."
},
"harper.linters.ScantilyClad": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes `scandally clad` to `scantily clad`, ensuring clarity in describing minimal attire."
},
"harper.linters.SemicolonApostrophe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects semicolons accidentally typed instead of apostrophes."
},
"harper.linters.SentenceCapitalization": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The opening word of a sentence should almost always be capitalized."
},
"harper.linters.ShootOneselfInTheFoot": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects nonstandard variants of 'shoot oneself in the foot'."
},
"harper.linters.SimpleGrammatical": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `simply grammatical` to `simple grammatical` for proper adjective usage."
},
"harper.linters.SimplePastToPastParticiple": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects simple past tense verbs to past participle after auxiliary verbs like \"have\" or \"be\"."
},
"harper.linters.SinceDuration": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the use of 'since' with a duration instead of a point in time."
},
"harper.linters.SingleBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Removes adjacent duplicate inflections of `be`, including contracted forms followed by another `be` verb."
},
"harper.linters.SneakingSuspicion": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `sneaky suspicion` to `sneaking suspicion`."
},
"harper.linters.SomeOfThe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Quantity words such as `some` normally take `of` before a definite article. Including `of` signals that you mean a subset of a larger set, preventing a momentary stumble in comprehension."
},
"harper.linters.SomeWithoutArticle": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects the redundant article in front of `some` and suggests more natural phrasing."
},
"harper.linters.Somebody": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `somebody`."
},
"harper.linters.SomebodyElses": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `somebody else's` when the `'s` is in the wrong place."
},
"harper.linters.Somehow": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `somehow`."
},
"harper.linters.Someone": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `someone`."
},
"harper.linters.SomethingIs": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags forms like `somethings` before progressive verbs and suggests using `something's` or `something is`."
},
"harper.linters.SomewhatSomething": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags the phrase `somewhat of a` in favor of `something of a`, which can be considered more traditional."
},
"harper.linters.Somewhere": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `somewhere`."
},
"harper.linters.SoonToBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Hyphenates `soon-to-be` when it appears before a noun."
},
"harper.linters.SoonerOrLater": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the improper phrase `sooner than later` by suggesting standard alternatives."
},
"harper.linters.SoughtAfter": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Correct `sort after` to `sought after`"
},
"harper.linters.Spaces": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Words should be separated by at most one space."
},
"harper.linters.SpecialAttention": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `spacial attention` to `special attention`."
},
"harper.linters.SpellCheck": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks and provides corrections for misspelled words."
},
"harper.linters.SpelledNumbers": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Most style guides recommend that you spell out numbers less than ten."
},
"harper.linters.SplitWords": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds missing spaces in improper compound words."
},
"harper.linters.Starving": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages vivid writing by suggesting `starving` instead of weaker expressions like `very hungry.`"
},
"harper.linters.StateOfTheArt": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects incorrect usage of `state of art` and suggests `state of the art` as the correct phrase."
},
"harper.linters.StatuteOfLimitations": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `statue of limitations` to `statute of limitations`."
},
"harper.linters.SubjectPronoun": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes sentences that start with `me and X` by putting the proper noun first and using `I`."
},
"harper.linters.SufficeItToSay": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `suffice to say` to `suffice it to say`."
},
"harper.linters.SupposedTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes `suppose to` to the correct `supposed to`."
},
"harper.linters.TakeItPersonally": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `take it personal` to `take it personally`."
},
"harper.linters.TakeMedicine": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages pairing medicine-related nouns with verbs like `take` or `swallow` instead of `eat`."
},
"harper.linters.TalkToYouLater": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.ThanksALot": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the missing article in `thanks lot`, forming `thanks a lot`."
},
"harper.linters.ThatChallenged": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `the challenged` to `that challenged` for proper relative clause usage."
},
"harper.linters.ThatThan": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the typo `that` to `than` in comparisons."
},
"harper.linters.ThatThis": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes `the this` to the correct phrase `that this`."
},
"harper.linters.ThatWhich": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Repeating the word \"that\" is often redundant. The phrase `that which` is easier to read."
},
"harper.linters.The": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes especially common misspellings of the word `the`"
},
"harper.linters.TheAnother": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `the another`."
},
"harper.linters.TheHowWhy": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Removes the extra `the` from expressions like `the how`, skipping `how to` and `who's who`."
},
"harper.linters.TheMy": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags the definite article used together with a possessive."
},
"harper.linters.ThenThan": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects mixing up `then` and `than`."
},
"harper.linters.Therefore": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `therefore`."
},
"harper.linters.Theres": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the mistaken possessive `their's` before a determiner with the contraction `there's`."
},
"harper.linters.Thereupon": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `thereupon`."
},
"harper.linters.ThesesThese": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the common misspelling of `these` as `theses`."
},
"harper.linters.ThingThink": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the typo `thing` when it should be `think`."
},
"harper.linters.ThoughThought": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `though` when it's a typo for `thought`."
},
"harper.linters.ThoughtProcess": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Changes `though process` to `thought process`."
},
"harper.linters.ThrowAway": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds the typo `through away` and suggests `throw away` or `threw away` instead."
},
"harper.linters.ThrowRubbish": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for throwing rubbish rather than throwing it away."
},
"harper.linters.TickingTimeClock": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `ticking time clock` to `ticking time bomb` for idiomatic urgency or `ticking clock` otherwise."
},
"harper.linters.ToAdverb": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags duplicated `to` around certain adverbs (e.g. `to never to`) and offers fixes that keep only one `to`."
},
"harper.linters.ToBeHonest": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Expands an initialism."
},
"harper.linters.ToDoHyphen": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `to-do` is correctly hyphenated."
},
"harper.linters.ToGreatLengths": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `through great lengths` to `to great lengths`."
},
"harper.linters.ToTheMannerBorn": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `to the manor born` to `to the manner born`, ensuring the intended meaning of being naturally suited to a way of life."
},
"harper.linters.ToTooIdioms": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `to` used instead of `too`."
},
"harper.linters.ToTwoToo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects homophone confusion between `to` and `too`."
},
"harper.linters.ToWorryAbout": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes incorrect use of `to worried about`."
},
"harper.linters.TongueInCheek": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the idiom when `and` replaces the needed preposition."
},
"harper.linters.TooTo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `too` used instead of `to`."
},
"harper.linters.Touristic": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Suggests replacing the uncommon word `touristic` with `tourist`, `tourism`, and/or `touristy`."
},
"harper.linters.Towards": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Removes redundant `to` before `towards`."
},
"harper.linters.TransposedSpace": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for a space one character too early or too late between words."
},
"harper.linters.TrialAndError": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `trail` to `trial` in `trial and error`."
},
"harper.linters.TumblrNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of Tumblr-related terms."
},
"harper.linters.TurnItOff": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Fixes the mistake in the phrase `turn it off`."
},
"harper.linters.USUniversities": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensure proper capitalization of major universities in the United States."
},
"harper.linters.UnclosedQuotes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Quotation marks should always be closed. Unpaired quotation marks are a hallmark of sloppy work."
},
"harper.linters.Underclock": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `underclock`."
},
"harper.linters.UnitedOrganizations": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "When referring to national or international organizations, make sure to treat them as a proper noun."
},
"harper.linters.Unless": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `unless if`."
},
"harper.linters.UpdatePlaceNames": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "This rule looks for deprecated place names and offers to update them."
},
"harper.linters.Upset": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `upset`."
},
"harper.linters.Upward": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `upward`."
},
"harper.linters.UseGenitive": {
"scope": "resource",
"type": "boolean",
"default": false,
"description": "Looks for situations where the genitive case of \"there\" should be used."
},
"harper.linters.UseTitleCase": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Prompts you to use title case in relevant headings."
},
"harper.linters.VerbToAdjective": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for situations where a verb was written where an adjective is often intended."
},
"harper.linters.VeryUnique": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags phrases like `very unique`, `pretty unique`, etc., and suggests using `unique` alone or a more precise adjective such as `special`, `rare`, or `unusual`."
},
"harper.linters.ViceVersa": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Recommends writing vice versa without hyphens."
},
"harper.linters.WantBe": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects incorrect usage of `want be` and suggests `won't be` or `want to be` based on context."
},
"harper.linters.WasAloud": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `was aloud` and `were aloud` are corrected to `was allowed` or `were allowed` when referring to permission."
},
"harper.linters.WaveFunction": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Identifies the mistake of merging `wave` and `function` into one word. In quantum mechanics, a `wave function` (written as two words) describes the mathematical function that represents the quantum state of a particle or system. Correct usage is crucial for clear and accurate scientific communication."
},
"harper.linters.WayTooAdjective": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the preposition `to` with the adverb `too` after `way` when followed by an adjective (e.g. `way too fast`)"
},
"harper.linters.WellBeing": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `well-being` is correctly hyphenated."
},
"harper.linters.WellEducated": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces `good-educated` with the accepted compound `well-educated`."
},
"harper.linters.WellKept": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags `highly-kept` and recommends `well-kept` as an alternative."
},
"harper.linters.Whereas": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "The Whereas rule is designed to identify instances where the phrase `where as` is used in text and suggests replacing it with the single word `whereas`."
},
"harper.linters.Whereupon": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `whereupon`."
},
"harper.linters.WhetYourAppetite": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures `whet your appetite` is used correctly, distinguishing it from the incorrect `wet` variation."
},
"harper.linters.WholeEntire": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the redundancy in `whole entire` to `whole` or `entire`."
},
"harper.linters.WidelyAccepted": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Flags `wide accepted`, `wide acceptable`, or `wide used` and recommends switching `wide` to the adverb `widely`."
},
"harper.linters.Widespread": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `widespread`."
},
"harper.linters.WillContain": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Incorrect verb form: `will` should be followed by the base form `contain`."
},
"harper.linters.WinPrize": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Catches the mix-up between `price`/`prise` and `prize` after the verb `win`."
},
"harper.linters.WishCould": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for `can` being used after `wish` when it should be `could`."
},
"harper.linters.WordPressDotcom": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures correct capitalization of WordPress.com. This rule verifies that the official stylization of WordPress.com is used when referring to the hosting provider."
},
"harper.linters.Worldwide": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `worldwide`."
},
"harper.linters.WorseOrWorst": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `worse` and `worst` used in contexts where the other belongs."
},
"harper.linters.WorstCaseScenario": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `worst-case scenario` when the hyphen is missing or `worse` is used instead of `worst`."
},
"harper.linters.WouldNeverHave": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `would/could have never` to `never would/could have`."
},
"harper.linters.WreakHavoc": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `wreck havoc` to `wreak havoc`, which is the proper term for causing chaos or destruction."
},
"harper.linters.WroughtIron": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "`Wrought iron` is low-carbon, malleable iron used for decorative work; variants like `rod iron` or `rot iron` are phonetic misspellings that may confuse readers."
}
}
}
},
"scripts": {
"watch:esbuild": "node esbuild.cjs --watch",
"watch:tsc": "tsc --noEmit --watch",
"pretest": "tsc && node esbuild.cjs",
"test": "node build/tests/runTests.js",
"vscode:prepublish": "tsc --noEmit && node esbuild.cjs --production",
"package": "vsce package --no-dependencies"
},
"devDependencies": {
"@types/jasmine": "^5.1.7",
"@types/node": "catalog:",
"@types/vscode": "^1.96.2",
"@vscode/test-electron": "^2.3.9",
"@vscode/vsce": "^3.3.0",
"esbuild": "^0.25.0",
"jasmine": "^5.6.0",
"typescript": "catalog:"
},
"dependencies": {
"vscode-languageclient": "^9.0.1"
}
}