カーソル位置のURLをブラウザで開く

(bounds-of-thing-at-point THING)
という便利な関数があります。
カーソル位置の文字列が、URLなのかメールアドレスなのか、などを判定してくれる。


例えば
(bounds-of-thing-at-point 'url)
は、カーソルがURLの上にあればそのURLの頭とおしりの位置をコンスセルの形で返してくれます。
カーソルがURLの上になかったらnilが返ります。


これを使うと、カーソル位置のURLをブラウザで開く関数が簡単に書けます。

(defun browse-url-at-point ()
  (interactive)
  (let ((url-region (bounds-of-thing-at-point 'url)))
    (when url-region
      (browse-url (buffer-substring-no-properties (car url-region)
						  (cdr url-region))))))

(global-set-key "\C-c\C-o" 'browse-url-at-point)