An experimental proofreading and linting language server for markdown files ✍️

Related tags

IDEs prosemd-lsp
Overview

prosemd

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, and uses nlprule, which is based on 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.

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 for your OS (Either: prosemd-lsp-linux, prosemd-lsp-windows.exe, or prosemd-lsp-macos).
  • or; install Rust and then run cargo install prosemd-lsp to compile prosemd from source.

Configuring coc.nvim

First, make sure that you install the prosemd-lsp executable.

You may add prosemd to coc.nvim's config manually in coc-settings.json opened by the :CocConfig command, like so:

{
  "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

First, make sure that you install the prosemd-lsp executable.

You may add prosemd to Neovim's built-in language server client by adding it to nvim-lspconfig's list of language servers:

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.

Comments
  • Fix nvim-lspconfig example

    Fix nvim-lspconfig example

    The example was not working anymore. It said that the configuration was not present

    Cannot access configuration for prosemd. Ensure this server is listed in `server_configurations.md` or added as a custom server.
    

    Found the solution here 😉 https://github.com/neovim/nvim-lspconfig/issues/1494#issuecomment-984337939

    opened by pierpo 0
  • Document command-line usage

    Document command-line usage

    Pretty self-explanatory: it isn't currently clear how to run this from, say, a bash shell on an arbitrary file. I feel that this should be documented.

    opened by Pandapip1 0
  • For other newbies: MacOS executable

    For other newbies: MacOS executable

    Not really an issue, just some questions about the instructions. If this clears it up, I'll submit a PR for some readme changes.

    I have nvim-lspconfig and am very familiar with Neovim setups, Lua and config files, etc. What's confused to me is the MacOS Executable. If I use the path in the config, do I just need to drop the file I downloaded from the release page into the path? In this case, /usr/local/bin? Because it doesn't really seem like its executing anything.

    I can't execute the actual file, as I see the Windows release has .exe in the file name, but the mac one just opens a text doc. Am I missing something?

    opened by Normanras 1
  • Enable/disable specific rules

    Enable/disable specific rules

    Is it possible to disable specific LanguageTool rules? For example I would like to keep Oxford commas (serial comma), which shows a warning at the moment.

    opened by disrupted 1
  • prosemd-lsp seems to crash on start

    prosemd-lsp seems to crash on start

    Hi,

    I am interested in using this project, but I can't get it too start correctly. After configuring it I get the following logs from my Nvim LSP:

    Screenshot 2021-04-29 at 08 51 03

    Do you have any idea what may cause this?

    opened by martijndeheus 2
Owner
Phil Pluckthun
Principal Engineer, @FormidableLabs, London • React (Native), CSS (-in-JS), Reason, GraphQL • 🇬🇧 🇩🇪 🇭🇰 • dank.sh • styled-components & urql core team
Phil Pluckthun
AIDL Language Server Protocol (LSP) server

AIDL Language Server Protocol (LSP) server Experimental AIDL LSP server based on rust-aidl-parser. Features: diagnostics workspace symbols (Ctrl+T in

Benoit Walter 0 Jan 9, 2022
A LSP (Language Server Protocol) server for OpenSCAD.

openscad-LSP A LSP (Language Server Protocol) server for OpenSCAD. inspired by dzhu/openscad-language-server Tested with VSCode on Mac and Windows. Te

Leathong 20 Dec 15, 2022
impl LSP (Language Server Protocol) Server for librime

rime-ls 为 rime 输入法核心库 librime (的部分功能) 实现 LSP 协议, 从而通过编辑器的代码补全功能输入汉字. 项目还处在早期阶段, 各方面都非常不成熟. 目标是提供 rime + LSP 的通用解决方案, 在不同编辑器内实现与其他 rime 前端类似的输入体验. Feat

zilch40 55 Jan 22, 2023
Obsidian Plugin: Convert a URL into markdown

Obsidian Plugin: Convert a URL into markdown Transforms a URL to markdown view if the website allows it. Installation Available in the community plugi

Stephen Solka 142 Jan 3, 2023
Language Server Protocol (LSP) support for vim and neovim.

For legacy python implementation, see branch master. LanguageClient-neovim Language Server Protocol support for vim and neovim. More recordings at Upd

Junfeng Li 3.5k Dec 29, 2022
IDE tools for writing pest grammars, using the Language Server Protocol for Visual Studio Code, Vim and other editors

Pest IDE Tools IDE support for Pest, via the LSP. This repository contains an implementation of the Language Server Protocol in Rust, for the Pest par

pest 20 Apr 8, 2023
Rust IDE support for Atom, powered by the Rust Language Server (RLS)

IDE-Rust Rust language support for Atom-IDE, powered by rust-analyzer. Features Auto-completion Diagnostics (errors and warnings from rustc) Document

The Rust Programming Language 239 Dec 14, 2022
Kakoune Language Server Protocol Client

Kakoune Language Server Protocol Client kak-lsp is a Language Server Protocol client for Kakoune implemented in Rust. Installation Note kak-lsp.toml d

null 495 Dec 17, 2022
Repository for the Rust Language Server (aka RLS)

Rust Language Server (RLS) The RLS provides a server that runs in the background, providing IDEs, editors, and other tools with information about Rust

The Rust Programming Language 3.6k Dec 30, 2022
Fennel language server protocol (LSP) support.

fennel-language-server Fennel language server protocol (LSP) support. fennel-language-server is currently in a very early stage and unreliable. Use it

null 68 Dec 27, 2022
A brand-new language server for Typst, plus a VS Code extension

Typst LSP A brand-new language server for Typst. Features Syntax highlighting, error reporting, code completion, and function signature help Compiles

Nathan Varner 414 Apr 17, 2023
WIP: Asynchronous Language Server Protocol framework

async-lsp Asynchronous Language Server Protocol (LSP) framework based on tower. ⚠️ This project serves as a proof-of-concept for LSP with middlewares

null 9 Apr 11, 2023
This tool allows you to create the files needed for a Visual Studio project so that you can continue coding on a Mac for C++ with Visual Studio Code and then submit the Visual Studio project for Class Assignments

This tool allows you to create the files needed for a Visual Studio project so that you can continue coding on a Mac for C++ with Visual Studio Code and then submit the Visual Studio project for Class Assignments

cameron 3 Jan 18, 2023
Rust language support in Atom - LOOKING FOR MAINTAINER, see #144

Rust language support in Atom Adds syntax highlighting and snippets to Rust files in Atom. Install Install the package language-rust in Atom (Preferen

Andreas Neuhaus 118 Oct 11, 2022
RustDT is an Eclipse based IDE for the Rust programming language:

Project website: http://rustdt.github.io/ As of 2017, RustDT is no longer actively maintained, see this blog post for more information. If you are int

null 351 Aug 20, 2022
The official Sublime Text 3 package for the Rust Programming Language

Rust Enhanced About This is a Sublime Text 3 package which supports Rust starting with version 1.0, it makes no attempt at supporting earlier incompat

The Rust Programming Language 704 Jan 7, 2023
rust-analyzer is a modular compiler frontend for the Rust language

rust-analyzer is a modular compiler frontend for the Rust language. It is a part of a larger rls-2.0 effort to create excellent IDE support for Rust.

null 11.2k Jan 8, 2023
Vim-fork focused on extensibility and usability

Documentation | Chat | Twitter Neovim is a project that seeks to aggressively refactor Vim in order to: Simplify maintenance and encourage contributio

Neovim 61k Jan 2, 2023
A *seriously* no-bullshit Neovim GUI written in Rust and Tauri

Looking for a shareable component template? Go here --> sveltejs/component-template svelte app This is a project template for Svelte apps. It lives at

null 13 Nov 21, 2022