-;;; riece-url.el --- collect URL in IRC buffers
+;;; riece-url.el --- collect URL in IRC buffers -*- lexical-binding: t -*-
;; Copyright (C) 1998-2003 Daiki Ueno
;; Author: Daiki Ueno <ueno@unixuser.org>
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
(require 'riece-options)
(require 'riece-menu) ;riece-menu-items
+(require 'easymenu)
(autoload 'browse-url "browse-url")
(defvar browse-url-browser-function)
:prefix "riece-"
:group 'riece)
-(defcustom riece-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_=#$@~`%&*+|\\/;]"
+;; the default value was copied from gnus-button-url-regexp
+(defcustom riece-url-regexp
+ (concat
+ "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|"
+ "nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)"
+ "\\(//[-a-z0-9_.]+:[0-9]*\\)?"
+ (if (string-match "[[:digit:]]" "1") ;; Support POSIX?
+ (let ((chars "-a-z0-9_=#$@~%&*+\\/[:word:]")
+ (punct "!?:;.,"))
+ (concat
+ "\\(?:"
+ ;; Match paired parentheses, e.g. in Wikipedia URLs:
+ ;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com
+ "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" "[" chars "]*"
+ "\\|"
+ "[" chars punct "]+" "[" chars "]"
+ "\\)"))
+ (concat ;; XEmacs 21.4 doesn't support POSIX.
+ "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+"
+ "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)"))
+ "\\)")
"Regular expression that matches URLs."
:group 'riece-url
:type 'regexp)
(defun riece-command-browse-url (&optional url)
(interactive
- (list (completing-read "Open URL: " (mapcar #'list riece-urls))))
+ (list (completing-read (riece-mcat "Open URL: ")
+ (mapcar #'list riece-urls))))
(browse-url url))
-(defun riece-url-create-menu (menu)
+(defun riece-url-create-menu (_menu)
(mapcar (lambda (url)
(vector url (list 'browse-url url)))
riece-urls))
(defun riece-url-command-mode-hook ()
(easy-menu-add-item
nil (list (car riece-menu-items))
- '("Open URL..." :filter riece-url-create-menu)))
+ (list (if (featurep 'xemacs)
+ "Open URL..."
+ (riece-mcat "Open URL..."))
+ :filter 'riece-url-create-menu)))
(defun riece-url-insinuate ()
(add-hook 'riece-after-insert-functions 'riece-url-scan-region)
(defun riece-url-uninstall ()
(easy-menu-remove-item
nil (list (car riece-menu-items))
- "Open URL...")
+ (if (featurep 'xemacs)
+ "Open URL..."
+ (riece-mcat "Open URL...")))
(remove-hook 'riece-after-insert-functions 'riece-url-scan-region)
(remove-hook 'riece-command-mode-hook
'riece-url-command-mode-hook))