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>

Reply via email to