Dear all, A bit late (the next meetup is tomorrow), but I managed to finish the notes now.
TL;DR: latex export for non-English org documents (WIP); iOS apps for Org; WORG policy about proprietary apps (needs discussion); Emacs on Android and widgets; table-like agenda line format; presentations during the meetup (feel free); future updates of WORG pages about Org capture; new approach to literal config; radio buttons in Org; self-deploying nix-based modules Emacs config from niklauz; Org mode refactoring update; timezones in timestamps update; interaction fiction tutorial for Org; gptel + Org - As usual, we started from the latest Emacs News https://sachachua.com/blog/2025/05/2025-05-12-emacs-news/ - Pedro A. Aranda made a presentation - He showcased the new ox-latex feature he is currently working on The new feature is introducing automatic font configuration for lualatex and xelatex export - Rather than forcing users to configure each font manually in order to export non-Latin Org documents, we want to provide some defaults to configure UTF8 export automatically - Ideally, any given org document containing Cyrillic, right-to-left, CJK, etc. scripts should export to PDF by default, without needed any extra config - Mailing list discussion https://list.orgmode.org/orgmode/87semr869p.fsf@localhost/ https://list.orgmode.org/orgmode/df48f6d0-6240-4545-aa19-5c95fd0f6...@gmail.com/ - Pedro got some scripts working using some toy examples, but we will need help from the users who know the languages for better testing - Pedro's slides: https://list.orgmode.org/orgmode/cao48bk-hujczdwrmpuqjnvory8e2gp+98dbbqbweakdwmr0...@mail.gmail.com/ - We then moved to various mobile apps that can open .org files and implement some Org's functionality (e.g. capture templates) - The discussion mostly focused on iOS apps - Unfortunately, there are very few apps for iOS that do not have closed source - Orgro (and several browser based apps: Org Note and Organice) - The more popular ones (according to people involved in the discussion) are several paid xenodium's apps - It uses capture templates and allow storing current GPS location right in the property drawer. Neat. #+begin_src org ,* [2025-05-14 Wed 16:45] @ WorldClass MegaMall :PROPERTIES: :LATITUDE: 44.XXXX :LONGITUDE: 36.XXXX :WEATHER_TEMPERATURE: 62.4°F :WEATHER_CONDITION: Mostly Clear :WEATHER_SYMBOL: sun.max :END: #+end_src - Apparently, beorg (also paid) implements scripting in Scheme but that's a bit awkward for users used to Elisp in Emacs - Note that https://orgmode.org/tools.html page intentionally does not list closed source apps, following GNU package requirements that forbid us to encourage people using non-Libre software - Christian asked whether we can relax the requirement in WORG (which is community-driven and specifically aims to be more relaxed) - I'd say yes, especially if we mention libre alternatives, but I am not 100% sure. RMS certainly disagrees (that a quote in a discussion about WORG): : ... pointing to websites that require nonfree software is pressure to : run nonfree software. "If you want to follow this discussion, you : must run this nonfree program." That influence devalues the goal of : freedom. It also excludes those who refuse to run nonfree software. : : Pleaase look for a workaround so you can avoid those references. - basically, we may want to discuss this with more people on the list - As Emacs itself can now run on mobile (well, on Android), we further discussed about using Emacs + Org mode directly - niklauz suggested that transient can somehow be expanded to provide touch screen experience - (that's just an idea though) - I remembered https://www.youtube.com/watch?v=n-AfvuV-bYo where karthink uses a nice sidebar with buttons - something that might as well be useful for mobile UI - karthink commented that those are just Emacs widgets from built-in widget.el (docs: [[info:widget#Top][widget#Top]]) - Matthew Page-Lieberman asked about the layout of my Org agenda views #+begin_example Day-agenda (W23): Sunday 8 June 2025 OrgMeetup[T]: [ ] 2w↰ +1.0x [announce on mastodon] NEXT [#A] Schedule another Org meetup :COMMON:@home:emacsdev:: ,* 22 d. ago OrgMeetup[T]: [0:10] +1.0x DOING [#A] Ihor Radchenko [ML:Org mode] (2025) #18 [[bbb:OrgMeetup]] on Wed, May 14, 19:00 UTC+3 :COMMON:@home:emacsdev::BOOKMARK:misc:email: ,* 20 d. ago Emacs-dev[FR]: [ ] +1.0x [followup] WAITING Ihor Radchenko [ML:Org mode] (2025) Re: [PATCH v2] ox-texinfo: Preserve source block language fields during export :COMMON:@home:emacsdev:feature::BOOKMARK:misc:email: ,* 20 d. ago Emacs-dev[FR]: [ ] +1.0x [followup] WAITING Ihor Radchenko [ML:Org mode] (2025) Re: [PATCH] Use full timestamp in todo-list sorts :COMMON:@home:emacsdev:feature::BOOKMARK:misc:email: ,* 20 d. ago Emacs-dev[Mod: [ ] +1.0x WAITING Ihor Radchenko [ML:Org mode] (2025) Re: [BUG?] in pcomplete??? :COMMON:@home:emacsdev:maintenance::BOOKMARK:misc:email: #+end_example - I make use of ~org-agenda-prefix-format~ to archieve the above layout, assigning fixed width to various task line components - See the docstring of ~org-agenda-prefix-format~ - For my specific setup, I use a custom format function (=%(my-custom-function)=) that does the alignment via ~format~ (which see) - https://github.com/yantar92/emacs-config/blob/master/config.org#agenda - niklauz asked if presenting during the meetup needs to be announced in advance - Anyone if free to present without advance warning - Of course, you can also announce presentation in advance; but that's, again, not mandatory - kickingvegas hinted his interest to update WORG pages about Org capture system - WORG is free to contribute. It is Org wiki, and we always welcome more improvements there by anyone; no copyright assignment necessary - We also have a dedicated maintainer for WORG since recently: Christian Moe https://list.orgmode.org/878qn3h98b....@christianmoe.com/T/#me3cbb275768b8c871f47c63906aea95b5531b9cc - Christian can be contacted on mastodon, in addition to the mailing list https://toot.si/@noctuaminervae - also see https://orgmode.org/worg/org-maintenance.html#web-presense-maintainers - NP shared his recent post of Org mailing list https://lists.gnu.org/archive/html/emacs-orgmode/2025-04/msg00350.html - He has an idea to create a new approach to literal configuration, but aimed at both entry level users and more advanced users - We had a long voice discussion about the idea, because I did not fully get it from the email itself - Here is an example of a portion in the proposed literal configuration #+begin_example ,**** auto-save-interval Number of input events (keystrokes/characters typed) between auto-saves. - [ ] after 300 events (default) - [X] after 1000 events ,#+begin_src emacs-lisp (setq auto-save-interval 1000) ,#+end_src - [ ] disable auto-saving due to number of characters typed ,#+begin_src emacs-lisp (setq auto-save-interval 0) ,#+end_src #+end_example - The idea is providing a library for Emacs configuration that can be used a little bit like Emacs customization interface. Similar to Emacs customization, users can switch between different options simply by checking/unchecking items However, unlike the Emacs customization, there is no limitation that config is just for setting variables. And the whole thing is an Org file that can be edited freely. - New users will just click around checkboxes enabling/disabling the corresponding src block snippets - there needs to be some helper code that can handle this and produce Emacs config that only corresponds to checked items - Sacha Chua quickly prototyped a demo to make checkboxes work https://gist.githubusercontent.com/sachac/5eeac2c5b58802b1b4de7ed2bf567681/raw/bcf8cd76aa7aea92f5eb13fc24a9d8e20bb59744/test.org - More advanced users can directly edit the src blocks - Power users can just copy paste into init.el :) - The proposed configuration is proposed to be curated - My main comment to this idea is that such configuration will quickly overgrow and thus can scare off new users - Rather than having everything in the same file, it may be a good idea to split the configuration into something akin Spacemacs layers or Doom's modules, so that there is some "top level" file where groups of features can be enabled/disabled together - Interested users can follow a link to each individual "layer" and explore the actual code and individual options - Sacha Chua asked about toggling radio buttons in headings - it is not possible - the notion of radio buttons is only present in checklist items - niklauz later presented his configuration system that does not only build Emacs configuration, but the whole system setup (Nix) https://rapport-org.gitlab.io/emacs/ - (we had some technical issues before niklauz was able to share his screen) - niklauz uses the idea with setting shebang for an Org file to make it executable - he formats the top section in such a way that "running" an Org file initialized nix environment appropriate Emacs installation and other necessary programs (something akin guix-home) - later, the same file is tangled to deploy Emacs configuration on the same nix system - his setup makes use of a defcustom to allow enabling/disabling various configuration components (again, similar idea to Doom's modules and Spacemacs layers, but implemented differently) - karthink asked about the status of Org mode refactoring in the last two months - the answer is that it is at the same point as it was at the end of summer (I did not touch it since that time) - my current job only allowed me barely enough time to keep up with bug reports and patches. In fact, at the time of the meetup I only just managed to finish the backlog all the way since August last year - Yeah, it is that bad. I kind of miss the time I was working on Org full time, but that was not financially sustainable. So, alas - the progress is much slower now - niklauz also asked about another important feature we should eventually have: timezone support in timestamps - we recently got a voluteer willing to work on it: https://list.orgmode.org/orgmode/m2zffjwlyy....@cao.sh/ - hope that the enthusiasm will result in progress - I then steered into my recent musings with LLMs - I have been toying around with an idea to create an interactive fiction that will serve as Org mode tutorial. Not very seriously, but the idea is actually promising - niklauz shared some potentially relevant blog posts and packages: https://blog.tendollaradventure.com/automating-story-logic-with-llms/ https://melpa.org/#/org-if - (unfortunately not too relevant to this specific idea, as I figured after inspecting them later; I'd rather need something that assists story-planning) - I also shared an example story (see below) - I wrote created the example with gptel and the latest chatgpt with high temperature setting - We continued talking about LLMs and gptel, including some showcasing of my workflow integrating Org capture with gptel (I bind C-l to gptel-send and make a habit to routinely use gptel to expand the notes and quickly elaborate/improve on the ideas I put into the notes) - I complained that some LLMs output Org headings (* Heading) and mess up Org capture when I capture into a deeply nested subtree - kathink first suggested ~gptel-prompt-prefix-alist~ and ~gptel-response-prefix-alist~, but I was talking about gptel-send in an Org bufer; not a gptel-mode buffer when the prefixes are used - also, prefixes do not help with LLM outputting headings directly - So, ~gptel-post-response-functions~ is the solution (and the latest addtion to my config) #+begin_src emacs-lisp (use-package gptel :config (defun yant/itemize-text (beg end) "Itemize all the Org headings in region BEG..END." (when (derived-mode-p 'org-mode) (save-excursion (deactivate-mark) (goto-char beg) (when (re-search-forward org-outline-regexp-bol end t) (push-mark) (goto-char end) (activate-mark) (call-interactively #'org-toggle-item) (deactivate-mark))))) (add-hook 'gptel-post-response-functions #'yant/itemize-text)) #+end_src - We then discussed about very long conversations when gptel buffer becomes too long and exceeds model context length - kathink mentioned that we can limit the number of previous responses sent to the model, but that's not ideal as the number of responses has little relation with the context length - Ideally, gptel should auto-detect errors when context length is exceeded and truncate/summarize parts of the history before sending - it is not easy though as the error is not standardized across LLM APIs And the "tutorial story" I generated with LLM: I am looking to create an Org mode tutorial that is written like an interactive book story. The story text will be written using recognizable style of the classic interactive books like stainless steel rat, gradually introducing Org mode features. The features will start from basic concepts, but later allow users to take directions according to preferred use cases. The tutorial will itself be an Org mode file with text, todo tasks, and other Org mode features described in Org mode manual, followed by extended features available in popular Org mode extensions. The tutorial will try to resemble typical RPG game tutorials, so that the concepts from RPG can be linked to Org mode concepts when possible. The user should be able to come back to current progress in the tutorial any time by making use agenda views. Please write me this story. * *Org Mode: The Interactive Codex* /A Choose-Your-Own-Adventure Guide to Mastering Emacs’ Most Powerful Tool/ --- ** *Prologue: The Awakening* You wake up in a dimly lit chamber, the air humming with unseen energy. Before you, a glowing screen flickers to life, displaying strange symbols—yet somehow, you understand them. A voice echoes in your mind: > *"Welcome, Traveler. You have been chosen to wield the *Codex of Org*, a tool of infinite potential. But first, you must learn its secrets."* A prompt appears: #+begin_src org ,* TODO Begin your journey #+end_src You reach out—your fingers brush the keys—and the world reshapes around you. --- ** *Chapter 1: The Basics of the Codex* *** *1.1 The Structure of Reality* The screen shifts, revealing a new message: > *"All knowledge in the Codex is organized in *headings*. These are your foundation."* #+begin_src org ,* The First Heading #+end_src A whisper in your ear explains: - =*= creates a top-level heading. - =**= is a subheading, =***= goes deeper, and so on. You experiment, typing: #+begin_src org ,* The First Heading ,** A Subheading ,*** Even deeper #+end_src The Codex responds—lines folding and unfolding as you press =TAB=. > *"Good. Now, mark your progress."* #+begin_src org ,* TODO Learn headings ,* DONE First step complete #+end_src The words shift color—red for =TODO=, green for =DONE=. --- *** *1.2 The Power of Lists* A new prompt appears: > *"To survive, you must *organize*. Lists will be your weapon."* #+begin_src org - A simple list item - Indented for sub-items 1. Numbered lists work too a) And lettered sub-items #+end_src You feel the Codex responding—each keystroke shaping reality. > *"Now, try a checklist."* #+begin_src org ,* TODO Gather supplies - [ ] Rations - [ ] Map - [ ] Light source #+end_src Pressing =C-c C-c= on a checkbox toggles it—=[X]= means complete. --- ** *Chapter 2: The Art of Navigation* *** *2.1 Moving Through the Codex* The voice returns: > *"The Codex is vast. You must learn to traverse it."* - =C-c C-n= / =C-c C-p= → Jump to next/previous heading. - =C-c C-f= / =C-c C-b= → Move between same-level headings. - =C-c C-u= → Move up to parent heading. You practice, darting through the document like a shadow. --- *** *2.2 The Magic of Links* A glowing portal appears—a hyperlink. > *"Links bind knowledge together."* #+begin_src org [[https://orgmode.org][Org Mode Website]] [[file:~/path/to/file.org][Another part of the Codex]] #+end_src You click—the world shifts again. --- ** *Chapter 3: The Forge of Productivity* *** *3.1 The Agenda—Your Quest Log* The voice deepens: > *"To master the Codex, you must track your destiny."* You create a new file, =quests.org=: #+begin_src org ,* TODO Defeat the Dragon of Procrastination DEADLINE: <2024-12-31 Wed> ,* NEXT Gather the Scrolls of Documentation #+end_src Then, in your =init.el=: #+begin_src emacs-lisp (setq org-agenda-files '("~/org/quests.org")) #+end_src Pressing =C-c a t= summons your *Agenda View*—a list of all quests. --- *** *3.2 Time and the Eternal Clock* > *"Time bends to the Codex."* #+begin_src org ,* TODO Meditate on Org SCHEDULED: <2024-06-15 Sat 10:00> #+end_src =C-c C-s= schedules, =C-c C-d= sets deadlines. The *Agenda* (=C-c a a=) now shows your fate unfolding. --- ** *Chapter 4: The Path of Mastery* *** *4.1 Choose Your Destiny* The screen splits—three glowing paths appear: 1. *The Scholar’s Path* (Documentation, Notes) 2. *The Warrior’s Path* (Task Management, GTD) 3. *The Mage’s Path* (Literate Programming, Exporting) You must decide. --- **** *Path 1: The Scholar’s Path* #+begin_src org ,* TODO Master org-roam ,* TODO Learn org-noter #+end_src > *"Knowledge is power. Build your *second brain*."* --- **** *Path 2: The Warrior’s Path* #+begin_src org ,* TODO Implement GTD workflow ,* NEXT Set up org-capture templates #+end_src > *"Efficiency is victory. Conquer your tasks."* --- **** *Path 3: The Mage’s Path* #+begin_src org ,* TODO Write a program in org-babel ,* NEXT Export to LaTeX and HTML #+end_src > *"Code and prose as one. Bend reality."* --- ** *Epilogue: The Codex Endures* The voice fades, but the Codex remains—alive, evolving. > *"Return anytime. The Agenda knows your progress."* You press =C-c a a=—your journey displayed before you. The adventure continues. --- *** *Final Challenge: The Grand Synthesis* #+begin_src org ,* FINAL BOSS: Automate your life with Org Mode :PROPERTIES: :ID: 39e76e97-3eae-461d-afc1-e85700e1a34d :END: - [ ] Combine all paths - [ ] Teach another traveler #+end_src Will you prevail? --- *To be continued…* *(Save this file as =org-codex.org= and begin your journey!)* --- *** *Game Mechanics (Cheat Sheet)* | RPG Concept | Org Mode Equivalent | |-------------------|---------------------------| | Quest Log | Agenda View (=C-c a a=) | | Inventory | Checklists (=- [ ]=) | | Fast Travel | Links (=[[file:...]]=) | | Leveling Up | Mastering new commands | | Boss Fight | Complex project setup | --- Now, Traveler—your destiny awaits. =M-x org-agenda= *Begin.* -------------------------- :chat: [17:48] yantar92 is now the presenter [17:51] [yantar92 : MODERATOR]: The meetup will start properly in 10 minutes, as per schedule. [17:52] [yantar92 : MODERATOR]: The most recent Emacs news: https://sachachua.com/blog/2025/05/2025-05-12-emacs-news/ [18:02] Pedro A. Aranda is now the presenter, set by yantar92 [18:03] [Alex : VIEWER]: Looks good on this side of the screen 😁 [18:09] [yantar92 : MODERATOR]: Mailing list discussion on the new latex font system: https://list.orgmode.org/orgmode/87semr869p.fsf@localhost/ and https://list.orgmode.org/orgmode/df48f6d0-6240-4545-aa19-5c95fd0f6...@gmail.com/ [18:24] [Alex : VIEWER]: @yantar92 the sound from your side is not coming through [18:25] [Sacha Chua : VIEWER]: CPU and mem on the BigBlueButton server still look fine, so it might be on yantar92's side, sorry [18:30] [William Denton : VIEWER]: This is impressive work! [18:37] yantar92 is now the presenter, set by yantar92 [18:38] [Alex : VIEWER]: I am playing with Journelly. It's an iOS app that uses as a backend org mode [18:39] [Alex : VIEWER]: Very cute [18:39] [Alex : VIEWER]: and unexpected usage of orgmode for me [18:39] [Alex : VIEWER]: Yes this one [18:39] [Alex : VIEWER]: it's a paid app so don't take it as a promotion [18:39] [Alex : VIEWER]: 😁 [18:40] [Alex : VIEWER]: The smart idea is the app uses a drawer [18:40] [Matthew Page-Lieberman : VIEWER]: Oh, Journelly. Yes, I have a few articles to read about that and am thinking trying it out, as people keep talking about it. [18:40] [Alex : VIEWER]: to automatically store location, weather, etc [18:40] [Alex : VIEWER]: I liked that idea [18:41] [Alex : VIEWER]: right [18:41] [Alex : VIEWER]: Example from my file [18:41] [Alex : VIEWER]: * [2025-05-14 Wed 16:45] @ WorldClass MegaMall ,:PROPERTIES: ,:LATITUDE: 44.XXXX ,:LONGITUDE: 36.XXX ,:WEATHER_TEMPERATURE: 62.4°F ,:WEATHER_CONDITION: Mostly Clear ,:WEATHER_SYMBOL: sun.max ,:END: [18:41] [Alex : VIEWER]: please don't use the above to locate me though [18:41] [Alex : VIEWER]: 😁 [18:41] [Matthew Page-Lieberman : VIEWER]: Has anyone used Plain Org? It's made by the same author. [18:42] [Alex : VIEWER]: I tried it [18:42] [Alex : VIEWER]: but I went back to Beorg [18:42] [Alex : VIEWER]: for OrgMode on the iPhone [18:42] [Alex : VIEWER]: I also have Orgro [18:43] [niklauz : VIEWER]: +1 to Orgzly [18:43] [Alex : VIEWER]: OrgMobile was very difficult to use [18:43] [Pedro A. Aranda : VIEWER]: That may be nice for really big screens. I tried on mine and the feeling was my screen is too small or that [18:43] [Matthew Page-Lieberman : VIEWER]: I was using beorg for a while, but I disliked that I would have to write in its version of Scheme in order to have the same behavior as what I have in Emacs Lisp on my computer. [18:43] [Matthew Page-Lieberman : VIEWER]: Yes, he maintains it. [18:44] [Alex : VIEWER]: ahh, I do not try to reproduce all the features/behavior I have on my main machine [18:44] [Alex : VIEWER]: so for me Beorg works ok [18:44] [Alex : VIEWER]: a few predefined searches and capture templates and that's all I need [18:44] [Matthew Page-Lieberman : VIEWER]: Yes, I know, but I mean just things like adding a new todo and updating todo states. [18:45] [Alex : VIEWER]: I did not have to do that Matthew [18:45] [Alex : VIEWER]: hmmm, nothing like that [18:45] [niklauz : VIEWER]: I wonder if something like transient-ng will bring an easy touchscreen interface to Emacs to make it more comfortable to use on the phone 😊 [18:45] [Matthew Page-Lieberman : VIEWER]: That display of Org-agenda is very nice. Can you share how it was constructed? [18:46] [niklauz : VIEWER]: (transient-ng is an imaginary project I just made up to plant the wish) [18:46] [Pedro A. Aranda : VIEWER]: 😄 😄 [18:46] [Alex : VIEWER]: @yantar92 the question from Matthew's about Org Agenda is for you 😉 [18:46] [niklauz : VIEWER]: Ah good to know! [18:47] [karthink : VIEWER]: Those were just widgets [18:47] [karthink : VIEWER]: Yeah, it would be pretty basic but it would work [18:48] [Matthew Page-Lieberman : VIEWER]: yes! [18:48] [Christian : VIEWER]: Can we allow ourselves more flexibility to mention closed-source projects (e.g. Journelly) on Worg than on the official Org-mode pages? I probably ought to know what the policy is, but I don't [18:48] [Pedro A. Aranda : VIEWER]: I need to leave right now. Remember to send me any MWE you wouls like to see working. Especially for pdflatex 😉 [18:48] [Pedro A. Aranda : VIEWER]: Bye [18:48] [Matthew Page-Lieberman : VIEWER]: Well, you have the columns coming up automatically. [18:51] [Matthew Page-Lieberman : VIEWER]: Thank you. [18:51] [yantar92 : MODERATOR]: https://github.com/yantar92/emacs-config/blob/master/config.org#agenda [18:51] [Alex : VIEWER]: What is simple for some can still be great or new for others [18:52] [Alex : VIEWER]: And vice versa [18:52] [kickingvegas : VIEWER]: hi folks [18:52] [niklauz : VIEWER]: true, and elisp snippets can be very easy to share and integrate [18:54] [niklauz : VIEWER]: Is there a signup for future presenters? My emacs config is literate and optionally uses nix ... not sure that meets the threshold of interesting 😁 [18:55] [niklauz : VIEWER]: OK, I'm having audio issues today but would be happy to share for a few minutes in a future meeting [18:55] [kickingvegas : VIEWER]: on my back burner is updating worg wrt org-protocol and macOS integration [18:55] [karthink : VIEWER]: Ihor have you had any time to work on your refactoring of Org (in the last two months or so) [18:56] [kickingvegas : VIEWER]: also need to report an org-protocol bug too [18:56] [yantar92 : MODERATOR]: https://list.orgmode.org/878qn3h98b....@christianmoe.com/T/#me3cbb275768b8c871f47c63906aea95b5531b9cc [18:56] [yantar92 : MODERATOR]: new WORG maintainer [18:56] [Christian : VIEWER]: That would be me. Hi, folks! [18:56] [niklauz : VIEWER]: thanks @Christian [18:57] [Christian : VIEWER]: Just listening in today [18:57] [Christian : VIEWER]: I'll have more to share soon [18:57] [Matthew Page-Lieberman : VIEWER]: Is this you, Christian? https://toot.si/@noctuaminervae [18:57] [Christian : VIEWER]: It is [18:57] [Matthew Page-Lieberman : VIEWER]: Good. We are mutual follows. [18:58] [Matthew Page-Lieberman : VIEWER]: I am https://social.coop/@jotaemei [18:59] [NP : VIEWER]: Hello I would like to know if some of you have seen this post: https://lists.gnu.org/archive/html/emacs-orgmode/2025-04/msg00350.html And if you would like to discuss it ? [18:59] [niklauz : VIEWER]: On second though - if we have a few moments I'd like to try to present briefly [19:00] [Alex : VIEWER]: I have to join a work meeting. Thanks for hosting this. [19:00] [niklauz : VIEWER]: I'm connected via two devices, so one may work for audio [19:00] [NP : VIEWER]: I did not had time to prepare a presentation [19:01] [NP : VIEWER]: I can explain [19:01] [NP : VIEWER]: what do you need to know ? [19:01] [NP : VIEWER]: it is just instead od use-package [19:02] [NP : VIEWER]: we put each option separatly [19:02] [NP : VIEWER]: in it is own src-block [19:02] [NP : VIEWER]: so user can pick each choice separatly [19:02] [niklauz : VIEWER]: if I'm understanding, I'm doing something similar too [19:02] [NP : VIEWER]: instead of copying all use-package block [19:03] [niklauz : VIEWER]: though I get the feeling you're taking it further than me [19:03] [NP : VIEWER]: in fact the above list [19:04] [NP : VIEWER]: are org-links [19:04] [NP : VIEWER]: when you click on a link [19:04] [NP : VIEWER]: the link will call sparse-tree to filter the headings [19:05] [NP : VIEWER]: [[myfilter:ta][]tag] [19:05] [NP : VIEWER]: the problem is I dont understand what you dont understand :0 [19:05] [NP : VIEWER]: 😊 [19:06] [NP : VIEWER]: ok [19:06] [NP : VIEWER]: how to use it [19:06] [NP : VIEWER]: you know sparse tree on tags right ? [19:06] [niklauz : VIEWER]: @NP is it selecting blocks to tangle based on tag-groups? [19:07] [NP : VIEWER]: in fact this is an old org file that I propose some time ago [19:07] [NP : VIEWER]: the new idea I am proposing inhttps://lists.gnu.org/archive/html/emacs-orgmode/2025-04/msg00350.html is different, though it share similarities [19:07] [NP : VIEWER]: can we swith to https://lists.gnu.org/archive/html/emacs-orgmode/2025-04/msg00350.html ? [19:08] [NP : VIEWER]: yep the new idea... [19:08] [NP : VIEWER]: ok I will explain it [19:09] [NP : VIEWER]: the idea is that for every package [19:10] [NP : VIEWER]: instead of putting its config in a use-package block [19:10] [NP : VIEWER]: we instead put each user option in an org src-block [19:10] [NP : VIEWER]: so the end user can select each org src-block to tangle it separatly [19:10] [NP : VIEWER]: wait [19:11] [NP : VIEWER]: look at the example below [19:11] [NP : VIEWER]: : [19:11] [NP : VIEWER]: **** auto-save-interval Number of input events (keystrokes/characters typed) between auto-saves. ,***** [ ] after 300 events (default) ,***** [X] after 1000 events #+begin_src emacs-lisp (setq auto-save-interval 1000) #+end_src ,***** [ ] disable auto-saving due to number of characters typed #+begin_src emacs-lisp (setq auto-save-interval 0) #+end_src [19:12] [NP : VIEWER]: copy it to your emacs session [19:12] [NP : VIEWER]: lets make them list for the monent instead of heading [19:13] [NP : VIEWER]: users will check one choice for every option [19:13] [NP : VIEWER]: and can see the elisp code and edit it for every choice [19:14] [NP : VIEWER]: you forget the 3rd choice to make it a list [19:14] [Sacha Chua : VIEWER]: You can probably write an org babel block at the end that uses org-map-entries and org-get-heading to evaluate or tangle all the blocks in the checked headings. [19:14] [NP : VIEWER]: if we mek all the org file like this [19:14] [NP : VIEWER]: @Sacha exactly [19:15] [NP : VIEWER]: that is one idea [19:16] [NP : VIEWER]: ** which-key ,*** which-key-mode :mode: ,**** [ ] disable (default) ,**** [ ] enable immediatly #+begin_src emacs-lisp (which-key-mode) #+end_src ,**** [X] enabled after 2 seconds of emacs idle delay #+begin_src emacs-lisp (run-with-idle-timer 2 nil #'which-key-mode t) #+end_src ,**** [ ] enabled immediately after feature1 is loaded #+begin_src emacs-lisp (eval-after-load 'feature1 '(which-key-mode)) #+end_src ,**** [ ] enable manually (autoload when which-key-mode is called) [ This is just an example. which-key-mode is already autoloaded ] #+begin_src emacs-lisp (unless (fboundp 'which-key-mode) (autoload #'which-key-mode "which-key" nil t)) #+end_src ,**** [ ] etc [19:16] [Jake : VIEWER]: I think the goal here isn't completely clear, which might make it harder to understand. Is the goal here to make things easier for elisp-illiterate users by making it possible to hand them some source code they can then switch on and off? [19:16] [NP : VIEWER]: @Ihor yes [19:17] [Sacha Chua : VIEWER]: also you may want to always add the disabling code, like (which-key-mode -1) so that people can undo their choices [19:17] [NP : VIEWER]: @Ihor can you copy the new snippet into the emacs session ? [19:17] [Sacha Chua : VIEWER]: I think the prototype can be done without needing new features in Org, so you can go ahead and try it out. [19:18] [NP : VIEWER]: @Jake the user does not need to know elisp [19:18] [NP : VIEWER]: he can just check the choices and tangle the code to the init file [19:18] [NP : VIEWER]: but if he wants he can edit elisp code [19:18] [NP : VIEWER]: and learn elisp too [19:19] [NP : VIEWER]: each user option has : -choice 1 -choice2 -etc [19:19] [NP : VIEWER]: what exactly ? [19:19] [NP : VIEWER]: redundent ? [19:20] [niklauz : VIEWER]: @NP what stage of development is this, is it in the "concept development" stage or is there working code that makes it usable at this point? [19:20] [Sacha Chua : VIEWER]: Do you already have the code for a function that evaluates or tangles the selected portions? [19:20] [NP : VIEWER]: no you should keep them [19:20] [NP : VIEWER]: to change your mind later [19:20] [Jake : VIEWER]: Is this a substantive improvement over commenting things out? [19:20] [NP : VIEWER]: you need to change your mind later and select another choice [19:21] [Sacha Chua : VIEWER]: What I'm hearing is maybe this is more of a guided configuration tutorial for a new user [19:21] [NP : VIEWER]: if you are advanced user you can delete what you want [19:21] [NP : VIEWER]: and keep what you want [19:22] [NP : VIEWER]: it is up to you [19:22] [Jake : VIEWER]: Seems like you can already easily get this with COMMENT like Ihor showed [19:22] [NP : VIEWER]: but new users need to see all choices to pick them [19:22] [NP : VIEWER]: try them [19:22] [NP : VIEWER]: change them [19:22] [NP : VIEWER]: test them [19:22] [NP : VIEWER]: etc... [19:22] [NP : VIEWER]: @Shacha not only new users [19:22] [Sacha Chua : VIEWER]: I'm interested in the answer to niklauz's question too. Do you already have a working prototype, or do you know how to make a prototype, or are you hoping someone will make one? [19:22] [NP : VIEWER]: it is even important for advanced users [19:23] [NP : VIEWER]: because there are advanced choices also [19:23] [NP : VIEWER]: like advanced regexp, or complicated functions, etc.. [19:24] [NP : VIEWER]: it is not difficult to do a prototype [19:24] [NP : VIEWER]: we already have done 25% of it just now [19:25] [NP : VIEWER]: **** make-backup-files ,***** [X] backup files (default) ,***** [ ] do no backup files #+begin_src emacs-lisp (setq make-backup-files nil) #+end_src ,***** [X] do not backup files for rmail major mode :@rmail: #+begin_src emacs-lisp (add-hook 'rmail-mode-hook (lambda () (setq-local make-backup-files nil))) #+end_src [19:25] [NP : VIEWER]: add this too [19:26] [NP : VIEWER]: we can put each package in it own org file [19:26] [Jake : VIEWER]: When I was a new user, I got value out of Spacemacs' layers for trying things out without getting overwhelmed [19:26] [Jake : VIEWER]: Something like that seems more appropriate [19:26] [NP : VIEWER]: @Jake exactly [19:26] [NP : VIEWER]: no of course [19:26] [Sacha Chua : VIEWER]: Slightly unrelated, I'm not sure there's a way to treat heading checkboxes as radios, ‘C-c C-x C-r’ (‘org-toggle-radio-button’) doesn't seem to work with them [19:26] [NP : VIEWER]: each package in its own org file [19:27] [NP : VIEWER]: we can do lists [19:27] [NP : VIEWER]: no problem [19:27] [NP : VIEWER]: I will explain headings later [19:27] [NP : VIEWER]: exactly [19:27] [NP : VIEWER]: exactly [19:28] [Sacha Chua : VIEWER]: Hah, yeah, that makes sense =) [19:28] [NP : VIEWER]: or we can add :ROPERTIES: :SELECTED:yes: [19:28] [NP : VIEWER]: :END: [19:28] [NP : VIEWER]: and add ison at the start of a heading [19:29] [NP : VIEWER]: exaclty [19:29] [NP : VIEWER]: will discuus later [19:29] [NP : VIEWER]: no need [19:29] [NP : VIEWER]: we take each option [19:30] [NP : VIEWER]: and add the corresponding choices separatly [19:30] [NP : VIEWER]: in separate org src-block [19:30] [NP : VIEWER]: and user choose a choice [19:30] [NP : VIEWER]: and tangle the results [19:30] [NP : VIEWER]: we already do the same in our org files [19:30] [NP : VIEWER]: but inside use-package [19:30] [NP : VIEWER]: and with use-package [19:31] [NP : VIEWER]: you cant really select or change or share anything easily [19:31] [NP : VIEWER]: I would like to know if the idea is clear at this stage ? [19:32] [NP : VIEWER]: anyone got the idea ? [19:32] [oylenshpeegul : VIEWER]: I heard you fine, @niklauz, but perhaps yantar92 did not. [19:32] [niklauz : VIEWER]: Thanks oylenshppeegul [19:32] [NP : VIEWER]: anyone did not undestaood the idea ? [19:32] [NP : VIEWER]: 😊 [19:32] [NP : VIEWER]: raise their hands :0 [19:33] [NP : VIEWER]: 😊 [19:33] [karthink : VIEWER]: Ihor, I think niklauz is speaking [19:33] [niklauz : VIEWER]: If it's okay w/ the group I could share my config - it takes a different approach but may be motivated by similar things [19:33] [Sacha Chua : VIEWER]: I think it's one of those things where you might want to go ahead and make a prototype yourself to flesh out the idea, and then see if anyone wants to use it as a user (that's a challenging step), and then see if you can grow from there... [19:33] [Sacha Chua : VIEWER]: I can hear you [19:34] [niklauz : VIEWER]: It seems like some folks can hear me [19:34] yantar92 is now the presenter [19:34] [NP : VIEWER]: I will wait @niklauz to see [19:34] [Sacha Chua : VIEWER]: Hahaha [19:35] [karthink : VIEWER]: Maybe it's your system volume Ihor [19:35] [Sacha Chua : VIEWER]: I can hear niklauz, not sure what's going on with yantar92's end... =| [19:35] [NP : VIEWER]: I can hear too clearly [19:35] [niklauz : VIEWER]: heheh [19:35] [Christian : VIEWER]: Looks like the rest of us can hear him [19:35] [Sacha Chua : VIEWER]: (yantar92: what browser are you using? sometimes Firefox inside a snap can weird out) [19:36] [Sacha Chua : VIEWER]: yantar92, niklauz would like presenter permission [19:36] [Christian : VIEWER]: Ihor, can you allow him to share screen? [19:36] [Sacha Chua : VIEWER]: this is making me want to learn stenography again =) [19:37] [Sacha Chua : VIEWER]: niklauz says (paraphrased): While we're waiting, I think the conversation with NP is interesting. A lot of the ground is covered by the customization system, but there's definitely an area of ... discoverability and play that the customization interface doesn't quite reach... I wonder if some of that could be covered by transient. [19:37] yantar92 is now the presenter [19:38] niklauz is now the presenter, set by yantar92 [19:38] [Sacha Chua : VIEWER]: Yay! [19:38] [NP : VIEWER]: same pleasure here [19:38] [Sacha Chua : VIEWER]: What was it? [19:38] [Sacha Chua : VIEWER]: niklauz was saying nice things about being part of the community. =) [19:39] yantar92 is now the presenter, set by yantar92 [19:39] [Sacha Chua : VIEWER]: The icon might look like a monitor or something like that [19:39] niklauz is now the presenter, set by yantar92 [19:39] [Sacha Chua : VIEWER]: Doesn't work from mobile [19:40] [Sacha Chua : VIEWER]: https://support.bigbluebutton.org/hc/en-us/articles/1500005316582-Share-my-screen [19:40] niklauz is now the presenter, set by yantar92 [19:40] [Sacha Chua : VIEWER]: yay, I can see your screen [19:41] [Matthew Page-Lieberman : VIEWER]: Yes [19:41] [NP : VIEWER]: yes [19:41] [yantar92 : MODERATOR]: @Sacha Yes, Firefox [19:41] [Sacha Chua : VIEWER]: my Firefox sometimes gets weird about websocket connections, so that's why I tend to use Chromium to connect to web conferences (BBB, Google Meet, etc.) =| [19:41] [karthink : VIEWER]: niklauz, could you use a larger font size? [19:41] [karthink : VIEWER]: On a small screen here [19:42] [Sacha Chua : VIEWER]: Alternatively, if you're sharing a window, you can make the window smaller and it looks bigger for us [19:42] [NP : VIEWER]: @Sacha maybe you change some settings [19:44] [Matthew Page-Lieberman : VIEWER]: What about Guix? 😉 [19:55] [Christian : VIEWER]: Fascinating, but I need to go. Bye! [19:57] [Sacha Chua : VIEWER]: Since I'm here anyway, NP (and anyone else): prototype for evaluating source blocks only in checked items in the buffer or subtree: https://gist.githubusercontent.com/sachac/5eeac2c5b58802b1b4de7ed2bf567681/raw/bcf8cd76aa7aea92f5eb13fc24a9d8e20bb59744/test.org [19:59] [Jake : VIEWER]: My initial reaction is that it's overwhelmingly big and it's not obvious why I would want that over a smaller config I made that I can maintain and understand. [19:59] [Sacha Chua : VIEWER]: oh, it doesn't handle nested items nicely yet, I think [19:59] [NP : VIEWER]: @Sacha WOW [19:59] [NP : VIEWER]: thanks [20:00] [NP : VIEWER]: I will look at that in details later [20:00] [NP : VIEWER]: but no need to go in too much details for now, because there are many many 😊 [20:01] [NP : VIEWER]: let see if we understood the idea at higher level first [20:05] [kickingvegas : VIEWER]: gotta run - take care folks! [20:11] [niklauz : VIEWER]: https://rapport-org.gitlab.io/emacs/ [20:11] [NP : VIEWER]: Thanks for the presentation [20:13] [Jake : VIEWER]: It does. [20:14] [karthink : VIEWER]: That sounds like a lot of language-dependent work [20:15] [karthink : VIEWER]: (Declaring packages required by code blocks) [20:15] [Sacha Chua : VIEWER]: NP: Updated so that it handles sub-items. It'll run things if the checkboxes above it are [-] or [X]. [20:15] [Sacha Chua : VIEWER]: NP: But I am not the target market for this, so you may want to tinker around with it some more and try to make it interesting/attractive enough for someone to try [20:16] [NP : VIEWER]: @niklauz How much time do you estimate for seomeone to learn this ? and what are the exact prerequisites ? [20:17] [NP : VIEWER]: @Sacha Thanks a lot , I think you get the idea I am trying to vehicule [20:19] [Jake : VIEWER]: IMO if someone is afraid of Emacs Lisp, Emacs might not be the editor they want. [20:19] [Jake : VIEWER]: The lisp is kind of the point. [20:19] [NP : VIEWER]: @niklauz How much time do you estimate for seomeone to learn this ? and what are the exact prerequisites ? [20:20] [NP : VIEWER]: 😁 [20:21] [NP : VIEWER]: what are the technical prerequisites ? and user background prerequisites ? [20:23] [Matthew Page-Lieberman : VIEWER]: Have to go. Peace. [20:24] [Sacha Chua : VIEWER]: Gotta go, nice chat, thanks all for sharing! [20:25] [NP : VIEWER]: @Sacha Thanks for you inputs !!! [20:26] [Jake : VIEWER]: Guix is pretty cool for the kind of thing you're trying to do. [20:26] [Jake : VIEWER]: Not familiar with Nix, so I can't compare it much [20:26] [NP : VIEWER]: Thanks [20:26] [niklauz : VIEWER]: My pleasure! [20:26] [NP : VIEWER]: yep [20:26] [karthink : VIEWER]: Ihor, quick question: Have you had the time to work on your refactoring of Org in the last two months? [20:27] [NP : VIEWER]: in one file [20:27] [NP : VIEWER]: yep [20:27] [karthink : VIEWER]: Haha [20:27] [karthink : VIEWER]: Okay, good to know [20:27] [NP : VIEWER]: 😁 [20:27] [niklauz : VIEWER]: Oh Ihor whats the status of TZ-aware org-timestamps? [20:28] [niklauz : VIEWER]: Very cool 😊 [20:28] [yantar92 : MODERATOR]: https://list.orgmode.org/orgmode/m2zffjwlyy....@cao.sh/ [20:28] yantar92 is now the presenter, set by yantar92 [20:36] [NP : VIEWER]: IMHO opinion [20:36] [NP : VIEWER]: my idea is way easier than DOOM and spacemacs too [20:37] [NP : VIEWER]: what do you think ? [20:38] [NP : VIEWER]: @niklauz what do you think ? [20:38] [NP : VIEWER]: whay ? [20:38] [NP : VIEWER]: whay ? [20:38] [NP : VIEWER]: why ? [20:39] [NP : VIEWER]: exactly [20:39] [NP : VIEWER]: 😉 [20:39] [NP : VIEWER]: 😁 [20:39] [NP : VIEWER]: so did you get the whole idea ? [20:40] [NP : VIEWER]: @Ihor ? [20:40] [NP : VIEWER]: user only have to check checkboxes [20:40] [NP : VIEWER]: and if he eants he can read elisp to learn [20:40] [NP : VIEWER]: and modify [20:40] [NP : VIEWER]: Sacha just wrote this https://gist.githubusercontent.com/sachac/5eeac2c5b58802b1b4de7ed2bf567681/raw/bcf8cd76aa7aea92f5eb13fc24a9d8e20bb59744/test.org [20:42] [niklauz : VIEWER]: "the Warrior's Path" 😁 [20:44] [NP : VIEWER]: my idea is just to spread (use-package) blocks into smallest src-blocks (choices) for user to select individually and tangle them [20:44] [niklauz : VIEWER]: You may be interested in this, https://blog.tendollaradventure.com/automating-story-logic-with-llms/ [20:45] [niklauz : VIEWER]: Have you looked at this, https://melpa.org/#/org-if ? [20:45] [niklauz : VIEWER]: (It's on my queue of things to learn aboutt) [20:46] [niklauz : VIEWER]: yup definitely pre-LLM 😁 [20:46] [niklauz : VIEWER]: I'm not sure it's usable, but caught my eye [20:49] [karthink : VIEWER]: Ah, okay [20:49] [karthink : VIEWER]: Thanks, I'll make a note [20:50] [niklauz : VIEWER]: thats a really good idea [20:50] [niklauz : VIEWER]: the capture might represent a research / dialog session? [20:51] [karthink : VIEWER]: That's nice [20:51] [karthink : VIEWER]: Is that with gptel? [20:52] [niklauz : VIEWER]: that helps address the gap between the ephemeral-ness of llm chats with the desire to integrate them (with context) into a knowledge management system. [20:52] [karthink : VIEWER]: Haha the pros and cons are all wrong [20:52] [niklauz : VIEWER]: the correct answer is " ... there is none" 😁 [20:53] [karthink : VIEWER]: And I think one of the packages was hallucinated [20:53] [karthink : VIEWER]: Yeah that's one of the synergies with Org mode [20:53] [niklauz : VIEWER]: very nice indeed [20:54] [niklauz : VIEWER]: (I was only joking) [20:55] [karthink : VIEWER]: gptel-org-branching-context [20:55] [niklauz : VIEWER]: oh wow [20:55] [karthink : VIEWER]: (Sorry, I'm in a room with another person who's in a separate meeting) [20:55] [niklauz : VIEWER]: that looks very useful [20:56] [karthink : VIEWER]: gptel-prompt-prefix-alist [20:56] [karthink : VIEWER]: gptel-response-prefix-alist [20:56] [karthink : VIEWER]: Ahh, yes. Gemini loves to do that [20:57] [karthink : VIEWER]: I usually change it to bullet points in gptel-post-response-functions [20:57] [niklauz : VIEWER]: Gotta go - thanks Ihor, thanks all! Looking forward to next time 😊 [20:58] [karthink : VIEWER]: Ah, you can set it to be truncated from gptel-menu [20:58] [karthink : VIEWER]: (auto-truncated) [20:58] [NP : VIEWER]: @niklauz thanks for the presentation [20:58] [karthink : VIEWER]: I think it's behind (setq gptel-expert-options t) [20:59] [karthink : VIEWER]: It's the -n all previous responses option [20:59] [karthink : VIEWER]: But that's difficult because of token counting [20:59] [karthink : VIEWER]: To find the number of tokens is another API call [21:00] [karthink : VIEWER]: Number of past messages is a heuristic [21:00] [karthink : VIEWER]: The error is reported differently by each API [21:00] [karthink : VIEWER]: and there are 13+ APIs [21:00] [karthink : VIEWER]: But yeah, it can be handled for the major 2-3 APIs [21:01] [karthink : VIEWER]: And unhandled for the rest [21:01] [karthink : VIEWER]: Okay, I'll try to submit org-latex-preview in 2 weeks @Ihor I wish if you can re-read my initial message now that the idea is clearer for you, I think that you will have a fresh new look at it. If any ambiguity remains, please let me know, so I can clarify them. Thank you for this meetup, and for the persons who presented their ideas. :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>