2024-02-01 12:03:09 +03:00
|
|
|
[package]
|
|
|
|
name = "markdown_preview"
|
|
|
|
version = "0.1.0"
|
|
|
|
edition = "2021"
|
|
|
|
publish = false
|
|
|
|
license = "GPL-3.0-or-later"
|
|
|
|
|
|
|
|
[lib]
|
|
|
|
path = "src/markdown_preview.rs"
|
|
|
|
|
|
|
|
[features]
|
|
|
|
test-support = []
|
|
|
|
|
|
|
|
[dependencies]
|
2024-02-01 19:26:50 +03:00
|
|
|
anyhow.workspace = true
|
2024-02-06 22:41:36 +03:00
|
|
|
editor.workspace = true
|
|
|
|
gpui.workspace = true
|
|
|
|
language.workspace = true
|
2024-02-01 19:26:50 +03:00
|
|
|
lazy_static.workspace = true
|
|
|
|
log.workspace = true
|
2024-02-06 22:41:36 +03:00
|
|
|
menu.workspace = true
|
|
|
|
project.workspace = true
|
markdown_preview: Improved markdown rendering support (#7345)
This PR improves support for rendering markdown documents.
## After the updates
https://github.com/zed-industries/zed/assets/18583882/48315901-563d-44c6-8265-8390e8eed942
## Before the updates
https://github.com/zed-industries/zed/assets/18583882/6d7ddb55-41f7-492e-af12-6ab54559f612
## New features
- @SomeoneToIgnore's [scrolling feature
request](https://github.com/zed-industries/zed/pull/6958#pullrequestreview-1850458632).
- Checkboxes (`- [ ]` and `- [x]`)
- Inline code blocks.
- Ordered and unordered lists at an arbitrary depth.
- Block quotes that render nested content, like code blocks.
- Lists that render nested content, like code blocks.
- Block quotes that support variable heading sizes and the other
markdown features added
[here](https://github.com/zed-industries/zed/pull/6958).
- Users can see and click internal links (`[See the docs](./docs.md)`).
## Notable changes
- Removed dependency on `rich_text`.
- Added a new method for parsing markdown into renderable structs. This
method uses recursive descent so it can easily support more complex
markdown documents.
- Parsing does not happen for every call to
`MarkdownPreviewView::render` anymore.
## TODO
- [ ] Typing should move the markdown preview cursor.
## Future work under consideration
- If a title exists for a link, show it on hover.
- Images.
- Since this PR brings the most support for markdown, we can consolidate
`languages/markdown` and `rich_text` to use this new renderer. Note that
the updated inline text rendering method in this PR originated from
`langauges/markdown`.
- Syntax highlighting in code blocks.
- Footnote references.
- Inline HTML.
- Strikethrough support.
- Scrolling improvements:
- Handle automatic preview scrolling when multiple cursors are used in
the editor.
- > great to see that the render now respects editor's scrolls, but can
we also support the vice-versa (as syntax tree does it in Zed) — when
scrolling the render, it would be good to scroll the editor too
- > sometimes it's hard to understand where the "caret" on the render
is, so I wonder if we could go even further with its placement and place
it inside the text, as a regular caret? Maybe even support the
selections?
- > switching to another markdown tab does not change the rendered
contents and when I call the render command again, the screen gets
another split — I would rather prefer to have Zed's syntax tree
behavior: there's always a single panel that renders things for whatever
tab is active now. At least we should not split if there's already a
split, rather adding the new rendered tab there.
- > plaintext URLs could get a highlight and the click action
## Release Notes
- Improved support for markdown rendering.
2024-02-08 12:19:31 +03:00
|
|
|
pretty_assertions.workspace = true
|
2024-02-01 19:26:50 +03:00
|
|
|
pulldown-cmark.workspace = true
|
2024-02-06 22:41:36 +03:00
|
|
|
theme.workspace = true
|
|
|
|
ui.workspace = true
|
|
|
|
util.workspace = true
|
|
|
|
workspace.workspace = true
|
2024-02-01 12:03:09 +03:00
|
|
|
|
|
|
|
[dev-dependencies]
|
2024-02-06 22:41:36 +03:00
|
|
|
editor = { workspace = true, features = ["test-support"] }
|