Coder Social home page Coder Social logo

davidanson / vscode-markdownlint Goto Github PK

View Code? Open in Web Editor NEW
873.0 13.0 156.0 521 KB

Markdown linting and style checking for Visual Studio Code

Home Page: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint

License: MIT License

JavaScript 100.00%
markdown lint visual-studio-code vscode-extension

vscode-markdownlint's Introduction

markdownlint

Markdown/CommonMark linting and style checking for Visual Studio Code

Introduction

The Markdown markup language is designed to be easy to read, write, and understand. It succeeds - and its flexibility is both a benefit and a drawback. Many styles are possible, so formatting can be inconsistent. Some constructs don't work well in all parsers and should be avoided. For example, here are some common/troublesome Markdown constructs.

markdownlint is an extension for the Visual Studio Code editor that includes a library of rules to encourage standards and consistency for Markdown files. It is powered by the markdownlint library for Node.js (which was inspired by markdownlint for Ruby). Linting is performed by the markdownlint-cli2 engine, which can be used in conjunction with this extension to provide command-line support for scripts and continuous integration scenarios. The markdownlint-cli2-action GitHub Action uses the same engine and can be integrated with project workflows.

Install

  1. Open Visual Studio Code
  2. Press Ctrl+P/Ctrl+P/⌘P to open the Quick Open dialog
  3. Type ext install markdownlint to find the extension
  4. Click the Install button, then the Enable button

OR

  1. Press Ctrl+Shift+X/Ctrl+Shift+X/⇧⌘X to open the Extensions tab
  2. Type markdownlint to find the extension
  3. Click the Install button, then the Enable button

OR

  1. Open a command-line prompt
  2. Run code --install-extension DavidAnson.vscode-markdownlint

Use

When editing a Markdown file in VS Code with markdownlint installed, any lines that violate one of markdownlint's rules (see below) will trigger a Warning in the editor. Warnings are indicated by a wavy green underline and can also be seen by pressing Ctrl+Shift+M/Ctrl+Shift+M/⇧⌘M to open the Errors and Warnings dialog. Hover the mouse pointer over a green line to see the warning or press F8 and Shift+F8/Shift+F8/⇧F8 to cycle through all the warnings (markdownlint warnings all begin with MD###). For more information about a markdownlint warning, place the cursor on a line and click the light bulb icon or press Ctrl+./Ctrl+./⌘. to open the quick fix dialog. Clicking one of the warnings in the dialog will display that rule's help entry in the default web browser.

For a tutorial, please see Build an Amazing Markdown Editor Using Visual Studio Code and Pandoc by Dave Johnson.

By default, markdownlint will scan and report issues for files that VS Code treats as Markdown. You can see what language mode the current file has in the Status Bar at the bottom of the window and you can change the language mode for the current file. If you have a custom file type that VS Code should always treat as Markdown, you can associate that file extension with the markdown language identifier.

