Dear all, Kinda late, but I gotta post the meetup notes anyway :) Not everything survived the memories, but I managed to write most parts shortly after the meetup, before I got busy with work.
TL;DR: latex fontification slowness, org-font-lock-element branch, fast searching of Org buffer AST, evolving Org notes over years, org-merge-tool, org-crypt, org-crypt-refactor branch, GPG on Android, note-taking packages for Emacs, speed of opening many Org buffers, highlight-parentheses We moved back to using BigBlueButton, kindly provided by Sasha Chua. - As usual, we started from the latest Emacs news https://sachachua.com/blog/2025/02/2025-02-10-emacs-news/ - karthink complained about Org mode sometimes being slow when ~org-highlight-latex-and-related~ is set to highlight latex fragments - This is a known problem related to way too complex regexp used to search for fragments (see ~org-latex-regexps~) - The proper way to solve it is implementing fontificating via parser (with object cache!) [[https://orgmode.org/list/87ee7c9quk.fsf@localhost]] - However, even adding object cache to the parser is not trivial. The new =org-element-ast.el= library is one of the steps in this direction. It will need to be followed by improving =org-element= itself and then completely rewriting Org's fontification as in https://git.sr.ht/~yantar92/org-mode/tree/feature/org-font-lock-element/item/lisp/org-font-lock-core.el - TL;DR: Not soon - Another option could be using Org parser on the current fontification code specifically for latex fragments - The problem here is that ~org-element-context~ can have quadratic complexity with number of markup objects in paragraph (which is why having parser cache for objects is important) - On the other side, the current approximate regexp-based approach is proven to be slow. So, one may try using ~org-element-context~ + simplified regexp and see how it compares with the current gigantic regexp. If the performance is improved, maybe we can go for it even without changes in the parser - Example how to search for something and query the parser #+begin_src emacs-lisp (while (re-search-forward "\\$\\|\\\\\\(?:[a-zA-Z[(]\\|\\\\[ \t]*$\\|_ +\\)" nil t) (let ((object (org-element-context))) (when (org-element-type-p object 'latex-fragment) (message (buffer-substring-no-properties (org-element-begin object) (org-element-end object))) ;; do the fontification ))) #+end_src - The function doing fontification that needs to be changed is ~org-do-latex-and-related~ - Jake asked about testing and changing note organization in Org mode - He had a very specific idea about somehow maintaining multiple outline/file taxonomies in different git branches and synchronizing them automatically - He looked into our old GSoC project https://orgmode.org/worg/org-contrib/gsoc2012/student-projects/git-merge-tool/manual.html - org-merge-tool is Org syntax-aware implementation of git merge - It is not meant to maintain multiple taxonomies but rather aims at merging diverged versions of the same Org file - In general, I doubt that there is a universal automatic solution to transition between multiple Org file structures. One would need to write a custom code depending on the specific personal structures - That said, it is often the case that Org file structure changes over time - types of information may change; common tasks may change; experience with Org mode growth; etc etc - I personally went through multiple refactors of my personal knowledge bases over the 10+ years I am using Org mode - I tend to approach such refactors slowly + I do not try converting everything at once + Instead, I add _new_ information into the new taxonomy while keeping the old information as is + After some time (when I make sure that the new taxonomy really works), I slowly move pieces and bits of information from the old taxonomy + Such move may take anywhere between weeks and years. I usually just create a repeating task to move a few bits from old to new structure. Manually, spending ~5min per day (or more, if I have mood/time). - The slow, manual approach works for arbitrary taxonomies - Zororg asked about using org-crypt - org-crypt encrypts portions of Org files, keeping encrypted version on disk while temporarily decrypting it via M-x org-decrypt-entries (or just M-x org-reveal) - the encrypted text is still plain text, so it can be synced as usual - currently, org-crypt works best with gpg keys - symmetric encryption also works, but Org will ask for a password for each individual subtree that is going to be encrypted, which is not always convenient - there is a WIP branch on https://git.sr.ht/~yantar92/org-mode/tree/feature/org-crypt-refactor that tries to improve symmetric encryption support among other things - we went on discussing decrypting the org files on android - I personally used https://f-droid.org/packages/org.sufficientlysecure.keychain/ for similar purposes. Openkeychain allows importing gpg keys on Android securely or even reading gpg keys from a device via NFC - but I never checked with actual .org files. Some Org viewers on android might support encryption/decryption - Zororg raised a topic about the abundance of note-taking packages for Emacs over the last years - We have org-gnosis, org-supertag, org-node, org-roam (of course), denote, zetteldeft, orgr, RCD Notes, ekg, howm, hyperbole, etc - https://github.com/rtrppl/orgrr - https://github.com/yibie/org-supertag - https://github.com/org-roam/org-roam/ - https://github.com/meedstrom/org-node - https://thanosapollo.org/projects/org-gnosis/ - https://github.com/EFLS/zetteldeft - https://github.com/protesilaos/denote - https://kaorahi.github.io/howm/ - https://hyperscope.link/3/7/1/5/5/RCD-Notes-for-Emacs-37155.html https://hyperscope.link/ - https://github.com/ahyatt/ekg - https://www.gnu.org/software/hyperbole/ - Many of these packages are inspired by Zettelkasten ideas and linking - Many are based on Org mode (or org-roam) and store data in plain org files - Some use databases (ekg, hyperscope) - denote, zetteldeft, hyperbole, and howm are using arbitrary plain text (not just Org markup) - I personally use a combination of plain Org mode and org-ql (for searching) to manage my notes, todos, and bookmarks - plain Org + id: links provide a way to link to arbitrary notes from anywhere to anywhere in Org files - org-ql should eventually be merged to Org mode upstream https://github.com/alphapapa/org-ql/issues/409 - hopefully, inclusion of org-ql can pave the way to implement other popular features like full search from in-buffer completion, backlinks, etc - maybe not the node graph; its usefulness is rather questionable in practice (not when merely showing off) - I myself do have little success using similar graph representations when exploring research literature (https://www.connectedpapers.com/). There is some value in semantic similarity between nodes - but similarity is different from direct citations and is mostly useful when exploring new topics I do not yet know - for notes, I can only imagine node graph to be useful on really large note numbers + when I completely forget the topic I am exploring - https://github.com/egh/org-mode-zettelkasten - note: the part below is being written almost 2 month after the meetup, so details might go missing or be distorted too much by human memory. I've been warned - kathink (or visuweh, I no longer recall), raised a recurring topic or somehow reducing initial startup time for agenda and org-ql. In fresh Emacs with no Org buffers open, searching all the agenda files may take fairly long time because all the Org buffers needs to be opened, all the various hooks (org-mode-hook, and many other hooks arranged by various packages) need to be evaluated - Not only opening the buffers takes time, but some people (hello, org-roam users) get annoyed by _all_ the agenda files being in the buffer list - although we may theoretically name buffers as " invisible" (first space makes Emacs hide buffer) - but then it is not clear what to do when user actually wants to open such hidden Org buffer - There is no easy universal cure for initial slowness, especially when the slowdown happens in the hooks: some people modify Org parser (todo keywords, tags, etc) in the hooks and bypassing them will yield erroneous results - some optimizations are still possible, but they usually revolve around disabling some features (like in ~org-agenda-inhibit-startup~). Avoiding this would require solving a similar problem to the idea with hidden buffers - Zororg asked about how parenthesis are highlighted in my Elisp setup - highlight-parentheses package :chat: system: Welcome to OrgMeetup! For help on using BigBlueButton see these (short) tutorial videos. To join the audio bridge click the speaker button. Use a headset to avoid causing background noise for others. This server is running BigBlueButton. system: To invite someone to the meeting, send them this link: https://bbb.emacsverse.org/rooms/orgmeetup/join [16:55] This message was deleted by [17:02] [yantar92 : MODERATOR]: The latest Emacs news: [https://sachachua.com/blog/2025/02/2025-02-10-emacs-news/](https://sachachua.com/blog/2025/02/2025-02-10-emacs-news/) [17:05] [William Denton : VIEWER]: Hello! [17:06] [William Denton : VIEWER]: I don't have any questions or problems, I just dropped in to see what happens. [17:06] [punchagan : VIEWER]: Same here. I'm here to say Hello! [17:09] [William Denton : VIEWER]: I'm laughing at "This doesn't look so bad, actually." [17:10] [punchagan : VIEWER]: Haha! [17:20] [yantar92 : MODERATOR]: org-do-latex-and-related [17:27] [Jake : VIEWER]: I'm currently most interested in using git with my org-mode files so I can use topic branches to experiment with the structure of my org-mode data. But I found the git driver for org-mode, so there may not actually be much to talk about! [17:29] [Jake : VIEWER]: I might have to demo something at some point to make it clear what I'm trying to do. [17:29] This message was deleted by [17:30] [Jake : VIEWER]: I'll have to prepare ahead of time so I don't waste everyone's time with setup. [17:30] This message was deleted by [17:30] [punchagan : VIEWER]: [https://orgmode.org/worg/org-contrib/gsoc2012/student-projects/git-merge-tool/manual.html](https://orgmode.org/worg/org-contrib/gsoc2012/student-projects/git-merge-tool/manual.html) I guess is the git driver for org-mode? [17:32] [punchagan : VIEWER]: I wanted to confirm with Jake if he was referring to that project, or something else. Thanks! [17:32] [Zororg : VIEWER]: Is org-crypt safe to use? As in without any gpg key, I just want to sync org notes with android emacs and pc. Also, anyway way to make it back crypted after decrypting it to just to read? [17:34] [Zororg : VIEWER]: I mean, after decrypting the entry I'd like to encrypt it back when i exit or close. [17:34] [Zororg : VIEWER]: Yes... [17:35] [Zororg : VIEWER]: But without gpg, it asks for password again.. [17:35] [Zororg : VIEWER]: So, in other way, we can sync gpg key/config with android termux? [17:36] [Zororg : VIEWER]: i think when i tried with gui android app, I was not able to access same gpg key [17:37] [yantar92 : MODERATOR]: [https://f-droid.org/packages/org.sufficientlysecure.keychain/](https://f-droid.org/packages/org.sufficientlysecure.keychain/) [17:37] [Zororg : VIEWER]: ig only termux way would work for emacs android app? [17:38] [Zororg : VIEWER]: other fdroid apps would work fine? [17:38] [Zororg : VIEWER]: Time to test then.. I will figure it out! Thanks for taking the time! Others can continue... [17:39] [William Denton : VIEWER]: Nothing from me ... [17:40] [Zororg : VIEWER]: What take you guys have on many org notes packages popping up in reddit or emacs community? [17:40] [Zororg : VIEWER]: org-gnosis, org-supertag, org-node.... many similar names [17:40] [Zororg : VIEWER]: I tried most of them, and came back to vanilla org howm was good [17:41] [William Denton : VIEWER]: I just heard about this, but it turns out to be a couple of years old. [https://github.com/rtrppl/orgrr](https://github.com/rtrppl/orgrr) [17:44] [oylenshpeegul : VIEWER]: org-node seems way to easy to confuse with org-mode [17:44] [oylenshpeegul : VIEWER]: (naming things is hard) [17:44] [William Denton : VIEWER]: I've never tried any of these note-taking systems, but I take a lot of notes in Org. Does anyone here use them? [17:44] [artsi0m : VIEWER]: I wrote an article about my system that integrates howm with org-drill, but it is already mentioned on the emacs news. [17:45] [Zororg : VIEWER]: All other packages embrace many small files. So they help in linking, finding mostly [17:45] [William Denton : VIEWER]: What's the URL? [17:46] [artsi0m : VIEWER]: [https://github.com/artsi0m/posts/blob/master/2025-01-22-195006.org](https://github.com/artsi0m/posts/blob/master/2025-01-22-195006.org) [17:46] [karthink : VIEWER]: There's also ekg, which has a different approach [17:46] [William Denton : VIEWER]: Thanks, I'll read that. [17:49] [yantar92 : MODERATOR]: RCD Notes [17:50] [yantar92 : MODERATOR]: Jean Louis is the author [17:50] [yantar92 : MODERATOR]: similar to ekg [17:54] [karthink : VIEWER]: Ihor how many ids do you have in org-id-locations? (length (map-keys org-id-locations)) [17:54] [William Denton : VIEWER]: I need to leave. Thanks for the session! [17:54] [Zororg : VIEWER]: I have 231 [17:55] [Jake : VIEWER]: Here's a link that talks about how to get some "zettelkasten" features (like backlinks) with just org. Might be relevant: [https://github.com/egh/org-mode-zettelkasten](https://github.com/egh/org-mode-zettelkasten) [18:00] [punchagan : VIEWER]: I need to leave too! Thanks! [18:09] [Zororg : VIEWER]: org-super-links helps with that. [18:09] [Zororg : VIEWER]: or org-ql + embark store link? [18:15] [Zororg : VIEWER]: Nobody uses those graph. [18:15] [Zororg : VIEWER]: Maybe trees help as in sibling and childs. I do narrow by tags, so thats good there [18:15] [visuwesh : VIEWER]: Nic asks what's it useful for every time it comes up on r/emacs and there's never a convincing answer [18:16] [visuwesh : VIEWER]: same here, I can't hear Ihor [18:17] [oylenshpeegul : VIEWER]: ditto...i could hear karthink [18:17] [oylenshpeegul : VIEWER]: yes [18:21] [Zororg : VIEWER]: pause...? [18:22] [Jake : VIEWER]: I think I could present if there ends up being enough time. I have an example of the problem I'm trying to solve. [18:22] This message was deleted by [18:24] [visuwesh : VIEWER]: I remember seeing an mastodon post about adding a capf for exactly linking to headings. You just had to type @ and an org-id link would be inserted... I tried searching for it but it is essentially impossible to search for anything in mastodon 😐 [18:25] [Zororg : VIEWER]: org-ql-find + embark (embark-org-insert-link bound to j [18:25] [visuwesh : VIEWER]: Yea, I think it was powered by org-ql [18:25] [visuwesh : VIEWER]: The capf looked more ergonomic than a command [18:25] [visuwesh : VIEWER]: Is that bug fixed where it would err if [[* was on the beginning of line? or some such? [18:26] [visuwesh : VIEWER]: ah it was something else [18:28] [Zororg : VIEWER]: there is org-ql-find-in-org-directory [18:28] [Jake : VIEWER]: This is the solution I use for link completion [https://github.com/egh/org-mode-zettelkasten/blob/master/Link%20concepts.org](https://github.com/egh/org-mode-zettelkasten/blob/master/Link%20concepts.org) [18:28] [visuwesh : VIEWER]: (org-ql-find (let (ret) (maphash (lambda (_ file) (unless (member file ret) (push file ret))) org-id-locations) ret)) [18:28] [visuwesh : VIEWER]: I don't remmeber if there exists such a command already [18:35] [yantar92 : MODERATOR]: org-agenda-prepare-buffers [18:37] [yantar92 : MODERATOR]: org-id-get-with-outline-path-completion [18:37] [yantar92 : MODERATOR]: for id completion (built-in) [18:37] [Zororg : VIEWER]: what was your paren highlight method? it highlighted multiple pair parens [18:37] [yantar92 : MODERATOR]: highlight-parentheses [18:38] [yantar92 : MODERATOR]: package [18:38] [Zororg : VIEWER]: okay [18:38] This message was deleted by [18:38] [Zororg : VIEWER]: xdg-desktop-portal-gnome gives screen sharing [18:38] [Zororg : VIEWER]: Which wm? [18:41] This message was deleted by [18:44] [Zororg : VIEWER]: gtg. Thanks for the meet and discussions! Cheers 😉 [18:49] [Jake : VIEWER]: River. I've probably goofed up configuring the portals somehow. [18:58] [yantar92 : MODERATOR]: (while (re-search-forward org-property-drawer-re) (let ((drawer (org-element-at-point))) (when (org-element-type-p drawer 'property-drawer) (delete-region (org-element-begin drawer) (org-element-end drawer))))) [19:02] [Jake : VIEWER]: gtg! bye everybody [19:02] [oylenshpeegul : VIEWER]: Me too. Thanks all! :end: -- Ihor Radchenko // yantar92, Org mode maintainer, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>