Dear all,

Here are the meetup notes from September meetup. (The October notes will
hopefully be coming soon).

TL;DR: delays in bug fixes and patch reviews; batch refiling;
link completion; stable heading IDs; theming HTML export; macro replacement;
native LaTeX embeddings; footnotes; citations (CSL); examining Org's parse tree;
detecting blockers; auto-recording changes under each heading;
org-fold-show-context-detail; time zone support; durations in Org.

- As usual, we started from the latest Emacs news
  https://sachachua.com/blog/2025/09/2025-09-08-emacs-news/
- This meetup just followed a series of work trips I made, so
  lots of things on the Org development side were not acted upon
  - Pedro A. Aranda reminded about his ongoing work on improvements
    in the LaTeX exporter when using non-English document languages
    (and that I had things to review and come back to him)
  - His work is on =feature/all-tex-fonts= branch
    
https://cgit.git.savannah.gnu.org/cgit/emacs/org-mode.git/log/?h=feature/all-tex-fonts
  - The most recent discussion thread is 
https://list.orgmode.org/87y0q0xhez.fsf@localhost/T/#t
- For the same reason, the meetup etherpad was still full of
  notes from previous one. Lots of dept.
- Sacha reminded about talk submissions to EmacsConf (deadline passed
  by now, but they might still accept talks, you really want to give one)
  - Here is the list of talks they got for this year
    https://emacsconf.org/2025/talks/

- Sacha Chua shared a refiling workflow where instead of searching for
  heading to refile to every time, we can use hydra
  https://gist.github.com/jsomers/ded472b1aa3b92d5fc8b35e92164eb07
  https://mollermara.com/blog/Fast-refiling-in-org-mode-with-hydras/
  to refile many tasks one after another
  - I personally use two approaches when I need batch-refiling
    + Built-in batch-refiling from agenda views:
      1. Find all the tasks I need to refile using agenda search view
      2. Mark the tasks I need to refile with "m"
      3. "B r" to (b)atch (r)efile all the tasks to the same heading
    + Custom helm actions:
      1. I first go to the heading that is refile *target* (heading to refile 
to)
      2. I use helm search with org-ql to search for headings I want to refile 
under
         heading at point
      3. I select multiple headings I want to refile (helm makes it easy)
      4. I use custom action to refile all selected headings under heading at 
point
         
https://github.com/yantar92/emacs-config/blob/master/config.org#helm-org-ql

