emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Some Issues I Encountered While Developing Metanote


From: note meta
Subject: Some Issues I Encountered While Developing Metanote
Date: Mon, 11 Sep 2023 20:04:17 +0800

Dear org mode developers,

I'm the author of Metanote. A few days ago, I posted a thread on Reddit with the title "Let's Talk About the Story of Metanote and Free Software."
https://www.reddit.com/r/emacs/comments/16db9gz/lets_talk_about_the_story_of_metanote_and_free/
You  can learn more about Metanote and me from there. In the replies to that post, someone mentioned here, so here I am.

During the development of Metanote, I encountered some issues, as follows: (Note that my testing environment is based on org mode 9.3.6, GNU Emacs 28.2. I haven't tested with the latest org mode, so I'm not sure if these issues still exist.)

1. Dynamic Block Parsing Issue

   #+begin_example
#+begin
#+end:
   #+end_example

   The above is a Dynamic Block, and the parsed syntax tree is:

   (org-data nil (section (:begin 1 :end 17 :contents-begin 1 :contents-end 17 :post-blank 0 :post-affiliated 1 :parent #0) (dynamic-block (:begin 1 :end 17 :block-name nil :arguments nil :contents-begin nil :contents-end nil :post-blank 0 :post-affiliated 1 :parent #1))))

   However, the following is not recognized as a Dynamic Block:

   #+begin_example
a
#+begin
#+end:
   #+end_example

   the parsed syntax tree is:

(org-data nil (section (:begin 1 :end 18 :contents-begin 1 :contents-end 18 :post-blank 0 :post-affiliated 1 :parent #0) (paragraph (:begin 1 :end 11 :contents-begin 1 :contents-end 11 :post-blank 0 :post-affiliated 1 :parent #1)) (keyword (:key "END" :value "" :begin 11 :end 18 :post-blank 0 :post-affiliated 11 :parent #1))))

2. About Paragraph

   #+begin_example
+--+
+--+
+this is a paragraph+
+this is a paragraph+
   #+end_example

There should be only one paragraph above, but it's parsed as two:

(org-data nil (section (:begin 1 :end 55 :contents-begin 1 :contents-end 55 :post-blank 0 :post-affiliated 1 :parent #0) (paragraph (:begin 1 :end 6 :contents-begin 1 :contents-end 6 :post-blank 0 :post-affiliated 1 :parent #1)) (paragraph (:begin 6 :end 55 :contents-begin 6 :contents-end 55 :post-blank 0 :post-affiliated 6 :parent #1))))

3. About Pre-blank
   
   The first blank line in a Greater Element is parsed as a paragraph. However, this behavior is inconsistent in Items and Footnote definitions. In Items and Footnote definitions, a blank line is parsed as a Pre-blank. In Footnote definitions, especially, this blank line appears only once because having more than one would break the Footnote definitions.

#+begin_example
[fn:a]

bbb
#+end_example

(org-data nil (section (:begin 1 :end 13 :contents-begin 1 :contents-end 13 :post-blank 0 :post-affiliated 1 :parent #0) (footnote-definition (:label "a" :begin 1 :end 13 :contents-begin 9 :contents-end 13 :pre-blank 2 :post-blank 0 :post-affiliated 1 :parent #1) (paragraph (:begin 9 :end 13 :contents-begin 9 :contents-end 13 :post-blank 0 :post-affiliated 9 :parent #2)))))


I'm a big fan of org mode. A few years ago, I couldn't find an app that supported org mode on my phone, so I created one myself. I hope that through my app, I can introduce org mode to more people, even those who are not familiar with Emacs. I also hope to make some contributions to org mode.

Additionally, is it possible to include Metanote in the 'Tools that work with Org' section at https://orgmode.org/tools.html ?  Metanote website is https://metanote-dev.github.io/.

Best regards,
Zhen

reply via email to

[Prev in Thread] Current Thread [Next in Thread]