org-rs

org-mode parser rewrite in Rust

  • 所有者: org-rs/org-rs
  • 平台:
  • 許可證: GNU General Public License v3.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Org Mode parser re-write in Rust

Motivation

Org is probably the best and most complete plain text
organizational system known to mankind. It has countless applications like
authoring, publishing, task and time tracking, journal, blog, agenda, wiki
etc...

Unfortunately Org was originally developed for Emacs and therefore
available only inside Emacs. It is a huge limiting factor for Org's development
and popularization. Because of that it is not as popular outside of Emacs
community as it should be.

Many attempts were made to fix this. It all starts with a parser.
But because Org's syntax is not trivial and in fact most of it is
context-sensitive
with only a few context-free elements, it is quite easy to get it wrong.
Some Org parsers have chosen to focus on a restricted subset of Org's syntax like
org-ruby or pandoc.
More ambitious projects try to cover all features but since Org does not have a
formal specification1 they rely on observed Org's behavior in Emacs
or author's intuition. As a result they rarely get finished.

But the absence of a good a spec and the complexity of the grammar are not show
stoppers. Why reinventing the wheel when we can just copy it! This project
takes the only surefire way to get it right - use the original elisp parser
implementation as a blueprint!

Check out FAQ for more information
and feel free to open an issue if you have more questions!

Goals

  • Be fast. Speed matters. Period.
  • Be feature-complete, compliant with original implementation. Nobody wants Nth competing standard.
  • Be standalone, embeddable and reusable. User must not be locked into
    one particular editor or ecosystem. Integrations with language servers,
    editors and plugins should be encouraged.

Design decisions

These are the choices that were made to achieve the goals:

  • Rust. Because it is fast, memory safe and provides C FFI. And most importantly it is cool.

  • Original elisp algorithm. While using the original elisp source as a guideline
    might result in less idiomatic Rust code it has its advantages:

    • Scope of work is well-defined and finish line is visible. This should encourage
      contributions even from people who want to get started with Rust.

    • Getting "feature-complete" is just a matter of getting to the finish line.

Roadmap

element - parser crate is currently the main and only focus.
It should perform just 2 tasks. Generate concrete syntax tree and serialize it
back to canonical Org representation.

The rest of the roadmap is not fully flashed out. Feature-complete parser opens
a lot of possibilities, here are just a few of my ideas:

  • Parse tree manipulation tools (like exporting to other formats).

  • Language server - a way to solve "the matrix" problem.
    Enabling other editors to have their own org-mode would be a logical next step.

  • CLI tools. I'd love to get integration with
    TaskWarrior
    and maybe even use Org as TaskWarrior's DOM.

Contribution

Any contributions are welcome. If you want to help check out
contribution guide.

Got a question? Stop by for a chat at gitter

Similar projects

More about Org Mode

Footnote

  1. Some attempts were made to formalize the syntax. This project uses them as supplementary materials.
    See contribution guide for details.

主要指標

概覽
名稱與所有者org-rs/org-rs
主編程語言Rust
編程語言Rust (語言數: 1)
平台
許可證GNU General Public License v3.0
所有者活动
創建於2019-04-14 04:21:35
推送於2024-04-15 04:00:13
最后一次提交2024-04-15 08:00:13
發布數0
用户参与
星數794
關注者數27
派生數23
提交數46
已啟用問題?
問題數29
打開的問題數15
拉請求數25
打開的拉請求數2
關閉的拉請求數4
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?