* riece-misc.el (riece-insert): Use (recenter -1) to set window
[riece] / lisp / riece-url.el
index 191bce5..3e72b79 100644 (file)
 ;;; Code:
 
 (require 'riece-options)
+(require 'riece-menu)                  ;riece-menu-items
 
+(autoload 'browse-url "browse-url")
 (defvar browse-url-browser-function)
 
 (defgroup riece-url nil
   "URL Browsing in IRC buffer."
-  :group 'riece-vars)
+  :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_=#$@~`%&*+|\\/]"
+(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_=#$@~`%&*+|\\/;]"
   "Regular expression that matches URLs."
   :group 'riece-url
   :type 'regexp)
 (defvar riece-urls nil
   "A list of URL which appears in Riece buffers.")
 
+(defvar riece-url-enabled nil)
+
+(defconst riece-url-description
+  "Collect URL in IRC buffers")
+
 (autoload 'widget-convert-button "wid-edit")
 
 (defun riece-url-scan-region (start end)
 
 (defun riece-command-browse-url (&optional url)
   (interactive
-   (list (completing-read "Open URL:" (mapcar #'list riece-urls))))
+   (list (completing-read "Open URL: " (mapcar #'list riece-urls))))
   (browse-url url))
 
+(defun riece-url-create-menu (menu)
+  (mapcar (lambda (url)
+           (vector url (list 'browse-url url)))
+         riece-urls))
+
 (defvar riece-dialogue-mode-map)
 
 (defun riece-url-requires ()
-  (if (memq 'riece-highlight riece-addons)
-      '(riece-highlight)))
+  (append (if (memq 'riece-highlight riece-addons)
+             '(riece-highlight))
+         (if (memq 'riece-menu riece-addons)
+             '(riece-menu))))
 
 (defun riece-url-insinuate ()
   (add-hook 'riece-after-insert-functions 'riece-url-scan-region)
-  (define-key riece-dialogue-mode-map "U" 'riece-command-browse-url))
+  (if (memq 'riece-menu riece-addons)
+      (add-hook 'riece-command-mode-hook
+               (lambda ()
+                 (easy-menu-add-item
+                  nil (list (car riece-menu-items))
+                  '("Open URL..." :filter riece-url-create-menu)))
+               t)))
+
+(defun riece-url-enable ()
+  (define-key riece-dialogue-mode-map "U" 'riece-command-browse-url)
+  (setq riece-url-enabled t))
+
+(defun riece-url-disable ()
+  (define-key riece-dialogue-mode-map "U" nil)
+  (setq riece-url-enabled nil))
 
 (provide 'riece-url)