Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vsch/idea-multimarkdown

Markdown language support for IntelliJ IDEA.
https://github.com/vsch/idea-multimarkdown

intellij-plugin markdown-editor markdown-to-html markdown-toc markdown-viewer

Last synced: 7 days ago
JSON representation

Markdown language support for IntelliJ IDEA.

Awesome Lists containing this project

README

        

Markdown Navigator 3.0
==========================================================================================================================================================

[TOC]: #

### Table of Contents
- [Overview](#overview)
- [Document with pleasure!](#document-with-pleasure)
- [Two tier model](#two-tier-model)
- [Source](#source)
- [Background](#background)

## Overview

![Screenshot](/assets/images/capabilities2.png)

**[Markdown][Markdown] language support for IntelliJ
platform**

**You can download it on the [JetBrains plugin page].**

### Document with pleasure!

Work with [Markdown] files like you do with other languages in the IDE, by getting full support
for:

* **Paste images** into documents for fast screen capture links
* **Drag & Drop files and images** for fast link insertion
* **Drag and Drop** text, HTML or links from other applications
* **Formatting** to clean up documents with a keystroke
* **Navigation and Find Usages** to find references without effort
* **Copy Markdown** as **JIRA**, **YouTrack** or **HTML** formatted text
* Convert **HTML to Markdown by pasting** it into a Markdown document.
* **Export** to **HTML** or **PDF** to share with others
* **Refactoring** of all referencing elements:
* files ⟺ links
* headings ⟺ ref anchors
* footnotes ⟺ footnote refs
* references ⟺ ref links/ref images
* **Completions** to reduce typing:
* link address ⇐ files
* ref anchors ⇐ headings
* footnote refs ⇐ footnotes
* ref links/ref images ⇐ references
* link text ⇐ ref anchor/link address
* **Error and Warning** annotations to help catch mistakes early
* **Intention actions** for fast results with less effort
* **Wrap on Typing** to keep it nicely formatted as you edit
* **GitHub style rendering** that you are used to, out of the box
* **GitLab parsing and rendering** extensions
* **Math** extension using [Katex](https://github.com/Khan/KaTeX)
* **Charts** extension using [Mermaid](https://github.com/knsv/mermaid)
* **Math block and inline** rendering by [Katex] or [codecogs.com]
* **PlantUML fenced code** rendering by [PlantUML] or [gravizo.com]
* **Fast typing response** for distraction free editing
* **Fully customizable** to adjust to your preferences and project needs

### Two tier model

1. Previewing, syntax highlighting, basic editing functionality with link completions with split
editor preview is available in the basic open source edition. Intended for mostly previewing
and editing of Markdown documents without full document format.

2. Advanced features used for creating and maintaining Markdown documents: refactoring, find
usages, validation and auto formatting were available with the Enhanced version, from the
[JetBrains Marketplace].

:information_source: The latest release is only to address compatibility issues for newer
IDEs from 2021.3 to 2023.1.1.

**It is a full-featured Enhanced version, released without needing a license.**

It is only intended as a measure to allow users, who depended on this plugin for their
workflow, to have a working solution until I can figure out if it is possible to continue
maintaining this plugin in an economically sustainable manner and return Markdown Navigator
Enhanced to the [JetBrains Marketplace] as a paid plugin, or let it go for good.

### Source

The source in this repository is for the unlicensed version of the plugin. As such, it does not
have all the features of the enhanced version.

#### Working with the source

IntelliJ Gradle Plugin development environment. See [Building from sources](BUILD.md)

#### Some internal details, should you care to know

The [pegdown][] [Markdown] parser used by the plugin in its original incarnation was changed to
[flexmark-java] and [pegdown] dependencies have been removed as of version 2.2.0.

[flexmark-java] is a fork of [commonmark-java], with changes:

* source element based AST with detailed break down of each element for syntax highlighting
* complete source position tracking for all elements and their lexical parts
* optimized for efficient parsing with many parser extensions installed
* unified core and extension options API to simplify parser/renderer configuration
* options to tweak core parser rules

On the coding end, the new parser is a joy to maintain and enhance. The parser architecture,
inherited from [commonmark-java], is easy to debug and test. Markdown element parsers have
little or no interdependencies with other element parsers making it easy to fine tune parser
behaviour on a per-element basis and add parser configuration options to emulate other Markdown
processors. All this is in contrast to pegdown's one big PEG grammar implementation with
everything potentially inter-dependent.

## Background

It all started with a desire to see Markdown files in PhpStorm IDE as they would look on GitHub.
I was already using [nicoulaj/idea-markdown plugin] but found its preview was more like
[Craig's List] than [GitHub]. It did not appear to have been recently updated, so I decided to
fork it and modify its style sheet. How hard could that be?

I found out quickly that there was more to it than meets the eye. Rendering is done by Swing not
a browser, the parser is HTML 3.1, with many features not implemented. Additionally, the Table
extension did not work in `pegdown` version used by the plugin.

I upgraded the plugin to use the latest `pegdown`, `parboiled`. Fixed a few bugs. I was already
in the code, so I might as well add a few more features like user editable style sheet, fix a
few more bugs, add updates to preview so that I could split the editor pane and edit in one
while seeing the preview in the other.

Now, years later, the plugin is brimming with features to make Markdown editing and creation a
breeze. It was a lot more work, and code, than I imagined but more satisfying that I had hoped.

It has been a fun trip down the rabbit hole of IntelliJ IDEA plugin development which started
with a simple desire for a Markdown preview that looked like GitHub's.

---

\* This plugin was originally based on the [nicoulaj/idea-markdown plugin] by [nicoulaj], which
was based on [pegdown] library by [sirthias].

Markdown Navigator, Copyright (c) 2015-2023, Vladimir Schneider, All Rights Reserved.

[JetBrains Marketplace]: https://plugins.jetbrains.com/idea/plugin/7896-markdown-navigator-enhanced
[codecogs.com]: https://codecogs.com
[commonmark-java]: https://github.com/atlassian/commonmark-java
[Craig's List]: https://montreal.craigslist.ca/?lang=en&cc=us
[GitHub]: https://github.com/vsch/laravel-translation-manager
[JetBrains plugin page]: https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
[Katex]: https://github.com/Khan/KaTeX
[Markdown]: https://daringfireball.net/projects/markdown
[PlantUML]: https://plantuml.com
[flexmark-java]: https://github.com/vsch/flexmark-java
[gravizo.com]: https://gravizo.com
[nicoulaj]: https://github.com/nicoulaj
[nicoulaj/idea-markdown plugin]: https://github.com/nicoulaj/idea-markdown
[pegdown]: http://pegdown.org
[sirthias]: https://github.com/sirthias