[mew-dist 26385] Re: drag & drop on Meadow

INOUE Tomohiro ml at example.com
2005年 5月 30日 (月) 22:43:55 JST


こんにちは、井上です。

Motohiko Minakuchi <zxcv3794 at example.com> wrote:
> > とりあえず、マージしました。
> netinstall した Meadow-2.10-dev (ASAGAO) で試したところ、 
> void-function dnd-get-local-file-name と言われてしまいました。

Meadow 3 (= Emacs 22) だと dnd-get-local-file-name が定義されているの
ですが Meadow 2.x (= Emacs 21) にはまだ無いので、このままだと 2.x の場
合ファイルを drop した際にエラーになってしまいます。

なのでとりあえず、mew-key.el は

(defun mew-draft-share-keymap (symmap)
  (if (and (featurep 'meadow) (featurep 'dnd))
      (define-key (symbol-value symmap) [drag-n-drop] 'mew-draft-dnd-for-meadow))
...

にした方がよいと思います。


Meadow 2.2 でも dnd-get-local-file-name を Meadow 3 から借りて定義して
おけば問題なく動くようですが、Mew の中でこんなもの定義してよいのやら判
断つきかねますので、対応はお任せいたします。m(__)m 
個人的には .emacs に書いておくのでも十分満足です。

(if (and (featurep 'meadow) (not (featurep 'dnd)))
    (defun dnd-get-local-file-name (uri &optional must-exist)
      "Return file name converted from file:/// or file: syntax.
URI is the uri for the file.  If MUST-EXIST is given and non-nil,
only return non-nil if the file exists.
Return nil if URI is not a local file."
      (let ((f (cond ((string-match "^file:///" uri)	; XDND format.
		      (substring uri (1- (match-end 0))))
		     ((string-match "^file:" uri)		; Old KDE, Motif, Sun
		      (substring uri (match-end 0))))))
	(when (and f must-exist)
	  (let* ((decoded-f (decode-coding-string
			     f
			     (or file-name-coding-system
				 default-file-name-coding-system)))
		 (try-f (if (file-readable-p decoded-f) decoded-f f)))
	    (when (file-readable-p try-f) try-f))))))


-- 井上 知洋




Mew-dist メーリングリストの案内