From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/68968 Path: news.gmane.org!not-for-mail From: Katsumi Yamaoka Newsgroups: gmane.emacs.devel,gmane.emacs.gnus.general Subject: Re: Gnus and No Gnus Date: Tue, 08 Sep 2009 14:15:41 +0900 Organization: Emacsen advocacy group Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1252386983 22300 80.91.229.12 (8 Sep 2009 05:16:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 8 Sep 2009 05:16:23 +0000 (UTC) Cc: ding@gnus.org, emacs-devel@gnu.org To: Glenn Morris Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 08 07:16:16 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Mkt3w-0005LV-1V for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 07:16:16 +0200 Original-Received: from localhost ([127.0.0.1]:34896 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mkt3v-0003kW-4V for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 01:16:15 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mkt3k-0003im-O7 for emacs-devel@gnu.org; Tue, 08 Sep 2009 01:16:04 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mkt3f-0003g1-9o for emacs-devel@gnu.org; Tue, 08 Sep 2009 01:16:03 -0400 Original-Received: from [199.232.76.173] (port=32918 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mkt3e-0003fy-Sp for emacs-devel@gnu.org; Tue, 08 Sep 2009 01:15:58 -0400 Original-Received: from orlando.hostforweb.net ([216.246.45.90]:47101) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Mkt3Z-0001ov-2d; Tue, 08 Sep 2009 01:15:53 -0400 Original-Received: from localhost ([127.0.0.1]:35053) by orlando.hostforweb.net with esmtpa (Exim 4.69) (envelope-from ) id 1Mkt3R-0003w6-B3; Tue, 08 Sep 2009 00:15:45 -0500 X-Hashcash: 1:20:090908:rgm@gnu.org::t2Cyd5SuTNTaXlXg:0000004kPx X-Hashcash: 1:20:090908:emacs-devel@gnu.org::CqkhXtHXOlWEbFvO:0000000000000000000000000000000000000000001ixc X-Hashcash: 1:20:090908:ding@gnus.org::DAohiHxz6IwQgaC2:000002Q9 X-Face: #kKnN,xUnmKia.'[pp`; Omh}odZK)?7wQSl"4o04=EixTF+V[""w~iNbM9ZL+.b*_CxUmFk B#Fu[*?MZZH@IkN:!"\w%I_zt>[$nm7nQosZ<3eu; B:$Q_:p!',P.c0-_Cy[dz4oIpw0ESA^D*1Lw= L&i*6&( User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1.50 (gnu/linux) Cancel-Lock: sha1:SGU3LN2XX51zzK61DE7JHe3yoI0= X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - orlando.hostforweb.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jpl.org X-Source: X-Source-Args: X-Source-Dir: X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:115118 gmane.emacs.gnus.general:68968 Archived-At: --=-=-= >>>>> 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.) --=-=-= Content-Type: text/x-patch Content-Disposition: inline *** 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. --=-=-=--