- famubu asked about quick linking to other headings in the same Org document
  (I think; it was by voice and I did not take many notes about this question)
  - The traditional approach Org uses for linking is the following:
    1. You go to heading you want to link to
    2. You M-x org-store-link (C-c C-S-l). The link is stored in the link ring.
    3. Maybe repeat 1 and 2 multiple times
    4. You go back to you text and M-x org-insert-link (C-c C-l)
       or M-x org-insert-all-links (C-c C-M-l). The completion will, by default,
       offer links from the link ring
  - Also, you can type [[*<TAB> and get a completion for headings inside 
current buffer
    See [[org#Internal Links]] that touches on internal link completion and 
generally
    described how to link to places inside the same document.
  - Alternatively, you can make use of completion, for custom link types that
    implement it. For example, just a few weeks ago, Steven Allen contributed
    links built-in completion for id: links
  - Another common approach is linking using third-party package like org-roam
    or org-ql. I personally use org-ql when I need to add links at point

- We then shifted the discussion towards linking to headings inside document
  - The simplest way is =[[*Heading title]]=, but it may break if the heading
    title ever changes. Also, when exporting to, say, HTML, the HTML anchor
    will be generated randomly - a common annoying "feature" of Org. It is 
really
    a feature as it prevents duplicate anchor names, but it is annoying as they 
are
    (1) not human-readable (go figure how to make human-readable and also 
unique ids)
    (2) not stable
    - The stability can be solved when using publishing system as it maintains
      id cache and does not change the generated ids (as much as possible) when
      exporting/publishing several times in a row
    - Some people generate ids based on title once, so that they are retained 
even
      when the title changes (with obvious downside of de-syncing the title and 
id).
      For example, see Sacha's my-org-set-custom-id in https://sach.ac/dotemacs
  - Another way is specifying id explicitly in =CUSTOM_ID= property of a 
heading.
    Then, =[[#custom_id_name]]= will refer to heading. Moreover, if
    ~org-html-prefer-user-labels~ is set to t (it is *not* the default), the 
same
    ids will be directly re-used in HTML. (Again, the fact that the default is 
nil
    is a "feature" as custom ids may contain Unicode symbols, which would be 
problematic
    in HTML)
  - A similar problem may happen with links to non-headings (to named
    images, blocks, or to targets). Sacha Chua shared her solution to this
    
https://sachachua.com/blog/2025/02/adding-an-anchor-to-a-paragraph-in-org-mode-html-export/

- The main famubu's use case is exporting to HTML (AFAIR). We thus also 
discussed
  ways to customize the appearance of the exported HTML documents
  - The usual way to change the looks of the exported HTML is customizing
    CSS classes, or, more generally, HTML document preamble and postamble
  - This can either be done manually, or you can make use of one of the existing
    HTML themes for Org
    - https://github.com/fniessen/org-html-themes 
    - https://github.com/mrlee23/readtheorg
  - The themes are usually just a series of =#+HTML_HEAD= keywords, that can be
    loaded via =#+SETUPFILE=
    - =#+SETUPFILE= can point to a remote http location, so themes can be
      automatically fetched online. Of course, local SETUPFILE is also possible
  - When working with CSS, it is often desired to wrap some text into some HTML 
class
    - This can be easily done with =#+begin_classname ... #+end_classname= 
special blocks
      - Org HTML export will transform these blocks into container with 
"classname" class
  - Also, if org-html-html5-fancy is non-nil and org-html-doctype is "html5" 
(by default
    Org sticks to very conservative xml style), =#+begin_section/summary/etc= 
will
    translate to the corresponding HTML5 tags instead of assigning class.

- Org mode export (any export, not just HTML) also provides macro replacement
  - See 13.5 Macro Replacement section of Org mode manual
  - For example, one can substitute property values via ={{{property(...)}}}= 
macro
  - Or just have classic macro use like
    : #+MACRO: friendname Phoebe
    : Hello, {{{friendname}}}

- Going away from HTML, LaTeX export is more directly supported
  - =\begin{environment} ... \end{environment}= are legal parts of Org mode 
syntax
    that will not only work when exporting to LaTeX, but also when exporting
    to other formats. For non-LaTeX, Org will usually pass the fragment through
    LaTeX and generate an image.
  - Similar for inline fragments $$a + b = c$$
  - Note that both latex environments and inline latex fragments will be treated
    as LaTeX syntax - no Org syntax can be used inside (despite fontification 
showing
    the opposite - that's a bug in fontification code)
  - For use Org markup inside environments, you can use special blocks
  - When having a single environment is not good enough, there is always
    =\#+begin_export latex ... #+end_export= and inline
    =@@latex:...@@=. But mind that this markup will be ignored when
    exporting to other) formats.
- Sacha commented that similarly to natively supported LaTeX fragments, one 
might
  allow native HTML =<b>syntax</b>= when Org sees "<" (just like in vanilla 
Markdown).
  - I am not sure about this. In particular, it is not entirely clear how to 
render
    HTML syntax

- famubu asked about putting links at the end of document as
  #+begin_example
  Hello [link][1].
  Another [link[2].

  [1]: https://www.example.com
  [2]: https://www.example.com/home.html
  #+end_example
  - This reminded me of Org mode's citation system
  - Although something more directly related is simply footnotes
    https://orgmode.org/manual/Creating-Footnotes.html

- kickingvegas asked about printing bibliographies when exporting citations.
  He had an issue with URL field in the bibtex record not being printed
  - https://orgmode.org/manual/Citation-handling.html
  - For rendering citations, (and for everything else) Org mode uses
    customizeable citation processors. By default, the citations are
    very basic - just author - title - year
    (~org-cite-basic--print-entry~). We might extend that function if
    you file a feature request.
  - For more realistic scenarios, we recommend using CSL for printing
    bibliography (https://orgmode.org/manual/Citation-export-processors.html)
    - CSL processors are based on CSL standard that have templates for
      pretty much all kinds of bibliographies. See
      https://citationstyles.org/authors/ and
      https://editor.citationstyles.org/searchByExample/

- I shared a bit about my (Org mode maintainer) situation with time and handling
  Org mode development
  - The important maintainer's job is handling bug fixes and reviewing patches
  - With my current job, I more or less have enough time to do exactly
    these two activities (most of the time, when my schedules are regular-ish)
  - Unfortunately, I cannot do much more, like adding new features or
    doing some non-trivial code changes. This is a pity
  - I am considering to ask for help with bug fixing to free up some time for
    non-trivial code changes that require knowledge of Org mode code
    (like the refactoring I have been talking about during
    Emacsconf 2024) 

- Rudy shared his experiment with using Org parser to develop
  multi-page HTML exporter
  - He asked about the best way to look into the parse tree during debugging
  - The AST structure is described in the commentary in org-element-ast.el
  - Also, I recommend https://github.com/mmontone/emacs-inspector when
    you need to look into deeply nested lists (which Org AST is)
  - there is also ~pp~ function for pretty-printing arbitrary Lisp objects,
    however Org AST has recursive circular references, so printing
    might not always work well compared to interactive emacs-inspector views

- Jake asked about programmatic way to check whether a given heading is
  a blocker for other headings. He is writing a package that re-implements
  taskwarrior's urgency system and wants to set higher urgency for
  tasks that are blockers.
  - I looked into ~org-entry-blocked-p~ and friends, and, given its
    expendability, there is no universal way to check this. The logic
    for blocking may be arbitrary
  - I thought maybe https://elpa.gnu.org/packages/org-edna.html
.    provides something, but nope
  - So, brute force checking whether other headings are blocked is
    probably the only 100% correct way
  - Sacha also mentioned
    
https://github.com/mskorzhinskiy/org-linked-tasks/blob/master/org-linked-tasks.el
    (which she learned from 
https://www.reddit.com/r/emacs/comments/i9jv3l/orgedna_how_to_set_scheduled_todo_keyword_only/)
  - We went on talking about org-edna and how it has its own DSL to describe 
blockers and
    triggers. niklauz asked whether org-ql would make more sense to use. 
Although
    org-edna is much, much older than org-ql.
    - I briefly mentioned my limited usage of org-edna. I mostly use it to form 
chains
      of tasks to do one after another (fix one bug after fixing another or 
watch
      next movie in a series after
      previous). 
https://github.com/yantar92/emacs-config/blob/master/config.org#task-dependencies


- niklauz asked about automatically setting a timestamp every time heading
  contents is changed
  - Similar discussions
    - 
https://org-roam.discourse.group/t/update-a-field-last-modified-at-save/321
    - https://melpa.org/#/org-roam-timestamps
  - I remember this question being asked several times in the past. I
    even once replied with a code on reddit. (Long, long time ago)
  - This can be done by maintaining hash of the contents + setting a timestamp
    every time the hash changed (e.g. via save hooks)
  - One pitfall is that property drawer may fall within contents,
    which will create infinite update cycle. So, the property drawer,
    or, at least, the hash/update time property should be excluded
    from hash calculation
  - I did a quick code with rough implementation how to extract
    contents via elisp
    #+begin_src emacs-lisp
      (when-let* ((hd (org-element-lineage (org-element-at-point) 'headline t)))
        (when-let* ((cbeg (org-element-contents-begin hd)))
          (let ((beg cbeg))
            (catch :exit
        (while (org-element-type-p (org-element-at-point beg) '(planning 
property-drawer))
          (let ((newbeg (org-element-end (org-element-at-point beg))))
                  (when (equal newbeg beg) (throw :exit t))
            (setq beg (org-element-end (org-element-at-point beg))))))
            (buffer-substring-no-properties beg (org-element-end hd)))))
    #+end_src

- Sacha asked whether there is Org element API to find end of metadata
  (like org-end-of-meta-data, but using parser)
  - There is none, even in my WIP rewrite that makes use of the parser
    much more actively. Not that is cannot be done, but I did not feel
    that it will give immediate benefits.

- Sacha Chua invited me to talk about Org development during EmacsConf
  - Unlikely to happen this year
  - I am a bit annoyed by my lack of time. I can only work on Org
    outside my main work hours. And those are fairly strict. Combined
    with even less free time during my recent work trips, I am getting
    piles of backlog (I just have enough time to address patches and
    bugs, but nothing else). So, I do not quite want to add the task
    of preparing Emacsconf presentation on top of that (it will be 1-2
    weeks worth of free time)
  - I also did less than I wanted to this year, especially on big code
    development projects, which is also not great.
  - For now, I'd rather try to focus on encouraging more people to
    help with bug fixing/patch reviews. That will free up some time
    for complex (and interesting) code changes I want to do.
    - (Note that I tried using EmacsConf for this purpose last year,
      with /some/, but limited success)
  - Reporting that I worked on bug reports and merged a couple of new
    features won't be too exciting

- karthink asked about org-fold-show-context-detail customization
  - It provides a number of different ways to reveal folded text
    around point (minimal, local, lineage, etc)
  - But what karthink wants is showing ancestors (lineage) *and also 
descendants*
  - Such view is indeed not there
  - Maybe we should make org-fold-show-context-detail user-extendable
    one day (it should be more or less trivial patch)

- There was a periodic question about supporting time zones in timestamp
  - Not much progress since summer (no update from the person who last 
volunteered)
  - As I mentioned during previous meetups, it is now up to writing patches
  - We have decided the syntax spec and roughly what needs to be done
  - https://list.orgmode.org/orgmode/[email protected]/ - what to
    do to get started on the patch

- Continuing about formatting time stamps, Jeff Trull asked whether Org mode
  supports ISO8601 (https://en.wikipedia.org/wiki/ISO_8601)
  - Partially. Org mode timestamps YYYY-MM-DD are compatible with
    ISO-8601, but that standard defines several different ways to define
    timestamp, including omitting dates, omitting "-", providing week number
    instead of month, specifying seconds, etc. Org format is somewhat
    stricter.
- Jeff later clarified that he is particularly interested in distinction
  between duration and timestamps in ISO-8601. ISO-8601 defines duration
  independent of calendar dates. For example, P4Y stands for "4
  years". Org mode has a notion of durations, but it is not part of
  the actual Org syntax. Rather it is an optional feature that can be used
  when working with tables or columns. Here is what org-duration.el says:
  :  ;; This library provides tools to manipulate durations.  A duration
  :  ;; can have multiple formats:
  :  ;;
  :  ;;   - 3:12
  :  ;;   - 1:23:45
  :  ;;   - 1y 3d 3h 4min
  :  ;;   - 1d3h5min
  :  ;;   - 3d 13:35
  :  ;;   - 2.35h
  - Funnily, Org mode defines durations in more lax way compared to timestamps
  - Also, see https://orgmode.org/manual/Durations-and-time-values.html

:comments:
[17:54] [Pedro A. Aranda : VIEWER]: Hi
[17:54] [yaca : VIEWER]: hello
[17:54] [Pedro A. Aranda : VIEWER]: Back to "real life" after the summer...
[18:00] [Dave Marquardt : VIEWER]: Hello
[18:00] [Thomas : VIEWER]: Hi all
[18:00] yantar92 is now the presenter
[18:01] [Rudy : VIEWER]: Howdy!
[18:01] [Pedro A. Aranda : VIEWER]: Hi!
[18:02] [Sacha Chua : VIEWER]: Hello hello! =)
[18:02] [yantar92 : MODERATOR]: The latest Emacs news: 
https://sachachua.com/blog/2025/09/2025-09-08-emacs-news/
[18:03] [Sacha Chua : VIEWER]: The kiddo is back to virtual school, so I can 
help with taking notes again and stuff. 
[18:03] [Sacha Chua : VIEWER]: yantar92: did we want to use a separate Etherpad 
or the shared notes?
[18:04] [yantar92 : MODERATOR]: Public Etherpad where we can write even after 
the meetup: https://pad.emacsconf.org/orgmeetup
[18:06] [Pedro A. Aranda : VIEWER]: 😄
[18:07] [Sacha Chua : VIEWER]: EmacsConf CFP target date: next Friday (Sept 19) 
https://emacsconf.org/2025/cfp/ , could be nice to see what people are up to in 
terms of Org workflows
[18:09] [Rudy : VIEWER]: Possible topics: ID link completions, multi-page HTML 
export [I started working on mine, in the meantime, with the amazing Org 
Element API], status update on the new LaTeX subsystem, status update on the 
"proper parsing" branch. 😊
[18:10] [Sacha Chua : VIEWER]: Also, I liked this workflow for using a dynamic 
hydra for refiling Org notes into buckets. Haven't tried it myself yet, but 
I've been wanting something like it for a while: 
https://gist.github.com/jsomers/ded472b1aa3b92d5fc8b35e92164eb07
[18:11] [yantar92 : MODERATOR]: [[info:org#Internal Links][org#Internal Links]]
[18:11] [yantar92 : MODERATOR]: about internal links
[18:11] [yantar92 : MODERATOR]: (including links to figures)
[18:14] [Sacha Chua : VIEWER]: https://github.com/fniessen/org-html-themes and 
https://github.com/mrlee23/readtheorg have examples of how to use #+SETUPFILE: 



[18:14] [Sacha Chua : VIEWER]: ah, HTML anchors
[18:14] [Pedro A. Aranda : VIEWER]: Where to you get the shortcut characters? 
This may confuse newbies... 
[18:14] [Sacha Chua : VIEWER]: I often use CUSTOM_ID in a subtree to set that 
for a heading
[18:15] [Rudy : VIEWER]: Pedro: +1 (he should disable the special characters 
when teaching people about Org; it is confusing even for a veteran)
[18:15] [Sacha Chua : VIEWER]: (if we're talking about HTML anchors, that is)
[18:15] [Pedro A. Aranda : VIEWER]: 😉
[18:15] [Nick Anderson : VIEWER]: I see it
[18:15] [Sacha Chua : VIEWER]: I can see yantar's screen
[18:15] [Nick Anderson : VIEWER]: and its updating 
[18:16] [yantar92 : MODERATOR]: https://github.com/fniessen/org-html-themes
[18:17] [Rudy : VIEWER]: I just style with CSS (all classes are documented), 
and it is pretty powerful.
[18:17] [famubu : VIEWER]: You mean `#+HTML`?
[18:17] [Sacha Chua : VIEWER]: CUSTOM_ID property, then you can org-store-link 
a reference to it and then org-insert-link and it will turn into ... 
[18:19] [Sacha Chua : VIEWER]: oh I have a post about non-heading anchors, like 
if you want to link to  paragraph. You can #+ATTR_HTML: :id ... right before 
it. 
https://sachachua.com/blog/2025/02/adding-an-anchor-to-a-paragraph-in-org-mode-html-export/
 
[18:19] [Sacha Chua : VIEWER]: yeah, random hashes are not pretty =)
[18:19] [Nick Anderson : VIEWER]: OH that is a great tip
[18:19] [Sacha Chua : VIEWER]: I have a my-org-set-custom-id in 
https://sach.ac/dotemacs that sets the CUSTOM_ID based on the outline path of 
the headings
[18:20] [yantar92 : MODERATOR]: [[info:org#Headlines in HTML 
export][org#Headlines in HTML export]]
[18:20] [yantar92 : MODERATOR]: + you can use publishing for stable anchors
[18:23] [Rudy : VIEWER]: Chinese :CUSTOM_ID: whatshamacallit 😊
[18:24] [famubu : VIEWER]: In markdown we can group together links at the end 
of the document like:

```
Hello [link][1].
Another [link[2].

[1]: https://www.example.com
[2]: https://www.example.com/home.html
```

Is there a similar way in org?

Right now I'm using a seperate `#+LINK` for each link and then using that name.
[18:24] [Sacha Chua : VIEWER]: I have a validation function that complains if I 
have headings with the same outline path, and I have a function that assigns 
CUSTOM_IDs for all the headings in the buffer if they don't already have one =)
[18:25] [Nick Anderson : VIEWER]: Footnotes
[18:25] [Rudy : VIEWER]: Citations are heavyweight; perhaps footnotes.
[18:25] [Nick Anderson : VIEWER]: 
https://orgmode.org/manual/Creating-Footnotes.html
[18:26] [Rudy : VIEWER]: #+print_bibliography:
[18:27] [Nick Anderson : VIEWER]: someday ill start using citations
[18:28] [Harry : VIEWER]: with citeproc.el css works very nicely 
[18:28] [Sacha Chua : VIEWER]: Putting the links at the end tends to help with 
Markdown readability, but since Org Mode hides the link targets, I find I don't 
need that as much. It also helps with writing the text and then figuring out 
the links later, which I have an Org workflow for now. I can write [[lots of 
plain links]] and then run a function to go back and fill all those links in 
interactively. (https://sachachua.com/blog/2025/07/finding-unlinked-text/)
[18:28] [Nick Anderson : VIEWER]: I use footnotes a fair amount, quite simple 
and effective.
[18:29] [Sacha Chua : VIEWER]: I like using footnotes when I want to add extra 
text, not just a link. I have some JS that duplicates them as side notes.
[18:29] [Nick Anderson : VIEWER]: org-footnote-new
[18:30] [Rudy : VIEWER]: The footnotes can be also all at the end in the Org 
file, FYI.  Ihor showed inline footnotes.
[18:30] [Pedro A. Aranda : VIEWER]: Need to leave.... waiting til you are ready 
to continue with the fonts.. 😄
[18:30] [yantar92 : MODERATOR]: https://github.com/emacsorphanage/ox-pandoc
[18:31] [niklauz : VIEWER]: Hi folks 😊 
[18:31] [Rudy : VIEWER]: niklauz: Hi!
[18:32] [Sacha Chua : VIEWER]: Custom tags... Oh, would you find custom Org 
link types useful?
[18:34] [Sacha Chua : VIEWER]: Like, I use org-link-set-parameters to make a 
sketchThumb: link type that turns [[sketchThumb:filename.png]] into a {% 
sketchThumb ... %} shortcode for my blogging engine
[18:35] [Sacha Chua : VIEWER]: oh that's interesting, I didn't know about using 
org-html-html5-elements for directly translating #+begin_... into tags.
[18:36] [Sacha Chua : VIEWER]: What kinds of custom tags are you thinking 
about? Could you give an example?
[18:36] [Rudy : VIEWER]: org-html-html5-fancy is not documented as #+options:
[18:37] [Rudy : VIEWER]: [in C-h v]
[18:37] [famubu : VIEWER]: Perhaps `(setq org-html-doctype "html5")`? 

[18:38] [Rudy : VIEWER]: I wonder when (if ever) will Org start defaulting to 
HTML5.  2050? 😊
[18:38] [famubu : VIEWER]: Like `#+FRIEND_NAME:` 
[18:38] [Sacha Chua : VIEWER]: what output do you want?
[18:38] [famubu : VIEWER]: I don't if that's tag.
[18:39] [Sacha Chua : VIEWER]: Oh, if you want to set the text and then have it 
substituted in your blog post, that sounds like Org macros
[18:39] [famubu : VIEWER]: I wish to insert value of that `FRIEND_NAME` into 
appropriate spot inside the html template while exporting.
[18:39] [Sacha Chua : VIEWER]: Yeah that definitely sounds like macros
[18:40] [Rudy : VIEWER]: Fontification to confuse the enemy!
[18:40] [Rudy : VIEWER]: And friends as well. 😁
[18:40] [Sacha Chua : VIEWER]: "Macro Replacement" in the Org manual, #+MACRO: 
name   replacement text; $1, $2 are arguments, use like this:
#+MACRO: friendname Phoebe
Hello,  {{{friendname}}}
[18:41] [Rudy : VIEWER]: APL Org
[18:43] [niklauz : VIEWER]: I've been looking more at LaTeX lately - are there 
clever ways to parameterized latex or strong guides on how to map Org elements 
to Latex elements?
[18:44] [Sacha Chua : VIEWER]: Can probably also have it expand to raw HTML if 
you need to, using syntax like @@html:Text goes here@@
[18:44] [Rudy : VIEWER]: It would be great to have overlays with resolved 
macros (e.g. descriptive macros, like we have descriptive links).
[18:45] [niklauz : VIEWER]: I've been poking at how to ... for example, use Org 
`#+USERNAME: myusername` in something like `Login provided to \bf{ 
{{{KEYWORD(USERNAME)}}} }`or something like that
[18:45] [famubu : VIEWER]: I guess worg source is the best place to look for 
examples.
[18:47] [Sacha Chua : VIEWER]: niklauz: ooooh, I can imagine how setting the 
properties and then including the template file could be pretty interesting
[18:48] [niklauz : VIEWER]: Ah - so this may seems like a basic question, but 
are Latex commands usable without needing to be wrapped in a src/export block?
[18:48] [niklauz : VIEWER]: (I don't know if I've ever seen that stated so 
clearly anywhere)
[18:48] [niklauz : VIEWER]: Awsome!
[18:49] [niklauz : VIEWER]: Org never ceases to amaze
[18:50] [niklauz : VIEWER]: Would you be willing to show the example with 
`USERNAME` on your screen as an example ... wondering if it's possible to use 
PROPERTIES to interpolate or variablize LaTeX
[18:50] [Sacha Chua : VIEWER]: I wonder if it would make sense to have 
something like that for HTML tags, like if < is the beginning of the line
[18:51] [kickingvegas : VIEWER]: hi folks - since it looks like Org export to 
LaTeX is being covered, any guidance on #+CITE_EXPORT for basic references? I'm 
trying to cite a bib reference (@online, @software) with a url field and the 
url does not get printed out in the bibliography. 
[18:52] [niklauz : VIEWER]: @Sacha there's something like that for supporting 
HTML within Markdown, isn't there?
[18:55] [kickingvegas : VIEWER]: @niklauz - you can insert raw HTML into 
Markdown 
[18:56] [Sacha Chua : VIEWER]: For environments, that's one of the reasons why 
I like the #+begin_myenvironment ... #+end_myenvironment style, since it 
exports to HTML fine as well.
[18:59] [famubu : VIEWER]: I need to go now. Thanks everyone!
[19:00] [Sacha Chua : VIEWER]: famubu: good luck with your blog!
[19:00] [Rudy : VIEWER]: famubu: Cheers!
[19:00] [Sacha Chua : VIEWER]: famubu: let me know at [email protected] when 
you post Emacs things so I can include them in Emacs News =)
[19:01] [Sacha Chua : VIEWER]: Pedro just mentioned that he's back and ready to 
work on it again
[19:05] [Sacha Chua : VIEWER]: Is there a good way to visualize the data 
structures? Sometimes edebug / prin1 isn't very helpful because the nested 
properties are very long
[19:07] [Sacha Chua : VIEWER]: Ehh, maybe I should just get better at looking 
at the nesting =)
[19:08] [yantar92 : MODERATOR]: https://github.com/mmontone/emacs-inspector
[19:09] [Jake : VIEWER]: Also Emacs has a pretty printer function called pp
[19:09] [Sacha Chua : VIEWER]: oh yeah, I actually have that
[19:09] [Sacha Chua : VIEWER]: (pp - but it's pretty nested, so that's why I 
was getting confused)
[19:09] [Jake : VIEWER]: Right, the references would be confusing
[19:10] [Sacha Chua : VIEWER]: pp hides cyclic references (shows #0, #1), which 
is nice
[19:10] [Rudy : VIEWER]: The Org Element API really elevates Org, IMO.  Really 
good stuff.  Easy to use, fast, etc.
[19:14] [Jake : VIEWER]: I'm trying to design a function that checks whether 
the heading at point is blocking something else, sort of an inverse of 
org-entry-blocked-p.

I have some ideas, but I'm curious to know how other people would approach the 
problem.
[19:14] [Jake : VIEWER]: My first thought: trigger blocking hooks for every 
heading in the agenda, and then check org-block-entry-blocking.
[19:15] [Sacha Chua : VIEWER]: Jake: Are you using something like org-edna for 
the task dependencies?
[19:15] [Sacha Chua : VIEWER]: or just the hierarchy?
[19:15] [Rudy : VIEWER]: kickingvegas:  You can use out-of-the-box citations, 
if you do not care about the style.  But if you want to publish, e.g. journal 
or instructor tells you what style they are expecting.  For that, just download 
CSL and plop that one line into your Org.  I have used it a lot at uni, and it 
works well.
[19:15] [Jake : VIEWER]: Yeah, I am using org-edna.
[19:15] [Nick Anderson : VIEWER]: Search for like http
[19:15] [yantar92 : MODERATOR]: 
https://editor.citationstyles.org/searchByExample/
[19:16] [yantar92 : MODERATOR]: https://github.com/andras-simonyi/citeproc-el
[19:16] [Jake : VIEWER]: Maybe just searching BLOCKER props for the current 
entry's ID would be enough for the way I use org-edna.
[19:16] [Sacha Chua : VIEWER]: kickingvegas: ... or hack something around the 
Org export to modify the output? 😉
[19:17] [Sacha Chua : VIEWER]: Jake: sounds promising
[19:17] [Sacha Chua : VIEWER]: kickingvegas: the CSL does sound like the proper 
way to do it
[19:19] [Jake : VIEWER]: Yeah, I think that the blocking logic in org mode is 
too flexible for my solution to be as general as I'd like.
[19:20] [Sacha Chua : VIEWER]: Jake: 
https://github.com/mskorzhinskiy/org-linked-tasks/blob/master/org-linked-tasks.el
 uses org-ql to do property searches for linked tasks, if you're looking for a 
similar thing
[19:21] [niklauz : VIEWER]: I've wondered if org-ql could be setup for use 
within Org-EDNA ... is that feasible?
[19:21] [niklauz : VIEWER]: I imagine that if org-ql existed first, that's 
probably how it would've been built.
[19:21] [Sacha Chua : VIEWER]: 
https://www.reddit.com/r/emacs/comments/i9jv3l/orgedna_how_to_set_scheduled_todo_keyword_only/
 is a relevant Reddit thread
[19:22] [Sacha Chua : VIEWER]: that org-edna--finder-cache looks potentially 
interesting too
[19:23] [niklauz : VIEWER]: Wow, Ihor you make is look /almost/ 
straight-forward hahah
[19:24] [Sacha Chua : VIEWER]: the docstring of the cache notes that it doesn't 
work for relative context, though
[19:24] [niklauz : VIEWER]: FWIW I believe org-ql includes caching
[19:26] [Jake : VIEWER]: For context: I've written a package that reimplement's 
taskwarrior's urgency system, and I was looking for ways to make blocking tasks 
more urgent.



Since I may release the package, I was exploring how I might make that work for 
other users.
[19:26] [Sacha Chua : VIEWER]: if you mainly use IDs and the performance of the 
property search doesn't work out, it might be interesting to have a function 
that can add an explicit backlink for you or something
[19:27] [Jake : VIEWER]: Not necessarily based on org-edna.
[19:27] [Jake : VIEWER]: Just wanted to account for users using org-edna like I 
do.
[19:28] [Sacha Chua : VIEWER]: right, the Reddit thread was about having 
multiple tasks collectively trigger another task
[19:28] [Jake : VIEWER]: So I'd have the org-urgency package plus an 
org-urgency-edna package or something for the integration with org-edna.
[19:29] [Jake : VIEWER]: I might advise org-edna functions and override 
org-get-heading to include a market
[19:29] [Jake : VIEWER]: marker*
[19:30] [Jake : VIEWER]: ah, right
[19:30] [Sacha Chua : VIEWER]: mmm, make it work for your use case and then see 
if other people are motivated enough to help get it working for theirs? =)
[19:31] [Jake : VIEWER]: Probably the right thing to do for now, yeah
[19:31] [Sacha Chua : VIEWER]: aha, support for the explicit backlink property 
- it works for yantar92 😉
[19:32] [Sacha Chua : VIEWER]: oh actually, no, that's just a forward link to 
the blocker
[19:33] [Sacha Chua : VIEWER]: but his config does set up the trigger at the 
same time, so yeah, explicit links
[19:33] [Jake : VIEWER]: I have to split. I appreciate the help and advice!
[19:34] [niklauz : VIEWER]: Is there a good MODIFICATION  or CONTENTHASH 
updater solution for Org Headlines? 
[19:35] [Sacha Chua : VIEWER]: do you mean setting a property with modification 
date or hash of the contents?
[19:35] [Nick Anderson : VIEWER]: 
https://org-roam.discourse.group/t/update-a-field-last-modified-at-save/321
[19:35] [niklauz : VIEWER]: a general purpose form of this, 
https://melpa.org/#/org-roam-timestamps
[19:35] [niklauz : VIEWER]: ah, yes
[19:37] [niklauz : VIEWER]: I wonder why there isn't a consensus general 
purpose package to provide this? Could it be everyone has solved it as a 
one-off?
[19:38] [niklauz : VIEWER]: oh, haven't seen an org-element example - may you 
paste that code snippet into chat please?
[19:39] [niklauz : VIEWER]: I have a messy hand-jammed solution in my config 
heheh
[19:39] [yantar92 : MODERATOR]: (when-let* ((hd (org-element-lineage 
(org-element-at-point) 'headline 'include-self)))
  ;; caveat: also need to exclude PROPERTIES drawer itself to avoid hashing the 
hash
  ;; caveat 2: need to make sure that context-begin/end is non-nil
  (let ((chash (md5 (current-buffer) (org-element-contents-begin hd) 
(org-element-contents-end hd))))
    (org-entry-put "CHASH" chash)))
[19:39] [niklauz : VIEWER]: Cheers!
[19:40] [Sacha Chua : VIEWER]: is there an org-element API equivalent of 
org-end-of-meta-data?
[19:43] [Sacha Chua : VIEWER]: I tend to use org-end-of-meta-data + 
org-end-of-subtree (or org-heading-regexp) a lot to get just the text of a 
subtree, but it would be neat to have an org-element way of getting the text. 
=) 
[19:47] [yantar92 : MODERATOR]: (when-let* ((hd (org-element-lineage 
(org-element-at-point) 'headline t)))
  (when-let* ((cbeg (org-element-contents-begin hd)))
    (let ((beg cbeg))
      (while (org-element-type-p (org-element-at-point beg) '(planning 
property-drawer))
        (setq beg (org-element-end (org-element-at-point beg))))
      (buffer-substring-no-properties beg (org-element-end hd)))))
[19:50] [yantar92 : MODERATOR]: (when-let* ((hd (org-element-lineage 
(org-element-at-point) 'headline t)))
  (when-let* ((cbeg (org-element-contents-begin hd)))
    (let ((beg cbeg))
      (catch :exit
        (while (org-element-type-p (org-element-at-point beg) '(planning 
property-drawer))
          (let ((newbeg (org-element-end (org-element-at-point beg))))
            (when (equal newbeg beg) (throw :exit t))
            (setq beg (org-element-end (org-element-at-point beg))))))
      (buffer-substring-no-properties beg (org-element-end hd)))))
[19:53] [niklauz : VIEWER]: Put me down for 2026 😉 
[19:54] [niklauz : VIEWER]: When is the schedule mostly firmed up?
[19:55] [niklauz : VIEWER]: Perfecto
[19:57] [niklauz : VIEWER]: The state of Emacs and State of Org are must watch 😁
[19:58] [karthink : VIEWER]: I have a question about 
org-fold-show-context-detail.  Is there no view that shows the current entry in 
full but a sparse-tree view of its position in the document?  i.e. show its 
direct ancestors and descendants as headings-only.
[19:58] [niklauz : VIEWER]: I recall last year there was a mention of TZ aware 
time-stamps, is that still WIP?
[19:58] [niklauz : VIEWER]: Karthik FTW 
[19:58] [Rudy : VIEWER]: LaTeX preview!
[19:58] [Rudy : VIEWER]: +1 Karthink FTW!
[20:00] [Rudy : VIEWER]: Gosh, 20:00.
[20:00] [Rudy : VIEWER]: Gotta go!
[20:00] [Rudy : VIEWER]: [Lecture starting.]
[20:00] [Rudy : VIEWER]: Cheers and thanks everyone!
[20:00] [Thomas : VIEWER]: I need to leave. Thank you!
[20:02] [niklauz : VIEWER]: Was there a spec adopted?
[20:03] [niklauz : VIEWER]: (just curious what it'll look like)
[20:04] [niklauz : VIEWER]: Ah OK, great!
[20:05] [niklauz : VIEWER]: Yeah, all the time/clock math will be a lot
[20:06] [niklauz : VIEWER]: Yup - OK thanks for the update
[20:06] [Jeff Trull : VIEWER]: Do we support iso 8601 timestamps in any way
[20:06] [Nick Anderson : VIEWER]: Thanks so much for organizing and doing these.
[20:08] [Jeff Trull : VIEWER]: I'm interested in the distinction between 
"timepoint" and "duration" also. It looks like org tables understand duration 
(at least in calculations), and we have org-duration.el
[20:09] [Jeff Trull : VIEWER]: It's interesting for clock tables
[20:10] [Jeff Trull : VIEWER]: I make timesheets for invoices in org and it's 
always a question what e.g. 03:47 represents - a time or a duration
[20:17] [yantar92 : MODERATOR]: Input duration values must be of the form 
‘HH:MM[:SS]’, where seconds
are optional
[20:18] [yantar92 : MODERATOR]: 3.5.4 Durations and time values in the manual
[20:18] [Jeff Trull : VIEWER]: This is interesting for export reasons too; 
ooxml (for example) has a separate format option for timestamps and durations 
that displays and calculates with them differently
[20:18] [Jeff Trull : VIEWER]: It's strange because the textual representation 
is the same but the calculation behavior is different and it's a function of 
the format not the contents
[20:19] [Jeff Trull : VIEWER]: Thanks for the tour!
[20:21] [niklauz : VIEWER]: Nothing more from me - thanks Ihor 😊 
[20:21] [Jeff Trull : VIEWER]: Next time we can talk about grid-table 😊
[20:21] [kickingvegas : VIEWER]: thanks!
[20:21] [Jeff Trull : VIEWER]: Thanks Ihor!
[20:21] [zaimon : VIEWER]: Thanks everyone
[20:21] [Jeff Trull : VIEWER]: We don't have to do that now haha
[20:21] [karthink : VIEWER]: Thanks for the meetup
[20:22] [Jacob S. Gordon : VIEWER]: Thanks Ihor!
: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>


Reply via email to