From: Katsumi Yamaoka <yamaoka@jpl.org>
To: Glenn Morris <rgm@gnu.org>
Cc: ding@gnus.org, emacs-devel@gnu.org
Subject: Re: Gnus and No Gnus
Date: Tue, 08 Sep 2009 14:15:41 +0900 [thread overview]
Message-ID: <b4mljkqauf6.fsf@jpl.org> (raw)
In-Reply-To: bnocpmzbka.fsf@fencepost.gnu.org
[-- Attachment #1: Type: text/plain, Size: 1944 bytes --]
>>>>> Glenn Morris wrote:
> Katsumi Yamaoka wrote:
>> Today I tried synch'ing the Gnus trunk with the Emacs trunk and
>> found a problem concerning `float-time'.
> Sorry, I did my best to think about these issues.
>> In time-date.el, `define-obsolete-function-alias' is not available
>> in Emacs 21 that Gnus still supports. It causes an error when
>> loading gnus-load.el.
> I'm not suggesting this as a solution to this issue, but does the very
> latest Gnus really need to run on 3 major versions of Emacs? When are
> you going to drop support for Emacs 21?
Basically I'm positive to drop old Emacsen. It seems enough to
support the latest major version and one predecessor. Those who
use Emacs 21 may perhaps not want to work on upgrading Gnus.
But in another thought, we don't have so much difficulty in
supporting Emacs 21 for the present. Therefore I think it's not
time to drop Emacs 21.
>> In ecomplete.el, gnus-util.el and time-date.el, (featurep 'xemacs)
>> is used for checking if `float-time' is available like this:
>>
>> (if (featurep 'xemacs)
>> (time-to-seconds time)
>> (float-time time))
>>
>> However, XEmacs may implement `float-time' in the future.
> I used featurep in preference to fboundp to avoid compilation
> warnings, and so that the compiler could optimise the test away.
Yes, I knew it. (featurep 'xemacs) is useful in Emacs 22, 23
and XEmacs 21.5, so I hesitated to replace it with `fboundp'.
But it looks easy to provide `float-time' in XEmacs.
>> Therefore I made changes in those files as attached below. WDYT?
> Fine. I would then stick a with-no-warnings around every use of
> time-to-seconds, and an eval-and-compile around the revised definition
> of gnus-float-time.
Unfortunately `with-no-warnings' is not available in Emacs 21
and XEmacs. How about using macros like the following? (For
warnings that old Emacsen and XEmacs issue, we can use lpath.el
and dgnushack.el.)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 4867 bytes --]
*** lisp/calendar/time-date.el~ 2009-09-02 21:50:25 +0000
--- lisp/calendar/time-date.el 2009-09-08 04:53:21 +0000
***************
*** 114,130 ****
;; Bit of a mess. Emacs has float-time since at least 21.1.
;; This file is synced to Gnus, and XEmacs packages may have been written
;; using time-to-seconds from the Gnus library.
! ;;;###autoload(if (featurep 'xemacs)
! ;;;###autoload (autoload 'time-to-seconds "time-date")
! ;;;###autoload (define-obsolete-function-alias 'time-to-seconds 'float-time "21.1"))
!
! (if (featurep 'xemacs)
! (defun time-to-seconds (time)
! "Convert time value TIME to a floating point number."
! (with-decoded-time-value ((high low micro time))
! (+ (* 1.0 high 65536)
! low
! (/ micro 1000000.0)))))
;;;###autoload
(defun seconds-to-time (seconds)
--- 114,132 ----
;; Bit of a mess. Emacs has float-time since at least 21.1.
;; This file is synced to Gnus, and XEmacs packages may have been written
;; using time-to-seconds from the Gnus library.
! ;;;###autoload(if (fboundp 'float-time)
! ;;;###autoload (progn
! ;;;###autoload (defalias 'time-to-seconds 'float-time)
! ;;;###autoload (make-obsolete 'time-to-seconds 'float-time "21.1"))
! ;;;###autoload (autoload 'time-to-seconds "time-date"))
!
! (unless (fboundp 'float-time)
! (defun time-to-seconds (time)
! "Convert time value TIME to a floating point number."
! (with-decoded-time-value ((high low micro time))
! (+ (* 1.0 high 65536)
! low
! (/ micro 1000000.0)))))
;;;###autoload
(defun seconds-to-time (seconds)
***************
*** 248,259 ****
(- (/ (1- year) 100)) ; - century years
(/ (1- year) 400)))) ; + Gregorian leap years
(defun time-to-number-of-days (time)
"Return the number of days represented by TIME.
The number of days will be returned as a floating point number."
! (/ (if (featurep 'xemacs)
! (time-to-seconds time)
! (float-time time)) (* 60 60 24)))
;;;###autoload
(defun safe-date-to-time (date)
--- 250,266 ----
(- (/ (1- year) 100)) ; - century years
(/ (1- year) 400)))) ; + Gregorian leap years
+ (eval-when-compile
+ (defmacro time-date-float-time (time)
+ (if (and (fboundp 'float-time)
+ (subrp (symbol-function 'float-time)))
+ `(float-time ,time)
+ `(time-to-seconds (or ,time (current-time))))))
+
(defun time-to-number-of-days (time)
"Return the number of days represented by TIME.
The number of days will be returned as a floating point number."
! (/ (time-date-float-time time) (* 60 60 24)))
;;;###autoload
(defun safe-date-to-time (date)
*** lisp/gnus/ecomplete.el~ 2009-09-02 21:50:26 +0000
--- lisp/gnus/ecomplete.el 2009-09-08 04:53:21 +0000
***************
*** 53,64 ****
(insert-file-contents ecomplete-database-file)
(setq ecomplete-database (read (current-buffer)))))))
(defun ecomplete-add-item (type key text)
(let ((elems (assq type ecomplete-database))
! (now (string-to-number
! (format "%.0f" (if (featurep 'xemacs)
! (time-to-seconds (current-time))
! (float-time)))))
entry)
(unless elems
(push (setq elems (list type)) ecomplete-database))
--- 53,68 ----
(insert-file-contents ecomplete-database-file)
(setq ecomplete-database (read (current-buffer)))))))
+ (eval-when-compile
+ (defmacro ecomplete-float-time ()
+ (if (and (fboundp 'float-time)
+ (subrp (symbol-function 'float-time)))
+ '(float-time)
+ '(time-to-seconds (current-time)))))
+
(defun ecomplete-add-item (type key text)
(let ((elems (assq type ecomplete-database))
! (now (string-to-number (format "%.0f" (ecomplete-float-time))))
entry)
(unless elems
(push (setq elems (list type)) ecomplete-database))
*** lisp/gnus/gnus-util.el~ 2009-09-02 21:50:26 +0000
--- lisp/gnus/gnus-util.el 2009-09-08 04:53:21 +0000
***************
*** 285,296 ****
(and (= (car fdate) (car date))
(> (nth 1 fdate) (nth 1 date))))))
(defun gnus-float-time (&optional time)
"Convert time value TIME to a floating point number.
TIME defaults to the current time."
! (if (featurep 'xemacs)
! (time-to-seconds (or time (current-time)))
! (float-time time)))
;;; Keymap macros.
--- 285,301 ----
(and (= (car fdate) (car date))
(> (nth 1 fdate) (nth 1 date))))))
+ (eval-when-compile
+ (defmacro gnus-float-time-1 (time)
+ (if (and (fboundp 'float-time)
+ (subrp (symbol-function 'float-time)))
+ `(float-time ,time)
+ `(time-to-seconds (or ,time (current-time))))))
+
(defun gnus-float-time (&optional time)
"Convert time value TIME to a floating point number.
TIME defaults to the current time."
! (gnus-float-time-1 time))
;;; Keymap macros.
next prev parent reply other threads:[~2009-09-08 5:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-07 12:07 Gnus and No Gnus Katsumi Yamaoka
2009-09-07 21:31 ` Glenn Morris
2009-09-08 2:15 ` Stephen J. Turnbull
2009-09-08 4:46 ` Teemu Likonen
2009-09-15 8:10 ` Steinar Bang
2009-09-08 7:11 ` Glenn Morris
2009-09-15 8:13 ` Steinar Bang
2009-09-15 13:10 ` Ted Zlatanov
2009-09-08 5:15 ` Katsumi Yamaoka [this message]
2009-09-08 7:19 ` Glenn Morris
2009-09-08 11:13 ` Katsumi Yamaoka
2009-09-08 16:49 ` Glenn Morris
2009-09-08 19:08 ` Stephen J. Turnbull
2009-09-09 9:31 ` Katsumi Yamaoka
2009-09-15 8:14 ` Steinar Bang
2009-09-15 17:15 ` Reiner Steib
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b4mljkqauf6.fsf@jpl.org \
--to=yamaoka@jpl.org \
--cc=ding@gnus.org \
--cc=emacs-devel@gnu.org \
--cc=rgm@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.