Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kitten/prosemd-lsp
An experimental proofreading and linting language server for markdown files ✍️
https://github.com/kitten/prosemd-lsp
Last synced: 19 days ago
JSON representation
An experimental proofreading and linting language server for markdown files ✍️
- Host: GitHub
- URL: https://github.com/kitten/prosemd-lsp
- Owner: kitten
- License: lgpl-2.1
- Created: 2021-03-05T14:05:31.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-26T19:16:51.000Z (over 1 year ago)
- Last Synced: 2024-05-02T05:19:24.480Z (7 months ago)
- Language: Rust
- Homepage:
- Size: 6.83 MB
- Stars: 162
- Watchers: 7
- Forks: 9
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
`prosemd` is an **experimental** proofreading and linting language server for markdown files.
It aims to provide helpful and smart diagnostics when writing prose for technical or non-technical
documents alike.Under the hood, it integrates with any editor supporting the [Language Server
Protocol](https://microsoft.github.io/language-server-protocol/), and uses
[nlprule](https://github.com/bminixhofer/nlprule), which is based on
[LanguageTool](https://github.com/languagetool-org/languagetool), to highlight possible errors and
provides suggestions on how to address them.> **Note:** On the roadmap for more features are other useful linting rules, related to Markdown
> links, formatting, and other potentially helpful features, however for now `prosemd` is limited to
> just grammar & style correction with `nlprule` and only supports English.## Quick Start
### Setup in VSCode
**If you're using VSCode, all you have to do is install the `prosemd` extension.**
[Install the extension from the VSCode Marketplace.](https://marketplace.visualstudio.com/items?itemName=kitten.prosemd)
### Manual Installation
If you're setting the language server up with your editor of choice then you'll need to either
download the executable or compile it from source:- Download the [latest release executable](https://github.com/kitten/prosemd-lsp/releases) for your
OS (Either: `prosemd-lsp-linux`, `prosemd-lsp-windows.exe`, or `prosemd-lsp-macos`).
- or; install [Rust](https://www.rust-lang.org/tools/install) and then run
`cargo install prosemd-lsp` to compile `prosemd` from source.### Configuring [`coc.nvim`](https://github.com/neoclide/coc.nvim)
[First, make sure that you install the `prosemd-lsp` executable.](#manual-installation)
You may add `prosemd` to `coc.nvim`'s config manually in `coc-settings.json` opened by the
`:CocConfig` command, like so:```json
{
"languageserver": {
"prosemd": {
"command": "/usr/local/bin/prosemd-lsp",
"args": ["--stdio"],
"filetypes": ["markdown"],
"trace.server": "verbose",
"settings": {
"validate": true
}
}
}
}
```Don't forget to swap out the binary's path at `command` to where you've installed the `prosemd-lsp`
executable.### Configuring [`nvim-lspconfig`](https://github.com/neovim/nvim-lspconfig)
[First, make sure that you install the `prosemd-lsp` executable.](#manual-installation)
You may add `prosemd` to [Neovim's built-in language server
client](https://neovim.io/doc/user/lsp.html) by adding it to `nvim-lspconfig`'s list of language
servers:```lua
local lsp_configs = require('lspconfig.configs')lsp_configs.prosemd = {
default_config = {
-- Update the path to prosemd-lsp
cmd = { "/usr/local/bin/prosemd-lsp", "--stdio" },
filetypes = { "markdown" },
root_dir = function(fname)
return lsp_util.find_git_ancestor(fname) or vim.fn.getcwd()
end,
settings = {},
}
}-- Use your attach function here
local lsp = require('lspconfig')
lsp.prosemd.setup{ on_attach = on_attach }
```Don't forget to swap out the binary's path at `cmd` to where you've installed the `prosemd-lsp`
executable.