Rules

  • MD001 heading-increment - Heading levels should only increment by one level at a time
  • MD003 heading-style - Heading style
  • MD004 ul-style - Unordered list style
  • MD005 list-indent - Inconsistent indentation for list items at the same level
  • MD007 ul-indent - Unordered list indentation
  • MD009 no-trailing-spaces - Trailing spaces
  • MD010 no-hard-tabs - Hard tabs
  • MD011 no-reversed-links - Reversed link syntax
  • MD012 no-multiple-blanks - Multiple consecutive blank lines
  • MD013 line-length - Line length
  • MD014 commands-show-output - Dollar signs used before commands without showing output
  • MD018 no-missing-space-atx - No space after hash on atx style heading
  • MD019 no-multiple-space-atx - Multiple spaces after hash on atx style heading
  • MD020 no-missing-space-closed-atx - No space inside hashes on closed atx style heading
  • MD021 no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading
  • MD022 blanks-around-headings - Headings should be surrounded by blank lines
  • MD023 heading-start-left - Headings must start at the beginning of the line
  • MD024 no-duplicate-heading - Multiple headings with the same content
  • MD025 single-title/single-h1 - Multiple top level headings in the same document
  • MD026 no-trailing-punctuation - Trailing punctuation in heading
  • MD027 no-multiple-space-blockquote - Multiple spaces after blockquote symbol
  • MD028 no-blanks-blockquote - Blank line inside blockquote
  • MD029 ol-prefix - Ordered list item prefix
  • MD030 list-marker-space - Spaces after list markers
  • MD031 blanks-around-fences - Fenced code blocks should be surrounded by blank lines
  • MD032 blanks-around-lists - Lists should be surrounded by blank lines
  • MD033 no-inline-html - Inline HTML
  • MD034 no-bare-urls - Bare URL used
  • MD035 hr-style - Horizontal rule style
  • MD036 no-emphasis-as-heading - Emphasis used instead of a heading
  • MD037 no-space-in-emphasis - Spaces inside emphasis markers
  • MD038 no-space-in-code - Spaces inside code span elements
  • MD039 no-space-in-links - Spaces inside link text
  • MD040 fenced-code-language - Fenced code blocks should have a language specified
  • MD041 first-line-heading/first-line-h1 - First line in file should be a top level heading
  • MD042 no-empty-links - No empty links
  • MD043 required-headings - Required heading structure
  • MD044 proper-names - Proper names should have the correct capitalization
  • MD045 no-alt-text - Images should have alternate text (alt text)
  • MD046 code-block-style - Code block style
  • MD047 single-trailing-newline - Files should end with a single newline character
  • MD048 code-fence-style - Code fence style
  • MD049 emphasis-style - Emphasis style should be consistent
  • MD050 strong-style - Strong style should be consistent
  • MD051 link-fragments - Link fragments should be valid
  • MD052 reference-links-images - Reference links and images should use a label that is defined
  • MD053 link-image-reference-definitions - Link and image reference definitions should be needed
  • MD054 link-image-style - Link and image style
  • MD055 table-pipe-style - Table pipe style
  • MD056 table-column-count - Table column count

See markdownlint's Rules.md file for more details.

The following rules can be automatically fixed by moving the cursor to a rule violation (wavy underlined text) and typing Ctrl+./Ctrl+./⌘. or clicking the light bulb icon.

  • MD004 ul-style
  • MD005 list-indent
  • MD007 ul-indent
  • MD009 no-trailing-spaces
  • MD010 no-hard-tabs
  • MD011 no-reversed-links
  • MD012 no-multiple-blanks
  • MD014 commands-show-output
  • MD018 no-missing-space-atx
  • MD019 no-multiple-space-atx
  • MD020 no-missing-space-closed-atx
  • MD021 no-multiple-space-closed-atx
  • MD022 blanks-around-headings
  • MD023 heading-start-left
  • MD026 no-trailing-punctuation
  • MD027 no-multiple-space-blockquote
  • MD030 list-marker-space
  • MD031 blanks-around-fences
  • MD032 blanks-around-lists
  • MD034 no-bare-urls
  • MD037 no-space-in-emphasis
  • MD038 no-space-in-code
  • MD039 no-space-in-links
  • MD044 proper-names
  • MD047 single-trailing-newline
  • MD049 emphasis-style
  • MD050 strong-style
  • MD051 link-fragments
  • MD053 link-image-reference-definitions
  • MD054 link-image-style

Commands

Fix

All of a document's violations of the above rules can be fixed automatically.

markdownlint registers itself as a source code formatter for Markdown files and can be invoked by the Format Document/editor.action.formatDocument and Format Selection/editor.action.formatSelection commands, either from the Command Palette (via View|Command Palette... or Ctrl+Shift+P/Ctrl+Shift+P/⇧⌘P) or via the default key bindings of Shift+Alt+F/Ctrl+Shift+I/⇧⌥F (to format the document) and Ctrl+K Ctrl+F/Ctrl+K Ctrl+F/⌘K ⌘F (to format the selection). To automatically format when saving or pasting into a Markdown document, configure Visual Studio Code's editor.formatOnSave or editor.formatOnPaste settings like so:

