[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[SUMMARY] #5 [[bbb:OrgMeetup]] on Wed, Jan 17, 19:00 UTC+3
From: |
Ihor Radchenko |
Subject: |
[SUMMARY] #5 [[bbb:OrgMeetup]] on Wed, Jan 17, 19:00 UTC+3 |
Date: |
Sun, 28 Jan 2024 16:27:38 +0000 |
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.fsf@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.fsf@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>