[emacs-w3m:13421] Re: bugs related to tabs

Boruch Baum <[email protected]>
Newsgroups gmane.emacs.w3m
Message-ID <[email protected]>
On 2019-05-22 09:22, Boruch Baum wrote:
> On 2019-05-22 07:59, Boruch Baum wrote:
> > On 2019-05-22 15:54, Katsumi Yamaoka wrote:
> > > ...
> > > 1.
> > >   In the emacs-w3m home page <http://emacs-w3m.namazu.org/>,
> > > when I type <S-return> (`w3m-view-this-url-new-session') on
> > > the name link `Features', the new tab appears and it shows
> > > the Features section of the page.  That's ok.  However, if I
> > > switch the tab to the original one, I can see the Features
> > > section shown also there.  But what the original tab displays
> > > should not be changed of course.
> >
> > I can reproduce this bug by performing "M-x
> > w3m-view-this-url-new-session" and "C-u C-u M-x w3m-view-this-url", but
> > it does seem to function correctly when performing "M-x
> > w3m-goto-url-new-session".
>
> Does the following fix the situation for you?
>
> (defun w3m-view-this-url-new-session ()
>   "Display the page of the link under point in a new session.
> If the region is active, use the `w3m-open-all-links-in-new-session'
> command instead."
>   (interactive)
>   (if (w3m-region-active-p)
>       (call-interactively 'w3m-open-all-links-in-new-session)
>     (let ((url (w3m-url-valid (w3m-anchor))))
>       (if url
>         (w3m-goto-url-new-session url)
> ;      (w3m--message t 'w3m-error "No URL at point")))))
>        (w3m-message "No URL at point")))))
>
> There is much duplication between the code of w3m-goto... and
> w3m-view..., the only difference I can see from the user's perspective
> is that w3m-view... doesn't prompt the user. If that's correct, then
> much more of the code could be combined, and that would make maintenance
> that much easier.

Following should be a better fix, instead of the above patch, ie. keep
`w3m-view-this-url-new-session' in its original orm.

(defun w3m-view-this-url (&optional reload new-session)
  "Display the page pointed to by the link under point.
If ARG is the number 2 or the list of the number 16 (you may produce
this by typing `C-u' twice) or NEW-SESSION is non-nil and the link is
an anchor, this function makes a copy of the current buffer in advance.
Otherwise, if RELOAD is non-nil, it forces to reload the url at point."
  (interactive (if (member current-prefix-arg '(2 (16)))
		   (list nil t)
		 (list current-prefix-arg nil)))
  ;; Store the current position in the history structure.
  (w3m-history-store-position)
  (let ((w3m-prefer-cache
	 (or w3m-prefer-cache
	     (and (stringp w3m-current-url)
		  (string-match "\\`about://\\(?:db-\\)?history/"
				w3m-current-url))))
	act url)
    (cond
     ((setq act (w3m-action))
      (let ((w3m-form-new-session new-session)
	    (w3m-form-download nil))
	(eval act)))
     ((setq url (w3m-url-valid (w3m-anchor)))
;     (w3m-view-this-url-1 url reload new-session))
      (if new-session
        (w3m-goto-url-new-session url reload)
       (w3m-goto-url url reload)))
     ((w3m-url-valid (w3m-image))
      (if (w3m-display-graphic-p)
	  (w3m-toggle-inline-image)
	(w3m-view-image)))
     ((setq url (w3m-active-region-or-url-at-point 'never))
      (unless (eq 'quit (setq url (w3m-input-url nil url 'quit nil
						 'feeling-searchy 'no-initial)))
;	(w3m-view-this-url-1 url reload new-session)))
      (if new-session
        (w3m-goto-url-new-session url reload)
       (w3m-goto-url url reload))))
;    (t (w3m--message t 'w3m-error "No URL at point"))))
     (t (w3m-message "No URL at point")))))

--
hkp://keys.gnupg.net
CA45 09B5 5351 7C11 A9D1  7286 0036 9E45 1595 8BC0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.