* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
@ 2014-05-06 21:29 Sam Steingold
2014-05-06 23:59 ` Glenn Morris
0 siblings, 1 reply; 27+ messages in thread
From: Sam Steingold @ 2014-05-06 21:29 UTC (permalink / raw)
To: 17425
when I push-button with mouse (hoping to visit the url in a browser), I
get the message from tramp
--8<---------------cut here---------------start------------->8---
Tramp: Opening connection for kurush using scp...
Tramp: Sending command `exec ssh -o ControlPath=/var/folders/5k/3w_vc1qs6pv4k3wvnrwr_5100000gn/T/tramp.16778kYm.%r@%h:%p -o ControlMaster=auto -o ControlPersist=no -e none kurush'
Tramp: Waiting for prompts from remote shell...
Tramp failed to connect. If this happens repeatedly, try
`M-x tramp-cleanup-this-connection'
--8<---------------cut here---------------end--------------->8---
and the url (http://google.com) is not visited.
"kurush" is an ssh alias not available on my current network,
I don't see why tramp is activated (1st bug) and why tramp's failure
prevents the browse-url from completing its task (2nd bug).
In GNU Emacs 24.4.50.3 (x86_64-apple-darwin13.1.0, NS apple-appkit-1265.19)
of 2014-04-30 on sds-macbook-pro.home
Windowing system distributor `Apple', version 10.3.1265
Configured using:
`configure --with-ns'
Configured features:
IMAGEMAGICK ACL GNUTLS LIBXML2 ZLIB
Important settings:
value of $LANG: C
locale-coding-system: utf-8-unix
Major mode: rcirc
Minor modes in effect:
diff-auto-refine-mode: t
rcirc-track-minor-mode: t
which-function-mode: t
url-handler-mode: t
show-paren-mode: t
desktop-save-mode: t
shell-dirtrack-mode: t
tooltip-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
use-hard-newlines: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
Recent input:
<down> SPC n u q SPC q o SPC p SPC = q p SPC q p SPC
q p SPC SPC q p SPC q p SPC q p SPC q p p SPC q p SPC
q p SPC q SPC p SPC q p SPC q g <down-mouse-2> <mouse-1>
SPC <select-window> q SPC q SPC SPC q SPC SPC u q SPC
q SPC <down-mouse-2> <mouse-1> <down-mouse-1> <mouse-1>
<up> SPC <down> SPC q q SPC <down-mouse-1> <mouse-1>
C-c C-SPC C-x b D o <tab> C-g C-x d ~ / D o w n <tab>
C-a C-k ~ / D o <tab> <return> C-s d n s C-s C-s C-s
<return> C-s u p d C-s C-s <help-echo> <help-echo>
<down-mouse-1> <mouse-1> <down> <return> z <up> <return>
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up>
<return> C-v C-c C-v C-v C-s r o u e r <backspace>
<backspace> t e r C-c C-SPC <help-echo> <down-mouse-2>
<mouse-1> <help-echo> <down-mouse-1> <drag-mouse-1>
<down-mouse-1> <mouse-1> q <wheel-left> <double-wheel-left>
<triple-wheel-left> <help-echo> <down-mouse-1> <mouse-1>
<up> <up> <up> <up> <up> <left> <C-f12> <return> <down-mouse-1>
<drag-mouse-1> <down-mouse-1> <mouse-1> q M-x t r a
n <tab> <tab> <tab> <M-backspace> <M-backspace> <M-backspace>
t r a n o <backspace> <backspace> m p - l <backspace>
c - c <tab> <return> <tab> <return> <return> M-x t
r M-x t r a <tab> <return> <tab> <tab> <return> y M-x
<up> <return> <tab> <return> M-x <up> <return> <down>
<down> <return> M-x k k u r u <tab> <backspace> <backspace>
<backspace> <backspace> C-] C-] C-x l C-x k k u r u
<tab> C-] C-] C-] C-h o t r a C-] C-] C-] <help-echo>
<down-mouse-2> <mouse-1> M-x M-x r e p o <tab> <re
turn>
Recent messages:
Quit
call-interactively: No recursive edit is in progress [2 times]
Tramp: Opening connection for kurush using scp...
Tramp: Sending command `exec ssh -o ControlPath=/var/folders/5k/3w_vc1qs6pv4k3wvnrwr_5100000gn/T/tramp.16778kYm.%r@%h:%p -o ControlMaster=auto -o ControlPersist=no -e none kurush'
Tramp: Waiting for prompts from remote shell...
Tramp failed to connect. If this happens repeatedly, try
`M-x tramp-cleanup-this-connection'
Tramp: Waiting for prompts from remote shell...failed
Tramp: Opening connection for kurush using scp...failed
byte-code: Tramp failed to connect. If this happens repeatedly, try
`M-x tramp-cleanup-this-connection'
Load-path shadows:
None found.
Features:
(shadow bbdb-message mailalias cookie1 emacsbug sendmail tar-mode nndoc
gnus-fun sort gnus-cite smiley shr mm-archive gnus-async gnus-bcklg
gnus-dup qp mail-extr gnus-ml spam spam-stat gnus-uu yenc nndraft nnmh
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art
mm-uu mml2015 epg-config mm-view mml-smime smime dig mailcap utf-7
gnus-cache gnus-sum bbdb-gnus gnutls nntp gnus-group gnus-undo
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
parse-time gnus-spec gnus-int gnus-range gnus-win grep etags remember
whitespace bug-reference autoconf autoconf-mode vc-bzr vc-sccs vc-svn
vc-cvs vc-rcs derived ispell log-edit message rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums gmm-utils mailheader smerge-mode eieio-opt find-func log-view
pcvs-util diff-mode disp-table network-stream starttls tls cal-move
cal-x cal-china cal-bahai cal-islam cal-julian holidays hol-loaddefs
cal-iso cal-hebrew lunar solar cal-dst appt diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs jka-compr nroff-mode tramp-cmds
time-stamp pp dabbrev skeleton cl-indent apropos tramp-cache tramp-sh
misearch multi-isearch mule-util help-mode debug make-mode sgml-mode
dired-aux vlf vlf-base dired noutline outline cc-langs cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine sql view pig-mode
python vc-git vc-dir ewoc vc vc-dispatcher sh-script smie vc-hg
conf-mode add-log package midnight warnings gnus gnus-ems nnheader
mail-utils wid-edit bbdb-mua bbdb-com crm mailabbrev bbdb-loaddefs bbdb
bbdb-site timezone rcirc server which-func imenu url-handlers url-parse
url-vars paren help-at-pt desktop frameset cus-start cus-load ido
ess-toolbar ess-mouse mouseme thingatpt browse-url ess-menu ess-swv
ess-noweb ess-noweb-font-lock-mode ess-bugs-l essd-els ess-sas-d
ess-sas-l ess-sas-a ess-sta-d ess-sta-l cc-vars cc-defs make-regexp
ess-sp6-d ess-sp3-d ess-julia ess-r-d ess-tracebug compile tramp
tramp-compat auth-source eieio byte-opt bytecomp byte-compile cconv
eieio-core gnus-util mm-util mail-prsvr password-cache tramp-loaddefs
trampver shell pcomplete format-spec ess-roxy advice easy-mmode hideshow
ess-help info reporter ess-developer ess-r-args eldoc help-fns ess-s-l
speedbar sb-image ezimage dframe ess ess-inf comint ansi-color ring
ess-mode ess-noweb-mode edmacro kmacro ess-utils ess-custom cl-macs
executable easymenu ess-compat ess-site cl gv cl-loaddefs cl-lib
time-date tooltip electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel ns-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode prog-mode register page menu-bar
rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax
facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button
faces cus-face macroexp files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process cocoa ns multi-tty emacs)
Memory information:
((conses 16 762936 115442)
(symbols 48 72665 1)
(miscs 40 7516 2209)
(strings 32 207994 14679)
(string-bytes 1 5392304)
(vectors 16 61525)
(vector-slots 8 1607452 84679)
(floats 8 1017 2273)
(intervals 56 34604 956)
(buffers 960 120))
--
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1265
http://www.childpsy.net/ http://openvotingconsortium.org http://ffii.org
http://think-israel.org http://iris.org.il http://memri.org
Volume(Pizza of radius Z and thickness A) = PI * Z * Z * A
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-06 21:29 bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button Sam Steingold
@ 2014-05-06 23:59 ` Glenn Morris
2014-05-07 0:43 ` Sam Steingold
0 siblings, 1 reply; 27+ messages in thread
From: Glenn Morris @ 2014-05-06 23:59 UTC (permalink / raw)
To: sds; +Cc: 17425
Sam Steingold wrote:
> when I push-button with mouse (hoping to visit the url in a browser), I
> get the message from tramp
Maybe you could say what button you are referring to.
Since your report mentions rcirc major mode, I'm going to guess this was
in rcirc. I did
emacs -Q -f rcirc
and mouse-1 clicked on "http://www.freenode.net", and it just opened
in firefox as expected.
> Major mode: rcirc
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-06 23:59 ` Glenn Morris
@ 2014-05-07 0:43 ` Sam Steingold
2014-05-07 0:55 ` Glenn Morris
2014-05-07 7:50 ` Michael Albinus
0 siblings, 2 replies; 27+ messages in thread
From: Sam Steingold @ 2014-05-07 0:43 UTC (permalink / raw)
To: Glenn Morris; +Cc: 17425
You need to open a remote file using tramp first, then make the remove
host unavailable, the click on a button.
On Tue, May 6, 2014 at 7:59 PM, Glenn Morris <rgm@gnu.org> wrote:
> Sam Steingold wrote:
>
>> when I push-button with mouse (hoping to visit the url in a browser), I
>> get the message from tramp
>
> Maybe you could say what button you are referring to.
> Since your report mentions rcirc major mode, I'm going to guess this was
> in rcirc. I did
>
> emacs -Q -f rcirc
>
> and mouse-1 clicked on "http://www.freenode.net", and it just opened
> in firefox as expected.
>
>> Major mode: rcirc
--
Sam Steingold <http://sds.podval.org> <http://www.childpsy.net/>
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-07 0:43 ` Sam Steingold
@ 2014-05-07 0:55 ` Glenn Morris
2014-05-07 7:50 ` Michael Albinus
1 sibling, 0 replies; 27+ messages in thread
From: Glenn Morris @ 2014-05-07 0:55 UTC (permalink / raw)
To: Sam Steingold; +Cc: 17425
Sam Steingold wrote:
> You need to open a remote file using tramp first, then make the remove
> host unavailable, the click on a button.
You really need to mention these kind of details when you first make a
report.
I can't easily replicate that.
Perhaps you left default-directory bound to a remote value.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-07 0:43 ` Sam Steingold
2014-05-07 0:55 ` Glenn Morris
@ 2014-05-07 7:50 ` Michael Albinus
2014-05-07 21:22 ` Sam Steingold
1 sibling, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-07 7:50 UTC (permalink / raw)
To: Sam Steingold; +Cc: 17425
Sam Steingold <sds@gnu.org> writes:
Hi Sam,
> You need to open a remote file using tramp first, then make the remove
> host unavailable, the click on a button.
I'm also having a problem reproducing this problem. Could you, please,
give a recipe how to reproduce, starting with "emacs -Q"?
Thanks, and best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-07 7:50 ` Michael Albinus
@ 2014-05-07 21:22 ` Sam Steingold
2014-05-08 7:04 ` Glenn Morris
0 siblings, 1 reply; 27+ messages in thread
From: Sam Steingold @ 2014-05-07 21:22 UTC (permalink / raw)
To: Michael Albinus; +Cc: 17425
Hi,
To reproduce the problem:
1. edit ~/.ssh/config to make host "zzz" point to a known and working
host to which you have ssh access.
2. start "emacs -Q"; do
C-x d /zzz:~ RET
to start tramp connected to "zzz"
3. edit ~/.ssh/xonfig to remove "zzz"
4. kill the tramp ssh process (find it using `ps aux | grep zzz`).
5. in the "emacs -Q", start irc to create a buffer with
buttons. clicking on these buttons works just fine.
6. Now you need to do something eminently stupid: in the irc buffer with
buttons, evaluate this (using M-: or command eval-expression):
(setq default-directory #("/scp:zzz:/home/.../" 1 4 (tramp-default t)))
(replace "..." with your username)
Now, when you click on the buttons, you get the
tramp-cleanup-this-connection message instead of a new tab in the
browser.
Yes, one should not set default-directory to a remote directory as we do
above. And, of course, I did not do that intentionally in the process
(long dead since) from which I reported the bug.
Still, this is a bug. In fact, two bugs:
1. tramp should not be activated on button press
2. tramp's failure should not prevents browse-url from completing its task
Thanks!
--
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1265
http://www.childpsy.net/ http://www.memritv.org http://camera.org
http://ffii.org http://palestinefacts.org
Yellow wine is called "white" because it is made out of green grapes.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-07 21:22 ` Sam Steingold
@ 2014-05-08 7:04 ` Glenn Morris
2014-05-08 7:48 ` Michael Albinus
0 siblings, 1 reply; 27+ messages in thread
From: Glenn Morris @ 2014-05-08 7:04 UTC (permalink / raw)
To: sds; +Cc: Michael Albinus, 17425
Does this help?
*** lisp/net/browse-url.el 2014-02-10 01:34:22 +0000
--- lisp/net/browse-url.el 2014-05-07 23:02:02 +0000
***************
*** 812,819 ****
browse-url-mailto-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
! (default-directory (if (and (file-directory-p default-directory)
! (file-readable-p default-directory))
default-directory
(expand-file-name "~/"))))
;; When connected to various displays, be careful to use the display of
--- 812,820 ----
browse-url-mailto-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
! (default-directory
! (if (and (not (file-remote-p default-directory))
! (file-accessible-directory-p default-directory))
default-directory
(expand-file-name "~/"))))
;; When connected to various displays, be careful to use the display of
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 7:04 ` Glenn Morris
@ 2014-05-08 7:48 ` Michael Albinus
2014-05-08 16:10 ` Glenn Morris
0 siblings, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-08 7:48 UTC (permalink / raw)
To: Glenn Morris; +Cc: sds, 17425
Glenn Morris <rgm@gnu.org> writes:
> Does this help?
> ;; Ensure that `default-directory' exists and is readable (b#6077).
> ! (default-directory
> ! (if (and (not (file-remote-p default-directory))
> ! (file-accessible-directory-p default-directory))
> default-directory
> (expand-file-name "~/"))))
I haven't checked further, but wouldn't this break url-handlers? See
(progn
(url-handler-mode 1)
(file-remote-p "http://user@host/"))
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 7:48 ` Michael Albinus
@ 2014-05-08 16:10 ` Glenn Morris
2014-05-08 16:44 ` Sam Steingold
` (2 more replies)
0 siblings, 3 replies; 27+ messages in thread
From: Glenn Morris @ 2014-05-08 16:10 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425
Michael Albinus wrote:
>> ! (default-directory
>> ! (if (and (not (file-remote-p default-directory))
>> ! (file-accessible-directory-p default-directory))
>> default-directory
>> (expand-file-name "~/"))))
>
> I haven't checked further, but wouldn't this break url-handlers? See
>
> (progn
> (url-handler-mode 1)
> (file-remote-p "http://user@host/"))
I don't see how? Default-directory above is the one that browse-url uses
for the external browser that it starts.
I mean, maybe there's a problem if you want to visit a relative
`file:///' url using browse-url from a buffer with a remote
default-directory. But that would not work now, would it, since
browse-url starts a local browser process, which would not be able to
access remote files anyway?
Or can browse-url call eww these days?
The simplest thing is probably to do nothing, since I don't think this
is a real issue.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 16:10 ` Glenn Morris
@ 2014-05-08 16:44 ` Sam Steingold
2014-05-08 16:52 ` Michael Albinus
2014-05-08 17:03 ` Glenn Morris
2014-05-08 17:04 ` Michael Albinus
2014-05-09 14:01 ` Stefan Monnier
2 siblings, 2 replies; 27+ messages in thread
From: Sam Steingold @ 2014-05-08 16:44 UTC (permalink / raw)
To: Glenn Morris; +Cc: Michael Albinus, 17425
On Thu, May 8, 2014 at 12:10 PM, Glenn Morris <rgm@gnu.org> wrote:
>
> The simplest thing is probably to do nothing,
this is _always_ the simplest thing. :-)
why does browse-url depend on default-directory anyway?
> since I don't think this is a real issue.
real enough for me.
--
Sam Steingold <http://sds.podval.org> <http://www.childpsy.net/>
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 16:44 ` Sam Steingold
@ 2014-05-08 16:52 ` Michael Albinus
2014-05-08 17:03 ` Glenn Morris
1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-08 16:52 UTC (permalink / raw)
To: Sam Steingold; +Cc: 17425
Sam Steingold <sds@gnu.org> writes:
> why does browse-url depend on default-directory anyway?
It could call an external process, indirectly. And when
default-directory is a remote directory handled by Tramp, that process
(the browser) would be called on that remote host. We don't want this.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 16:44 ` Sam Steingold
2014-05-08 16:52 ` Michael Albinus
@ 2014-05-08 17:03 ` Glenn Morris
2014-05-08 17:08 ` Michael Albinus
1 sibling, 1 reply; 27+ messages in thread
From: Glenn Morris @ 2014-05-08 17:03 UTC (permalink / raw)
To: Sam Steingold; +Cc: Michael Albinus, 17425
Sam Steingold wrote:
> why does browse-url depend on default-directory anyway?
Because it starts a process, which needs a directory to run in.
It needs to ehck that it still exists, else
http://debbugs.gnu.org/6077
> real enough for me.
If you set default-directory to a remote value, and the remote host
goes away, you are going to have problems.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 16:10 ` Glenn Morris
2014-05-08 16:44 ` Sam Steingold
@ 2014-05-08 17:04 ` Michael Albinus
2014-05-08 17:09 ` Glenn Morris
2014-05-09 14:01 ` Stefan Monnier
2 siblings, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-08 17:04 UTC (permalink / raw)
To: Glenn Morris; +Cc: sds, 17425
Glenn Morris <rgm@gnu.org> writes:
> Michael Albinus wrote:
>
>>> ! (default-directory
>>> ! (if (and (not (file-remote-p default-directory))
>>> ! (file-accessible-directory-p default-directory))
>>> default-directory
>>> (expand-file-name "~/"))))
>>
>> I haven't checked further, but wouldn't this break url-handlers? See
>>
>> (progn
>> (url-handler-mode 1)
>> (file-remote-p "http://user@host/"))
>
> I don't see how? Default-directory above is the one that browse-url uses
> for the external browser that it starts.
Maybe I'm overreacting, but when you touch default-directory, file
operations from url-handlers might not work anymore.
(let ((default-directory "http://debbugs.gnu.org/"))
(url-handler-mode 1)
(expand-file-name "17245"))
returns a valid url which could be passed to browse-url.
I have no idea, whether browse-url and the operations in url-handlers
will be called together, 'tho. Maybe never.
But I have seen too many libraries which massage Tramp internals in
unexpected ways. So my personal alarm bell is ringing.
Feel free to ignore it.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 17:03 ` Glenn Morris
@ 2014-05-08 17:08 ` Michael Albinus
0 siblings, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-08 17:08 UTC (permalink / raw)
To: Glenn Morris; +Cc: Sam Steingold, 17425
Glenn Morris <rgm@gnu.org> writes:
> Because it starts a process, which needs a directory to run in.
> It needs to ehck that it still exists, else
> http://debbugs.gnu.org/6077
I'm not against setting default-directory to a sensible value. But your
patch was kind of sledge-hammer to me.
In Tramp, I wrap just the call of the external process by a let-bind to
a local default-directory. As close as possible to the call.
By this, there are less collateral damages.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 17:04 ` Michael Albinus
@ 2014-05-08 17:09 ` Glenn Morris
2014-05-08 19:37 ` Michael Albinus
2014-05-09 12:50 ` Michael Albinus
0 siblings, 2 replies; 27+ messages in thread
From: Glenn Morris @ 2014-05-08 17:09 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425
Michael Albinus wrote:
> (let ((default-directory "http://debbugs.gnu.org/"))
> (url-handler-mode 1)
> (expand-file-name "17245"))
Hey, this fails with a recursive load in emacs-24.3.90 -Q! :)
> returns a valid url which could be passed to browse-url.
But surely if it worked it would just return "http://debbugs.gnu.org/17245"?
Why is that a problem?
What does it even mean for browse-url to call eg firefox with a
default-directory of "http://debbugs.gnu.org/"?
It surely cannot run firefox on debbugs.gnu.org...
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 17:09 ` Glenn Morris
@ 2014-05-08 19:37 ` Michael Albinus
2014-05-09 12:50 ` Michael Albinus
1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-08 19:37 UTC (permalink / raw)
To: Glenn Morris; +Cc: sds, 17425
Glenn Morris <rgm@gnu.org> writes:
> Michael Albinus wrote:
>
>> (let ((default-directory "http://debbugs.gnu.org/"))
>> (url-handler-mode 1)
>> (expand-file-name "17245"))
>
> Hey, this fails with a recursive load in emacs-24.3.90 -Q! :)
So we still have something to fix during the pretest :-)
Reminds me on test case tramp-test33-recursive-load, which I have
written some weeks ago due to a similar error in Tramp.
I'll check tomorrow what's up (but I don't know url-* too much).
>> returns a valid url which could be passed to browse-url.
>
> But surely if it worked it would just return "http://debbugs.gnu.org/17245"?
Yes.
> Why is that a problem?
It's not a problem. It would be a problem, if it does *not* return that
url, when default-directory is changed to something unrelated.
> What does it even mean for browse-url to call eg firefox with a
> default-directory of "http://debbugs.gnu.org/"?
> It surely cannot run firefox on debbugs.gnu.org...
Don't know. Some weeks ago, we have added further schemes to
url-handlers.el, see url-handler-regexp (don't remember whether it was
in the pretest or in trunk). And there is the scheme "ssh", for example.
This would allow to run firefox on a remote host. But I don't know
whether such a url goes ever to browse-url ...
Again, I have no scenario which shows that your patch will fail. But I
have bad feeling to touch default-directory such a way. Experience from
10 years Tramp maintainership.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 17:09 ` Glenn Morris
2014-05-08 19:37 ` Michael Albinus
@ 2014-05-09 12:50 ` Michael Albinus
1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-09 12:50 UTC (permalink / raw)
To: Glenn Morris; +Cc: sds, 17425
Glenn Morris <rgm@gnu.org> writes:
> Michael Albinus wrote:
>
>> (let ((default-directory "http://debbugs.gnu.org/"))
>> (url-handler-mode 1)
>> (expand-file-name "17245"))
>
> Hey, this fails with a recursive load in emacs-24.3.90 -Q! :)
Fixed in the emacs-24 branch.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-08 16:10 ` Glenn Morris
2014-05-08 16:44 ` Sam Steingold
2014-05-08 17:04 ` Michael Albinus
@ 2014-05-09 14:01 ` Stefan Monnier
2014-05-12 11:02 ` Michael Albinus
2 siblings, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2014-05-09 14:01 UTC (permalink / raw)
To: Glenn Morris; +Cc: Michael Albinus, sds, 17425
>>> ! (if (and (not (file-remote-p default-directory))
>>> ! (file-accessible-directory-p default-directory))
I think the test should be along the lines of
unhandled-file-name-directory.
Stefan
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-09 14:01 ` Stefan Monnier
@ 2014-05-12 11:02 ` Michael Albinus
2014-05-12 18:15 ` Stefan Monnier
0 siblings, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-12 11:02 UTC (permalink / raw)
To: Stefan Monnier; +Cc: sds, 17425
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>>> ! (if (and (not (file-remote-p default-directory))
>>>> ! (file-accessible-directory-p default-directory))
>
> I think the test should be along the lines of
> unhandled-file-name-directory.
Maybe it is time to extend the semantics of
`file-accessible-directory-p'. When FILENAME is remote, Tramp's (or any
other) respective handler would return nil if there isn't an established
connection. IOW, Tramp wouldn't open a non-existing connection.
By this, we could just test `(file-accessible-directory-p default-directory)'
without the threat to damage other packages like url-handlers.el.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 11:02 ` Michael Albinus
@ 2014-05-12 18:15 ` Stefan Monnier
2014-05-12 18:50 ` Michael Albinus
0 siblings, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2014-05-12 18:15 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425
> Maybe it is time to extend the semantics of
> `file-accessible-directory-p'.
Not sure what you mean: file-accessible-directory-p should test whether
that directory can be used as "cwd". Nothing more nothing less.
> When FILENAME is remote, Tramp's (or any other) respective handler
> would return nil if there isn't an established connection. IOW, Tramp
> wouldn't open a non-existing connection.
Why?
> By this, we could just test `(file-accessible-directory-p default-directory)'
Sorry, I lost you: Where would you use this test, instead of what?
> without the threat to damage other packages like url-handlers.el.
And I have no idea what damage you're referring to.
Stefan
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 18:15 ` Stefan Monnier
@ 2014-05-12 18:50 ` Michael Albinus
2014-05-12 19:30 ` Stefan Monnier
0 siblings, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-12 18:50 UTC (permalink / raw)
To: Stefan Monnier; +Cc: sds, 17425
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Maybe it is time to extend the semantics of
>> `file-accessible-directory-p'.
>
> Not sure what you mean: file-accessible-directory-p should test whether
> that directory can be used as "cwd". Nothing more nothing less.
>
>> When FILENAME is remote, Tramp's (or any other) respective handler
>> would return nil if there isn't an established connection. IOW, Tramp
>> wouldn't open a non-existing connection.
>
> Why?
The scenario of the OP is as follows:
- There's a buffer with an existing remote default-directory, connection
established.
- No problem to run browse-url in that buffer (the example was an
rcirc buffer). It doesn't hurt, that default-directory is remote.
- After a while, the remote host wasn't available any more, for whatever
reason.
- Now browse-url fails, because it checks file-directory-p and
file-readable-p. Both operations try to access the remote
default-directory.
If the check would be replaced file-accessible-directory-p, and this
operation doesn't try to reopen a stalled connection, it would be
sufficient for that use case.
Glenn has proposed a similar change, but with also checking (not
(file-remote-p default-directory)). I became a little bit nervous,
because file-remote-p isn't reserved not only for Tramp, but for any
file name handler (like url-handlers.el).
>> By this, we could just test `(file-accessible-directory-p default-directory)'
>
> Sorry, I lost you: Where would you use this test, instead of what?
--8<---------------cut here---------------start------------->8---
*** /home/albinus/src/emacs/lisp/net/browse-url.el.~117091~ 2014-05-12 20:47:03.821360420 +0200
--- /home/albinus/src/emacs/lisp/net/browse-url.el 2014-05-12 20:46:53.969311566 +0200
***************
*** 812,819 ****
browse-url-mailto-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
! (default-directory (if (and (file-directory-p default-directory)
! (file-readable-p default-directory))
default-directory
(expand-file-name "~/"))))
;; When connected to various displays, be careful to use the display of
--- 812,818 ----
browse-url-mailto-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
! (default-directory (if (file-accessible-directory-p default-directory)
default-directory
(expand-file-name "~/"))))
;; When connected to various displays, be careful to use the display of
--8<---------------cut here---------------end--------------->8---
>> without the threat to damage other packages like url-handlers.el.
>
> And I have no idea what damage you're referring to.
That's the whole thread about, I've discussed with Glenn.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 18:50 ` Michael Albinus
@ 2014-05-12 19:30 ` Stefan Monnier
2014-05-12 20:32 ` Michael Albinus
0 siblings, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2014-05-12 19:30 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425
> - There's a buffer with an existing remote default-directory, connection
> established.
> - No problem to run browse-url in that buffer (the example was an
> rcirc buffer). It doesn't hurt, that default-directory is remote.
> - After a while, the remote host wasn't available any more, for whatever
> reason.
> - Now browse-url fails, because it checks file-directory-p and
> file-readable-p. Both operations try to access the remote
> default-directory.
If the process is supposed to run locally, then the right test should be
based on unhandled-file-name-directory (that's what it's for). If the
process is supposed to be run "on the host referred to be by
default-directory", then re-connecting is the right thing to do.
> If the check would be replaced file-accessible-directory-p, and this
> operation doesn't try to reopen a stalled connection, it would be
> sufficient for that use case.
file-accessible-directory-p is really just another test like
file-directory-p: it should setup a connection if needed.
Stefan
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 19:30 ` Stefan Monnier
@ 2014-05-12 20:32 ` Michael Albinus
2014-05-12 20:48 ` Michael Albinus
2014-05-12 21:33 ` Stefan Monnier
0 siblings, 2 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-12 20:32 UTC (permalink / raw)
To: Stefan Monnier; +Cc: sds, 17425
Stefan Monnier <monnier@IRO.UMontreal.CA> writes:
>> - There's a buffer with an existing remote default-directory, connection
>> established.
>> - No problem to run browse-url in that buffer (the example was an
>> rcirc buffer). It doesn't hurt, that default-directory is remote.
>> - After a while, the remote host wasn't available any more, for whatever
>> reason.
>> - Now browse-url fails, because it checks file-directory-p and
>> file-readable-p. Both operations try to access the remote
>> default-directory.
>
> If the process is supposed to run locally, then the right test should be
> based on unhandled-file-name-directory (that's what it's for). If the
> process is supposed to be run "on the host referred to be by
> default-directory", then re-connecting is the right thing to do.
unhandled-file-name-directory will always return a local directory. This
could destroy the work of url-handlers.el. Imagine the snippet
(let ((default-directory "http://debbugs.gnu.org"))
(url-handler-mode 1)
(browse-url "17425"))
If one of the browse-url-* functions uses expand-file-name internally,
it shall open the url "http://debbugs.gnu.org/17425". This wouldn't
work, if unhandled-file-name-directory changes default-directory.
If you don't care, then I'm ok with you. I just wanted to show the
consequence.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 20:32 ` Michael Albinus
@ 2014-05-12 20:48 ` Michael Albinus
2014-05-12 21:33 ` Stefan Monnier
1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2014-05-12 20:48 UTC (permalink / raw)
To: Stefan Monnier; +Cc: sds, 17425
Michael Albinus <michael.albinus@gmx.de> writes:
> If one of the browse-url-* functions uses expand-file-name internally,
> it shall open the url "http://debbugs.gnu.org/17425". This wouldn't
> work, if unhandled-file-name-directory changes default-directory.
Maybe a solution is, that we expand-file-name the url in browse-url if
it is a relative file name. After this, it is no problem to use
unhandled-file-name-directory.
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 20:32 ` Michael Albinus
2014-05-12 20:48 ` Michael Albinus
@ 2014-05-12 21:33 ` Stefan Monnier
2014-05-13 9:09 ` Michael Albinus
1 sibling, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2014-05-12 21:33 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425
> (let ((default-directory "http://debbugs.gnu.org"))
> (url-handler-mode 1)
> (browse-url "17425"))
For the above to work (assuming browse-url spawns an external process),
browse-url will have to pass the default-directory to the process.
It can't do it using POSIX's "current working directory", so it will
have to pass it some other way. Once that's done, browse-url can use
unhandled-file-name-directory and change default-directory without
breaking anything.
I.e. unhandled-file-name-directory should be used close to the
call-process/process-start, and for it to work we need to make sure none
of the parameters are relative file-names, indeed. But that's the only
way it can work reliably, since there's no way to pass relative file
names to a process when the base directory doesn't exist in the OS.
Stefan
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-12 21:33 ` Stefan Monnier
@ 2014-05-13 9:09 ` Michael Albinus
2014-05-13 13:13 ` Stefan Monnier
0 siblings, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2014-05-13 9:09 UTC (permalink / raw)
To: Stefan Monnier; +Cc: sds, 17425-done
Stefan Monnier <monnier@IRO.UMontreal.CA> writes:
> I.e. unhandled-file-name-directory should be used close to the
> call-process/process-start, and for it to work we need to make sure none
> of the parameters are relative file-names, indeed. But that's the only
> way it can work reliably, since there's no way to pass relative file
> names to a process when the base directory doesn't exist in the OS.
Well, I have committed a fix to the emacs-24 branch. expand-file-name is
called only in case url-handler-mode is non nil (otherwise there are
strange results), and default-directory is passed through
unhandled-file-name-directory. According to my tests, this seems to be
sufficient.
Sam, you might retest it in your environment. Feel free to reopen if
there are still problems.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 27+ messages in thread
* bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button
2014-05-13 9:09 ` Michael Albinus
@ 2014-05-13 13:13 ` Stefan Monnier
0 siblings, 0 replies; 27+ messages in thread
From: Stefan Monnier @ 2014-05-13 13:13 UTC (permalink / raw)
To: Michael Albinus; +Cc: sds, 17425-done
> Well, I have committed a fix to the emacs-24 branch.
Thanks.
> expand-file-name is called only in case url-handler-mode is non nil
Sounds good.
> (otherwise there are strange results),
Indeed: the argument is supposed to be a URL, not a file name ;-)
Stefan
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2014-05-13 13:13 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-06 21:29 bug#17425: 24.4.50; tramp-cleanup-this-connection on push-button Sam Steingold
2014-05-06 23:59 ` Glenn Morris
2014-05-07 0:43 ` Sam Steingold
2014-05-07 0:55 ` Glenn Morris
2014-05-07 7:50 ` Michael Albinus
2014-05-07 21:22 ` Sam Steingold
2014-05-08 7:04 ` Glenn Morris
2014-05-08 7:48 ` Michael Albinus
2014-05-08 16:10 ` Glenn Morris
2014-05-08 16:44 ` Sam Steingold
2014-05-08 16:52 ` Michael Albinus
2014-05-08 17:03 ` Glenn Morris
2014-05-08 17:08 ` Michael Albinus
2014-05-08 17:04 ` Michael Albinus
2014-05-08 17:09 ` Glenn Morris
2014-05-08 19:37 ` Michael Albinus
2014-05-09 12:50 ` Michael Albinus
2014-05-09 14:01 ` Stefan Monnier
2014-05-12 11:02 ` Michael Albinus
2014-05-12 18:15 ` Stefan Monnier
2014-05-12 18:50 ` Michael Albinus
2014-05-12 19:30 ` Stefan Monnier
2014-05-12 20:32 ` Michael Albinus
2014-05-12 20:48 ` Michael Albinus
2014-05-12 21:33 ` Stefan Monnier
2014-05-13 9:09 ` Michael Albinus
2014-05-13 13:13 ` Stefan Monnier
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.