unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] eww-open-in-new-buffer
@ 2016-11-02  2:03 Mark Oteiza
  2016-11-02 19:22 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Oteiza @ 2016-11-02  2:03 UTC (permalink / raw)
  To: emacs-devel; +Cc: Lars Ingebrigtsen


Hi,

I wanted something akin to "open in new tab" for eww, so I wrote the
following.

M-RET seemed a good binding.  One thing that bugs me about this is that
eww-current-url in eww-suggest-uris didn't quite fit: as the new
function is, it doesn't make sense if url is (eww-current-url).

So, I made changes to eww-suggest-uris.  Alternatively,
eww-open-in-new-buffer could check if url is equal to eww-current-url
and just clone instead of invoking eww.  That might be better.

diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 6a84003..bbb55ca 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -64,8 +64,7 @@ eww-download-directory
 ;;;###autoload
 (defcustom eww-suggest-uris
   '(eww-links-at-point
-    url-get-url-at-point
-    eww-current-url)
+    url-get-url-at-point)
   "List of functions called to form the list of default URIs for `eww'.
 Each of the elements is a function returning either a string or a list
 of strings.  The results will be joined into a single list with
@@ -74,8 +73,7 @@ eww-suggest-uris
   :group 'eww
   :type 'hook
   :options '(eww-links-at-point
-	     url-get-url-at-point
-	     eww-current-url))
+	     url-get-url-at-point))
 
 (defcustom eww-bookmarks-directory user-emacs-directory
   "Directory where bookmark files will be stored."
@@ -246,7 +244,7 @@ eww
 If the input doesn't look like an URL or a domain name, the
 word(s) will be searched for via `eww-search-prefix'."
   (interactive
-   (let* ((uris (eww-suggested-uris))
+   (let* ((uris (append (eww-suggested-uris) (list (eww-current-url))))
 	  (prompt (concat "Enter URL or keywords"
 			  (if uris (format " (default %s)" (car uris)) "")
 			  ": ")))
@@ -314,6 +312,18 @@ eww-search-words
   (interactive "r")
   (eww (buffer-substring beg end)))
 
+(defun eww-open-in-new-buffer ()
+  "Fetch link at point in a new EWW buffer."
+  (interactive)
+  (let ((url (eww-suggested-uris)))
+    (if (null url) (user-error "No link at point")
+      ;; clone useful to keep history, but
+      ;; should not clone from non-eww buffer
+      (with-current-buffer
+          (if (eq major-mode 'eww-mode) (clone-buffer)
+            (generate-new-buffer "*eww*"))
+        (eww (if (consp url) (car url) url))))))
+
 (defun eww-html-p (content-type)
   "Return non-nil if CONTENT-TYPE designates an HTML content type.
 Currently this means either text/html or application/xhtml+xml."
@@ -697,6 +707,7 @@ eww-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map "g" 'eww-reload) ;FIXME: revert-buffer-function instead!
     (define-key map "G" 'eww)
+    (define-key map [?\M-\r] 'eww-open-in-new-buffer)
     (define-key map [?\t] 'shr-next-link)
     (define-key map [?\M-\t] 'shr-previous-link)
     (define-key map [backtab] 'shr-previous-link)
@@ -731,6 +742,7 @@ eww-mode-map
 	["Exit" quit-window t]
 	["Close browser" quit-window t]
 	["Reload" eww-reload t]
+	["Follow URL in new buffer" eww-open-in-new-buffer]
 	["Back to previous page" eww-back-url
 	 :active (not (zerop (length eww-history)))]
 	["Forward to next page" eww-forward-url



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] eww-open-in-new-buffer
  2016-11-02  2:03 [PATCH] eww-open-in-new-buffer Mark Oteiza
@ 2016-11-02 19:22 ` Lars Ingebrigtsen
  2016-11-02 20:52   ` Mark Oteiza
  0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2016-11-02 19:22 UTC (permalink / raw)
  To: Mark Oteiza; +Cc: emacs-devel

Mark Oteiza <mvoteiza@udel.edu> writes:

> I wanted something akin to "open in new tab" for eww, so I wrote the
> following.
>
> M-RET seemed a good binding.  One thing that bugs me about this is that
> eww-current-url in eww-suggest-uris didn't quite fit: as the new
> function is, it doesn't make sense if url is (eww-current-url).
>
> So, I made changes to eww-suggest-uris.  Alternatively,
> eww-open-in-new-buffer could check if url is equal to eww-current-url
> and just clone instead of invoking eww.  That might be better.

Looks good to me, I think.  It should probably have a NEWS entry and an
eww manual entry, though.

>  (defcustom eww-suggest-uris
>    '(eww-links-at-point
> -    url-get-url-at-point
> -    eww-current-url)
> +    url-get-url-at-point)

And this should have a :version "26.1".

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] eww-open-in-new-buffer
  2016-11-02 19:22 ` Lars Ingebrigtsen
@ 2016-11-02 20:52   ` Mark Oteiza
  0 siblings, 0 replies; 3+ messages in thread
From: Mark Oteiza @ 2016-11-02 20:52 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

On 02/11/16 at 08:22pm, Lars Ingebrigtsen wrote:
> Mark Oteiza <mvoteiza@udel.edu> writes:
> 
> > I wanted something akin to "open in new tab" for eww, so I wrote the
> > following.
> >
> > M-RET seemed a good binding.  One thing that bugs me about this is that
> > eww-current-url in eww-suggest-uris didn't quite fit: as the new
> > function is, it doesn't make sense if url is (eww-current-url).
> >
> > So, I made changes to eww-suggest-uris.  Alternatively,
> > eww-open-in-new-buffer could check if url is equal to eww-current-url
> > and just clone instead of invoking eww.  That might be better.
> 
> Looks good to me, I think.  It should probably have a NEWS entry and an
> eww manual entry, though.
> 
> >  (defcustom eww-suggest-uris
> >    '(eww-links-at-point
> > -    url-get-url-at-point
> > -    eww-current-url)
> > +    url-get-url-at-point)
> 
> And this should have a :version "26.1".

Thanks.  I ended up implementing the "alternative" since what I had in
the patch ended up being weird.



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-11-02 20:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-02  2:03 [PATCH] eww-open-in-new-buffer Mark Oteiza
2016-11-02 19:22 ` Lars Ingebrigtsen
2016-11-02 20:52   ` Mark Oteiza

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).