there was a recent change to how the tags table is initialized. I think
that as a side effect, some tag functions like org-tags-expand don't work
unless you open an org-mode buffer first. I have a small bash script that
exports my agenda; right in the beginning (before opening any org-mode
file) it collects some data by calling org-map-entries. org-map-entries
needs org-tags-expand, which now fails because the syntax table hasn't been
initialized yet.

Minimal case to reproduce this:

1. run: emacs -Q

2. load latest org:
(add-to-list 'load-path "/…/org-mode/lisp")
(require 'org)

3. eval:
   (org-tags-expand "+sometag")

You'll see:

Debugger entered--Lisp error: (wrong-type-argument syntax-table-p "Syntax
table including \"@\" and \"_\" as word constit...")
  (progn (org-tags-expand "+sometag"))
  funcall-interactively(eval-last-sexp nil)

If I open any .org file before step 3, then it will work.

I think the related commit is:
commit 6e6354c074a323780f103aabf45be74104ce3ecf
Author: Ihor Radchenko <yanta...@posteo.net>
Date:   Mon May 8 13:23:15 2023 +0200

    org-tags-expand: Do no modify buffer's syntax table by side effect

    * lisp/org.el (org-mode-tags-syntax-table): New variable holding
    syntax table for tags.
    (org-mode): Initialize tag syntax table.
    (org-make-tags-matcher): Match tags using appropriate syntax table.
    (org-tags-expand): Do no modify syntax table by side effect.

    Reported-by: Mattias Engdegård <mattias.engdeg...@gmail.com>
    Link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63225#68

Of course I could make sure to open an org file (any file) before calling
org-map-entries but that seems like a workaround to a bug. I would expect
(org-map-entries … 'agenda) to also work before opening any .org file.

Reply via email to