[Mew-Win32 00518] browse-url-or-mew

Hideyuki SHIRAI Shirai at example.com
1998年 3月 31日 (火) 11:06:55 JST


白井です。

昨日、なんだか、browse-url-at-pointの挙動が、Emacs20.2と19.28.1
で違うなぁと思って調べてみたら、やっぱり全然違ってました。^^;;;
MeadowとMule for Win32も同様です。

# Emacs20.2のbrowse-url.elって、browse-url-regexp をdefvarしてい
# る割に使ってない。
# (thing-at-point 'url)っていうのを使ってました。
## 使ってない変数を定義するなよなぁぁ。
## 以前変数だけみてだまされました :-P

Meadowでは、shirai at example.comをクリックすると勝手に
『mailto:shirai at example.com』に整形してくれていました。

だけど、emacs20.2がぜんぜん日本語をみてくれていないので、また、
力づくで直してみました。Meadow、Mule for Win32の両方が動くと思い
ます。また、Meadowなら『ftp://anonymous@ftp.iij.ad.jp/pub』の形
式も動きます。
というか、mailto:をつけてくれるため、"(cond … (t…" のところは
Meadowでは一生評価されません。

北口さん、お後はよろしくお願いします。m(__)m
# エンバグしていませんように ^^;

--
白井秀行@人生はCut&Try!!
### abbrevとかispellが日本語が絡むとダメなのはわたしだけ?
### なんらかの設定でOKなら、このパッチはほとんど無駄です。

-------------- next part --------------
--- mew-win32.el.orig	Tue Mar 31 10:13:25 1998
+++ mew-win32.el	Tue Mar 31 10:42:39 1998
@@ -37,22 +37,26 @@
 
 ;; browse-url.
 (defvar mew-w32-browse-url-button [mouse-2]) ; mouse button
-(setq browse-url-regexp "\\(\\([^-A-Za-z0-9!_.%]\\|^\\)[-A-Za-z0-9._!%]+@[A-Za-z0-9][-A-Za-z0-9._!]+[A-Za-z0-9]\\)\\|\\(\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]+\\)")
+(setq browse-url-regexp "\\(\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]+\\)\\|\\(\\([^-A-Za-z0-9!_.%]\\|^\\)[-A-Za-z0-9._!%]+@[A-Za-z0-9][-A-Za-z0-9._!]+[A-Za-z0-9]\\)")
 (defun browse-url-or-mew (url)
   (interactive)
   "browse-url or mew-send."
   (message "Starting browse-url... or mew-send...")
   (cond
    ((string-match "^mailto:" url)
-    (mew-send (substring url 7 nil)))
+    (progn
+      (string-match "^\\([-a-zA-Z0-9_=?#$@~`%&*+|\\/.,:]+\\)" url)
+      (mew-send (substring url 7 (match-end 0)))))
    ((string-match "^\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\):" url)
-    (apply (function start-process)
-	   (format "*mew %s*" mew-ext-prog-url)
-	   mew-buffer-tmp mew-ext-prog-url
-	   (append mew-ext-prog-url-args (list url))))
+    (progn
+      (string-match "^\\([-a-zA-Z0-9_=?#$@~`%&*+|\\/.,:]+\\)" url)
+      (apply (function start-process)
+	     (format "*mew %s*" mew-ext-prog-url)
+	     mew-buffer-tmp mew-ext-prog-url
+	     (append mew-ext-prog-url-args (list (substring url 0 (match-end 0)))))))
    (t (progn
-	(string-match "\\([A-Za-z0-9]\\)" url)
-	(mew-send (substring url (match-beginning 1) nil))))))
+	(string-match "\\([-A-Za-z0-9!_.%!@]+\\)" url)
+	(mew-send (substring url (match-beginning 0) (match-end 0)))))))
 (setq browse-url-browser-function 'browse-url-or-mew)
 (add-hook 'mew-init-hook
 	  (lambda ()


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