"[markdown]": {
    "editor.formatOnSave": true,
    "editor.formatOnPaste": true
},

markdownlint also contributes the markdownlint.fixAll command which fixes a document's violations in one step and can be run from the Command Palette or by binding the command to a keyboard shortcut. To automatically fix violations when saving a Markdown document, configure Visual Studio Code's editor.codeActionsOnSave setting like so:

"editor.codeActionsOnSave": {
    "source.fixAll.markdownlint": true
}

Automatically-applied fixes from either method can be reverted by Edit|Undo or Ctrl+Z/Ctrl+Z/⌘Z.

Workspace

To lint all Markdown files in the current workspace, run the markdownlint.lintWorkspace command (from the Command Palette or by binding it to a keyboard shortcut). This will use markdownlint-cli2, the same engine that powers the extension, to lint all files and output the results to a new terminal in the "Terminal" panel. Results will also appear in the "Problems" panel (Ctrl+Shift+M/Ctrl+Shift+M/⇧⌘M) because of the problem matcher included with the extension. Entries in the "Problems" panel can be clicked to open the corresponding file in the editor. To customize the files that are included/excluded when linting a workspace, configure the markdownlint.lintWorkspaceGlobs setting (see below) at workspace or user scope.

Disable

To temporarily disable linting of Markdown documents, run the markdownlint.toggleLinting command (from the Command Palette or by binding it to a keyboard shortcut). To re-enable linting, run the markdownlint.toggleLinting command again.

Note: The effects of the markdownlint.toggleLinting command are reset when a new workspace is opened; linting defaults to enabled.

Configure

markdownlint.config

The default rule configuration disables MD013/line-length because many files include lines longer than the conventional 80 character limit:

{
    "MD013": false
}

Rules can be enabled, disabled, and customized by creating a JSON file named .markdownlint.jsonc/.markdownlint.json or a YAML file named .markdownlint.yaml/.markdownlint.yml or a JavaScript file named .markdownlint.cjs/.markdownlint.mjs in any directory of a project. Additionally, options (which include rules and things like markdown-it plugins and other settings) can be configured by creating a JSON file named .markdownlint-cli2.jsonc or a YAML file named .markdownlint-cli2.yaml or a JavaScript file named .markdownlint-cli2.cjs/.markdownlint-cli2.mjs in any directory of a project. For more information about configuration file precedence and complete examples, see the Configuration section of the markdownlint-cli2 README.md.

Note: When no folder is open, configuration and options are loaded from the user's home directory (e.g., %USERPROFILE% on Windows or $HOME on macOS/Linux). Because JavaScript code is cached after being loaded, edits to .markdownlint.cjs/.markdownlint.mjs/.markdownlint-cli2.cjs/.markdownlint-cli2.mjs require a restart of VS Code.

A custom configuration is often defined by a .markdownlint.json file in the root of the project:

{
    "default": true,
    "MD003": { "style": "atx_closed" },
    "MD007": { "indent": 4 },
    "no-hard-tabs": false
}

To extend another configuration file, such a file can use the extends property to provide a relative path:

{
    "extends": "../.markdownlint.json",
    "no-hard-tabs": true
}

Files referenced via extends do not need to be part of the current project (but usually are).

Rules can also be configured using VS Code's support for user and workspace settings.

The above configuration might look like the following in VS Code's user settings file:

{
    "editor.someSetting": true,
    "markdownlint.config": {
        "default": true,
        "MD003": { "style": "atx_closed" },
        "MD007": { "indent": 4 },
        "no-hard-tabs": false
    }
}

File paths referenced by extends from user settings are resolved relative to the user's home directory (e.g., %USERPROFILE% on Windows or $HOME on macOS/Linux). File paths referenced by extends from workspace settings are resolved relative to the workspace folder. File paths referenced by extends from configuration files within the workspace are resolved relative to the file itself. VS Code's predefined variables ${userHome} and ${workspaceFolder} can be used within an extends path from user or workspace settings to override the default behavior.

