emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug in definition of org-encode-time
@ 2022-07-24  8:45 Kenneth Stuart
  2022-07-24  9:41 ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Kenneth Stuart @ 2022-07-24  8:45 UTC (permalink / raw)
  To: emacs-orgmode

Hello,

Macro `org-encode-time` (lisp/org-macs.el +1395) does not get defined
for emacs >= 27.1 as the top level if statement is missing its ELSE clause.

#+begin_src elisp
(if (version< emacs-version "27.1")
    (defmacro org-encode-time (&rest time)
      (if (cdr time)
          `(encode-time ,@time)
        `(apply #'encode-time ,@time)))
  (if (ignore-errors (with-no-warnings (encode-time '(0 0 0 1 1 1971))))
      (defmacro org-encode-time (&rest time)
        (pcase (length time) ; Emacs-29 since d75e2c12eb
          (1 `(encode-time ,@time))
          ((or 6 9) `(encode-time (list ,@time)))
          (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
                    (length time)))))
    (defmacro org-encode-time (&rest time)
      (pcase (length time)
        (1 `(encode-time ,@time))
        (6 `(encode-time (list ,@time nil -1 nil)))
        (9 `(encode-time (list ,@time)))
        (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
                  (length time)))))) //MISSING ELSE//)
#+end_src

I'm assuming it should be:

#+begin_src diff
  diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 5931dd260..bbdacbdf8 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -1403,14 +1403,14 @@ nil, just return 0."
           (1 `(encode-time ,@time))
           ((or 6 9) `(encode-time (list ,@time)))
           (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
-                    (length time)))))
-    (defmacro org-encode-time (&rest time)
+                    (length time))))))
+  (defmacro org-encode-time (&rest time)
       (pcase (length time)
         (1 `(encode-time ,@time))
         (6 `(encode-time (list ,@time nil -1 nil)))
         (9 `(encode-time (list ,@time)))
         (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
-                  (length time)))))))
+                  (length time))))))
 (put 'org-encode-time 'function-documentation
      "Compatibility and convenience helper for `encode-time'.
 May be called with 9 components list (SECONDS ... YEAR IGNORED DST ZONE)
#+end_src

regards
Ken


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: Bug in definition of org-encode-time
  2022-07-24  8:45 Bug in definition of org-encode-time Kenneth Stuart
@ 2022-07-24  9:41 ` Ihor Radchenko
  2022-07-24 10:06   ` Kenneth Stuart
  0 siblings, 1 reply; 4+ messages in thread
From: Ihor Radchenko @ 2022-07-24  9:41 UTC (permalink / raw)
  To: Kenneth Stuart; +Cc: emacs-orgmode

Kenneth Stuart <kstuart@hotmail.co.uk> writes:

> Macro `org-encode-time` (lisp/org-macs.el +1395) does not get defined
> for emacs >= 27.1 as the top level if statement is missing its ELSE clause.

Are you sure?

> #+begin_src elisp
> (if (version< emacs-version "27.1")
>     (defmacro org-encode-time (&rest time)
>       (if (cdr time)
>           `(encode-time ,@time)
>         `(apply #'encode-time ,@time)))
>   (if (ignore-errors (with-no-warnings (encode-time '(0 0 0 1 1 1971))))
>       (defmacro org-encode-time (&rest time)
>         (pcase (length time) ; Emacs-29 since d75e2c12eb
>           (1 `(encode-time ,@time))
>           ((or 6 9) `(encode-time (list ,@time)))
>           (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>                     (length time)))))
>     (defmacro org-encode-time (&rest time)
>       (pcase (length time)
>         (1 `(encode-time ,@time))
>         (6 `(encode-time (list ,@time nil -1 nil)))
>         (9 `(encode-time (list ,@time)))
>         (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>                   (length time)))))) //MISSING ELSE//)
> #+end_src

This is equivalent to

(if condition
 (defmacro ...)
 ;; else
 (if another-condition
  (defmacro ...)
  ;; else
  (defmacro)))

Best,
Ihor


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Bug in definition of org-encode-time
  2022-07-24  9:41 ` Ihor Radchenko
@ 2022-07-24 10:06   ` Kenneth Stuart
  2022-07-24 11:37     ` Kenneth Stuart
  0 siblings, 1 reply; 4+ messages in thread
From: Kenneth Stuart @ 2022-07-24 10:06 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

Yes, you're right I should have looked more closely, I also see 'Morgan
Smith' has already raised the issue more clearly.

Please ignore the noise ;)

Ihor Radchenko <yantar92@gmail.com> writes:

> Kenneth Stuart <kstuart@hotmail.co.uk> writes:
>
>> Macro `org-encode-time` (lisp/org-macs.el +1395) does not get defined
>> for emacs >= 27.1 as the top level if statement is missing its ELSE clause.
>
> Are you sure?
>
>> #+begin_src elisp
>> (if (version< emacs-version "27.1")
>>     (defmacro org-encode-time (&rest time)
>>       (if (cdr time)
>>           `(encode-time ,@time)
>>         `(apply #'encode-time ,@time)))
>>   (if (ignore-errors (with-no-warnings (encode-time '(0 0 0 1 1 1971))))
>>       (defmacro org-encode-time (&rest time)
>>         (pcase (length time) ; Emacs-29 since d75e2c12eb
>>           (1 `(encode-time ,@time))
>>           ((or 6 9) `(encode-time (list ,@time)))
>>           (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>>                     (length time)))))
>>     (defmacro org-encode-time (&rest time)
>>       (pcase (length time)
>>         (1 `(encode-time ,@time))
>>         (6 `(encode-time (list ,@time nil -1 nil)))
>>         (9 `(encode-time (list ,@time)))
>>         (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>>                   (length time)))))) //MISSING ELSE//)
>> #+end_src
>
> This is equivalent to
>
> (if condition
>  (defmacro ...)
>  ;; else
>  (if another-condition
>   (defmacro ...)
>   ;; else
>   (defmacro)))
>
> Best,
> Ihor



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Bug in definition of org-encode-time
  2022-07-24 10:06   ` Kenneth Stuart
@ 2022-07-24 11:37     ` Kenneth Stuart
  0 siblings, 0 replies; 4+ messages in thread
From: Kenneth Stuart @ 2022-07-24 11:37 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode


This appears to be an issue with the emacs native compiler, as using a
build without it enabled works as expected, and using a build with the
native compiler enabled but before the relevant .eln files have been
built also works as expected, once they've been built the issue
mentioned by Morgan on the 22nd is once again present.

Quote:
> When I re-evaluate the defun for `org-matcher-time' everything is happy
> again.  I'm not sure what the issue is but I assume it's related to
> compilation or something.

emacs commit: 928ea0fbf13671e17c9839791163d1da056df490

I'll try reporting the issue using `report-emacs-bug`.

Best,
Ken

Kenneth Stuart <kstuart@hotmail.co.uk> writes:

> Yes, you're right I should have looked more closely, I also see 'Morgan
> Smith' has already raised the issue more clearly.
>
> Please ignore the noise ;)
>
> Ihor Radchenko <yantar92@gmail.com> writes:
>
>> Kenneth Stuart <kstuart@hotmail.co.uk> writes:
>>
>>> Macro `org-encode-time` (lisp/org-macs.el +1395) does not get defined
>>> for emacs >= 27.1 as the top level if statement is missing its ELSE clause.
>>
>> Are you sure?
>>
>>> #+begin_src elisp
>>> (if (version< emacs-version "27.1")
>>>     (defmacro org-encode-time (&rest time)
>>>       (if (cdr time)
>>>           `(encode-time ,@time)
>>>         `(apply #'encode-time ,@time)))
>>>   (if (ignore-errors (with-no-warnings (encode-time '(0 0 0 1 1 1971))))
>>>       (defmacro org-encode-time (&rest time)
>>>         (pcase (length time) ; Emacs-29 since d75e2c12eb
>>>           (1 `(encode-time ,@time))
>>>           ((or 6 9) `(encode-time (list ,@time)))
>>>           (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>>>                     (length time)))))
>>>     (defmacro org-encode-time (&rest time)
>>>       (pcase (length time)
>>>         (1 `(encode-time ,@time))
>>>         (6 `(encode-time (list ,@time nil -1 nil)))
>>>         (9 `(encode-time (list ,@time)))
>>>         (_ (error "`org-encode-time' may be called with 1, 6, or 9 arguments but %d given"
>>>                   (length time)))))) //MISSING ELSE//)
>>> #+end_src
>>
>> This is equivalent to
>>
>> (if condition
>>  (defmacro ...)
>>  ;; else
>>  (if another-condition
>>   (defmacro ...)
>>   ;; else
>>   (defmacro)))
>>
>> Best,
>> Ihor



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-24 11:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-24  8:45 Bug in definition of org-encode-time Kenneth Stuart
2022-07-24  9:41 ` Ihor Radchenko
2022-07-24 10:06   ` Kenneth Stuart
2022-07-24 11:37     ` Kenneth Stuart

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).