Re: [O] Agenda filter by any tag seems to be broken
Nicolas Goaziouwrites: > Hello, > > Eric Abrahamsen writes: > >> Okay, there's the problem. In the org git repo, the code above has been >> that way since it was added in 2015. In the package-manager version, >> however, it now looks like this: >> >> (let* ((tag (substring x 1)) >> (isregexp (and (equal "{" (substring tag 0 1)) >> (equal "}" (substring tag -1 >> regexp) >> >> And the `substring' calls raise the error. The code is the same in the >> "org" and "org-plus-contrib" packages. >> >> I don't know where the different code comes from, or who maintains it, >> or why it's different from the org git repo, but it would be nice if >> someone could look into fixing that! > > Fixed. Thank you for the detailed report. Great, thanks a lot!
Re: [O] Agenda filter by any tag seems to be broken
Hello, Eric Abrahamsenwrites: > Okay, there's the problem. In the org git repo, the code above has been > that way since it was added in 2015. In the package-manager version, > however, it now looks like this: > > (let* ((tag (substring x 1)) >(isregexp (and (equal "{" (substring tag 0 1)) > (equal "}" (substring tag -1 >regexp) > > And the `substring' calls raise the error. The code is the same in the > "org" and "org-plus-contrib" packages. > > I don't know where the different code comes from, or who maintains it, > or why it's different from the org git repo, but it would be nice if > someone could look into fixing that! Fixed. Thank you for the detailed report. Regards, -- Nicolas Goaziou
Re: [O] Agenda filter by any tag seems to be broken
Kaushal Modiwrites: > On Mon, May 16, 2016 at 8:38 PM Eric Abrahamsen > wrote: > > Starting with emacs -Q, then adding the org-plus-contrib directory > to > load-path: > > Are you installing both the git master version and org-plus-contrib? I > do not have org-plus-contrib in my load-path. The only org I have in > the load-path is the git master version. If you *are* installing both > versions, then that could probably explain the issue you are facing. I'm not running org from git anymore, just org-plus-contrib from... melpa? Actually, since Emacs' package management has no way of specifying "provides", I've got both org and org-plus-contrib. But that's not the issue, see below... > M-x org-agenda > t ;; all todos, an empty list of course > / > SPC > > And I get the error. > > I tried that. But I don't get any error. > > I took the original org-agenda-filter-make-matcher-tag-exp function > from the git master and added few debug statements as below: > > (defun org-agenda-filter-make-matcher-tag-exp (tags op) > "Return a form associated to tag-expression TAGS. > Build a form testing a line for agenda filter for > tag-expressions. OP is an operator of type CHAR that allows the > function to set the right switches in the returned form." > (message "arg tags: %S" tags) > (message "arg op: %S" op) > (let (form ret) > ;; Any of the expressions can match if OP is +, all must match if > ;; the operator is -. > (dolist (x tags (cons (if (eq op ?-) 'and 'or) form)) > (let* ((tag (substring x 1)) > (f (cond > ((string= "" tag) '(not tags)) > ((and (string-match-p "\\`{" tag) (string-match-p "}\\'" tag)) Okay, there's the problem. In the org git repo, the code above has been that way since it was added in 2015. In the package-manager version, however, it now looks like this: (let* ((tag (substring x 1)) (isregexp (and (equal "{" (substring tag 0 1)) (equal "}" (substring tag -1 regexp) And the `substring' calls raise the error. The code is the same in the "org" and "org-plus-contrib" packages. I don't know where the different code comes from, or who maintains it, or why it's different from the org git repo, but it would be nice if someone could look into fixing that! Eric
Re: [O] Agenda filter by any tag seems to be broken
On Mon, May 16, 2016 at 8:38 PM Eric Abrahamsenwrote: > Starting with emacs -Q, then adding the org-plus-contrib directory to > load-path: > Are you installing both the git master version and org-plus-contrib? I do not have org-plus-contrib in my load-path. The only org I have in the load-path is the git master version. If you *are* installing both versions, then that could probably explain the issue you are facing. > M-x org-agenda > t ;; all todos, an empty list of course > / > SPC > > And I get the error. > I tried that. But I don't get any error. I took the original org-agenda-filter-make-matcher-tag-exp function from the git master and added few debug statements as below: (defun org-agenda-filter-make-matcher-tag-exp (tags op) "Return a form associated to tag-expression TAGS. Build a form testing a line for agenda filter for tag-expressions. OP is an operator of type CHAR that allows the function to set the right switches in the returned form." (message "arg tags: %S" tags) (message "arg op: %S" op) (let (form ret) ;; Any of the expressions can match if OP is +, all must match if ;; the operator is -. (dolist (x tags (cons (if (eq op ?-) 'and 'or) form)) (let* ((tag (substring x 1)) (f (cond ((string= "" tag) '(not tags)) ((and (string-match-p "\\`{" tag) (string-match-p "}\\'" tag)) ;; TAG is a regexp. (list 'org-match-any-p (substring tag 1 -1) 'tags)) (t (list 'member (downcase tag) 'tags) (message "in let, tag: %S" tag) (message "in let, f: %S" f) (prog1 (setq ret (push (if (eq op ?-) (list 'not f) f) form)) (message "ret val: %S" ret)) Then when I do M-x org-agenda t / SPC, I get: arg tags: ("+") arg op: 43 in let, tag: "" in let, f: (not tags) ret val: ((not tags)) -- -- Kaushal Modi
Re: [O] Agenda filter by any tag seems to be broken
Kaushal Modiwrites: > On Mon, May 16, 2016 at 1:50 PM Eric Abrahamsen > wrote: > > Is anyone else seeing this? > > Go into a tags-type agenda, hit "/" to start filtering, then SPC > for > "filter to any tag". That gives me this backtrace: > > Can you add more detail on how to recreate the problem you are seeing > in an emacs -Q session. > > I do not use tag filtering heavily, so "tags-type agenda" is not clear > to me. > > I tried M-x org-agenda, followed by m, followed by / and then SPC. But > I do not see that error. > -- Also, if you're willing to spend a moment on this, would you start the agenda with the "t" key, then edebug the function `org-agenda-filter-make-matcher-tag-exp', then do the "/ SPC" thing, and tell me what arguments the function receives? Thank you! Eric
Re: [O] Agenda filter by any tag seems to be broken
Kaushal Modiwrites: > On Mon, May 16, 2016 at 1:50 PM Eric Abrahamsen > wrote: > > Is anyone else seeing this? > > Go into a tags-type agenda, hit "/" to start filtering, then SPC > for > "filter to any tag". That gives me this backtrace: > > Can you add more detail on how to recreate the problem you are seeing > in an emacs -Q session. > > I do not use tag filtering heavily, so "tags-type agenda" is not clear > to me. > > I tried M-x org-agenda, followed by m, followed by / and then SPC. But > I do not see that error. > -- Starting with emacs -Q, then adding the org-plus-contrib directory to load-path: M-x org-agenda t ;; all todos, an empty list of course / SPC And I get the error. I have a mostly-baseless hunch that the reason I seem to get more mysterious errors than other people is that I'm running emacs master from git, and emacs master forces more lexical scoping stuff than previous versions. I'm mostly pulling that out of nowhere, but there must be other people on the list who are running emacs git, and I'd be curious to know if they see the same error... Thanks! Eric
Re: [O] Agenda filter by any tag seems to be broken
On Mon, May 16, 2016 at 1:50 PM Eric Abrahamsenwrote: > Is anyone else seeing this? > > Go into a tags-type agenda, hit "/" to start filtering, then SPC for > "filter to any tag". That gives me this backtrace: > Can you add more detail on how to recreate the problem you are seeing in an emacs -Q session. I do not use tag filtering heavily, so "tags-type agenda" is not clear to me. I tried M-x org-agenda, followed by m, followed by / and then SPC. But I do not see that error. -- -- Kaushal Modi
[O] Agenda filter by any tag seems to be broken
Is anyone else seeing this? Go into a tags-type agenda, hit "/" to start filtering, then SPC for "filter to any tag". That gives me this backtrace: Debugger entered--Lisp error: (args-out-of-range "" 0 1) substring("" 0 1) (equal "{" (substring tag 0 1)) (and (equal "{" (substring tag 0 1)) (equal "}" (substring tag -1))) org-agenda-filter-make-matcher-tag-exp(("+") 43) Once ("+") is added to `org-agenda-tag-filter', all subsequent filtering actions will fail, until you remove all filters with "/ /". `org-agenda-filter-make-matcher-tag-exp' always removes the first character of the tag-matcher string, and then operates on what's left. In the case of "+", nothing's left! Thanks, Eric
[O] Agenda filter by any tag seems to be broken
Apparently there's some networking devilry going on with gmane at the moment, and this never got sent -- I'm trying again. Original message was: Is anyone else seeing this? Go into a tags-type agenda, hit "/" to start filtering, then SPC for "filter to any tag". That gives me this backtrace: Debugger entered--Lisp error: (args-out-of-range "" 0 1) substring("" 0 1) (equal "{" (substring tag 0 1)) (and (equal "{" (substring tag 0 1)) (equal "}" (substring tag -1))) org-agenda-filter-make-matcher-tag-exp(("+") 43) Once ("+") is added to `org-agenda-tag-filter', all subsequent filtering actions will fail, until you remove all filters with "/ /". `org-agenda-filter-make-matcher-tag-exp' always removes the first character of the tag-matcher string, and then operates on what's left. In the case of "+", nothing's left! Thanks, Eric