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 "]")))))
  • telenieko@alien.topOPB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I ask only for the first step. After I have all the referenced message IDs I will start working on the notmuch side to find and tag!

    • yantar92@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year 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
        ·
        1 year 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
          ·
          1 year ago

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