Hi there,

I use orgmode links extensively. In particular, I have hundreds (our thousands) of links to emails (in notmuch). I would very much like to add a tag to any email that is being referenced from org.

So, what I need to do first is be able to find all matches of a regular expression in all my org files. Non-interactively.

I have been playing around with xref-matches-in-directory but that would not cover when multiple emails are mentioned in the same line…

I have been looking and looking but everything I find missed the non-interactive part.

So: What is the function to “search for this REGEX in FILES in DIR and return the first capture group”? (the regex has a capture group for the msgid)

The regex:

  (rx-to-string
   (rx "notmuch:id:"
       (group (1+ (not "]")))))
  • yantar92@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 months ago

    You can simply loop over all the org files, open one by one, and search within each file individually using (while (re-seacrch-forward …) …).

    • telenieko@alien.topOPB
      link
      fedilink
      English
      arrow-up
      1
      ·
      11 months ago

      I plan on searching hundreds of files (all notes) so… some way that does not open all of them would be preferable.

      • yantar92@alien.topB
        link
        fedilink
        English
        arrow-up
        1
        ·
        11 months ago

        If opening a file is a problem, you can create temporary buffer and then use insert-file-contents + search + erase-buffer.