Configuration sources have the following precedence (in decreasing order):

  • .markdownlint-cli2.{jsonc,yaml,cjs,mjs} file in the same or parent directory
  • .markdownlint.{jsonc,json,yaml,yml,cjs,mjs} file in the same or parent directory
  • Visual Studio Code user/workspace settings
  • Default configuration (see above)

Configuration changes saved to any location take effect immediately. Files referenced via extends are not monitored for changes. Inherited configuration can be explicitly disabled (or re-enabled) in any configuration file.

When a workspace is open, running the markdownlint.openConfigFile command (from the Command Palette or by binding it to a keyboard shortcut) will open an editor for the .markdownlint-cli2.{jsonc,yaml,cjs,mjs} or .markdownlint.{jsonc,json,yaml,yml,cjs,mjs} configuration file in the root of the workspace. If none of these files exist, a new .markdownlint.json containing the default rule configuration will be opened in the editor in the "pending save" state.

markdownlint.focusMode

By default, all linting issues are logged and highlighted as you type or edit a document. This includes "transient" issues like MD009/no-trailing-spaces such as when typing at the end of a line.

If you find this distracting, linting can be configured to ignore issues on the same line as the cursor. This looks like the following in VS Code's user settings:

{
    "editor.someSetting": true,
    "markdownlint.focusMode": true
}

To ignore issues on the N lines above and below the cursor, set focusMode to a positive integer representing the number of lines to ignore in each direction:

{
    "editor.someSetting": true,
    "markdownlint.focusMode": 2
}

The value of 2 in the example above will ignore issues on the line with the cursor, the 2 lines above it, and the 2 lines below it.

Note: This is an application-level setting and is only valid in user (not workspace) settings.

markdownlint.run

By default, linting is performed as you type or edit a document. Linting is fast and efficient and should not interfere with typical workflows.

If you find this distracting, linting can be configured to run only when the document is saved. This looks like the following in VS Code's user settings:

{
    "editor.someSetting": true,
    "markdownlint.run": "onSave"
}

Note: When configured to run onSave, the list of reported issues will become outdated while the document is edited and will update when the document is saved.

markdownlint.customRules

Custom rules can be specified in VS Code's user/workspace configuration to apply additional linting beyond the default set of rules. Custom rules are specified by the path to a JavaScript file or the name of or path to an npm package exporting one rule or an array of rules (examples of custom rules).

