changeset 78620:ac3a937d0270

(browse-url-emacs): New function.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 22 Aug 2007 18:52:59 +0000
parents 606be2448f9e
children 1dbe2728aae4
files etc/NEWS lisp/ChangeLog lisp/net/browse-url.el
diffstat 3 files changed, 25 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS	Wed Aug 22 16:48:08 2007 +0000
+++ b/etc/NEWS	Wed Aug 22 18:52:59 2007 +0000
@@ -41,6 +41,8 @@
 
 * Changes in Emacs 22.2
 
+** `browse-url-emacs' loads a URL into an Emacs buffer.  Handy for *.el URLs.
+
 ** `bad-packages-alist' will warn about external packages that are known
 to cause problems in this version of Emacs.
 
--- a/lisp/ChangeLog	Wed Aug 22 16:48:08 2007 +0000
+++ b/lisp/ChangeLog	Wed Aug 22 18:52:59 2007 +0000
@@ -1,3 +1,7 @@
+2007-08-22  Johan Bockg,Ae(Brd  <bojohan@dd.chalmers.se>
+
+	* net/browse-url.el (browse-url-emacs): New function.
+
 2007-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/bytecomp.el (byte-compile-from-buffer): Display a big fat
@@ -938,7 +942,7 @@
 	* lpr.el (lpr-page-header-switches): Move %s to separate element
 	for correct quoting.  Doc fix.
 
-2007-06-13  Johan Bockg,Ae(Brd  <bojohan@dd.chalmers.se>  (tiny change)
+2007-06-13  Johan Bockg,Ae(Brd  <bojohan@dd.chalmers.se>
 
 	* term/xterm.el (terminal-init-xterm): Escape parens in character
 	constants.
--- a/lisp/net/browse-url.el	Wed Aug 22 16:48:08 2007 +0000
+++ b/lisp/net/browse-url.el	Wed Aug 22 18:52:59 2007 +0000
@@ -669,8 +669,7 @@
       (error "Current buffer has no file"))
   (let ((buf (get-file-buffer file)))
     (if buf
-	(save-excursion
-	  (set-buffer buf)
+	(with-current-buffer buf
 	  (cond ((not (buffer-modified-p)))
 		(browse-url-save-file (save-buffer))
 		(t (message "%s modified since last save" file))))))
@@ -1171,6 +1170,20 @@
 	       (append browse-url-epiphany-startup-arguments (list url))))))
 
 ;;;###autoload
+(defun browse-url-emacs (url &optional new-window)
+  "Ask Emacs to load URL into a buffer and show it in another window."
+  (interactive (browse-url-interactive-arg "URL: "))
+  (require 'url-handlers)
+  (let ((file-name-handler-alist
+         (cons (cons url-handler-regexp 'url-file-handler)
+               file-name-handler-alist)))
+    ;; Ignore `new-window': with all other browsers the URL is always shown
+    ;; in another window than the current Emacs one since it's shown in
+    ;; another application's window.
+    ;; (if new-window (find-file-other-window url) (find-file url))
+    (find-file-other-window url)))
+
+;;;###autoload
 (defun browse-url-gnome-moz (url &optional new-window)
   "Ask Mozilla/Netscape to load URL via the GNOME program `gnome-moz-remote'.
 Default to the URL around or before point.  The strings in variable
@@ -1257,8 +1270,7 @@
 variable `browse-url-grail'."
   (interactive (browse-url-interactive-arg "Grail URL: "))
   (message "Sending URL to Grail...")
-  (save-excursion
-    (set-buffer (get-buffer-create " *Shell Command Output*"))
+  (with-current-buffer (get-buffer-create " *Shell Command Output*")
     (erase-buffer)
     ;; don't worry about this failing.
     (if (browse-url-maybe-new-window new-window)
@@ -1428,8 +1440,7 @@
 Default to the URL around or before point."
   (interactive (browse-url-interactive-arg "MMM URL: "))
   (message "Sending URL to MMM...")
-  (save-excursion
-    (set-buffer (get-buffer-create " *Shell Command Output*"))
+  (with-current-buffer (get-buffer-create " *Shell Command Output*")
     (erase-buffer)
     ;; mmm_remote just SEGVs if the file isn't there...
     (if (or (file-exists-p (expand-file-name "~/.mmm_remote"))
@@ -1507,5 +1518,5 @@
 
 (provide 'browse-url)
 
-;;; arch-tag: d2079573-5c06-4097-9598-f550fba19430
+;; arch-tag: d2079573-5c06-4097-9598-f550fba19430
 ;;; browse-url.el ends here