[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: w3m-bookmark-file-modtime



青田です。

Katsumi Yamaoka <yamaoka@xxxxxxx> writes:

>>>>>> In [emacs-w3m : No.10412] 青田さん wrote:
>> w3m-bookmark-file-modtime() は visited-file-modtime() と同じ形式で値を返
>> すと言いながら実際には違う形式のものを返しているように思います。
>> (visited-file-modtime() の仕様変更に追随できていない?)
>
>> また、 Emacs 21.4、22.3.1 、 23.0.60.1 のどれにおいても
>> visited-file-modtime() の docstring を見ると file-attributes と同じ形式で
>> 値を返すとあるので、 以下のように修正したほうがよいように思うのですがいか
>> がでしょうか?
>
> 長いこと放っておいてごめんなさい (誰か応えると思ってた ^^;;)。
>
> w3m-bookmark.el の随所にある
>
> (equal (visited-file-modtime) (w3m-bookmark-file-modtime))
>
> という式が、青田さんの変更を行なった後で有効に機能するかどうかを、
> この方法で試してみました。
>
> (snip)
>
> というわけで、これらの違いを吸収するためには、青田さんの変更をもっ
> とややこしく発展させたやり方が必要ですね。

詳しいテストありがとうございます。 docstring と実体が違っていたのですね…。
Emacs については etc/NEWS.22 に

.-------------------------------------------------------------------------------
| * Lisp Changes in Emacs 22.1
| <snip>
| *** `visited-file-modtime' and `calendar-time-from-absolute' now return
| a list of two integers, instead of a cons.
`-------------------------------------------------------------------------------

とあるので、以下のようなコードで解決できそうに思います。

Index: w3m-bookmark.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m-bookmark.el,v
retrieving revision 1.45
diff -u -r1.45 w3m-bookmark.el
--- w3m-bookmark.el	17 Oct 2007 11:15:57 -0000	1.45
+++ w3m-bookmark.el	7 Nov 2008 09:10:37 -0000
@@ -147,10 +147,15 @@
 The value is a list of the form (HIGH . LOW), like the time values
 that `visited-file-modtime' returns.  When the bookmark file does not
 exist, returns (0 . 0)."
-  (if (file-exists-p w3m-bookmark-file)
-      (let ((time (nth 5 (file-attributes w3m-bookmark-file))))
-	(cons (car time) (cadr time)))
-    (cons 0 0)))
+  (let ((func (cond
+               ((or (featurep 'xemacs) 
+                    (< emacs-major-version 22))
+                'cons)
+               (t 'list))))
+    (if (file-exists-p w3m-bookmark-file)
+        (let ((time (nth 5 (file-attributes w3m-bookmark-file))))
+          (funcall func (car time) (cadr time)))
+      (funcall func 0 0))))
 
 (defun w3m-bookmark-buffer (&optional no-verify-modtime)
   "Return the buffer reading `w3m-bookmark-file' current."

--
青田