yaml-rust
tree-sitter-markdown
yaml-rust | tree-sitter-markdown | |
---|---|---|
4 | 8 | |
597 | 358 | |
- | 3.9% | |
0.0 | 0.0 | |
about 1 month ago | about 1 month ago | |
Rust | C | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
yaml-rust
-
Project idea: port markdownlint to Rust
Either https://github.com/chyh1990/yaml-rust or https://github.com/dtolnay/serde-yaml for parsing the YAML config file that markdownlint uses
-
Borrow checker not liking recursive walk through a HashMap
Here's the Rust code so far -- the commented portions are my intent via pseudocode. This is part of an implementation where there's a _yaml_hash member that points to yaml_rust's underlying LinkedHashMap. (Also using anyhow's bail! and Result.)
-
How to deal with unmaintained crates? (eg. yaml-rust)
The first thing I did was to find the crate yaml-rust and it seems it isn't really maintained anymore. It has not been updated in a year and there's a lot of PR's and unresolved issues, the CI is broken... So here is my open ended question.
-
YAML and Configuration Files
Currently, my main concern with YAML is that, by the spec, comments are not attached to a particular node (see https://yaml.org/spec/1.2/spec.html#id2767100). As a result, a lot of YAML parsers (like https://github.com/yaml/libyaml and https://github.com/chyh1990/yaml-rust) only filter out the comments during the parsing phase. This makes it less than ideal for a use-case where the configuration file is expected to be modified by both programs and humans.
TOML makes it more trivial to associate comments with a node. This is mainly because the language is simpler though, as the spec is not explicit about that (https://github.com/chyh1990/yaml-rust).
tree-sitter-markdown
-
How to pass environment variables to treesitter grammar
The markdown treesitter grammar accepts environment variables when building to tweak it's behavior. How can I pass these? Currently I am using
-
Project idea: port markdownlint to Rust
given the existence of tree sitter grammar for markdown, I think it’d be fairly easy to implement the linter on top of it.
-
New(ish) plugin: ts-vimdoc.nvim, generate vimdoc from your README.md for your plugin using tree-sitter
The original repo wasn't working since the move from ikatyang/tree-sitter-markdown to the new markdown parser by /u/deinemade/ MDeiml/tree-sitter-markdown so I kept maintaining it as a fork with the absolute basics just so I could generate the vimdoc for fzf-lua.
-
Any Markdown plugin for Neovim that you recommend?
The new parser https://github.com/MDeiml/tree-sitter-markdown is more stable. And should be installed by default, if not just run :TSInstall markdown
-
Tree-sitter for markdown
Looks like this scanner uses more of the parser generator features of tree-sitter: grammar.json is almost 11k lines of "definitely not easy to maintain (IMHO)" json. Where as ikatyang's version is a hand written parser. tree-sitter is not great for languages that are not deterministic. The benefits for ikatyang is that it is probably easier to maintain, the drawbacks are it can definitely crash neovim (sadly). For these types of syntax, a parser definitely needs to support look ahead and look behind, which tree-sitter does not support. This is just my not-so-computer-science-y theory.
- nvim-treesitter for markdown
-
Comment.nvim <3 Treesitter and some new [chef kiss] stuff
There have been big problems with treesitter Markdown, but the good news is that a brand new version is being worked on and looks like it is going to be awesome! https://github.com/MDeiml/tree-sitter-markdown
What are some alternatives?
serde-yaml - Strongly typed YAML library for Rust
vim-pandoc-syntax - pandoc markdown syntax, to be installed alongside vim-pandoc
serde - Serialization framework for Rust
mkdnflow.nvim - Fluent navigation and management of markdown notebooks
strictyaml - Type-safe YAML parser and validator.
marksman - Write Markdown with code assist and intelligence in the comfort of your favourite editor.
cue - CUE has moved to https://github.com/cue-lang/cue
nvim - 🍨 Soothing pastel theme for (Neo)vim
libyaml-rust - LibYAML bindings for Rust
vimtex - VimTeX: A modern Vim and neovim filetype plugin for LaTeX files.
ytt - YAML templating tool that works on YAML structure instead of text
nvim-treesitter - Nvim Treesitter configurations and abstraction layer