Paths are typically relative to the root of the current workspace (or the user's home directory when no folder is open) and should begin with ./ to differentiate the relative path from a module identifier. Paths can be absolute and begin with /, though this is discouraged because it does not work reliably across different machines. If implementing custom rules in a workspace, consider committing the rule code under the .vscode directory where it will be separate from other workspace content and available to everyone who clones the repository. Paths of the form {extension}/path are relative to the base directory of the VS Code extension named extension (which must already be installed). This syntax allows custom rules to be included within another extension's package, though this is discouraged because it introduces a subtle dependency on the other extension.

An example of VS Code's workspace settings for custom rules might look like the following:

{
    "editor.someSetting": true,
    "markdownlint.customRules": [
        "./.vscode/my-custom-rule.js",
        "./.vscode/my-custom-rule-array.js",
        "./.vscode/npm-package-for-custom-rule",
        "/absolute/path/to/custom/rule.js",
        "{publisher.extension-name}/custom-rule.js",
        "{publisher.extension-name}/npm/rule/package"
    ]
}

For information about authoring custom rules, see the markdownlint documentation for custom rules.

Note: Custom rules can also be specified (in a portable way other tools will recognize) via the customRules property in .markdownlint-cli2.{jsonc,yaml,cjs,mjs}. In markdownlint-cli2 configuration files, the modulePaths property can be used in conjunction to specify one or more additional paths for resolving module references. This can be used to work around the VS Code limitation that globally-installed Node modules are unavailable by setting modulePaths to the location of the global module path (typically /usr/local/lib on macOS/Linux or ~/AppData/Roaming/npm on Windows).

markdownlint.lintWorkspaceGlobs

The standard globs used when linting a workspace should match VS Code's default concept of "Markdown files that matter":

[
    // Source: https://github.com/microsoft/vscode/blob/main/extensions/markdown-basics/package.json
    "**/*.{md,mkd,mdwn,mdown,markdown,markdn,mdtxt,mdtext,workbook}",
    // Source: https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/search/browser/search.contribution.ts
    "!**/node_modules",
    "!**/bower_components",
    // Additional exclusions
    "!**/.git"
]

This list can be customized at workspace or user scope to include and exclude additional files and directories. For more information about syntax, see the "Command Line" section of the markdownlint-cli2 documentation.

Suppress

Individual warnings can be suppressed with comments in the Markdown file itself:

<!-- markdownlint-disable MD037 -->
deliberate space * in * emphasis
<!-- markdownlint-enable MD037 -->

More information about inline suppressions can be found in the Configuration section of the markdownlint README.md.

Snippets

The following snippets are available when editing a Markdown document (press Ctrl+Space/Ctrl+Space/⌃Space for IntelliSense suggestions):

  • markdownlint-disable
  • markdownlint-enable
  • markdownlint-disable-line
  • markdownlint-disable-next-line
  • markdownlint-capture
  • markdownlint-restore
  • markdownlint-disable-file
  • markdownlint-enable-file
  • markdownlint-configure-file

Security

Running JavaScript from custom rules, markdown-it plugins, or configuration files (such as .markdownlint.cjs/.markdownlint.mjs/.markdownlint-cli2.cjs/.markdownlint-cli2.mjs) could be a security risk, so VS Code's Workspace Trust setting is honored to block JavaScript for untrusted workspaces.

History

See CHANGELOG.md.

vscode-markdownlint's People

Contributors

davidanson avatar kachkaev avatar lostintangent avatar lxp avatar marcusrbrown avatar miyanew avatar nschonni avatar osfanbuff63 avatar thernstig avatar tomashubelbauer avatar travisclagrone avatar vulpivia avatar

Stargazers

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

Watchers

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

vscode-markdownlint's Issues

Lint all files in a workspace

Currently, only the opened files are linted. It would be useful to have a command to lint all Markdown files in a workspace.

Misfire MD025

- something
- # of other things  <-- MD025
- something

Global .markdownlint.json ??

I am looking to create a .markdownlint.json file in my home directory ~ and use it for all my projects. Is this possible?

I created a file at

~/.markdownlint.json

but it seems it doesn't find it? Is this possible?

Please, add 'blanks-around-tables'

This is not a bug report. It's just a suggestion (perhaps this is not the right place to send it).

Please, add a blanks-around-tables rule. Something like rules MD031 and MD032 but for tables.
I miss this functionality a lot.
In VSC, tables works anyway. But when I have to edit my markdown files in other editors (for example notepad++ with markdown plugin), tables with no blank line before them are ignored and I have to correct them all.

Thanks for this great extension.
Raúl

Using parameters "siblings_only" and "allow_different_nesting" for Rule MD024

The parameters "siblings_only" and "allow_different_nesting" for Rule MD024 do not seem to work. I am using a .markdownlint.yaml in my working directory for the configuration:

default: true
MD024:
    siblings_only: true
    allow_different_nesting: true

The parameters are relatively new to the markdownlint project (https://github.com/DavidAnson/markdownlint). Did I make a mistake or is there any chance they haven't been included in the vscode-markdownlint yet, but will be soon? Any help is highly appreciated!

Disable the bulb icon

Is there any way to disable the lightbulb icon and just have the errors underlined?

I find the bulb to be distracting and would prefer the more subtle warning especially when I am typing longer documents and will go back to reformat afterward.

MD029 is triggered on any multiline ordered list items

I am using the markdownlint v0.6.2 and I am seeing that the MD029 rule is always triggered even when using the sample provided inside the rule.
i.e.

1. Do this.
2. Do that.
3. Done.

should pass the issue but it is generating green squiggle with MD029 tool tip.

Need addition rules for Pandoc markdown.

I'm quite new to markdown. I couldn't remember all markdown syntax.
Your extension helps me a lot. But I found that your extension didn't full-support Pandoc Markdown.

Would you mind to take time to expand the rules?

this is not show image ?

i write and i preview ,but preview do not show image ?i use http url for image. so i don`t good show , can you add this ? please.

My vscode user settings don't work. Am i doing something wrong?

Here's my vscode user settings for markdownlint:

"markdownlint.ignore": [
"no-inline-htm",
"no-trailing-punctuation"
]

I have closed & reopened vscode.
I did a search of my entire C: drive. I can't find any file named ".markdownlint.config".
I m still getting problems:

MD026/no-trailing-punctuation: Trailing punctuation in heading [Punctuation: '?']
MD033/no-inline-html: Inline HTML [Element: br]

Thanks for the good extension.

Love and peace,
Joe

Is there a way to only lint on save

It seems a lot of VS Code native linters and microsoft-sponsored extensions have this option, the python extension has "python.linting.lintOnSave": true

Would it be possible to add this or is there an option already there that I haven't noticed?

Ability to configure options via vscode user settings

Great extension! I know I can configure the defaults in the .vscode/extension dir directly but it would be nice to be able to do so within the vscode user settings if possible. Just a feature request.

Thanks for the work! Much appreciate it!

Support folder based configuration

root
- folderA
  + .markdownlint.json
  + some.md
- folderB
  + .markdownlist.json
  + some.md

This allows us to "re-purpose" the format for some specific context.
For example, when taking note:

Here are some note about the content

> Here are some of my own observation and note on how the content applies to us.
<!-- violate MD028 here -->
> Here are some more observation notes that I want to put into another paragraph.

Installation issue

When I try to install in VS Code I get:

Error: write EPROTO 0:error:14077419:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert access denied:c:\jenkins\workspace\
electron-win-ia32\vendor\node\deps\openssl\openssl\ssl\s23_clnt.c:769:

at exports._errnoException (util.js:1026:11)
at WriteWrap.afterWrite (net.js:795:14)

There are no dependencies listed for the extension - are there any?

MD002 triggered when frontmatter title is present

It looks like DavidAnson/markdownlint#19 is closed, which suggests MD002 shouldn't be triggered if a title property is present. My markdown:

---
title: My Markdown File
tags: 
---

Some text.

## First level 2 header.

The error I'm seeing:

[markdownlint] MD002/first-header-h1: First header should be a top level header [Expected: h1; Actual: h2]

Repetitive warning about configuration override

I know this was implemented in response to a previous problem, but the change in dd09905. It is giving me a notification that needs to be manually dismissed on every start.

I have checked both user and workspace configurations, and neither contain any settings for markdownlint that are actually overridden. I unfortunately wasn't able to get the extension set up for development within reasonable time, so I can't contribute a patch. But I believe a comparison of the loaded config with the default would probably help, something like:

      function loadCustomConfig () {
         var settings = vscode.workspace.getConfiguration(packageJson.displayName);
         customConfig = settings.get("config");
       
         var rootPath = vscode.workspace.rootPath;
         if (rootPath) {
            var configFilePath = path.join(rootPath, configFileName);
            if (fs.existsSync(configFilePath)) {
            isDefaultConfig = customConfig == defaultConfig; // <--- 
               try {
                  customConfig = JSON.parse(fs.readFileSync(configFilePath, "utf8"));
                  if (!isDefaultConfig) { // <----
                      vscode.window.showInformationMessage(configOverride);
               }
               } catch (ex) {
                  vscode.window.showWarningMessage(badConfig + "'" + configFilePath + "' (" + (ex.message || ex.toString()) + ")");
               }
            }
         }

         // Re-lint all open files
         (vscode.workspace.textDocuments || []).forEach(lint);
      }

Legitimate trailing hash char triggers MD003 and MD020

If there is a header where you actually want to finish with a '#', there appears to be no way to escape this, or ignore the triggered rules. Apart from changing the header style for the whole document to be atx_closed.

Example:

I love F#

or

10 Reaons to Use F#

Triggers the following warnings:

  • MD003/header-style: Header style [Expected: atx; Actual: atx_closed]
  • MD020/no-missing-space-closed-atx: No space inside hashes on closed atx style header

Perhaps the linter could check the number of trailing hash characters, and if it's just one but the header starts with two or more, it could ignore the usage?

This would still result in a MD003 for level-1 headers though, where atx style was in use throughout the rest of the document.

MD038 bug

This line reports an MD038 error between the first and second code areas.

- some text `.........`, `#####`

MD026 - trailing punctuation in header - allow

i would like to allow use of ? in header

In my User settings i set it to:

"markdownlint.config": {
	"MD013": false,
	"MD026":{".,;:!"}
}

Though it is warning me that it expects a boolean or object for "MD026".
I know am missing something, but i don't know what.
Am aware this has been asked before here:
#36
But am not sure how to make the object. I don't want to completely disable the feature by writing false.

Unable to override default newline setting

Instructions appear to say that creating a customized .markdownlint.json file in a root directory above the files of my project will allow me to override the default settings (in this case allowing 2 spaces at the end of the line for rule MD009 in order to render properly on GitHub). Even with a window reload in VS Code, the new settings are not applied. Suggestions?

Workspace config not working

// workspace settings
{
  "markdownlint.config": {
    "MD028": false
  }
}
# Test

> quote 1

> quote 2

It still shows warning in the "Problem" Panel:

severity: 'Warning'
message: 'MD028/no-blanks-blockquote: Blank line inside blockquote'
at: '4,1'
source: ''

Relaxed rules in code blocks

Markdown linting rules shouldn't apply inside of a code block. The linter should probably just ignore anything enclosed by delimiters of three backticks.

There is a bug in the ordered list syntax check.

For an example, there would be a warning, but nothing worng.

1. aaa

2. bbb

bbb

3. ccc

ccc

4. ddd

ddd

[markdownlint] MD029/ol-prefix: Ordered list item prefix [Expected: 1; Actual: 3; Style: 1/1/1]

Consider highlighting trailing space when encountering MD009

Currently when MD009 is encountered, the entire line is highlighted to indicate that there is a trailing space. This is distracting when you're constantly typing. Highlighting just the last space, or perhaps not showing the error indication if the cursor is currently active on the line would make it less obtrusive.

line highlight

How to use inline config comments into lists

I need disable a line in my list

- [google-docs](https://github.com/fastfedora/google-docs) Libraries and functions used within Google Docs
- <!-- markdownlint-disable MD034 -->[youtube/api-samples/apps-script](https://github.com/youtube/api-samples/tree/master/apps-script/snippets) The youtube-data-api.gs file in this directory contains code snippets that are generated by the Data API code snippet tool at: https://developers.google.com/youtube/v3/code_samples/code_snippets<!-- markdownlint-enable MD034 -->
- [google/google-apps-script-samples](https://github.com/google/google-apps-script-samples) Various sample code and projects for the Google Apps Script platform

But the code above is resolved.

mdlint01
mdlint02

Any ideas?

Linting inside Markdown blocks outside of .md files

Is it possible to get linting inside of Markdown-like blocks inside of non-Markdown files? The use case here is in Elixir documentation, which is formatted in Markdown, but it’s actually just a block inside of a .ex or .exs file.

From the above link, an example:

defmodule MyApp.Hello do
  @moduledoc """
  This is the Hello module.
  """

  @doc """
  Says hello to the given `name`.

  Returns `:ok`.

  ## Examples

      iex> MyApp.Hello.world(:john)
      :ok

  """
  def world(name) do
    IO.puts "hello #{name}"
  end
end

What’s between the """ of @moduledoc and @doc (and also, though not shown, @typedoc) is formatted with Markdown. Getting the warnings and/or, if possible, the auto-formatting inside of those blocks would be tremendous!

Permanent custom rules whitelist

I frequently use a trusted workspace with custom rules.
Each time I open the workspace I am prompted with the following security warning:

This workspace includes custom rules for Markdown linting.
Custom rules include JavaScript that runs within VS Code. 
Only allow custom rules if you trust the workspace.

It would be great to be able to permanently allow custom rules for specific workspaces.
I could imagine a new user setting with whitelisted workspaces.

markdownlint.json is being ignored

I've been following GitHub and DaveJ

But the .markdownlint.json file I've placed in my project's root folder:

{
    "default": true,
    "MD007": false,
    "MD009": { "br_spaces": 2 },
    "no-hard-tabs": false,
    "line-length": false
}

seems to be ignored because I still get tons of warnings for MD009...

I'm grateful for any hint I get! ;-)

Ignore VS Code default exclusions

Hey, I notice that createFileSystemWatcher does not allow for inserting the list of default VS Code exclusions unlike for example findFiles with its exclude argument you can set to undefined to make it use the default built-in excludes. That means currently this extension reports errors from even node_modules and such and in my case that blows some of my projects up to thousands of errors. You might want to consider trying to somehow extract this exclusion list from VS Code and adjusting your glob (either statically or even better dynamically based on the exclusion list) to ignore these.

Separate no-multiple-blanks from no-multiple-blanks-at-end-of-file

no-multiple-blanks enables checks for multiple empty lines in a file. Unfortunately it is sometimes quite convenient to have multiple blank lines at the end of files. It would be great if the linter could distinguish between these final lines and multiple lines within the document. Then I could allow multiple blank lines at the end of a document but get warnings for multiple blank lines in the rest of the document.

Markdown Lint stopped working

I have Markdownlint installed as part of the Markdown all in one package. I am not getting any lint errors any more (as of about a week ago). Did something change within the package?

How to set MD010 without code_blocks?

I set "MD010": { "code_blocks": false } in my vscode , but I still got warning.

 "markdownlint.config": {
        "MD002": false, // 首行必须h1
        "MD010": { "code_blocks": false },
        "MD013": false, //  line-length
        "MD033": false, // inline html
        "MD029": false // ordered list item prefix
    }

qq 20170815110337

it will bring some warning

it will bring three warning in vscode's setting.json:

"git.path": null,

"typescript.tsdk": null,

"php.validate.executablePath": null,

And it would not be regarded as warning

Linting inside $$ (add support for non-CommonMark math blocks)

Linting has problems inside equation blocks. For example:

image

Here the linter thinks that the + signs are a list and gives the following warning:

 [markdownlint] MD032/blanks-around-lists: Lists should be surrounded by blank lines

Maybe the linter should be disabled entirely within math (inline $, and block $$).

Allow 2 trailing whitespace by default

I propose to include the setting for trailing whitespace to allow for exactly 2 spaces. The default rule just makes little sense for Markdown, considering the 2 trailing spaces are part of the syntax.

markdownlint.json not being found

This extension is great. I'm migrating my blog to markdown right now and it has been super useful!

I want to ignore a few chronic problems with my content but I can't get .markdownlint.json working.

My .markdownlint.json file looks like this:

{
  "default": true,
  "MD026": {
    "punctuation": ","
  }
}

It is located in:
/Users/stephaniehobson/public/sites/blog_hexo

The output console says:

[12:17:58] INFO: Loading user/workspace configuration for '/Users/stephaniehobson/Public/Sites/blog_hexo/source/_posts/a-matter-of-semantics.md' (no configuration file in workspace folder).

I opened the file by going:
File > Open > and picking blog_hexo from the list. Then I used the file explorer to browse the sub-directories and find the file.

I appreciate any help. Thanks!

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.