We had a rather long discussion this time. Took a while to summarize.
Here is a summary of the discussed topics + comment log - Gerard demoed a bug he found when indenting a emacs-lisp src block The bug with all the details is reported in https://list.orgmode.org/878r4makff.fsf@localhost/T/#t - Tim asked to add a new Org mode customization equivalent to ~org-capture-bookmark~ for ~org-refile~. For now, ~org-refile~ sets a bookmark unconditionally, which interferes with org-bookmark-heading package (https://github.com/alphapapa/org-bookmark-heading/ now creates unwanted IDs after every refile command). The proposed feature would make this behavior customizeable. We will be waiting for Tim to request the feature officially on the mailing list. We always welcome bug reports, feature requests, suggestions, and valuable discussions on Org mailing list. Just drop us an email. See https://orgmode.org/manual/Feedback.html#Feedback - Gerard demoed a problem he experiences with Org mode code blocks. Every time he executes a python code block, several long messages are generated - they pollute =*Messages*= buffer. It turned out that these messages are produced by his personal changes to ob-python. Indeed, Emacs is both blessed and cursed by the ability to curve it according to own liking. The boundaries between built-in Emacs code, packages, and personal tweaks are often fuzzy. Some personal config features may become so much into the muscle memory that it becomes surprising not to find them in a bare-bones Emacs. - Gerard's personal tweaks to ob-python are noteworthy. He was able to make eglot (bult-in Emacs LSP support) work inside =*Org Src*= buffers when editing Org mode code blocks with =C-c '= (~org-edit-special~). His approach is roughly the following: 1. Tangle the original Org buffer to generate actual python file on disk 2. Find the edited code block in the tangled python file and narrow to the corresponding region 3. Associate Org edit buffer with that region in actual file 4. =eglot= can now generate meaningful info, provide completions, and diagnostics - all as expected This kind of feature is what we eventually want to have in Org mode. See the previous discussion in https://list.orgmode.org/orgmode/87bkqmdhqz....@gmail.com/ This is a bit tricky though - there are edge cases that one needs to address. For example, it is not clear what to do with =<<noweb>>= references inside code blocks, especially when they are generated as a side effect of running some (potentially remote and CPU-consuming) code (=<<runme(arguments...)>>=) Gerard's work is still WIP. - Gerard also mentioned a bug with tangling python blocks. Org mode provides header argument =:comments link= that makes it possible to link between Org src blocks and their location in the tangled file even when the Org sources contain duplicates. This is the basis of ~org-babel-detangle~ command - it searches for special anchor comments Org inserts around the tangled code blocks to determine their origin. Gerard observed that the inserted comments sometimes cause Python to complain about incorrect indentation. However, he did not have a reproducer to demonstrate the problem. If somebody reading this is familiar with such problem, please report it to Org mailing list, so that it can be fixed. See https://orgmode.org/manual/Feedback.html#Feedback There is also one interesting idea to implement tangling/detangling without a need to have special anchor comments - http://leoeditor.com/appendices.html#the-mulder-ream-update-algorithm - Jack asked about the timeline for next major Org release - Previous minor Org mode releases were actually closer to major. They introduced major new features (like citations), and generally had a huge number of changes. We now clarified the criteria for major releases in https://orgmode.org/worg/org-maintenance.html#release-types - We may still do a couple of minor releases before we 1. Finalize the citation support. In particular, we must complete the documentation - the existing manual section about citation is far from complete 2. Merge the long-awaited new asynchronous LaTeX preview system by Tecosaur. https://list.orgmode.org/orgmode/87lek2up0w....@tec.tecosaur.net/ 3. Address the annoying ~org-assert-version~ problem. The newest Emacs (master) has new ~require-with-check~ that can be used to address the mixed installation problem more reliably. (I tried to use this approach in the past, but it creates strange problems with compilation presumably caused by complex dependencies between Org libraries - untangling these dependencies is WIP) - Citation manual can really have more love - It is awkward when blog posts are more detailed (!!!) than the manual. Compare https://blog.tecosaur.com/tmio/2021-10-31-release.html or https://www.miskatonic.org/2024/01/15/org-citations-basic-3/ vs. https://orgmode.org/manual/Citation-handling.html - Citation system is very flexible, which should really made more clear - One can heavily customize how citations are displayed, even render them like they will look on export https://github.com/andras-simonyi/org-cite-csl-activate - Or have a pluggable citation search backend like https://github.com/emacs-citar/citar used by Gerard - Some people do crazy things with Org mode - Managing recipes (https://github.com/Chobbes/org-chef), tracking health data/exercises (https://emacsconf.org/2022/talks/health/), or storing browser history/reddit comments/SMS (https://gitlab.com/publicvoit/Memacs; https://beepb00p.xyz/hpi.html) are just the beginning... - ... *meet Org-mode-assisted mushroom foraging setup!* With dynamically generated svg charts!!! https://nothingissimple.ablatedsprocket.com/posts/foraging-with-org.html - SVG images are getting more and more use across Emacs and Org mode. They can be easily parsed into Elisp data structures, manipulated, and re-displayed in place by Emacs itself. https://www.gnu.org/software/emacs/manual/html_node/elisp/SVG-Images.html - Sacha has been playing a lot with dynamic SVG generation and interactive SVGs recently #+begin_quote SVGs are great for bending people's perceptions of what a text editor can do ;) #+end_quote - Mouse interface for subed-waveform https://github.com/sachac/waveform-el - Manipulating hand-drawn SVGs to create time-lapse animations https://sachachua.com/blog/2024/01/animating-svg-topic-maps-with-inkscape-emacs-ffmpeg-and-reveal-js/ - Making SVGs interactive in browser https://sachachua.com/blog/2024/01/choosing-what-to-hack-on/ - In fact, SVGs can be made interactive right inside Emacs as well - https://github.com/misohena/el-easydraw is a vector image editor written in Elisp, inside Emacs - https://github.com/ichernyshovvv/org-timeblock/ implements interactive SVG-based agenda views. Just like your favorite web-based calendar. With mouse support, highlighting, and Org mode scheduling commands working as expected. - Elisp has an API to access relative positions of mouse clicks on images (not just SVG) https://www.gnu.org/software/emacs/manual/html_node/elisp/Click-Events.html - Another example is how org-timeblock implements click support https://github.com/ichernyshovvv/org-timeblock/blob/master/org-timeblock.el#L1845 ~org-timeblock-select-block-with-cursor~ - We have a growing number of SVG-based libraries for Org mode and Emacs in general - https://github.com/rougier/nano-emacs - https://github.com/rougier/svg-tag-mode - https://github.com/rougier/svg-lib - https://github.com/larsmagne/meme (meme generator) - kickingvegas pointed that Emacs renders SVG images in immediate mode https://en.wikipedia.org/wiki/Immediate_mode_(computer_graphics) So, displayed SVG image data can be modified on-the-fly - Emacs will update the display as needed. - kickingvegas demoed a prototype code that visualizes Org Agenda as a timeline in SVG. He used one of the Org mode gantt chart generator packages to produce the timeline (After the meeting I can only find https://github.com/legalnonsense/elgantt, but that is certainly not the image style used in the demo) - There are other packages producing image-based Agenda views - https://github.com/Fuco1/org-timeline - https://github.com/kiwanami/emacs-calfw (not image, ASCII art) - https://github.com/ml729/calfw-blocks (fancier version of ASCII art) - Ilya commented that the major drawback of org-calfw is that there's no way to call org-ql to get relevant entries (org-agenda seems to be slow especially when you go through dates) - https://github.com/jjuliano/org-simple-timeline produces timelines in html export - https://github.com/rksm/clj-org-analyzer/ produces calendar view for all the recorded clocks. It is a server app that parses Org files and renders calendars in browser. - kickingvegas asked whether it is possible to add title attribute to links in Markdown export. (see https://www.markdownguide.org/basic-syntax/#adding-titles) It is currently not possible, because Org mode syntax currently does not allow defining inline attributes for links. We only allow to transfer =#+ATTR_MD= from above paragraph if that paragraph contains a sole link, but even then link titles specifically are not handled. Patches welcome! See https://orgmode.org/worg/org-contribute.html - karthink asked whether it will be of interest to improve Org mode in-buffer completions (org-pcomplete.el) to show inline help: https://abode.karthinks.com/share/org-pcomplete-1.png https://abode.karthinks.com/share/org-pcomplete-2.png This will also work with Corfu and Company. - Improving Org mode integration with built-in Emacs APIs is always welcome. - William Denton reminded that EmacsConf 2023 has plenty of interesting talks, including Org mode-related (well... 14 out of 41 talks are about Org mode). Check out https://emacsconf.org/2023/talks/ - ichernyshovvv pointed that ~org-schedule~ and ~org-deadline~, when called from Elisp, cannot accept date range argument, while they do accept time range. - Strictly speaking, neither date nor time ranges make sense in SCHEDULED/DEADLINE. We highlight this in the manual: https://orgmode.org/manual/Deadlines-and-Scheduling.html - But this is a common source of confusion, so we may need to discuss this in more details on the mailing list. - matt ((exc)alamus) asked technicals about my Org mode testing workflow for older Emacs versions - I personally use Gentoo and can install multiple versions of Emacs at the same time. Then, I can pass EMACS environment variable to make test: : make test EMACS=emacs-27 - Some details about Org mode testing infrastructure https://git.savannah.gnu.org/cgit/emacs/org-mode.git/tree/testing/README - In addition Org mode uses CI testing hosted at Sourcehut https://git.sr.ht/~bzg/org-mode-tests/ - The repository contains rake recipes to run CI locally, using various Emacs versions - ichernyshovvv also suggested guix time-machine to handle multiple Emacs versions #+begin_src bash guix time-machine -q --commit=4c43c79e40 -- shell\ --container --no-cwd --share=/home/zesh/init-28/=$HOME/.emacs.d/\ --share=/home/zesh/.my-emacs-packages.d/active/org-timeblock/=$HOME/org-timeblock/\ --network --user=test nss-certs emacs-eldev tar gzip sed wget git emacs coreutils\ --preserve='^DISPLAY$' --expose=$XDG_RUNTIME_DIR\ --preserve='^DBUS_' --expose=/var/run/dbus\ --expose=/sys/dev --expose=/sys/devices --expose=/dev/dri #+end_src - Guix + Org mode may be an interesting combo for truly reproducible research - Org mode can provide the documented computational workflow - Guix home can supplement the Org mode file with the right environment to run source blocks - https://fosdem.org/2023/schedule/event/openresearch_guix/ - https://www.youtube.com/watch?v=LnU8SYakZQQ&pp=ygUFZ3VpeCA%3D - It would be even better if we could generate Guix system configurations every time Org mode document is exported - We can already do it with Guix home - But that will not work for users of non-Guix distributions, unfortunately - Gerard asked how compatible are elc and eln files (wrt different Emacs versions) - .eln files are not compatible, and Emacs automatically re-compiles them as necessary if Emacs version or build number changes - .elc files are compatible most of the time, but may be broken from time to time, especially after major Emacs releases - It is safer to re-compile .elc files after major Emacs upgrade - karthink asked about the prescribed way to avoid mixed-installs of Org? - It is generally reliable to put path to the desired Org mode version very early in the config :comments: [16:29] Welcome to <b>[[bbb:OrgMeetup]]</b>!<br /><br />For help on using BigBlueButton see these (short) <a href="https://www.bigbluebutton.org/html5" target="_blank"><u>tutorial videos</u></a>.<br /><br />To join the audio bridge click the phone button. Use a headset to avoid causing background noise for others.<br /><br />This server is running <a href="https://docs.bigbluebutton.org/" target="_blank"><u>BigBlueButton</u></a>. [16:53] Ihor Radchenko : The official start is in about 7 minutes [16:53] Gerard Vermeulen : I know [16:57] Tim Wichmann : Hi. this is Tim (from Frankfurt/Germany). [16:57] Ihor Radchenko : Hello :) [16:58] Ihor Radchenko : The most recent Emacs news: https://sachachua.com/blog/2024/01/2024-01-15-emacs-news/ [17:00] Gerard Vermeulen : Hello, Gerard [17:00] Jack Kamm : Hello! [17:01] Tim Wichmann : Not yet. [17:01] Gerard Vermeulen : I have a small question editing elisp block [17:01] Gerard Vermeulen : I want to show it [17:01] Jack Kamm : I'm curious when you're thinking the next major Org release will happen? [17:07] Tim Wichmann : For org-capture there is the variable org-capture-bookmark. Setting to nil prevents generation of bookmarks. For org-refile, there is no such variable, thus org-refile always adds the last-refile bookmark. Would it be possible to add a variable org-refile-bookmark to control whether bookmarks are generated on refiling. [17:08] Tim Wichmann : Or, when only refiling. [17:09] Tim Wichmann : Outside capture [17:09] Tim Wichmann : That would be great. I am using org-bookmark-heading package and want to prevent ids to be generated when capturing or refiling an entry. [17:10] Tim Wichmann : Ok, I will do. [17:10] Tim Wichmann : Thanks! [17:14] Gerard Vermeulen : I have two ob-python questions. Ob-python produces a lot of messages. Is there a way to turn it off? Is there a way to use ob-python without launching a session? [17:15] Ihor Radchenko : https://list.orgmode.org/orgmode/87sf9x8n38.fsf@localhost/ [17:15] Ihor Radchenko : About :results argument explanation in the manual [17:18] Gerard Vermeulen : Yes [17:19] Gerard Vermeulen : Can I get screen [17:20] matt ((exc)alamus) : hello :) [17:20] Gerard Vermeulen : I do not see emacs anymore for sharing [17:22] Tim Wichmann : Not yet. [17:23] Ihor Radchenko : https://github.com/andras-simonyi/org-cite-csl-activate [17:24] Ihor Radchenko : citations displayed as "preview" of exported [17:26] William Denton : @friends; or "@friends ;" [17:30] Ihor Radchenko : https://blog.tecosaur.com/tmio/2021-10-31-release.html [17:35] Ihor Radchenko : In .emacs.d [17:40] Sacha Chua : no need to feel embarrassed, I forget how my config modifies Emacs behaviour all the time =) [17:41] William Denton : Same here. I spend half an hour blaming someone else but it turns out the problem was me ten years ago. [17:44] William Denton : Gerard, I see you're using citations ... are you exporting with CSL or biblatex or natbib? What style do you use? [17:47] Ihor Radchenko : There is also a way to tangle/untangle without links. Like in http://leoeditor.com/appendices.html#the-mulder-ream-update-algorithm [17:49] Ihor Radchenko : https://github.com/emacs-citar/citar [17:52] Jack Kamm : Have to run, thanks for organizing this Ihor! [17:52] William Denton : In any case, it's nice to see an examples of citations being used in real life. [17:55] Gerard Vermeulen : William, I will prepare myself better for a next time. [17:57] kickingvegas : hello! [17:57] ichernyshovvv : lol that sounds interesting [17:58] Sacha Chua : SVG-related: I'm tickled pink by this #+begin_src graphviz thing that I managed to sort of highlight dynamically with Javascript - https://sachachua.com/blog/2024/01/choosing-what-to-hack-on/ [17:58] ichernyshovvv : is that from sacha's blog? could you please share the link? [17:58] Sacha Chua : foraging link: https://nothingissimple.ablatedsprocket.com/posts/foraging-with-org.html [17:58] kickingvegas : got a question about exporting an Org link to Markdown - is there a way to pass a title attribute to the exported link like in HTML with ATTR_HTML: :title? [17:59] Sacha Chua : if you can't find a way, you could maybe make a custom link [18:01] Sacha Chua : meme.el [18:01] Sacha Chua : haha [18:01] William Denton : https://github.com/rougier/svg-tag-mode That looks nice! [18:01] kickingvegas : have got some prototype code to visualise Org Agenda as a timeline in SVG [18:01] Sacha Chua : oooh [18:03] Ihor Radchenko : https://github.com/rougier/svg-tag-mode/tree/03989f66b45944271faa6dd8eb977d623561de86 [18:03] Ihor Radchenko : https://github.com/rougier/nano-emacs [18:03] Ihor Radchenko : https://github.com/rougier/svg-lib [18:03] Ihor Radchenko : https://github.com/ichernyshovvv/org-timeblock [18:04] karthink : It's easydraw [18:05] Ihor Radchenko : https://github.com/misohena/el-easydraw [18:06] ichernyshovvv : function org-timeblock-select-block-with-cursor is responsible for selecting by a mouse, see if you're interested [18:06] Sacha Chua : oooooh, thanks [18:06] kickingvegas : not that familiar but it seems like SVG editing happens in immediate mode [18:08] Ihor Radchenko : https://github.com/ichernyshovvv/org-timeblock/blob/master/org-timeblock.el#L1845 [18:08] oylenshpeegul : https://en.wikipedia.org/wiki/Immediate_mode_(computer_graphics) [18:09] karthink : Immediate mode => Updating the data and rendering changes are intertwined [18:09] Sacha Chua : but maybe with good math I can figure something out =) [18:10] Sacha Chua : since we can get the pixel X and Y coordinates of mouse clicks, and org-timeblock etc. have examples I can borrow from [18:10] Sacha Chua : Looking forward to tinkering around with that! [18:10] Sacha Chua : ... and then I'm going to want to embed those images into an Org file and still manage events inside them... <laugh> [18:11] Sacha Chua : Yeah, I've been using just the mouse position for things like subed-waveform [18:11] Sacha Chua : I think SVGs are great for bending people's perceptions of what a text editor can do ;) [18:12] Sacha Chua : well, you can if you put them in one bigger SVG sort of [18:12] Sacha Chua : ah, yeah, that would be nice [18:13] Sacha Chua : hahaha, here there be dragons [18:14] Sacha Chua : What are people looking forward to learning this month? [18:14] karthink : @Sacha: How to improve org-pcomplete [18:15] Ihor Radchenko : vale - grammar checking [18:15] Sacha Chua : I'm looking into exporting more SVGs and adding more short videos [18:15] William Denton : I missed some EmacsConf talks so this reminds me to go back and catch up. [18:15] karthink : Specifically, with doc annotations so we get inline help when completing in Org [18:16] Sacha Chua : karthink: that sounds really cool [18:16] karthink : @Ihor: Yes, annotations show up in the completions buffer. They also work with Corfu and Company [18:17] karthink : I have a demo image of a proof of concept, one min [18:18] kickingvegas : can show an impromptu demo of my timeline visualiser [18:20] Ihor Radchenko : languagetool. vale - supports Org mode markup (claims to): https://vale.sh/ [18:20] karthink : Is there a way to share an image here [18:20] Sacha Chua : share your screen and display the image? =) [18:21] karthink : https://abode.karthinks.com/share/org-pcomplete-1.png [18:22] karthink : This is Corfu, but the annotation feature is independent of that [18:23] karthink : No, sorry -- I don't have enough for a demo [18:23] karthink : Ok [18:25] Ihor Radchenko : https://emacstil.com/til/2022/03/05/setting-up-vale-prose-linter-on-emacs/ [18:28] karthink : Annotations with no framework: https://abode.karthinks.com/share/org-pcomplete-2.png [18:28] Ihor Radchenko : @karthink: Nice [18:28] matt ((exc)alamus) : I see something [18:30] Ihor Radchenko : there is also https://github.com/Fuco1/org-timeline [18:34] Ihor Radchenko : org-agenda--timestamp-to-absolute [18:36] Ihor Radchenko : https://github.com/dengste/org-caldav [18:36] Ihor Radchenko : not this [18:36] Ihor Radchenko : https://github.com/kiwanami/emacs-calfw [18:36] ichernyshovvv : there's also calfw-blocks [18:37] ichernyshovvv : https://github.com/ml729/calfw-blocks [18:37] ichernyshovvv : (ascii, not interactive) [18:37] ichernyshovvv : (as I remember) [18:39] ichernyshovvv : the major drawback of org-calfw is that there's no way to call org-ql to get relevant entries (org-agenda is seems slow especially when you go through dates) [18:40] William Denton : I need to leave ... thanks for organizing, Ihor. [18:40] kickingvegas : gotta run but thanks everybody! [18:41] ichernyshovvv : Ihor, dateranges can't be set in SCHEDULE/DEADLINE timestamp using org-schedule/deadline commands [18:41] ichernyshovvv : maybe this should be fixed [18:41] ichernyshovvv : if you pass a daterange timestamp to these commands, it wont work [18:42] ichernyshovvv : (as a string) [18:42] ichernyshovvv : yes, but timerange is supported [18:44] ichernyshovvv : okay, I'll post on the mailing list [18:45] matt ((exc)alamus) : I'm curious how you do testing for older versions of emacs [18:46] ichernyshovvv : I use guix time-machine for that [18:47] Gerard Vermeulen : How compatible are elc and eln files? [18:47] Gerard Vermeulen : Yes [18:47] Gerard Vermeulen : for different emacs versions? [18:48] matt ((exc)alamus) : @ichernyshovv, how would you call it? [18:48] Gerard Vermeulen : Yes, I am scared a bit so I compile every time. [18:49] karthink : What is the prescribed way to avoid mixed-installs of Org? [18:50] karthink : Thanks [18:50] ichernyshovvv : @matt pm me on matrix (same nickname) [18:51] matt ((exc)alamus) : ha-ha :) [18:51] matt ((exc)alamus) : depends on who you ask, I think [18:52] ichernyshovvv : it's better to install guix as a system, not as a package manager [18:52] ichernyshovvv : guix time-machine example for emacs 28 [18:52] ichernyshovvv : guix time-machine -q --commit=4c43c79e40 -- shell\ --container --no-cwd --share=/home/zesh/init-28/=$HOME/.emacs.d/\ --share=/home/zesh/.my-emacs-packages.d/active/org-timeblock/=$HOME/org-timeblock/\ --network --user=test nss-certs emacs-eldev tar gzip sed wget git emacs coreutils\ --preserve='^DISPLAY$' --expose=$XDG_RUNTIME_DIR\ --preserve='^DBUS_' --expose=/var/run/dbus\ --expose=/sys/dev --expose=/sys/devices --expose=/dev/dri [18:53] matt ((exc)alamus) : Interesting [18:53] matt ((exc)alamus) : Thank you [18:53] ichernyshovvv : you pass a commit of guix git repo where emacs 28 was defined [18:54] ichernyshovvv : in this example you enter an environment, yes [18:54] Tim Wichmann : Ihor, thank you for organizing this session. Very interesting! Unfortunately I have to leave now. Bye! [18:54] Ihor Radchenko : https://fosdem.org/2023/schedule/event/openresearch_guix/ [18:54] matt ((exc)alamus) : https://www.youtube.com/watch?v=LnU8SYakZQQ&pp=ygUFZ3VpeCA%3D [18:56] ichernyshovvv : that's crazy [18:56] ichernyshovvv : haha [18:59] karthink : (Have to leave, thank you for organizing the meetup!) [18:59] Gerard Vermeulen : Ihor, thank you for organizing the meetup. It is very interesting. Thanks to all. I am leaving in a minute. [18:59] oylenshpeegul : Thanks all! :end: -- Ihor Radchenko // yantar92, Org mode contributor, 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>