artempyanykh/marksman

F#
Windows

Write Markdown with code assist and intelligence in the comfort of your favourite editor.

markdownnotesnote-takinglsplanguage-serveremacslanguage-server-protocolneovim
스타 성장
스타
3.3k
포크
72
주간 성장
+12
이슈
121
1k2k3k
2021년 4월2023년 1월2024년 11월2026년 9월
README

Build & Test release homebrew marksman Downloads

Marksman

Write Markdown with code assist and intelligence in the comfort of your favourite editor.

splash


Marksman is a program that integrates with your editor to assist you in writing and maintaining your Markdown documents. Using LSP protocol it provides completion, goto definition, find references, rename refactoring, diagnostics, and more. In addition to regular Markdown, it also supports wiki-link-style references that enable Zettelkasten-like[^roam-research], [^markdown-memo] note taking. See more about Marksman's features below.

Marksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS.

The server provides assistance with:

  • Markdown inline links:
    This is [inline link](/some-file.md#some-heading).
    This is an internal [anchor link](#heading).
    
  • Markdown reference links:
    See [reference].
    
    [reference]: /url "Title"
    
  • Wiki-links:
    Link to [[another-note]].
    Link to [[another-notes#heading]].
    Internal link to [[#a-heading]].
    

All types of links support completion, hover, goto definition/references. Additionally, Marksman provides diagnostics for wiki-links to detect broken references and duplicate/ambiguous headings.

Existing editor integrations[^lsp]:

  • VSCode via Marksman VSCode.

  • Neovim:

  • Vim:

    • via ale - Ale has built-in support for Marksman

    • via lsp

      Example config (add the following to your ~/.vim/after/ftplugin/markdown.vim):

      if exists('g:loaded_lsp')
        call LspAddServer([#{ name: 'marksman', filetype: ['markdown'], path: '/path/to/marksman', args: ['server'], syncInit: v:true }])
      end
      
  • Emacs:

    • via LSP Mode (automatic server installation).

      Example config for use-package users:

      (use-package markdown-mode
        :hook (markdown-mode . lsp)
        :config
        (require 'lsp-marksman))
      
    • via Eglot, requires configuration (unless eglot#1013 gets merged); add the following to your init.el

      (add-to-list 'eglot-server-programs '(markdown-mode . ("marksman")))
      (add-hook 'markdown-mode-hook #'eglot-ensure)
      
  • Helix supports Marksman out of the box. However, you need add marksman binary to your PATH manually.

  • Kakoune can be used with kakoune-lsp with no other configuration.

  • Sublime Text via LSP-marksman (automatic server installation).

  • BBEdit can be configured to use Marksman as an LSP server for Markdown files.

  • Zed supports Marksman through it's integrated LSP support, by addinging it as an available LSP for Markdown in Zed's settings.json:

    // Zed settings
    {
      // ...
      "languages": {
        "Markdown": {
          "language_servers": ["marksman"]
        }
      }
    }
    

How to install

See the installation instructions.

Demos and tutorials

Completion Markdown

Features

See the Features page to learn more about language features, configurations, and single- and multi-file modes.

FAQ

  • Cross-file references and completions don't work.
    • Either create an empty .marksman.toml in the root folder of your project or initialize a repository (e.g. git init). See this page to learn more about single- and mult-file modes.
  • I'm getting "marksman can’t be opened because Apple cannot check it for malicious software" on MacOS.
    • Run the following command to bypass it and let Mac know that it's fine: xattr -d com.apple.quarantine <path-to-marksman-bin>.

[^roam-research]: You may have heard about Roam Research. That is a commercial implementation of the Zettelkasten method and another point of reference for what Marksman is about. However, unlike a proprietary Roam Research, Marksman is free, open-source and integrated into your favourite editor (albeit for not not as feature rich as Roam Research).

[^markdown-memo]: There is an excellent VSCode extension called Markdown Memo. You definitely need to check it out if you're primarily using VSCode as it has some features that are missing in Marksman and Marksman VSCode extension. However, Markdown Memo is VSCode specific while Marksman is a generic language server, so can be used with any editor that has LSP support: Emacs, Vim, Neovim, etc.

[^lsp]: Since Marksman is a regular Language Server most of the functionality works out of the box with any LSP client.

[^single-file-mode]: There is an initiative to add a single-file mode to LSP but it's not a part of the spec at least until and including v3.17.

관련 저장소
microsoft/markitdown

Python tool for converting files and office documents to Markdown.

PythonPyPIlibraryMIT Licenselangchainopenai
180.6k13.3k
firecrawl/firecrawl

The context API to search, scrape, and interact with the web at scale. 🔥

TypeScriptnpmGNU Affero General Public License v3.0aicrawler
firecrawl.dev
177.7k9.7k
toeverything/AFFiNE

There can be more than Notion and Miro. AFFiNE(pronounced [ə‘fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.

TypeScriptnpmappOthereditorcrdt
affine.pro
72.3k5.2k
docling-project/docling

Get your documents ready for gen AI

PythonPyPIlibraryMIT Licenseaiconvert
docling-project.github.io/docling
66.1k4.8k
usememos/memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

GoGo ModulesMIT Licensereactgo
usememos.com
62.8k4.7k
marktext/marktext

📝A simple and elegant markdown editor, available for Linux, macOS and Windows.

TypeScriptnpmappMIT Licensemacostypewriter-mode
marktext.me
61.2k4.5k
Textualize/rich

Rich is a Python library for rich text and beautiful formatting in the terminal.

PythonPyPIcliMIT Licensepythonpython3
rich.readthedocs.io/en/latest/
57.3k2.3k
prettier/prettier

Prettier is an opinionated code formatter.

JavaScriptnpmMIT Licenseformatterprinter
prettier.io
52.2k5k
jekyll/jekyll

:globe_with_meridians: Jekyll is a blog-aware static site generator in Ruby

RubyRubyGemslibraryMIT Licenserubyjekyll
jekyllrb.com
51.7k10.3k
slidevjs/slidev

Presentation Slides for Developers

TypeScriptnpmMIT Licenseslidespresentation
sli.dev
48.5k2.2k
kepano/obsidian-skills

Agent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas.

skillMIT Licenseclaudecodex
48k3.4k
GitHubDaily/GitHubDaily

坚持分享 GitHub 上高质量、有趣实用的开源技术教程、开发者工具、编程网站、技术资讯。A list cool, interesting projects of GitHub.

tutorialgithubopen-source
githubdaily.com
47.8k4.7k