Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    scarab5q
    @scarab5q
    Also @scotttrinh congrats on the baby !!!!
    Scott Trinh
    @scotttrinh
    :tada:
    @ngortheone My feeling is that implementing it with generic parser combinators would go a long way toward passing the "clean room" test, since the elisp version doesn't exactly do that. I wonder how beorg and orgzly do their parsing?
    Scott Trinh
    @scotttrinh
    oh, orgzly has a gpl3 java parser.
    Ihor Antonov
    @ngortheone
    I think I will continue working on org-rs. But I think we need some way of advertising ourselves.
    Ihor Antonov
    @ngortheone
    we need more contributors
    scarab5q
    @scarab5q
    Yeah go post on r/Emacs and r/rust again
    Also @scotttrinh didn't you say that you had found some people that were interested in helping ages ago ?
    Maybe poke them a bit
    I don't really have allot of time ATM, got uni exams and assignments until mid June and then I start a job so won't be able to help out properly until mid to late June
    But surely there will be people in semacs that would be interested ? They could use org-rs as their org mode. It would make it by far the fastest version of org anywhere
    Scott Trinh
    @scotttrinh
    @scarab5q yeah I'll ping a few people who reached out via Reddit and see if they're interested in chatting some more about what needs being done.
    Taylor
    @tskinn
    I don't know rust super well but I want to learn and would like to help if possible. Are there beginner issues or some specific information on what tasks need completion? Or should I just try to catch up on current codebase and make my own issues?
    Ihor Antonov
    @ngortheone
    Hi @tskinn! I'll be glad to bring you up to speed, take a look at existing issues and let me know if there is something you like. I will create more issues today (basically most of them are in TODOs in a code)
    The big part of the work is to read elisp code and to translate it to rust. I think this is a perfect opportunity to learn some rust as well
    Right now I am working on removing xi-rope dependency, as it appeared to be quite costly
    Taylor
    @tskinn
    oh interesting I was under the impression xi stuff was all supposed to be super efficient.
    Ihor Antonov
    @ngortheone
    It is, generally.
    here is the gist of it xi-editor/xi-editor#1192
    I'm also writing a blog post with more deatils
    Taylor
    @tskinn
    awesome thanks. Yeah I will dig into whats already written go over the readmes you've created and hopefully comeback with some ideas on what I can start on and or questions
    Ihor Antonov
    @ngortheone
    Sure!
    Ihor Antonov
    @ngortheone
    Check out my blog post about why I'm dropping rope
    Taylor
    @tskinn
    :thumbsup:
    Ihor Antonov
    @ngortheone
    Guys, there might be possible to keep the rope dependency if someone figures out how to use Nom with iter_chunks
    As I discovered Nom supports streaming, so I think using rope's non-allocating chunk iterator is possible with Nom, instead of regexes. But unfortunately I don't have time for this. I will proceed with regular String for now
    If someone is interested - this is potentially the thing that might be useful to both org-nom and org-rs
    André Zanellato
    @AZanellato
    Hello! I'm zanza19 on reddit :)
    I can try to take a look at using nom with rope :)
    Ihor Antonov
    @ngortheone
    That would be great! Check out nom's gitter room too, I posted a question there, but did not yet had a chance to read the answer
    Ihor Antonov
    @ngortheone
    I have another research idea. Guile 2.2 can run emacs lisp natively. All we need is to provide it with necessary primitives(low level functions like cursor movement etc.)
    There are even existing crates that can help with C bindings
    The core of my idea is that there is a shit tone of elisp code in Org mode. Parser is a small tiny drop in the sea. If we can manage to run unmodified elisp outside of emacs - that woud be a true breakthrough
    Taylor
    @tskinn
    How do we handle per file settings? Currently I'm looking at the headline parsing and the TODO keywords but there are quite a few ways to customize per file besides that.
    Ihor Antonov
    @ngortheone
    By "per file" you mean that different org files can have different settings ?
    I haven't seen that functionality yet. Is there a doc that describes that?
    is this the thing?
    Taylor
    @tskinn
    yeah here is some more docs on it https://orgmode.org/manual/In_002dbuffer-settings.html
    Ihor Antonov
    @ngortheone

    Ok, I did some digging on the topic and here is what I found out.
    The parser itself (org-element) does not care about these settings. It treats them as regular syntax elements:

    For example, the following org file:

    #+FILETAGS: :crazytag:
    
    * TODO Some task

    evaluates to:

    (org-data nil
              (section (:begin 1 :end 25
                               :contents-begin 1
                               :contents-end 24
                               :post-blank 1
                               :post-affiliated 1
                               :parent #0)
                       (keyword (:key FILETAGS :value :crazytag:
                                      :begin 1
                                      :end 24
                                      :post-blank 0
                                      :post-affiliated 1
                                      :parent #1)))
              (headline (:raw-value Some
                                    task
                                    :begin 25
                                    :end 42
                                    :pre-blank 0
                                    :contents-begin nil
                                    :contents-end nil
                                    :level 1
                                    :priority nil
                                    :tags nil
                                    :todo-keyword TODO
                                    :todo-type todo
                                    :post-blank 0
                                    :footnote-section-p nil
                                    :archivedp nil
                                    :commentedp nil
                                    :post-affiliated 25
                                    :title (Some task):parent#0)))
    Evaluation of those settings happens on a different layer, after parser has finished the scan.
    For us currently it does not change anything. We still need to get write the parser, with default settings for now.
    Once we have it we can start thinking about configuration/customiztion layer.
    So in short - yes, supporting those will be possible, but it will happen outside of the parser.
    Taylor
    @tskinn
    :thumbsup:
    Ihor Antonov
    @ngortheone
    @tskinn your PR was the first PR with some real code! Thanks!